大模型之Function Calling

张开发
2026/4/17 16:06:38 15 分钟阅读

分享文章

大模型之Function Calling
大模型本身不太擅长实时信息比如“现在几点”、精准计算比如复杂数学题这类任务但Function Calling相当于给它开了个“外挂”通过调用对应的外部工具查时间的工具、计算器工具就能让大模型把这些原本搞不定的问题给解决了。工作原理用户提问后程序先喊大模型 “看看这问题要不要用工具”大模型判断如果需要就说 “用 XX 工具参数填 XXX”程序跑腿按照要求去调用工具比如查天气拿到结果再喊大模型把工具结果和原问题一起给大模型让它整理成回答最后回复用户哪些大模型支持Function Calling呢打开阿里云百炼平台看下硅基流动平台有如下快速开始调用阿里云百炼平台云端接口from openai import OpenAIfrom datetime import datetimeimport jsonimport osimport random # 初始化客户端client OpenAI( # 用阿里云百炼API Key api_keyos.getenv(DASHSCOPE_API_KEY), # 平台地址 base_urlhttps://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( modelqwen-plus, messagesmessages, toolstools, ) 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书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 2026行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。7. 资料领取全套内容免费抱走学 AI 不用再找第二份不管你是 0 基础想入门 AI 大模型还是有基础想冲刺大厂、了解行业趋势这份资料都能满足你现在只需按照提示操作就能免费领取扫码免费领取全部内容

更多文章