集成与最佳实践
本章节列出主流 Agent 框架、IDE 和编程助手如何接入 Smartoken。几乎所有支持”自定义 OpenAI 端点”的工具都能直接用,关键就两件事:
- Base URL:
https://smartoken.top/v1 - API Key:
stk-live-...(控制台 → API Keys 创建)
模型名(slug)从 模型市场 复制 —— 每个模型详情页右上角有复制按钮。
协议互通性:Smartoken 同时支持三种主流协议——/v1/chat/completions(OpenAI Chat)、/v1/responses(OpenAI Responses)、/v1/messages(Anthropic Messages)。任意 LLM 模型都同时支持这三种调用方式,平台内部自动翻译,客户端不需要关心后端模型实际走哪种协议。工具调用(tool_calls / tool_use)也都映射好了。文生图 / 文生视频只支持 OpenAI 协议(Anthropic Messages 协议本身不涵盖图片 / 视频生成)。
4.1 通用模式
绝大多数支持 OpenAI 的库都是这个套路:
from openai import OpenAI
client = OpenAI(
base_url="https://smartoken.top/v1",
api_key="stk-live-...",
)
resp = client.chat.completions.create(
model="<你的模型 slug>",
messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)JavaScript / TypeScript 同理:
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://smartoken.top/v1",
apiKey: "stk-live-...",
});
const resp = await client.chat.completions.create({
model: "<你的模型 slug>",
messages: [{ role: "user", content: "你好" }],
});
console.log(resp.choices[0].message.content);如果你的工具不在下面的清单里,先试这个套路,大概率能直接跑。
4.2 Agent 框架
LangChain (Python)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://smartoken.top/v1",
api_key="stk-live-...",
model="<你的模型 slug>",
)
print(llm.invoke("你好").content)工具调用、流式输出都按 LangChain 原生方式用即可。
LangChain.js
import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
configuration: { baseURL: "https://smartoken.top/v1" },
apiKey: "stk-live-...",
model: "<你的模型 slug>",
});
const result = await llm.invoke("你好");
console.log(result.content);OpenAI Agents SDK
openai-agents 默认走 Responses 协议,我们的 /v1/responses 兼容它。
from agents import Agent, Runner
from openai import AsyncOpenAI
from agents.models.openai_responses import OpenAIResponsesModel
client = AsyncOpenAI(
base_url="https://smartoken.top/v1",
api_key="stk-live-...",
)
agent = Agent(
name="Helper",
instructions="你是一个友好的助手。",
model=OpenAIResponsesModel(model="<你的模型 slug>", openai_client=client),
)
result = await Runner.run(agent, "你好")
print(result.final_output)即使你选的模型实际接的是经典 Chat 渠道(不是真的 Responses 上游),Agents SDK 也能用 —— 平台会把 Responses 请求自动翻译成 Chat 发给上游。
AutoGen (Microsoft)
from autogen_ext.models.openai import OpenAIChatCompletionClient
client = OpenAIChatCompletionClient(
model="<你的模型 slug>",
base_url="https://smartoken.top/v1",
api_key="stk-live-...",
# 非 OpenAI 模型需要明确告知模型能力,否则 AutoGen 默认按 GPT-4 假设
model_info={
"vision": False, # 模型是否支持图片输入
"function_calling": True,
"json_output": True,
"family": "unknown",
},
)CrewAI
CrewAI 底层用 LiteLLM,因此用 openai/ 前缀(告诉 LiteLLM 走 OpenAI 协议):
import os
from crewai import Agent, Crew, Task, LLM
os.environ["OPENAI_API_KEY"] = "stk-live-..."
os.environ["OPENAI_API_BASE"] = "https://smartoken.top/v1"
llm = LLM(model="openai/<你的模型 slug>")
researcher = Agent(
role="研究员",
goal="...",
backstory="...",
llm=llm,
)Google ADK
Google ADK 通过 LiteLLM 接入第三方 OpenAI 兼容服务:
import os
from google.adk.agents import LlmAgent
from google.adk.models.lite_llm import LiteLlm
os.environ["OPENAI_API_KEY"] = "stk-live-..."
os.environ["OPENAI_API_BASE"] = "https://smartoken.top/v1"
agent = LlmAgent(
name="helper",
model=LiteLlm(model="openai/<你的模型 slug>"),
instruction="你是一个友好的助手。",
)Anthropic SDK / Claude Agent SDK
Anthropic 的 Claude Agent SDK 和 anthropic Python SDK 都使用 Anthropic Messages 协议——Smartoken 已原生兼容,无需任何中间件桥接。
from anthropic import Anthropic
client = Anthropic(
base_url="https://smartoken.top", # SDK 会自动拼 /v1/messages
api_key="stk-live-...",
)
message = client.messages.create(
model="<你的模型 slug>",
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}],
)
print(message.content[0].text)工具调用(tools / tool_use / tool_result)、流式输出、system prompt 都按 Anthropic SDK 原生方式用即可。其它基于 anthropic 包的 Agent 框架(Claude Agent SDK 等)只要能改 base_url 或读 ANTHROPIC_BASE_URL 环境变量,配置方式相同。
任何 LLM 模型都能用这种方式调用——Smartoken 内部把 Anthropic 请求翻译为 OpenAI Chat 走标准路由。所以你完全可以用 Anthropic SDK 去调一个 GPT 或 Qwen 模型。
4.3 IDE 和编程助手
Cursor
设置 → Models → 在 OpenAI API Key 一栏填 stk-live-...,勾选 Override OpenAI Base URL,填 https://smartoken.top/v1。
然后在 Model Names 里添加你要用的模型 slug(如 gpt-5.4-mini)。Cursor 会用这个 slug 调用 /v1/chat/completions。
Cline (VS Code)
打开 Cline 的 Settings:
- API Provider: 选
OpenAI Compatible - Base URL:
https://smartoken.top/v1 - API Key:
stk-live-... - Model ID: 你的模型 slug
Continue (VS Code / JetBrains)
编辑 ~/.continue/config.json(或在 Continue 面板里直接编辑配置):
{
"models": [
{
"title": "Smartoken",
"provider": "openai",
"model": "<你的模型 slug>",
"apiBase": "https://smartoken.top/v1",
"apiKey": "stk-live-..."
}
]
}Aider
命令行参数或环境变量都行:
export OPENAI_API_BASE=https://smartoken.top/v1
export OPENAI_API_KEY=stk-live-...
aider --model openai/<你的模型 slug>Open Code
在配置文件(一般在~/.config/opencode/opencode.json中),新增一个名为smartoken的provider, 配置你需要的模型即可,参考下面的配置文件
{
"provider": {
"smartoken": {
"options": {
"baseURL": "https://smartoken.top/v1",
"apiKey": "stk-live-..."
},
"models": {
"claude-sonnet-4-6": {
"name": "claude-sonnet-4-6",
"limit": {
"context": 400000,
"output": 128000
},
"options": {
"store": false
},
"variants": {
"low": {},
"medium": {},
"high": {},
"xhigh": {}
}
}
}
}
},
"agent": {
"build": {
"options": {
"store": false
}
},
"plan": {
"options": {
"store": false
}
}
},
"model": "smartoken/claude-sonnet-4-6",
"$schema": "https://opencode.ai/config.json"
}Codex CLI
OpenAI 官方 Codex CLI 通过自定义 model_provider 接入第三方网关。编辑 ~/.codex/config.toml:
model = "<你的模型 slug>"
model_provider = "smartoken"
[model_providers.smartoken]
name = "Smartoken"
base_url = "https://smartoken.top/v1"
wire_api = "responses" # 也可以填 "chat",平台两边都接
env_key = "OPENAI_API_KEY"然后:
export OPENAI_API_KEY=stk-live-...
codex不要在 [model_providers.smartoken] 下加 requires_openai_auth = true。那会让 Codex 拿 ChatGPT 登录的 OAuth token 当 API Key 发给 Smartoken,会被拒为 invalid key。
Claude Code
Claude Code 走 Anthropic Messages 协议,Smartoken 原生兼容,两个环境变量就能跑:
export ANTHROPIC_BASE_URL=https://smartoken.top
export ANTHROPIC_API_KEY=stk-live-...
claude之后在 Claude Code 里用 /model 命令切换到你的 Smartoken 模型 slug 即可(默认会先用你的 Anthropic 账号配置;用上面环境变量覆盖后所有请求都发到 Smartoken)。流式输出、工具调用都直接支持,不需要任何中间代理。
4.4 其他工具
任何支持”自定义 OpenAI base URL”的工具都能用 Smartoken,套路一致:把 base 改成 https://smartoken.top/v1,把 key 改成你的 stk-live-...。
如果你接入了某个工具且写到这里的配置不灵,欢迎反馈给我们,我们会补到文档里。
详细的请求 / 响应字段、流式格式、错误码请看 API 参考。