开发者文档
接入你的本地 AI 接口
先创建本站密钥,再通过统一的文本接口完成一次模拟调用。
1. 获取接口地址和密钥
在控制台的 API 密钥页创建密钥并安全保存。下方地址根据你当前访问的网站生成。
https://ai.shiyian.com.cn/v1模型目录:GET /v1/models;文本调用:POST /v1/chat/completions。两者都使用 Authorization: Bearer YOUR_API_KEY。
2. 确认模型状态
初始模拟模型 ID 为 mock-text-1。如果管理员更改配置,以实时模型目录为准。未配置或未验证的真实模型不可调用。
Windows PowerShell 示例
把密钥仅保存在当前进程的环境变量中,再运行示例。不要把真实密钥写进共享文件或提交到 Git。
PowerShell · 普通响应
# 请先在当前进程安全设置 LOCAL_AI_API_KEY;不要提交真实值。
if (-not $env:LOCAL_AI_API_KEY) { throw "请先设置 LOCAL_AI_API_KEY" }
$baseUrl = "https://ai.shiyian.com.cn/v1"
$headers = @{
Authorization = "Bearer $env:LOCAL_AI_API_KEY"
"Idempotency-Key" = [guid]::NewGuid().ToString()
}
$body = @{
model = "mock-text-1"
messages = @(@{ role = "user"; content = "你好,请介绍这个测试接口。" })
max_tokens = 256
stream = $false
} | ConvertTo-Json -Depth 5
Invoke-RestMethod -Uri "$baseUrl/chat/completions" -Method Post `
-Headers $headers -ContentType "application/json; charset=utf-8" `
-Body ([System.Text.Encoding]::UTF8.GetBytes($body))Python 示例
仅使用 Python 标准库。示例从环境变量读取密钥,不需要额外 SDK。
Python · 普通响应
import json
import os
import uuid
from urllib.request import Request, urlopen
from urllib.error import HTTPError
base_url = "https://ai.shiyian.com.cn/v1"
api_key = os.environ["LOCAL_AI_API_KEY"]
request_id = str(uuid.uuid4()) # 同一次调用遇到疑问时保留,不自动换号重试
body = {
"model": "mock-text-1",
"messages": [{"role": "user", "content": "你好,请介绍这个测试接口。"}],
"max_tokens": 256,
"stream": False,
}
req = Request(base_url + "/chat/completions",
data=json.dumps(body).encode("utf-8"),
headers={"Content-Type": "application/json",
"Authorization": "Bearer " + api_key,
"Idempotency-Key": request_id}, method="POST")
try:
with urlopen(req, timeout=90) as response:
print("请求编号:", response.headers.get("X-Request-ID"))
print(json.loads(response.read()))
except HTTPError as exc:
print("请求编号:", exc.headers.get("X-Request-ID"))
print(exc.read().decode("utf-8"))逐步接收 SSE 响应
将 stream 改为 true,响应类型为 text/event-stream。按空行分隔事件,读取每个 data: JSON 中的 choices[0].delta.content,遇到 [DONE] 结束。末尾用量事件包含 usage 与 usage_source。
事件可能横跨多次网络读取,需保留未读完整的片段,并使用流式 UTF-8 解码。不要把一次网络读取当成一个完整事件。可以在文本调试台直接验证。
理解错误与计价
| 状态码 | 处理方式 |
|---|---|
| 400 / 413 / 415 | 检查字段、请求体积与 JSON 类型。 |
| 401 / 403 | 检查密钥、会话或页面安全校验;不要把密钥放到 URL 中。 |
| 402 / 409 / 429 | 检查额度、重复请求、限额及频率。先查看错误中的 code。 |
| 502 / 503 / 504 | 保留请求编号,查看请求记录;不要盲目自动重试。 |
错误格式为 {"error":{"message":"说明","type":"类型","code":"错误码","request_id":"请求编号"}}。响应头含 X-Request-ID。SSE 错误通过数据事件返回,随后发送 [DONE]。
金额由后端以整数微单位记录:1 测试额度单位 = 1,000,000 微单位。先预留、再按用量结算。模拟供应商的真实上游成本为 0,本站模拟计价独立记录。未知用量或成本显示未知。
当前能力与限制
- 提供文本模型目录、Chat Completions 和独立的图片/视频任务接口;不代表支持所有 OpenAI 接口。
- 文本支持普通响应与 SSE;图片/视频工作台支持单次任务、状态查询与结果链接。音频、工具调用和自定义上游 URL 尚未开放。
- 单次最多输出 1024 tokens;账号并发与请求频率以控制台当前配置为准。
- 注册需要管理员发放的一次性邀请码,并由部署配置控制是否开放;邮件找回、真实充值、提现与对外收费尚未开放。
- 部分免费文本模型的普通响应/SSE 与 Kolors 图片生成已完成真实验收;视频已适配但尚未完成真实生成验收。真实调用仍受开关、预算和实时目录状态控制。
- 仅记录排障和计价元数据;不默认存储完整提示词与回答。
- 本机服务会受关机、睡眠、断电、网络中断影响。当前页面不代表公网可用性验收。