简介
Shannon 提供 HTTP REST 和 gRPC API,用于提交任务、流式传输结果和管理 AI 智能体工作流。 基础 URL:http://localhost:8080(开发环境)
快速开始
API 端点
核心任务操作
| 端点 | 方法 | 描述 |
|---|---|---|
/api/v1/tasks | POST | 提交新任务 |
/api/v1/tasks/stream | POST | 提交任务并获取流 URL(201) |
/api/v1/tasks | GET | 使用过滤器列出任务 |
/api/v1/tasks/{id} | GET | 获取任务状态和结果 |
/api/v1/tasks/{id}/events | GET | 获取任务事件历史 |
/api/v1/tasks/{id}/timeline | GET | 获取 Temporal 执行时间线 |
实时流式传输
| 端点 | 方法 | 描述 |
|---|---|---|
/api/v1/stream/sse?workflow_id={id} | GET | 服务器发送事件流 |
/api/v1/stream/ws?workflow_id={id} | GET | WebSocket 流 |
会话管理
| 端点 | 方法 | 描述 |
|---|---|---|
/api/v1/sessions | GET | 列出会话(分页) |
/api/v1/sessions/{sessionId} | GET | 获取会话详情 |
/api/v1/sessions/{sessionId}/history | GET | 获取会话聊天历史 |
/api/v1/sessions/{sessionId}/events | GET | 获取会话事件(按轮次分组) |
/api/v1/sessions/{sessionId} | PATCH | 更新会话标题(UUID 或 external_id) |
/api/v1/sessions/{sessionId} | DELETE | 删除会话(软删除;幂等 204) |
健康检查和可观测性
| 端点 | 方法 | 描述 | 需要认证 |
|---|---|---|---|
/health | GET | 健康检查 | 否 |
/readiness | GET | 就绪探针 | 否 |
/openapi.json | GET | OpenAPI 3.0 规范 | 否 |
认证
开发环境默认:认证已禁用(
GATEWAY_SKIP_AUTH=1)。生产环境请启用。SSE 流式传输:浏览器
EventSource 无法发送自定义请求头。- 开发环境:设置
GATEWAY_SKIP_AUTH=1可跳过认证。 - 生产环境:由后端(或边缘代理)发起 SSE 并注入
X-API-Key或Authorization: Bearer请求头。 - 请勿通过 URL 查询参数传递 API 密钥。
响应格式
所有端点返回 JSON,错误格式一致: 成功(200):速率限制
- 默认:每个 API 密钥 60 请求/分钟
- 响应头:
X-RateLimit-Limit、X-RateLimit-Remaining、X-RateLimit-Reset - 429 响应:包含
Retry-After头部
事件流式传输
Shannon 为实时监控发出 26 种事件类型: 核心事件:WORKFLOW_STARTED、WORKFLOW_COMPLETEDAGENT_STARTED、AGENT_COMPLETEDSTATUS_UPDATE、DATA_PROCESSINGERROR_OCCURRED
LLM_PROMPT、LLM_OUTPUT、LLM_PARTIAL
TOOL_INVOKED、TOOL_OBSERVATION
EventType 枚举进行过滤与判断,参见SDK 流式传输。
客户端接入
推荐使用网关 REST API 或 Python SDK(仅 HTTP):- REST 端点:
http://localhost:8080/api/v1/* - Python SDK:
ShannonClient(base_url="http://localhost:8080")
最佳实践
1. 使用会话 ID 保持上下文
2. 对长任务使用流式传输事件
3. 处理速率限制
4. 使用幂等性键
SDK
Python SDK
官方 Python 客户端,支持流式传输
REST 客户端
使用任何 HTTP 客户端库