复制本页的 curl 示例前,先选择 Cloud 区域。需要认证的调用必须使用与密钥同一区域的地址。下方示例都使用 MIROBODY_API_BASE:
SDK 示例中如果写有全球区的完整地址,中国区账户须换成对应的中国区地址。参阅区域。
Agent API 运行两类工具:
- 内置服务端工具:平台的健康数据工具。它们在服务端运行,你从不需要自己执行;平台只把运行轨迹报告给你,不会把执行工作交给你。
- 客户端 function 工具:你在请求上声明的工具。模型需要调用工具时,响应会以
function_call 交接给你;你执行工具后,这轮运行继续。
内置服务端工具
agent 始终持有针对 Subject 数据的平台工具集(与 Answers API 同一目录):
query_health_data:检索并聚合 Subject 的记录
list_family_members:解析 Subject 有权查询的关爱圈成员
search_medical_evidence:检索文献、指南/共识与注册试验(供给 citations)
read_source:按检索返回的 ref 读取一条结果;不支持任意 URL 抓取
/v1 agent 的领域工具只读。它还会运行内部的规划与分析工具。每次服务端工具运行都落在响应对象的顶层 tool_steps 扩展里,绝不作为 output item(以免官方 SDK 解析未知类型);流式下则通过 response.mirobody_tool_call 旁路事件返回。
声明客户端工具
规则(违反即显式 400,绝不静默丢弃):
安全提示: agent 持有访问 Subject 健康数据的工具。Subject 隔离已把每次调用限定在该开发者自己的数据内,但你的工具描述与结果同属提示面,因此不要未经审查地把不可信的第三方文本灌进去。
模型调用你的工具时,响应以一个 function_call output item 完成(status: "completed":响应已经结束,对话还在等你):
流式下,同一交接以 response.output_item.added → response.function_call_arguments.delta / .done → response.output_item.done 事件组到达(见流式传输)。
执行工具后,用两种方式之一续运行:
路径 1 —— 有状态续运行(previous_response_id)
只发送 function_call_output item,并引用交接响应。服务端恢复暂停的 agent 线程(无需重发历史):
要求:输出必须恰好覆盖所有待处理 call_id(并行调用 → 每个一条 function_call_output);续运行时不得混入 message item;一次交接只能续运行一次(重复续运行会显式失败)。交接响应必须已被存储(store=true,即默认值)。
路径 2 —— 无状态全量回放
openai-agents 的默认做法是:把完整的 item 转录重发在 input 中,包含 function_call / function_call_output 对,且不带 previous_response_id:
这些成对 item 会被重建为对话历史,运行按新一轮继续。全程可配 store=false。
openai-agents 端到端
SDK 会处理整个闭环,从声明、交接、执行到回放:
所有会触达 Mirobody 工具的 agents-SDK agent,都必须通过 model_settings=ModelSettings(extra_body={"user": ...}) 传入 Subject。不传时,这次运行读到的是账户默认 Subject,而不是你想要的那个用户。
模型用内置服务端工具读取 Subject 的真实血糖数据,再交接给你的 book_appointment,由 SDK 在本地执行并自动回放转录。
续运行错误