1. 协议选型
| Response API | JAC-1.1 | |
|---|---|---|
| 传输方式 | HTTP POST + SSE 流式 | WebSocket 长连接(子协议 jac.v1) |
| 适用场景 | 单次问答 / 常规集成 / 第三方程序 | 长会话、工具循环、会话内双向文件传输 |
| 图片传输 | 支持(input_image) | 支持(file.* 消息族,credit 流控 + SHA-256) |
| 工具调用 | 支持(OpenAI tools 惯例) | 支持(Chat API 兼容格式) |
| 思考披露 | 支持(reasoning) | 支持(effort / depth 可控) |
两种协议均以 API Key 鉴权(Authorization: Bearer <API Key>)。
本服务暂不支持 Chat Completions API。
2. Response API · 基本对话
2.1 端点与鉴权
| 项目 | 值 |
|---|---|
| Base URL | https://ai.jurassic-period.com/ |
| 对话端点 | POST /v1/responses |
| 鉴权 | Authorization: Bearer <API Key> |
| 编码 | UTF-8(Content-Type: application/json) |
2.2 请求示例
curl https://ai.jurassic-period.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "jurassic-1.1-tyranno",
"input": "用中文介绍侏罗纪AI通信标准"
}'2.3 响应示例
{
"id": "resp_8f21",
"object": "response",
"status": "completed",
"output": [
{
"type": "message",
"role": "assistant",
"content": [ { "type": "output_text", "text": "JAC-1.1 是……" } ]
}
],
"usage": {
"input_tokens": 12,
"output_tokens": 356,
"total_tokens": 368
}
}3. Response API · 流式输出
请求体加 "stream": true,响应为 text/event-stream 的 SSE,
事件遵循 OpenAI Responses 惯例,末尾以 data: [DONE] 结束:
curl -N https://ai.jurassic-period.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "model": "jurassic-1.1-tyranno", "input": "你好", "stream": true }'主要事件类型:response.created →
response.output_text.delta(增量文本)→
response.completed(含最终 usage)。
4. Response API · 图片传输
input 使用内容分块数组即可携带图片(URL 或 Base64):
{
"model": "jurassic-1.1-tyranno",
"input": [
{
"role": "user",
"content": [
{ "type": "input_text", "text": "这张图里是什么?" },
{ "type": "input_image", "image_url": "https://example.com/fossil.png" }
]
}
]
}- URL 方式:
{ "type": "input_image", "image_url": "https://…" } - Base64 方式:
{ "type": "input_image", "image_url": "data:image/png;base64,…" } - 单条消息可混合多张图片与文本分块;图片大小与数量受账号配额限制。
5. Response API · 工具调用
在请求中声明 tools(OpenAI function 格式),模型需要调用工具时返回
function_call 项;把工具执行结果以 function_call_output
回传即可继续对话:
{
"model": "jurassic-1.1-tyranno",
"input": [
{ "role": "user", "content": "查一下三叠纪的化石" }
],
"tools": [
{
"type": "function",
"name": "search_fossil",
"description": "检索化石数据库",
"parameters": {
"type": "object",
"properties": {
"era": { "type": "string" },
"query": { "type": "string" }
},
"required": [ "query" ]
}
}
]
}模型返回工具调用(type: "function_call",含 call_id 与
arguments)后,执行本地函数并回传:
{
"model": "jurassic-1.1-tyranno",
"input": [
{ "role": "user", "content": "查一下三叠纪的化石" },
{ "type": "function_call", "call_id": "call_1", "name": "search_fossil",
"arguments": "{\"era\":\"三叠纪\",\"query\":\"恐龙\"}" },
{ "type": "function_call_output", "call_id": "call_1",
"output": "{\"count\":3,\"items\":[…]}" }
]
}6. 在 JPCode 中配置
| 配置项 | 填写值 |
|---|---|
| 服务商名称 | 侏罗纪 AI(自定义) |
| Base URL | https://ai.jurassic-period.com/ |
| Key | 你的 API Key |
| API 形态 | Responses(本服务暂不支持 Chat API) |
| 模型 | jurassic-1.1-tyranno 等侏罗纪模型 |
7. JAC · 会话建立
JAC-1.1(侏罗纪AI通信标准,JAC-SPEC-1.1)运行于 WebSocket 之上, 一条连接 = 一个会话:
wss://jpcode.jurassic-period.com/jac/v1/session Sec-WebSocket-Protocol: jac.v1
| 步骤 | 方向 | 消息 | 说明 |
|---|---|---|---|
| 1 | C→S | session.declare | 连接后 5 秒内发送:环境、工具、代码模块、reasoning 配置(会话内仅一次) |
| 2 | S→C | session.ready | 返回 accepted_tools、生效思考深度、server_caps(含 file.transfer) |
| 3 | C→S | user.message | 用户消息,开启一个 turn |
| 4 | S→C | assistant.chunk ×n | 纯流式增量(content / thinking / tool_calls) |
| 5 | S→C | assistant.done | turn 结束:usage + stats + session_usage |
| 6 | 双向 | session.end | 关闭会话(随后 WebSocket Close) |
约束:上下文一次声明,后续不可重复 declare(否则 error 4002 并关闭);
工具变更用 tool.update 增量操作;所有 assistant 输出只有流式一种交付方式。
8. JAC · 对话与工具调用
工具调用与 Chat API 兼容:模型需要调用工具时下发
tool.call(含工具名与参数对象),客户端执行后回 tool.output,
服务端在同一 turn 内续流(工具循环深度上限 8,超出返回 4302):
S→C { "type": "tool.call", "call_id": "call_1",
"name": "search_fossil", "arguments": { "era": "三叠纪" } }
C→S { "type": "tool.output", "call_id": "call_1",
"output": { "count": 3 } }
S→C { "type": "assistant.chunk", "seq": 9,
"delta": { "content": "共找到 3 条记录……" } }
S→C { "type": "assistant.done",
"usage": { "input_tokens": 120, "output_tokens": 88 },
"session_usage": { "total_tokens": 208 } }思考披露:在 session.declare 的 reasoning 中配置
expose(always / on_done / never)与 effort
(minimal / low / medium / high,对应 depth 0 / 2 / 5 / 8),思考内容随
delta.thinking 流式下发,token 计入 thinking_tokens。
9. JAC · 文件传输(1.1 新增)
会话内支持双向文件传输(与对话并行):控制面 file.offer / accept / data /
ack / complete / cancel 文本帧 + file.data 二进制帧:
- credit 流控:接收方按窗口授权发送,周期
file.ack补充额度; - 完整性:传输完成后以 SHA-256 校验,通过才落地正式文件;
- 断点续传:中断保留
.jacpart与恢复记录,重连带meta.resume.token续传; - 并发:单会话默认最多 4 个并发传输,超出
file.reject("too_many")。
10. 完整标准文档
JAC-1.1 完整标准(JAC-SPEC-1.1,17 章:消息 JSON Schema、错误码注册表、 一致性等级、完整会话示例、与 Chat API 字段映射表)已发布为独立文档页: JAC-1.1 侏罗纪AI通信标准 · 全文。
也可直接取 Markdown 原文:JAC-1.1 标准 Markdown 原文(供 AI 引擎与离线阅读)