UI: label Qwen provider
This commit is contained in:
committed by
Peter Steinberger
parent
a760db9921
commit
b56b67cdbd
@@ -183,9 +183,9 @@ Kimi Code uses a dedicated endpoint and key (separate from Moonshot):
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
### Qwen Portal OAuth (free tier)
|
### Qwen OAuth (free tier)
|
||||||
|
|
||||||
Qwen Portal provides OAuth access to Qwen Coder + Vision via a device-code flow.
|
Qwen provides OAuth access to Qwen Coder + Vision via a device-code flow.
|
||||||
Enable the bundled plugin, then log in:
|
Enable the bundled plugin, then log in:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ See [Voice Call](/plugins/voice-call) for a concrete example plugin.
|
|||||||
- [Microsoft Teams](/channels/msteams) — `@clawdbot/msteams`
|
- [Microsoft Teams](/channels/msteams) — `@clawdbot/msteams`
|
||||||
- Google Antigravity OAuth (provider auth) — bundled as `google-antigravity-auth` (disabled by default)
|
- Google Antigravity OAuth (provider auth) — bundled as `google-antigravity-auth` (disabled by default)
|
||||||
- Gemini CLI OAuth (provider auth) — bundled as `google-gemini-cli-auth` (disabled by default)
|
- Gemini CLI OAuth (provider auth) — bundled as `google-gemini-cli-auth` (disabled by default)
|
||||||
- Qwen Portal OAuth (provider auth) — bundled as `qwen-portal-auth` (disabled by default)
|
- Qwen OAuth (provider auth) — bundled as `qwen-portal-auth` (disabled by default)
|
||||||
- Copilot Proxy (provider auth) — bundled as `copilot-proxy` (disabled by default)
|
- Copilot Proxy (provider auth) — bundled as `copilot-proxy` (disabled by default)
|
||||||
|
|
||||||
Clawdbot plugins are **TypeScript modules** loaded at runtime via jiti. They can
|
Clawdbot plugins are **TypeScript modules** loaded at runtime via jiti. They can
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ Looking for chat channel docs (WhatsApp/Telegram/Discord/Slack/etc.)? See [Chann
|
|||||||
|
|
||||||
- [OpenAI (API + Codex)](/providers/openai)
|
- [OpenAI (API + Codex)](/providers/openai)
|
||||||
- [Anthropic (API + Claude Code CLI)](/providers/anthropic)
|
- [Anthropic (API + Claude Code CLI)](/providers/anthropic)
|
||||||
- [Qwen Portal (OAuth)](/providers/qwen)
|
- [Qwen (OAuth)](/providers/qwen)
|
||||||
- [OpenRouter](/providers/openrouter)
|
- [OpenRouter](/providers/openrouter)
|
||||||
- [Vercel AI Gateway](/providers/vercel-ai-gateway)
|
- [Vercel AI Gateway](/providers/vercel-ai-gateway)
|
||||||
- [Moonshot AI (Kimi + Kimi Code)](/providers/moonshot)
|
- [Moonshot AI (Kimi + Kimi Code)](/providers/moonshot)
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
---
|
---
|
||||||
summary: "Use Qwen Portal OAuth (free tier) in Clawdbot"
|
summary: "Use Qwen OAuth (free tier) in Clawdbot"
|
||||||
read_when:
|
read_when:
|
||||||
- You want to use Qwen Portal with Clawdbot
|
- You want to use Qwen with Clawdbot
|
||||||
- You want free-tier OAuth access to Qwen Coder
|
- You want free-tier OAuth access to Qwen Coder
|
||||||
---
|
---
|
||||||
# Qwen Portal
|
# Qwen
|
||||||
|
|
||||||
Qwen Portal provides a free-tier OAuth flow for Qwen Coder and Qwen Vision models
|
Qwen provides a free-tier OAuth flow for Qwen Coder and Qwen Vision models
|
||||||
(2,000 requests/day, subject to Qwen rate limits).
|
(2,000 requests/day, subject to Qwen rate limits).
|
||||||
|
|
||||||
## Enable the plugin
|
## Enable the plugin
|
||||||
@@ -45,7 +45,7 @@ from `~/.qwen/oauth_creds.json` when it loads the auth store. You still need a
|
|||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
- Tokens expire periodically; re-run the login command when requests fail.
|
- Tokens auto-refresh; re-run the login command if refresh fails or access is revoked.
|
||||||
- Default base URL: `https://portal.qwen.ai/v1` (override with
|
- Default base URL: `https://portal.qwen.ai/v1` (override with
|
||||||
`models.providers.qwen-portal.baseUrl` if Qwen provides a different endpoint).
|
`models.providers.qwen-portal.baseUrl` if Qwen provides a different endpoint).
|
||||||
- See [Model providers](/concepts/model-providers) for provider-wide rules.
|
- See [Model providers](/concepts/model-providers) for provider-wide rules.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Qwen Portal OAuth (Clawdbot plugin)
|
# Qwen OAuth (Clawdbot plugin)
|
||||||
|
|
||||||
OAuth provider plugin for **Qwen Portal** (free-tier OAuth).
|
OAuth provider plugin for **Qwen** (free-tier OAuth).
|
||||||
|
|
||||||
## Enable
|
## Enable
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { loginQwenPortalOAuth } from "./oauth.js";
|
import { loginQwenPortalOAuth } from "./oauth.js";
|
||||||
|
|
||||||
const PROVIDER_ID = "qwen-portal";
|
const PROVIDER_ID = "qwen-portal";
|
||||||
const PROVIDER_LABEL = "Qwen Portal OAuth";
|
const PROVIDER_LABEL = "Qwen";
|
||||||
const DEFAULT_MODEL = "qwen-portal/coder-model";
|
const DEFAULT_MODEL = "qwen-portal/coder-model";
|
||||||
const DEFAULT_BASE_URL = "https://portal.qwen.ai/v1";
|
const DEFAULT_BASE_URL = "https://portal.qwen.ai/v1";
|
||||||
const DEFAULT_CONTEXT_WINDOW = 128000;
|
const DEFAULT_CONTEXT_WINDOW = 128000;
|
||||||
@@ -28,8 +28,8 @@ function buildModelDefinition(params: { id: string; name: string; input: Array<"
|
|||||||
|
|
||||||
const qwenPortalPlugin = {
|
const qwenPortalPlugin = {
|
||||||
id: "qwen-portal-auth",
|
id: "qwen-portal-auth",
|
||||||
name: "Qwen Portal OAuth",
|
name: "Qwen OAuth",
|
||||||
description: "OAuth flow for Qwen Portal (free-tier) models",
|
description: "OAuth flow for Qwen (free-tier) models",
|
||||||
register(api) {
|
register(api) {
|
||||||
api.registerProvider({
|
api.registerProvider({
|
||||||
id: PROVIDER_ID,
|
id: PROVIDER_ID,
|
||||||
@@ -79,12 +79,12 @@ const qwenPortalPlugin = {
|
|||||||
models: [
|
models: [
|
||||||
buildModelDefinition({
|
buildModelDefinition({
|
||||||
id: "coder-model",
|
id: "coder-model",
|
||||||
name: "Qwen Coder (Portal)",
|
name: "Qwen Coder",
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
}),
|
}),
|
||||||
buildModelDefinition({
|
buildModelDefinition({
|
||||||
id: "vision-model",
|
id: "vision-model",
|
||||||
name: "Qwen Vision (Portal)",
|
name: "Qwen Vision",
|
||||||
input: ["text", "image"],
|
input: ["text", "image"],
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ function buildQwenPortalProvider(): ProviderConfig {
|
|||||||
models: [
|
models: [
|
||||||
{
|
{
|
||||||
id: "coder-model",
|
id: "coder-model",
|
||||||
name: "Qwen Coder (Portal)",
|
name: "Qwen Coder",
|
||||||
reasoning: false,
|
reasoning: false,
|
||||||
input: ["text"],
|
input: ["text"],
|
||||||
cost: QWEN_PORTAL_DEFAULT_COST,
|
cost: QWEN_PORTAL_DEFAULT_COST,
|
||||||
@@ -243,7 +243,7 @@ function buildQwenPortalProvider(): ProviderConfig {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: "vision-model",
|
id: "vision-model",
|
||||||
name: "Qwen Vision (Portal)",
|
name: "Qwen Vision",
|
||||||
reasoning: false,
|
reasoning: false,
|
||||||
input: ["text", "image"],
|
input: ["text", "image"],
|
||||||
cost: QWEN_PORTAL_DEFAULT_COST,
|
cost: QWEN_PORTAL_DEFAULT_COST,
|
||||||
|
|||||||
@@ -196,7 +196,7 @@ export function buildAuthChoiceOptions(params: {
|
|||||||
});
|
});
|
||||||
options.push({ value: "gemini-api-key", label: "Google Gemini API key" });
|
options.push({ value: "gemini-api-key", label: "Google Gemini API key" });
|
||||||
options.push({ value: "zai-api-key", label: "Z.AI (GLM 4.7) API key" });
|
options.push({ value: "zai-api-key", label: "Z.AI (GLM 4.7) API key" });
|
||||||
options.push({ value: "qwen-portal", label: "Qwen Portal OAuth" });
|
options.push({ value: "qwen-portal", label: "Qwen OAuth" });
|
||||||
options.push({ value: "apiKey", label: "Anthropic API key" });
|
options.push({ value: "apiKey", label: "Anthropic API key" });
|
||||||
// Token flow is currently Anthropic-only; use CLI for advanced providers.
|
// Token flow is currently Anthropic-only; use CLI for advanced providers.
|
||||||
options.push({
|
options.push({
|
||||||
|
|||||||
Reference in New Issue
Block a user