- 你提前定义好 “工具清单”:
- 比如你告诉 AI:“现在有 3 个工具可用 → [天气 API、翻译 API、计算器]”。
- 每个工具要写清楚 “能干啥”(比如翻译 API 能把中文→英文,计算器能算加减乘除)。
- AI 根据问题判断:
- 用户问:“明天北京天气如何?” → AI 发现 “天气 API” 能解决,就调用它;
- 用户问:“100 美元等于多少人民币?” → AI 发现 “计算器” 和 “翻译 API” 都沾边,但 “计算器” 更直接,就选计算器。
- AI 只能选你给的工具:
- 如果你没提供 “机票预订 API”,用户让 AI 订机票,它只能回答 “对不起,我无法帮你预订机票”。
- 用户问:“明天北京多少度?”
- AI 心里想:
- 工具 1(get_weather):需要城市和日期,能查天气 → 匹配!
- 工具 2(calculate):只能算数学题 → 不匹配!
- 结论:调用
get_weather,参数填 {"city":"北京","date":"2025-06-17"}
- 天气 API 返回:
{"temp":28,"humidity":60,"weather":"晴"}
- AI 加工成人话:“明天北京晴天,28℃,湿度 60%,适合出门~”
- 反例:工具描述写 “计算数学问题” → 模糊,AI 可能不知道啥算 “数学问题”;
- 正例:写 “计算加减乘除、百分比、开根号等数学表达式” → 清晰!
- 如果提供 20 个工具,AI 可能纠结选哪个 → 按场景分组,比如:
- 聊天场景:只给 “翻译 API”“情感分析 API”;
- 工作场景:给 “邮件发送 API”“文件搜索 API”。
- 训练时,给 AI 看类似问题该选哪个工具:
- 问题:“把‘Hello world’翻译成中文” → 应该调用 “翻译 API”;
- 多给几个正确案例,AI 会学聪明。
- 场景 1:工具描述不清晰
- 你提供 “get_flight” 工具(查航班),但描述写 “查询交通工具” → AI 可能用它查公交车。
- 场景 2:问题太模糊
- 用户问:“明天去上海的最便宜方式是啥?” → AI 可能同时调用 “航班 API” 和 “火车 API”,浪费资源。
- 解决方案:
- 写工具描述时,明确 “适用场景”(比如 “get_flight:仅用于查询航班信息”);
- 对模糊问题,让 AI 先问澄清信息(比如 “请问您想查询飞机、火车还是汽车?”)。
- 你定义工具边界:就像超市货架,你摆什么商品(工具),AI 就能选什么;
- AI 按需求匹配:它会对比问题和工具描述,选最 “对口” 的工具;
- 你可以优化引导:通过调整工具描述、控制工具数量、给示例,让 AI 少犯错。
简单说,Function Call 就像你给 AI 配了个 “工具包”,它会自己判断用哪个工具干活,但工具包里有什么、每个工具是干啥的,得由你提前定好!