要让模型成功触发外部 API 调用,前提是先开启 Function Calling 功能并完整声明工具定义;如果这一关键步骤没有正确配置,模型通常不会主动发起调用。具体流程包括:在控制台勾选启用相关能力,按照 JSON Schema 规范提供工具描述,将工具加入 functions 数组,再通过 user 或 system 消息明确引导调用意图,最后根据 function_call 字段执行真实的 HTTP 请求,并将返回结果再交给模型处理。

要让MiniMax Agent在运行过程中自动调用天气查询、数据库检索或自定义业务 API 等外部服务,必须显式开启 Function Calling 能力并正确声明工具结构,否则模型只会输出文本内容,而不会触发任何实际的 HTTP 请求。
启用Function Calling并声明工具
这一步是整个外部接口调用流程的起点,如果没有配置 functions 字段,后续所有调用步骤都会失效。
第一步:在开发者控制台打开已发布的 Agent 详情页,点击【编辑】→【高级设置】→勾选“启用函数调用(Function Calling)”。【如果未勾选此项,即使在 JSON 中写了 functions,模型也会完全忽略】
第二步:准备一个符合 JSON Schema 规范的工具定义,例如配置天气查询接口:
{"name":"get_weather","description":"按城市名称和温度单位查询实时天气信息","parameters":{"type":"object","properties":{"location":{"type":"string","description":"城市名称,例如北京"},"unit":{"type":"string","enum":["celsius","fahrenheit"],"description":"温度计量单位"}},"required":["location"]}}
第三步:将该工具定义放入请求体的 functions 数组中,并与 messages 保持同级;每个工具的 name 必须唯一,且不能包含空格或特殊字符。
构造含工具调用意图的请求
用户提问中必须隐含或明确表达需要调用外部服务,否则模型通常不会生成 function_call 字段。
方法一:直接提问并带上参数意图
在 messages 中提交 user 消息:“查一下上海的天气,单位用摄氏度。”
方法二:通过 system 消息引导模型行为
在 messages 首位插入 system 角色:“你必须严格按需调用get_weather工具,禁止自行编造天气数据。”
方法三:处理多工具混合调用场景
如果同时声明了 get_weather 和 search_db 两个工具,用户提问“上海天气怎样?再查下订单号ORD-789”,模型可能生成两个 function_call,也可能只调用其中一个——这取决于它对用户意图的理解程度,【不要依赖模型自动拆解复合问题,最好由前端先做意图预判并分多次请求】
解析响应并执行真实HTTP调用
模型返回的是调用指令,不是最终结果;你必须自行将该指令转换为真实的 HTTP 请求。
先检查响应体中是否包含 function_call 字段:如果不存在,就直接读取 content 字段作为回复;如果存在,则提取其中的 name 和 arguments。
可以使用 Python 的 requests 库发起真实调用:
requests.post("https://your-api.com/weather", json=arguments, headers={"Authorization": "Bearer xxx"})
注意:arguments 本质上是字符串,必须先通过 json.loads() 转换后再传入;如果 arguments 为空对象{},说明模型没有提取出有效参数,此时应拒绝执行,并提示用户补充必要信息。
拿到外部 API 返回结果后,必须将其封装为 role: "function" 消息,内容为原始响应体字符串(而不是 JSON 对象),追加到原 messages 末尾,再次提交请求,让模型生成最终回答。
