Function Calling使用
入门·10 分钟·通过可运行代码讲解「Function Calling使用」,覆盖环境准备、核心代码、参数说明、异常处理、工程化改造和练习任务,适合 AI 编程入门。
Function Calling使用
Function Calling 让模型不只生成文字,还能按照你定义的函数格式请求调用外部工具。它是构建工具型助手和 Agent 的基础能力。
为什么需要Function Calling
如果用户问“北京今天气温多少”,模型自己不应该凭空回答。正确做法是让模型识别出需要查天气,然后调用天气函数,把真实结果再组织成自然语言。
Function Calling 的价值是把“语言理解”和“外部能力”连接起来。
一个天气函数例子
先定义普通 Python 函数:
def get_weather(city: str) -> dict:
return {
'city': city,
'weather': '晴',
'temperature': '26℃'
}
真实项目中这个函数可能会请求天气 API。
给模型描述工具
你需要告诉模型工具名称、用途和参数结构:
tools = [{
'type': 'function',
'function': {
'name': 'get_weather',
'description': '查询指定城市的天气',
'parameters': {
'type': 'object',
'properties': {
'city': {'type': 'string', 'description': '城市名称'}
},
'required': ['city']
}
}
}]
模型看到用户问题后,会决定是否需要调用这个函数。
执行流程
Function Calling 通常分两步:
- 第一次请求:模型判断要调用哪个函数,并给出参数。
- 程序执行函数,把结果发回模型。
- 第二次请求:模型根据函数结果生成最终回答。
注意:函数不是模型自动执行的,而是你的程序执行的。模型只负责提出调用请求。
参数校验很重要
不要盲目信任模型给出的参数。调用真实接口前要检查:
- 参数是否缺失;
- 类型是否正确;
- 是否越权;
- 是否包含危险内容;
- 是否超过频率限制。
例如删除文件、发送邮件、付款等高风险函数必须人工确认。
适合的场景
- 查询天气、快递、订单;
- 检索数据库;
- 执行计算;
- 创建日程;
- 调用企业内部系统;
- 将自然语言转换成结构化参数。
常见错误
- 工具描述太模糊,模型不知道何时调用;
- 参数 schema 写得太松,导致格式不稳定;
- 函数执行失败后没有把错误反馈给模型;
- 给模型过多工具,选择变得混乱;
- 高风险工具没有权限控制。
小结
Function Calling 的核心是:模型负责理解意图和生成参数,程序负责执行工具和控制权限。它让 AI 从“会说”走向“能做”,但也要求更严格的工程安全设计。