Skip to content

feat: add IO Intelligence (io.net) models - #1630

Open
smiraldr wants to merge 2 commits into
kwaroran:mainfrom
smiraldr:feat/ionet-provider
Open

smiraldr wants to merge 2 commits into
kwaroran:mainfrom
smiraldr:feat/ionet-provider

Conversation

@smiraldr

Copy link
Copy Markdown

Official io.net contribution. This pull request is submitted on behalf of io.net, the team behind IO Intelligence. We would like RisuAI users to be able to run inference on IO Intelligence out of the box. Happy to adjust anything to match the project's conventions, and we will keep the integration up to date.

Summary

Adds six IO Intelligence (by io.net) models to the built-in model list, following the existing DeepSeek/DeepInfra pattern for OpenAI-compatible providers with a fixed endpoint: per-model endpoint (https://api.intelligence.io.solutions/api/v1/chat/completions) and keyIdentifier (ionet), which makes the Bot Settings page render a "GLM 5.3 (IO Intelligence) API Key" field automatically (same mechanism as the DeepSeek key field).

New provider id LLMProvider.Ionet ("IO Intelligence" in ProviderNames), a new src/ts/model/providers/ionet.ts catalogue, registered in LLMModels. All six entries carry the hasFullSystemPrompt flag (openai.ts convention) so system prompts are sent as real system messages, and the Llama 3.3 entry uses the LLMTokenizer.Llama3 tokenizer via a new fallback branch in src/ts/tokenizer.ts that routes it to the repo's existing llama3 web tokenizer (the enum value existed but had no branch, silently falling back to cl100k).

Models (from io.net's public GET /models)

  • zai-org/GLM-5.3 (tokenizer GLM5, recommended)
  • deepseek-ai/DeepSeek-V4.1-Flash (tokenizer DeepSeekV4, recommended)
  • moonshotai/Kimi-K3 (vision flag)
  • Qwen/Qwen3.8-27B (vision flag)
  • deepseek-ai/DeepSeek-R1-0528
  • meta-llama/Llama-3.3-70B-Instruct (tokenizer Llama3)

Wire model ids are the org/name strings (set via internalID); id keys are prefixed ionet/… to stay unique in the model list, same technique the repo already uses for custom models.

Verification

  • pnpm install --frozen-lockfile clean
  • pnpm check (svelte-check) — 0 errors, 0 warnings
  • pnpm build — exit 0
  • pnpm test (vitest) — 24 files, 230 passed / 3 skipped
  • Drove the app's real requestOpenAI() request builder (with a copy of the ionet entry pointed at a local OpenAI-compatible endpoint): non-streaming and streaming chats reach POST …/chat/completions with Authorization: Bearer resolved from the ionet key entry in settings, the model id passed through verbatim (zai-org/GLM-5.3 etc.), and the stream flag honoured; an invalid key surfaces the server's error message to the user on both legs; the six entries are present in the real LLMModels list with correct endpoint/keyIdentifier/internalID
  • Live inference not tested (no API key available to the contributor). Keys are entered by each user in Bot Settings (https://cloud.io.net issues them).

Notes

  • Users can already reach io.net today via Advanced → Custom Models (any OpenAI-compatible endpoint works); this PR makes it a first-class, key-prompted entry in the default model list.

@smiraldr

smiraldr commented Oct 8, 2026

Copy link
Copy Markdown
Author

Gentle bump on this one. It adds the io.net model list and still merges cleanly into main. Happy to rework anything you'd prefer different.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant