大模型之Function Calling
大模型本身不太擅长实时信息(比如“现在几点”)、精准计算(比如复杂数学题)这类任务,但Function Calling相当于给它开了个“外挂”:通过调用对应的外部工具(查时间的工具、计算器工具),就能让大模型把这些原本搞不定的问题给解决了。
工作原理
- 用户提问后
程序先喊大模型 “看看这问题要不要用工具”;
- 大模型判断
如果需要,就说 “用 XX 工具,参数填 XXX”;
- 程序跑腿
按照要求去调用工具(比如查天气),拿到结果;
- 再喊大模型
把工具结果和原问题一起给大模型,让它整理成回答;
- 最后回复用户
哪些大模型支持Function Calling呢,打开阿里云百炼平台看下
硅基流动平台有如下
快速开始
调用阿里云百炼平台云端接口
from openai import OpenAIfrom datetime import datetimeimport jsonimport osimport random # 初始化客户端client = OpenAI( # 用阿里云百炼API Key api_key=os.getenv("DASHSCOPE_API_KEY"), # 平台地址 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",)# 模拟用户问题USER_QUESTION = "深圳天气咋样"# 定义工具列表tools = [ { "type": "function", "function": { "name": "get_current_weather", "description": "当你想查询指定城市的天气时非常有用。", "parameters": { "type": "object", "properties": { "location": { "type": "string", "description": "城市或县区,比如深圳市等。", } }, "required": ["location"], }, }, },] # 模拟天气查询工具def get_current_weather(arguments): weather_conditions = ["晴天", "多云", "雨天"] random_weather = random.choice(weather_conditions) location = arguments["location"] return f"{location}今天是{random_weather}。" # 封装模型响应函数def get_response(messages): completion = client.chat.completions.create( model="qwen-plus", messages=messages, tools=tools, ) return completion messages = [{"role": "user", "content": USER_QUESTION}]response = get_response(messages)assistant_output = response.choices[0].messageif assistant_output.content is None: assistant_output.content = ""messages.append(assistant_output)# 如果不需要调用工具,直接输出内容if assistant_output.tool_calls is None: print(f"无需调用天气查询工具,直接回复:{assistant_output.content}")else: # 进入工具调用循环 while assistant_output.tool_calls is not None: tool_call = assistant_output.tool_calls[0] tool_call_id = tool_call.id func_name = tool_call.function.name arguments = json.loads(tool_call.function.arguments) print(f"正在调用工具 [{func_name}],参数:{arguments}") # 执行工具 tool_result = get_current_weather(arguments) # 构造工具返回信息 tool_message = { "role": "tool", "tool_call_id": tool_call_id, "content": tool_result, # 保持原始工具输出 } print(f"工具返回:{tool_message['content']}") messages.append(tool_message) # 再次调用模型,获取总结后的自然语言回复 response = get_response(messages) assistant_output = response.choices[0].message if assistant_output.content is None: assistant_output.content = "" messages.append(assistant_output) print(f"助手最终回复:{assistant_output.content}")运行结果
正在调用工具 [get_current_weather],参数:{'location': '深圳'}工具返回:深圳今天是晴。助手最终回复:深圳今天是晴的天气。这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!
👇👇扫码免费领取全部内容👇👇
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 2026行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
7. 资料领取:全套内容免费抱走,学 AI 不用再找第二份
不管你是 0 基础想入门 AI 大模型,还是有基础想冲刺大厂、了解行业趋势,这份资料都能满足你!
现在只需按照提示操作,就能免费领取:
👇👇扫码免费领取全部内容👇👇
