给 AI 助手
llms.txt、整份文档与单页的 Markdown 形态,一键复制入口,以及供 AI 编程助手使用的提示词与接入要点。
更新于 2026-10-24·阅读约 6 分钟
文档提供供 AI 编程助手(Claude、ChatGPT、Cursor、Copilot 等)读取的 Markdown 形态。将文档交给助手后,助手可据此编写接入 SciRouter 的代码。
三种形态
#| 地址 | 内容 | 适用场景 |
|---|---|---|
/llms.txt | 目录:每一页的标题、一句话说明与 Markdown 地址 | 可联网的助手按需读取 |
/llms-full.txt | 全部接口文档合并为一个 Markdown 文件,开头附「接入要点」 | 一次性提供给助手,最常用 |
/docs/<页面>.md | 单页 Markdown,例如 /docs/quickstart.md | 只需要某一页时 |
llms.txt 的格式遵循 llmstxt.org↗ 的约定。所有链接均为绝对地址,代码示例中的 base URL 已替换为本站的实际地址。
llms-full.txt 只收录编写接入代码所需的页面。「网页端指南」(站内 Chat、课题)面向在网页上操作的用户,不收入该文件;这些页面仍有单页 .md,列在 llms.txt 的 Optional 部分。
一键复制
#| 位置 | 按钮 | 复制的内容 |
|---|---|---|
| 每一页标题下方 | 「复制 Markdown」 | 该页的 Markdown 原文,含标题、来源地址与更新日期 |
| 文档首页 | 「复制全部接口文档」 | 与 /llms-full.txt 相同 |
复制后粘贴到助手的对话框,再写明要实现的功能。
提示词示例
#text以下是 SciRouter(兼容 OpenAI Chat Completions、OpenAI Responses 与 Anthropic Messages 三种格式的科研模型 API)的完整接口文档。
先读「接入要点」,然后实现:<要实现的功能,例如「给 FastAPI 服务加一个调用 <模型 id> 的接口,流式返回给前端」>。
要求:
- API Key 从环境变量 SCIROUTER_API_KEY 读取,不写进代码;
- 错误按 error.code 分支,按文档区分可重试与不可重试的错误;
- 流式请求处理两种失败:未收到 [DONE] 就结束、收到错误分片;
- 模型 id 使用我给出的,不自行编造;
- 不调用文档中没有的接口。
<粘贴复制的文档>最后一条要求用于防止助手按调用 OpenAI 的习惯,使用 Assistants 等平台不提供的接口。
接入要点
#llms-full.txt 的开头即为以下内容。不提供整份文档时,仅提供本节内容也可让助手写出可用的初版代码。
- base URL:
https://api.scirouter.cn/v1。兼容 OpenAI 格式,另支持 Anthropic Messages 与 OpenAI Responses 格式。共十个接口:GET /models、GET /models/{model_id}、POST /chat/completions、POST /embeddings;OpenAI Images 格式的POST /images/generations、POST /images/edits(multipart)、POST /images/variations,只能调用生图模型(/models中scirouter.kind为image的模型);OpenAI Responses 格式的POST /responses,无状态:store只接受 false,不支持previous_response_id/background;Anthropic 格式的POST /messages、POST /messages/count_tokens(Anthropic SDK 自行拼接/v1,其 base URL 只写到域名)。旧的/completions、Assistants、语音、按 id 操作已保存响应等接口不存在,返回 404。model必须是具体的模型 id(或平台为其配置的别名),不提供auto这类虚拟模型。 - 认证:
Authorization: Bearer <API Key>或x-api-key: <API Key>,同时携带时须为同一个 Key;不接受其他写法(Cookie、查询参数、api-key请求头)。Key 格式为sk-sr-加 40 位字母数字,三种格式均只接受该 Key;OpenAI、Anthropic 等厂商的 Key 返回 401(平台自行鉴权、计费,以平台的凭据调用厂商)。Key 从环境变量(如SCIROUTER_API_KEY)读取,不写入代码,不放入浏览器、App 等前端。 - 模型 id:格式为
厂商/模型名,从GET /models获取,原样填入model。列表已按该 Key 的权限过滤(Key 与项目的白名单、套餐、受限模型的授权),列出的模型均有调用权限;唯一例外是维护中的模型(503model_unavailable)。 - 错误:OpenAI 格式为
{"error": {"message", "type", "code", "scirouter_code", "param", "request_id", "details"}}。按小写的error.code分支,不按message判断。三个上游语义错误(400context_window_exceeded/unsupported_param/content_filtered)的error.code为原厂兼容值(context_length_exceeded/unsupported_parameter/content_filter),平台码在error.scirouter_code。403 的details.scope(key/project/plan)指明拦截请求的白名单层级。/messages两个接口使用 Anthropic 格式{"type": "error", "error": {"type", "message", "code", "details"}, "request_id"},状态码与error.code同上。 - 应重试(指数退避,遵守
Retry-After,设重试上限):429rate_limited、429upstream_saturated、502upstream_error、503model_unavailable(仅限带Retry-After时;不带时属于details.reason为tools_unsupported一类,重试无效)、504upstream_timeout、409idempotency_conflict(同一个键的请求仍在处理中;同一个键对应不同请求体也返回该码,有限次重试后仍为 409 时停止)。套餐日上限触发的rate_limited,Retry-After指向次日零点。 - 不应重试:其余 4xx。包括 400
context_window_exceeded(缩短输入或调小max_tokens)、400unsupported_param(error.param指出无法传递的参数;请求中有只能原样转发的内容而没有可用线路时,details.reason为unsupported_content)、402insufficient_quota(预扣不足)、429key_quota_exceeded(Key 的月度上限,创建后不能修改,次月恢复或更换 Key)、429project_budget_exceeded(项目月预算,Retry-After指向次月 1 日,可在控制台调高)。 - 流式:跳过以
:开头的注释行(心跳: ping);choices可能为空数组;出错时发送一个{"error": …}分片后断开。未收到data: [DONE]的流一律按失败处理,即使 HTTP 状态为 200。/messages的流按 Anthropic 的事件格式发送(带event:行),以message_stop结束,没有[DONE];出错时为event: error,未收到message_stop同样按失败处理。非流式请求最长等待约 270 秒(超时返回 504upstream_timeout,不计费),回答耗时可能超过该时长时使用流式。 - 思考过程:
/chat/completions中,推理模型的思考过程同时出现在reasoning_content与reasoning两个字段(内容相同),非流式在message中,流式在delta中;/messages中为 Anthropic 格式的thinking块。 - 参数:每个参数到线路上只有四种处理结果,即原样传递、翻译、平台模拟、明确告知。提示类参数(采样、思考强度、缓存提示)无法传递时被去掉,并在响应头
X-SciRouter-Param-Actions留痕(如dropped=seed,top_k; translated=reasoning),不报错;契约类参数(结构化输出、工具、n、logprobs)依次尝试翻译、模拟、换线路,均不可行时返回 400unsupported_param。请求头X-SciRouter-Unsupported-Params: strict使提示类参数也返回 400,lenient使契约类参数也被去掉。GET /models的scirouter.supported_params/emulated_params为模型的能力自述。 - 截断与预扣:
finish_reason为length表示回答被max_tokens截断。/chat/completions的max_tokens超过模型或套餐上限时返回 400(details.limit给出上限),不自动截短;/messages超过上限时按上限发出,响应头X-SciRouter-Max-Tokens-Clamped写明请求值与实际值。预扣按输入估算加输出上限冻结配额(账户充值余额大于 0 时输出只按输出上限与平台设定值中的较小者估算),结束后按实际用量结算,实际超出的部分照扣。 - 幂等:非流式的
/chat/completions、/messages、/responses与/embeddings请求可带Idempotency-Key请求头(不超过 128 字节,作用域为该 Key,保留 24 小时,重试时请求体须逐字节相同)。服务端已处理完成、仅响应在传输中丢失时,同键重试直接重放结果,不再扣费;请求由调用方先断开时,服务端取消且不保存结果,重试会重新计费。图片接口也接受该请求头,b64_json与流式的结果不保存,同键再请求返回 409idempotency_conflict。 - 报障:记录响应头
X-Request-Id(错误体中也有request_id)。