第一章 产品介绍
OmniT 是一个大模型调用平台(Model API Gateway),通过统一的接口,为开发者、团队和企业提供对 DeepSeek、通义千问(Qwen)、智谱(GLM)、GPT 系列等主流大模型的稳定访问能力。
无论您是个人开发者还是企业用户,只需申请一个 OmniT API Key,即可:
- 用同一套代码、同一个地址访问所有支持的模型,随时切换无需改动项目结构
- 统一账户余额管理,无需在多个 AI 厂商平台分别充值和维护账号
- 通过国内优化线路访问 OpenAI 等海外模型,无需自行解决网络问题
- 按实际消耗的 Token 付费,按需充值,适合从小型项目到高并发企业应用
1.1 核心优势
能力 | 说明 |
OpenAI 兼容 | 完全兼容 OpenAI Chat Completions 接口格式,现有代码只需修改 base_url 和 api_key 即可迁移 |
多模型聚合 | DeepSeek / Qwen / GLM / GPT 等 20+ 模型统一接入,一套代码全部覆盖 |
国内优化线路 | 自建国内转发节点,DeepSeek / 国内模型平均首 Token 延迟 < 1 秒 |
弹性计费 | 按 Token 用量实时扣费,预付费余额制,无月费、无最低消费 |
稳定高可用 | 多节点冗余架构,核心模型可用率 ≥ 99.5%,故障自动切换 |
安全管控 | Key 权限精细化设置,可限制可访问模型范围、设置月度用量上限 |
1.2 适用场景
- 个人开发者:快速接入多款模型做 Demo、测试,节省注册多账号的麻烦
- 产品团队:统一 API 出口,方便按项目或按成员统计模型调用成本
- 企业应用:高并发生产环境,需要负载均衡、故障切换、访问审计
- AI 工具开发者:构建 Chatbot、Agent、RAG 系统时,一个 Key 管理所有模型依赖
第二章 快速开始
本章帮助您在 5 分钟内完成注册、获取 Key 并发出第一个请求。
2.1 注册与登录
- 访问 OmniT 官网 ,点击右上角「注册/登录」
- 填写邮箱和密码,或使用手机号快速注册
- 完成验证后,自动跳转至控制台首页
2.2 申请 API Key
API Key 是调用 OmniT 接口的唯一凭证,请妥善保管。
- 登录控制台,点击左侧菜单「API 密钥管理」
- 点击右上角「新建密钥」按钮
- 填写密钥备注名称(如「测试项目」「生产环境」),便于区分多个 Key
- 选择该 Key 可访问的模型范围(默认全部可用)
- 可选:设置月度 Token 用量上限,防止超支
- 点击「立即创建」,在弹出框中复制完整 Key
❌ API Key 仅在创建时展示一次,请立即复制保存。若遗失,需删除旧 Key 并重新创建。切勿将 Key 提交到 GitHub 等公开代码仓库。 |
2.3 账户充值
OmniT 采用预付费余额制,余额不足时调用将返回 402 错误。
- 进入控制台「费用中心」→「账户充值」
- 支持支付宝、微信支付
- 最低单次充值 10 元,余额实时到账
- 建议开启「低余额提醒」,当余额低于设定阈值时自动发送邮件通知(费用中心 → 消费提醒设置)
2.4 接口地址与认证
OmniT 提供统一的 Base URL,所有模型均通过此地址访问:
# Base URL(固定)
# 认证方式:HTTP Header Authorization: Bearer sk-omni-xxxxxxxxxxxxxxxx |
OmniT Key 格式为 sk-omni- 开头,请勿与原厂 OpenAI Key(sk- 开头)混淆。两者格式相近但不可互换。 |
2.5 发出第一个请求
以下是最简单的文本对话请求,将 YOUR_KEY 替换为您的真实 Key 后直接运行:
cURL
curl -X POST \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-chat", "messages": [{"role": "user", "content": "你好,请介绍一下你自己"}] }' |
Python
from openai import OpenAI client = OpenAI( api_key="YOUR_KEY", base_url=" " ) response = client.chat.completions.create( model="deepseek-chat", messages=[{"role": "user", "content": "你好,请介绍一下你自己"}] ) print(response.choices[0].message.content) |
成功响应示例:
{ "id": "chatcmpl-abc123", "object": "chat.completion", "model": "deepseek-chat", "choices": [{ "index": 0, "message": { "role": "assistant", "content": "你好!我是 DeepSeek,一个由深度求索公司开发的 AI 助手..." }, "finish_reason": "stop" }], "usage": { "prompt_tokens": 12, "completion_tokens": 38, "total_tokens": 50 } } |
第三章 模型列表与价格
OmniT 当前支持以下模型系列。所有价格单位为「元 / 百万 Tokens(M Tokens)」,输入与输出分开计费。
📌 总费用计算公式:总费用 = (输入 Tokens × 输入单价) + (输出 Tokens × 输出单价) |
3.1 DeepSeek 系列
DeepSeek 由深度求索公司开发,以极高的性价比著称,V3 和 R1 系列在多项基准测试中达到国际顶级水平。
模型 ID | 类型 | 上下文长度 | RPM 限制 | 输入价格 | 输出价格 |
deepseek-chat | 通用对话 | 64K | 3,000 | ¥2 / M | ¥8 / M |
deepseek-reasoner | 深度推理 | 64K | 500 | ¥4 / M | ¥16 / M |
deepseek-r1-distill-qwen-32b | 推理蒸馏 | 32K | 1,000 | ¥1.5 / M | ¥6 / M |
deepseek-r1-distill-qwen-14b | 推理蒸馏 | 32K | 2,000 | ¥1 / M | ¥3 / M |
deepseek-r1-distill-llama-8b | 推理蒸馏 | 32K | 3,000 | ¥0.6 / M | ¥2.4 / M |
deepseek-r1-distill-qwen-7b | 推理蒸馏 | 32K | 5,000 | 限时免费 | 限时免费 |
deepseek-chat 对应 DeepSeek-V3 正式版;deepseek-reasoner 对应 DeepSeek-R1 正式版,适合数学推理、代码分析等需要深度思考的任务。 |
3.2 Qwen(通义千问)系列
Qwen3 由阿里巴巴开发,在中文理解、代码生成、多语言处理方面表现突出,235B 旗舰版支持独特的「思考模式」。
模型 ID | 类型 | 上下文长度 | QPM 限制 | 输入价格 | 输出价格 |
qwen3-235b-a22b | 旗舰推理 | 128K | 600 | ¥4 / M | ¥40 / M |
qwen3-32b | 高性能 | 128K | 600 | ¥2 / M | ¥20 / M |
qwq-32b | 深度推理 | 32K | 600 | ¥1.5 / M | ¥6 / M |
qwen-plus | 综合能力 | 128K | 3,000 | ¥0.8 / M | ¥2 / M |
qwen-turbo | 超长上下文 | 1M | 3,000 | ¥0.3 / M | ¥0.6 / M |
qwen-long | 长文档 | 10M | 1,000 | ¥0.5 / M | ¥1.5 / M |
qwen3-235b-a22b 和 qwen3-32b 支持 enable_thinking 思考模式,开启后模型会先输出推理过程再给出最终答案,详见第四章调用示例。 |
3.3 GLM(智谱)系列
GLM-4 系列由清华大学智谱 AI 开发,中文能力强,GLM-4-Flash 和 GLM-Z1-Flash 完全免费,适合高频轻量场景。
模型 ID | 系列 | 上下文长度 | 并发数 | 输入价格 | 输出价格 |
glm-4-flash | GLM-4 | 128K | 1,000 | 免费 | 免费 |
glm-4-flashx | GLM-4 | 128K | 100 | ¥0.1 / M | ¥0.1 / M |
glm-4-air | GLM-4 | 128K | 30 | ¥0.5 / M | ¥0.5 / M |
glm-4-plus | GLM-4 | 128K | 100 | ¥5 / M | ¥5 / M |
glm-4-long | GLM-4 | 1M | 30 | ¥1 / M | ¥1 / M |
glm-z1-flash | GLM-Z1 | 32K | 40 | 免费 | 免费 |
glm-z1-air | GLM-Z1 | 32K | 40 | ¥0.5 / M | ¥0.5 / M |
glm-z1-airx | GLM-Z1 | 32K | 40 | ¥5 / M | ¥5 / M |
✅ glm-4-flash 和 glm-z1-flash 完全免费且并发较高,非常适合用于原型验证、日志分类、批量摘要等对成本敏感的场景。 |
3.4 OpenAI 系列
OmniT 通过优化海外线路转发 OpenAI 请求,提供比直连更稳定的国内访问体验。价格按实时汇率折算人民币,以控制台显示为准。
模型 ID | 类型 | 上下文长度 | 输入价格(约) | 输出价格(约) | 备注 |
gpt-4o | 旗舰多模态 | 128K | ¥17 / M | ¥68 / M | 支持图片输入 |
gpt-4o-mini | 高性价比 | 128K | ¥1 / M | ¥4 / M | 推荐日常使用 |
o3-mini | 推理增强 | 200K | ¥8 / M | ¥32 / M | 适合复杂逻辑 |
gpt-4-turbo | 上一代旗舰 | 128K | ¥70 / M | ¥210 / M | |
gpt-3.5-turbo | 经典快速 | 16K | ¥2.5 / M | ¥5 / M | 低成本首选 |
⚠️ OpenAI 系列价格受汇率波动影响,上表为参考值。实际计费以控制台账单为准,建议调用前在控制台查看最新价格。 |
第四章 API 调用详解
4.1 接口规格
属性 | 值 |
接口地址 | |
请求方法 | POST |
Content-Type | application/json |
认证方式 | Bearer Token(Header: Authorization: Bearer YOUR_KEY) |
响应格式 | application/json 或 text/event-stream(流式) |
超时建议 | 非流式请求 60 秒,流式请求 120 秒 |
4.2 请求参数说明
参数名 | 类型 | 必填 | 默认值 | 说明 |
model | string | 是 | — | 模型 ID,见第三章模型列表 |
messages | array | 是 | — | 对话消息数组,每项包含 role 和 content |
stream | boolean | 否 | false | 是否启用流式输出(SSE) |
max_tokens | integer | 否 | 模型默认 | 最大输出 Token 数 |
temperature | float | 否 | 1.0 | 采样温度 0~2,越高越随机,0 表示确定性输出 |
top_p | float | 否 | 1.0 | 核采样概率,与 temperature 建议只调一个 |
stop | string/array | 否 | — | 停止词,遇到后立即停止生成 |
frequency_penalty | float | 否 | 0 | -2~2,正值抑制重复词频 |
presence_penalty | float | 否 | 0 | -2~2,正值鼓励引入新话题 |
n | integer | 否 | 1 | 同时生成的候选数量,建议保持 1 |
user | string | 否 | — | 终端用户标识,用于审计和频控 |
messages 数组中,role 可取值为 system(系统提示词)、user(用户)、assistant(模型),多轮对话时按顺序传入完整历史即可。 |
4.3 多语言代码示例
Python
安装依赖:pip install openai
from openai import OpenAI client = OpenAI( api_key="sk-omni-xxxxxxxxxxxxxxxx", base_url=" " ) # 基础对话 response = client.chat.completions.create( model="deepseek-chat", messages=[ {"role": "system", "content": "你是一个专业的代码审查专家"}, {"role": "user", "content": "帮我审查以下 Python 代码的性能问题:\ndef fib(n):\n if n<=1: return n\n return fib(n-1)+fib(n-2)"} ], max_tokens=2048, temperature=0.3 ) print(response.choices[0].message.content) print(f'消耗 Tokens: {response.usage.total_tokens}') |
Node.js
安装依赖:npm install openai
import OpenAI from 'openai'; const client = new OpenAI({ apiKey: 'sk-omni-xxxxxxxxxxxxxxxx', baseURL: ' ' }); async function chat() { const response = await client.chat.completions.create({ model: 'deepseek-chat', messages: [ { role: 'system', content: '你是一个专业的代码审查专家' }, { role: 'user', content: '帮我优化这段 SQL:SELECT * FROM orders WHERE user_id = 1' } ], max_tokens: 1024 }); console.log(response.choices[0].message.content); console.log('Token 用量:', response.usage); } chat(); |
Go
package main import ( "bytes" "encoding/json" "fmt" "io" "net/http" ) type Message struct { Role string `json:"role"` Content string `json:"content"` } type ChatRequest struct { Model string `json:"model"` Messages []Message `json:"messages"` MaxTokens int `json:"max_tokens"` } func main() { payload, _ := json.Marshal(ChatRequest{ Model: "deepseek-chat", Messages: []Message{ {Role: "system", Content: "你是一个专业助手"}, {Role: "user", Content: "Go 语言中如何实现并发安全的计数器?"}, }, MaxTokens: 1024, }) req, _ := http.NewRequest("POST", " ", bytes.NewBuffer(payload)) req.Header.Set("Authorization", "Bearer sk-omni-xxxxxxxxxxxxxxxx") req.Header.Set("Content-Type", "application/json") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) } |
Java
使用 OkHttp 库,添加依赖:implementation 'com.squareup.okhttp3:okhttp:4.12.0'
import okhttp3.*; import org.json.*; public class OmniTClient { public static void main(String[] args) throws Exception { OkHttpClient client = new OkHttpClient(); JSONObject body = new JSONObject() .put("model", "deepseek-chat") .put("messages", new JSONArray() .put(new JSONObject().put("role","system").put("content","你是一个专业助手")) .put(new JSONObject().put("role","user").put("content","Java 中 HashMap 线程不安全的原因是什么?"))) .put("max_tokens", 1024); Request request = new Request.Builder() .url(" ") .addHeader("Authorization", "Bearer sk-omni-xxxxxxxxxxxxxxxx") .addHeader("Content-Type", "application/json") .post(RequestBody.create(body.toString(), MediaType.get("application/json"))) .build(); try (Response response = client.newCall(request).execute()) { JSONObject result = new JSONObject(response.body().string()); System.out.println(result.getJSONArray("choices") .getJSONObject(0).getJSONObject("message").getString("content")); } } } |
cURL
# 基础请求 curl -X POST \ -H "Authorization: Bearer sk-omni-xxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-chat", "messages": [ {"role": "system", "content": "你是一个专业助手"}, {"role": "user", "content": "什么是向量数据库?"} ], "max_tokens": 512 }' |
4.4 流式输出(Stream)
将 stream 设置为 true 后,接口以 SSE(Server-Sent Events)格式逐 Token 返回,适合实现打字机效果的聊天界面。每个事件以 data: 开头,最后一条为 data: [DONE]。
Python 流式示例
from openai import OpenAI client = OpenAI( api_key="sk-omni-xxxxxxxxxxxxxxxx", base_url=" " ) stream = client.chat.completions.create( model="deepseek-chat", messages=[ {"role": "user", "content": "请写一首关于秋天的五言绝句"} ], stream=True ) # 逐 Token 打印,实现打字机效果 for chunk in stream: delta = chunk.choices[0].delta if delta.content: print(delta.content, end='', flush=True) print() # 换行 |
4.5 多轮对话
多轮对话需要将完整的历史消息数组传入 messages,模型无状态,每次请求都需携带完整上下文。
from openai import OpenAI client = OpenAI( api_key="sk-omni-xxxxxxxxxxxxxxxx", base_url=" " ) # 维护对话历史 history = [ {"role": "system", "content": "你是一个友善的中文助手,请用简洁的语言回答"} ] def chat(user_message): history.append({"role": "user", "content": user_message}) response = client.chat.completions.create( model="deepseek-chat", messages=history, max_tokens=1024 ) assistant_message = response.choices[0].message.content history.append({"role": "assistant", "content": assistant_message}) return assistant_message # 连续对话 print(chat("我叫小明,我是一名 Python 开发者")) print(chat("你还记得我叫什么吗?我是做什么的?")) |
⚠️ 多轮对话时,历史消息越长,每次请求的输入 Token 消耗越多。建议根据业务需要对历史消息进行截断或摘要处理,控制上下文长度。 |
4.6 Qwen3 思考模式(Thinking Mode)
Qwen3-235B 和 Qwen3-32B 支持「思考模式」,通过额外参数 enable_thinking 开启。开启后,模型会先在 reasoning_content 字段输出完整的推理链,再在 content 字段给出最终答案,适合数学、逻辑推理等复杂任务。
思考模式目前仅支持流式输出(stream=True),请勿在非流式请求中使用 enable_thinking 参数。 |
from openai import OpenAI client = OpenAI( api_key="sk-omni-xxxxxxxxxxxxxxxx", base_url=" " ) stream = client.chat.completions.create( model="qwen3-235b-a22b", messages=[ {"role": "user", "content": "一个袋子里有 3 个红球、5 个蓝球,随机取 2 个球,恰好都是蓝球的概率是多少?"} ], stream=True, extra_body={ "enable_thinking": True # 开启思考模式 } ) reasoning = '' answer = '' is_answering = False for chunk in stream: if not chunk.choices: continue delta = chunk.choices[0].delta # 推理过程(思维链) if hasattr(delta, 'reasoning_content') and delta.reasoning_content: if not is_answering: print(delta.reasoning_content, end='', flush=True) reasoning += delta.reasoning_content # 最终答案 if delta.content: if not is_answering: print('\n\n【最终答案】') is_answering = True print(delta.content, end='', flush=True) answer += delta.content |
第五章 本地客户端接入
除代码接入外,OmniT 还支持通过本地 AI 客户端工具接入,无需编写代码即可与模型对话,适合非开发人员或快速验证场景。
5.1 接入信息汇总
无论使用哪款客户端,配置信息均相同:
配置项 | 值 |
API URL / Base URL |
|
API Key | 您的 OmniT Key(sk-omni-xxxxxxxxxxxxxxxx) |
模型名称 | 填写第三章中的模型 ID,如 deepseek-chat |
5.2 Chatbox
- 下载并安装 Chatbox:https://chatboxai.app
- 首次启动时,选择「使用自己的 API Key」→「OpenAI API」
- 在「API Key」栏填入 OmniT Key
- 在「API Host」栏填入
- 在「模型」栏填入模型 ID(如 deepseek-chat)
- 点击「保存」,即可开始对话
若首次进入 Chatbox 时错过了设置界面,可在对话窗口左下角「设置」→「模型」中修改。 |
5.3 Cherry Studio
- 下载并安装 Cherry Studio:https://cherry-ai.com
- 进入「设置」→「模型服务」,点击「+」新增服务商
- 服务商类型选择「OpenAI」
- API Key 填入 OmniT Key,API 地址填入
- 保存后,在新建对话界面的顶部下拉框中选择模型
5.4 AnythingLLM
- 下载并安装 AnythingLLM:https://anythingllm.com
- 首次设置时,LLM 提供商选择「Generic OpenAI」
- Base URL 填入 ,Token Context Window 建议填 32768
- API Key 填入 OmniT Key,Chat Model Name 填入模型 ID
- 完成设置后可使用知识库(RAG)、多轮对话等高级功能
第六章 计费说明
6.1 Token 基本概念
Token 是模型服务的计量单位。模型在处理文本时,先将输入内容分词(Tokenize)转化为 Token,处理后再将输出 Token 转化为文本。输入和输出的 Token 总量即为本次调用的计量用量。
文本类型 | 估算规则 | 示例 |
中文 | 约 1.5~2 Token / 汉字 | 「你好世界」≈ 8 Tokens |
英文 | 约 1~1.5 Token / 单词 | 「Hello World」≈ 3 Tokens |
代码 | 约 1~2 Token / 字符 | 100 行代码 ≈ 500~1,000 Tokens |
混合文本 | 按比例混合计算 | — |
由于不同模型采用不同的分词策略,同一段文本在不同模型下的 Token 数量可能略有差异。每次 API 响应的 usage 字段会返回本次精确消耗量。 |
6.2 计费规则
- 按实际消耗 Token 数量计费,输入和输出分开计算
- System Prompt 计入输入 Token
- 流式与非流式调用价格完全相同
- 每次 API 调用结束后实时从余额扣除
- 若请求因错误中途失败,已消耗的 Token 仍会计费
6.3 出账周期
OmniT 采用实时计费,每次调用结束后立即结算扣费。账单明细在控制台「费用中心」→「账单明细」中查看,支持按日期、模型、API Key 多维度筛选。
6.4 费用估算示例
以下为常见使用场景的费用参考(使用 deepseek-chat,输入 ¥2/M,输出 ¥8/M):
场景 | 输入 Tokens | 输出 Tokens | 单次费用 | 每日 1,000 次 |
简单问答 | 300 | 200 | ≈ ¥0.0022 | ≈ ¥2.2 |
文档摘要(长) | 5,000 | 500 | ≈ ¥0.014 | ≈ ¥14 |
代码生成 | 1,000 | 2,000 | ≈ ¥0.018 | ≈ ¥18 |
多轮对话(10轮) | 8,000 | 5,000 | ≈ ¥0.056 | ≈ ¥56 |
6.5 欠费与停服说明
账户余额(含充值余额与赠送额度)耗尽后:
- 调用付费模型将立即返回 402 错误(余额不足)
- 免费模型(glm-4-flash、glm-z1-flash、deepseek-r1-distill-qwen-7b)不受余额限制,仍可正常使用
- 已创建的 API Key 不会失效,充值后可立即恢复调用
建议在控制台开启「低余额提醒」,当余额低于 10 元时发送邮件提醒,避免因余额耗尽导致业务中断。 |
第七章 错误码说明
所有错误响应均采用统一结构,error.message 字段包含具体原因描述,便于排查问题:
{ "error": { "message": "Insufficient balance. Please recharge your account.", "type": "insufficient_balance", "code": 402 } } |
7.1 HTTP 状态码
状态码 | 错误类型 | 触发原因 | 处理建议 |
200 | OK | 请求成功 | 正常处理响应内容 |
400 | Bad Request | 请求参数格式错误或缺少必填字段 | 检查 JSON 格式和必填参数是否正确 |
401 | Unauthorized | API Key 无效、格式错误或已删除 | 确认 Key 以 sk-omni- 开头且未被删除 |
402 | Insufficient Balance | 账户余额为零或已欠费 | 前往控制台充值后重试 |
403 | Permission Denied | Key 无权限访问该模型 | 在控制台编辑 Key 权限,添加对应模型 |
404 | Model Not Found | 模型 ID 不存在或已下线 | 检查模型 ID 拼写,参考第三章模型列表 |
429 | Rate Limit Exceeded | 请求频率超过 RPM 或 TPM 限制 | 降低调用频率,或联系申请提升配额 |
500 | Internal Server Error | 平台内部错误 | 稍后重试,或联系技术支持 |
502 | Bad Gateway | 上游模型服务异常 | 切换同系列其他模型,或等待恢复 |
503 | Service Unavailable | 模型服务临时不可用 | 等待 1~5 分钟后重试 |
7.2 常见报错排查
错误:401 - API Key 无效
- 确认 Header 格式:Authorization: Bearer sk-omni-xxxxxxxxxxxxxxxx(注意 Bearer 后有一个空格)
- 确认 Key 未被删除:登录控制台「API 密钥管理」页面查看状态
- 注意区分 OmniT Key(sk-omni-开头)和 OpenAI 原厂 Key(sk-开头)
错误:402 - 余额不足
- 前往控制台「费用中心」→「账户充值」进行充值
- 若账户有余额但仍报 402,可能是 Key 级别的月度用量上限已达到,进入控制台编辑 Key 设置
错误:404 - 模型未找到
- 检查 model 字段的值与第三章模型列表中的 ID 完全一致(区分大小写)
- 部分模型 ID 包含版本号,如 qwen3-235b-a22b,不可省略后缀
错误:429 - 请求频率超限
- 每个模型均有 RPM(每分钟请求数)和 TPM(每分钟 Token 数)双重限制,见第三章表格
- 建议在代码中加入指数退避重试逻辑(Exponential Backoff)
- 高并发场景请提前联系技术支持申请提升限额
错误:请求超时(Timeout)
- 非流式请求建议设置 60 秒超时;流式请求建议设置 120 秒超时
- 若频繁超时,可尝试换用同系列参数量更小的模型(如从 235B 换用 32B)
- 网络层超时可尝试更换网络环境,或联系技术支持排查线路问题
第八章 常见问题 FAQ
Q1:现有使用 OpenAI 的代码,如何迁移到 OmniT?
只需修改两处,其余代码无需改动:
# 修改前(OpenAI 官方) client = OpenAI(api_key="sk-xxxxxx") # 修改后(OmniT) client = OpenAI( api_key="sk-omni-xxxxxxxxxxxxxxxx", # 替换为 OmniT Key base_url=" " # 新增 base_url ) |
✅ OmniT 完全兼容 OpenAI SDK 的所有参数,包括 functions/tools、response_format 等高级特性(部分模型可能不支持)。 |
Q2:如何判断用哪个模型?
场景 | 推荐模型 | 理由 |
日常问答、写作助手 | deepseek-chat / qwen-plus | 均衡的能力和成本 |
复杂推理、数学问题 | deepseek-reasoner / qwen3-235b | 专为深度推理设计 |
大批量文本处理 | glm-4-flash / deepseek-r1-7b | 免费,高并发 |
长文档摘要(>10万字) | qwen-long / qwen-turbo | 超长上下文支持 |
代码生成与审查 | deepseek-chat / qwen3-32b | 代码能力突出 |
图片理解 | gpt-4o / qwen2.5-vl-72b | 多模态视觉能力 |
对成本极度敏感 | glm-4-flash(免费) | 完全免费 |
Q3:OmniT 支持 Function Calling(工具调用)吗?
支持。OpenAI 系列及 DeepSeek-V3、部分 Qwen 模型均支持 Function Calling,传参方式与 OpenAI 官方接口完全相同。示例:
response = client.chat.completions.create( model="deepseek-chat", messages=[{'role': 'user', 'content': '北京今天天气怎么样?'}], tools=[{ "type": "function", "function": { "name": "get_weather", "description": "获取指定城市的天气信息", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "城市名称"} }, "required": ["city"] } } }], tool_choice="auto" ) |
Q4:支持 Embedding(向量嵌入)接口吗?
支持。调用地址为 POST ,支持 text-embedding-3-small、text-embedding-3-large 等 OpenAI Embedding 模型,以及部分国内 Embedding 模型,可用于构建 RAG 知识库系统。
Q5:如何控制多个项目或用户的费用分配?
可以为不同项目或用户创建独立的 API Key:
- 在控制台为每个项目新建一个 Key,备注项目名称
- 可为每个 Key 设置单独的月度 Token 用量上限,防止单个项目超支
- 在账单明细中按 Key 筛选,即可查看各项目的独立费用明细
Q6:API 响应中的 finish_reason 有哪些取值?
取值 | 含义 | 处理建议 |
stop | 模型正常完成输出,遇到停止符或自然结束 | 正常处理 |
length | 已达到 max_tokens 上限而截断 | 适当增大 max_tokens 或分段处理 |
tool_calls | 模型请求调用工具 | 处理工具调用后继续对话 |
content_filter | 内容被安全策略过滤 | 修改提示词,避免违规内容 |
null | 流式响应中间的 chunk | 继续接收后续 chunk |
第九章 最佳实践
9.1 Prompt 工程建议
- 使用 System 角色明确模型的任务范围和输出格式,可大幅提升回答质量
- 要求模型以 JSON 格式输出时,配合 response_format: {type: 'json_object'} 参数(部分模型支持)
- 复杂任务拆解为多步骤提示,比一次性长提示效果更稳定
- 温度(temperature)建议:代码/数学任务设置 0~0.3;创意写作设置 0.7~1.2
9.2 成本控制建议
- 在开发/测试阶段优先使用免费模型(glm-4-flash)验证逻辑,确认无误后再切换付费模型
- 对 System Prompt 进行压缩和复用,避免每次请求携带过长的系统提示词
- 合理设置 max_tokens,避免模型无限生成造成不必要的费用
- 批量文本处理任务优先选择低价的 qwen-turbo 或 glm-4-flashx
9.3 稳定性与重试策略
生产环境建议实现以下重试逻辑:
import time import openai def chat_with_retry(client, max_retries=3, **kwargs): for attempt in range(max_retries): try: return client.chat.completions.create(**kwargs) except openai.RateLimitError: wait = 2 ** attempt # 指数退避:1s, 2s, 4s print(f'频率限制,{wait}秒后重试...') time.sleep(wait) except openai.APIStatusError as e: if e.status_code in [500, 502, 503]: wait = 2 ** attempt print(f'服务暂时不可用,{wait}秒后重试...') time.sleep(wait) else: raise # 其他错误直接抛出 raise Exception('已达最大重试次数') |
9.4 安全建议
- API Key 应存储在环境变量或密钥管理系统(如 AWS Secrets Manager)中,禁止硬编码在代码里
- 前端应用不应直接调用 OmniT 接口,建议通过后端代理转发,防止 Key 泄露
- 定期检查控制台的调用日志,若发现异常调用量,应立即禁用对应 Key
- 为不同环境(开发/测试/生产)使用不同的 API Key,并设置独立的用量上限
第十章 技术支持与联系方式
如果您在使用过程中遇到任何问题,可通过以下渠道获取支持:
渠道 | 说明 | 响应时间 |
技术支持邮箱 |
| 工作日 24 小时内回复 |
控制台工单 | console.omnit.ai → 帮助 → 提交工单 | 工作日 4 小时内响应 |
开发者社区 | community.omnit.ai(问题讨论、经验分享) | 社区实时互助 |
微信技术群 | 扫码加入(见控制台帮助中心) | 工作日在线答疑 |
商务合作 |
| 工作日 2 小时内回复 |
感谢您选择 OmniT,祝开发愉快
© 2026 OmniT · All Rights Reserved