端点
描述
将新任务提交给 Shannon 以供执行。任务立即排队,由 Temporal 工作流引擎异步处理。身份验证
必需:是 在请求头中包含 API 密钥:请求
请求头
请求体参数
请求体架构
示例 1:通用 AI 驱动执行上下文参数 (context.*)
支持的键:
role— 角色预设(如analysis、research、writer、ads_research、financial_news、browser_use)system_prompt— 覆盖角色提示;支持从prompt_params引用${var}prompt_params— 提示/工具的自定义参数model_tier— 当顶层未提供时作为回退model_override— 指定具体模型(规范 ID;例如gpt-5、claude-sonnet-4-5-20250929)provider_override— 强制指定提供商(如openai、anthropic、google)research_strategy— (已弃用:请使用顶层research_strategy字段;设置顶层参数时 context 中的值将被忽略)skill— (已弃用:请使用顶层skill字段;设置顶层参数时 context 中的值将被忽略)template— 模板名称(别名:template_name)template_version— 模板版本disable_ai— 仅模板模式(不回退到 AI)- 不能与模型控制参数组合使用- 窗口控制:
history_window_size、use_case_preset、primers_count、recents_count、compression_trigger_ratio、compression_target_ratio - Deep Research 2.0 控制(当
force_research: true时):iterative_research_enabled— 启用/禁用迭代覆盖循环(默认:true)iterative_max_iterations— 最大迭代次数 1-5(策略预设会注入默认值;否则回退为3)enable_fact_extraction— 将结构化事实提取到元数据中(默认:false)
- 广告研究平台开关(当
role: "ads_research"时):platforms.google— 启用/禁用 Google 购物广告(默认:true)platforms.yahoo_jp— 启用/禁用 Yahoo Japan 广告(默认:true)platforms.meta— 启用/禁用 Meta 广告库(默认:true)platforms.meta_platform— Meta 平台过滤器:facebook、instagram、messenger、whatsapp或all(默认:all)
- 顶层参数会覆盖上下文中的等效参数:
model_tier、model_override、provider_override、skill、research_strategy mode支持:simple|standard|complex|supervisor(默认:自动检测)model_tier支持:small|medium|large- 冲突验证:
disable_ai: true不能与model_tier、model_override或provider_override组合使用(返回 400)
角色预设
角色预设为不同的任务类型提供专门的系统提示和工具允许列表。通过context.role 设置:
仅限 Shannon Cloud:标记为”仅限 Shannon Cloud”的角色是企业功能,需要配置了供应商适配器的 Shannon Cloud 部署。
响应
成功响应
状态:200 OK
响应头:
X-Workflow-ID:Temporal 工作流标识符X-Session-ID:会话标识符(如果未提供则自动生成)
响应字段
示例
基本任务提交
带会话 ID 的任务(多轮对话)
带上下文的任务
强制层级(顶层)
仅模板执行
监督者模式(Supervisor)
广告研究(仅限 Shannon Cloud)
多平台广告竞争分析,支持平台开关。Deep Research 2.0
Deep Research 2.0 通过迭代覆盖改进提供全面的研究任务支持。带幂等性
带分布式追踪
错误响应
400 错误的请求
缺少查询:401 未授权
缺少 API 密钥:429 请求过多
X-RateLimit-Limit: 100X-RateLimit-Remaining: 0X-RateLimit-Reset: 1609459200Retry-After: 60
500 内部服务器错误
代码示例
Python with httpx
Python with requests
JavaScript/Node.js
cURL with 幂等性
Go
实现详情
工作流创建
提交任务时:- 网关接收请求 → 验证身份验证、速率限制
- 生成会话 ID → 如果未提供,自动生成 UUID
- 调用 Orchestrator gRPC →
SubmitTask(metadata, query, context) - Orchestrator 启动 Temporal 工作流 → 持久执行
- 返回响应 → 任务 ID、初始状态
- 任务异步执行 → 独立于 HTTP 连接
幂等性行为
幂等性密钥用于确保网络重试或重复调用不会生成重复任务。-
首次请求(携带
Idempotency-Key):- Shannon 创建任务
- 将响应缓存到 Redis,TTL 默认为 24 小时
- 返回任务 ID 和状态
-
重复请求(相同
Idempotency-Key,请求体完全一致):- Shannon 命中缓存
- 返回与首次请求相同的任务 ID
- 响应内容完全一致
-
24 小时后:
- 缓存过期
- 再次提交同一密钥会创建一个全新的任务
- 存储:Redis
- TTL:24 小时(86400 秒)
- 键格式:
idempotency:<16-char-hash>(对幂等性密钥、用户 ID、请求路径及请求体进行 SHA-256 计算后取前 16 位) - 作用域:按用户隔离(哈希包含用户 ID;关闭鉴权时则退化为基于头部、路径和请求体的哈希)
- 缓存条件:仅缓存 2xx 成功响应;命中缓存时会额外返回
X-Idempotency-Cached: true和X-Idempotency-Key: <your-key>头部
会话管理
- 无 session_id:自动生成 UUID、新鲜上下文
- 带 session_id:从 Redis 加载以前的对话历史
- 会话持久性:默认 TTL 30 天
- 多轮对话:具有相同
session_id的所有任务共享上下文
上下文对象
context 对象存储为元数据并传递给:
- 智能体执行环境
- 工具调用(可通过
ctx.get("key")访问) - 会话内存(供将来轮次参考)
- 用户偏好:
{"language": "spanish", "format": "markdown"} - 业务上下文:
{"company_id": "acme", "department": "sales"} - 约束:
{"max_length": 500, "tone": "formal"}
最佳实践
1. 始终为关键任务使用幂等性密钥
2. 对对话使用会话
3. 提供丰富的上下文
4. 妥善处理错误
5. 存储任务 ID 以供追踪
一次调用提交 + 流式传输
相关端点
提交 + 流式传输
POST /api/v1/tasks/stream(推荐用于 UI)
获取任务状态
GET /api/v1/tasks/
流式事件
实时任务事件
列出任务
GET /api/v1/tasks
Python SDK
使用 SDK 替代