Skip to main content

端点

描述

将新任务提交给 Shannon 以供执行。任务立即排队,由 Temporal 工作流引擎异步处理。

身份验证

必需:是 在请求头中包含 API 密钥:

请求

请求头

请求体参数

请求体架构

示例 1:通用 AI 驱动执行
示例 2:仅模板执行(无 AI)
避免参数冲突:
  • 不要同时使用 templatetemplate_name(它们是别名 - 仅使用 template
  • 不要将 disable_ai: true 与模型控制参数组合使用 - 网关检测到冲突时会返回 400 错误:
    • disable_ai: true + model_tier → 400
    • disable_ai: true + model_override → 400
    • disable_ai: true + provider_override → 400
  • 顶层参数会覆盖上下文中的等效参数:
    • 顶层 model_tier 会覆盖 context.model_tier
    • 顶层 model_override 会覆盖 context.model_override
    • 顶层 provider_override 会覆盖 context.provider_override
    • 顶层 skill 会覆盖 context.skill
    • 顶层 research_strategy 会覆盖 context.research_strategy

上下文参数 (context.*)

支持的键:
  • role — 角色预设(如 analysisresearchwriterads_researchfinancial_newsbrowser_use
  • system_prompt — 覆盖角色提示;支持从 prompt_params 引用 ${var}
  • prompt_params — 提示/工具的自定义参数
  • model_tier — 当顶层未提供时作为回退
  • model_override — 指定具体模型(规范 ID;例如 gpt-5claude-sonnet-4-5-20250929
  • provider_override — 强制指定提供商(如 openaianthropicgoogle
  • research_strategy(已弃用:请使用顶层 research_strategy 字段;设置顶层参数时 context 中的值将被忽略)
  • skill(已弃用:请使用顶层 skill 字段;设置顶层参数时 context 中的值将被忽略)
  • template — 模板名称(别名:template_name
  • template_version — 模板版本
  • disable_ai — 仅模板模式(不回退到 AI)- 不能与模型控制参数组合使用
  • 窗口控制:history_window_sizeuse_case_presetprimers_countrecents_countcompression_trigger_ratiocompression_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 平台过滤器:facebookinstagrammessengerwhatsappall(默认:all
规则:
  • 顶层参数会覆盖上下文中的等效参数:model_tiermodel_overrideprovider_overrideskillresearch_strategy
  • mode 支持:simple|standard|complex|supervisor(默认:自动检测)
  • model_tier 支持:small|medium|large
  • 冲突验证disable_ai: true 不能与 model_tiermodel_overrideprovider_override 组合使用(返回 400)

角色预设

角色预设为不同的任务类型提供专门的系统提示和工具允许列表。通过 context.role 设置:
仅限 Shannon Cloud:标记为”仅限 Shannon Cloud”的角色是企业功能,需要配置了供应商适配器的 Shannon Cloud 部署。

响应

成功响应

状态200 OK 响应头
  • X-Workflow-ID:Temporal 工作流标识符
  • X-Session-ID:会话标识符(如果未提供则自动生成)
响应体

响应字段

示例

基本任务提交

响应

带会话 ID 的任务(多轮对话)

带上下文的任务

强制层级(顶层)

仅模板执行

监督者模式(Supervisor)

广告研究(仅限 Shannon Cloud)

多平台广告竞争分析,支持平台开关。
平台默认值:所有平台默认启用。使用 platforms 对象选择性地禁用平台或按平台过滤 Meta(facebookinstagrammessengerwhatsappall)。

Deep Research 2.0

Deep Research 2.0 通过迭代覆盖改进提供全面的研究任务支持。
force_research: true 时,Deep Research 2.0 默认启用。它使用带有覆盖评估的多阶段工作流来确保全面的结果。使用 iterative_max_iterations 控制深度(1-5,默认:3)。

带幂等性

带分布式追踪

错误响应

400 错误的请求

缺少查询
无效的 JSON

401 未授权

缺少 API 密钥
无效的 API 密钥

429 请求过多

响应头
  • X-RateLimit-Limit: 100
  • X-RateLimit-Remaining: 0
  • X-RateLimit-Reset: 1609459200
  • Retry-After: 60

500 内部服务器错误

代码示例

Python with httpx

Python with requests

JavaScript/Node.js

cURL with 幂等性

Go

实现详情

工作流创建

提交任务时:
  1. 网关接收请求 → 验证身份验证、速率限制
  2. 生成会话 ID → 如果未提供,自动生成 UUID
  3. 调用 Orchestrator gRPCSubmitTask(metadata, query, context)
  4. Orchestrator 启动 Temporal 工作流 → 持久执行
  5. 返回响应 → 任务 ID、初始状态
  6. 任务异步执行 → 独立于 HTTP 连接

幂等性行为

幂等性密钥用于确保网络重试或重复调用不会生成重复任务。
  1. 首次请求(携带 Idempotency-Key):
    • Shannon 创建任务
    • 将响应缓存到 Redis,TTL 默认为 24 小时
    • 返回任务 ID 和状态
  2. 重复请求(相同 Idempotency-Key,请求体完全一致):
    • Shannon 命中缓存
    • 返回与首次请求相同的任务 ID
    • 响应内容完全一致
  3. 24 小时后
    • 缓存过期
    • 再次提交同一密钥会创建一个全新的任务
缓存详情
  • 存储:Redis
  • TTL:24 小时(86400 秒)
  • 键格式idempotency:<16-char-hash>(对幂等性密钥、用户 ID、请求路径及请求体进行 SHA-256 计算后取前 16 位)
  • 作用域:按用户隔离(哈希包含用户 ID;关闭鉴权时则退化为基于头部、路径和请求体的哈希)
  • 缓存条件:仅缓存 2xx 成功响应;命中缓存时会额外返回 X-Idempotency-Cached: trueX-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 在一次调用中提交任务并获取流 URL。非常适合需要立即进度更新的前端应用。查看统一提交 + 流式传输以获取示例。

相关端点

提交 + 流式传输

POST /api/v1/tasks/stream(推荐用于 UI)

获取任务状态

GET /api/v1/tasks/

流式事件

实时任务事件

列出任务

GET /api/v1/tasks

Python SDK

使用 SDK 替代