给大模型接上工具:Function Calling入门实战 - U9AI导航

给大模型接上工具:Function Calling入门实战

发布时间:2026-09-29T04:00:00.000Z

大模型不会查天气、算账、调接口?Function Calling让模型调用外部工具。从原理到代码,一篇教程上手。 你有没有遇到过这种尴尬:问大模型"明天上海天气怎么样",它一本正经地回答了一串编出来的温度。原因很简单,大模型的知识截止到训练那天,它不会实时查天气,更不会算账、调接口。解决办法就是Function Calling——让模型把"需要外部信息"的部分交出来,由你的代码去执行。 原理一句话讲清:你预先告诉模型"有哪些函数可以用、各自什么参数",模型收到问题后,如果发现需要外部能力,就返回一个结构化的"调用请求"(函数名+参数),而不是直接编答案。你的程序收到这个请求,去调用真实的API(查天气、查数据库、发邮件),把结果再喂给模型,模型基于真实结果回答用户。 用代码理解一下。以OpenAI风格的API为例,你先定义一个函数描述:name是get_weather,description是查询城市天气,parameters里声明city(城市名,字符串,必填)。用户问"上海明天冷不冷",模型输出一个function_call对象:{"name":"get_weather","arguments":"{"city":"上海"}"}。你拿到这个对象,调用自己的天气接口,拿到"上海明天18-22度小雨",再把它作为消息返回给模型,模型就能给出"明天上海18到22度,有小雨,建议带伞"这样的准确回答。 写的时候有四个坑要避开。第一个:函数描述要写清楚参数格式,特别是枚举值,比如天气接口的城市必须用拼音还是中文,写清楚能少一半的报错。第二个:处理模型"幻觉调用"——它偶尔会调用一个不存在的函数名,程序要做好容错,找不到函数就回复"稍等,我来确认一下"。第三个:多轮对话中,函数调用的历史要完整保留在上下文里,不然模型会忘记它已经查过天气。第四个:真实项目里,函数参数要校验,别让模型传一个非法参数直接打到你的接口上。 Function Calling能做什么?基本的:查天气、查汇率、查股票、搜索网页、发邮件、调数据库。进阶的:把多个函数组合起来,让模型自己决定"先查价格再算税费再发订单"——这就是Agent(智能体)的最小形态。事实上,很多Agent框架的核心就是Function Calling + 循环:模型调函数→拿结果→再决策→再调函数。 国内各家模型也都有对应的工具调用能力,接口风格大同小异,原理一致。想上手的路径:先用官方文档跑通一个最简单的例子(比如查天气),然后尝试接自己的业务接口,最后再考虑多函数、多轮循环的复杂场景。 最后记住一句话:Function Calling不是让模型"更聪明",而是给模型"接上了真实世界的接口"。模型还是那个模型,但有了工具,它的回答就从"编造"变成了"查询"。这是所有把大模型落地到业务场景的人,都必须掌握的基本功。

相关推荐