新闻详情

新闻详情

首页 / 资讯中心 / 详情

随着大语言模型(LLM)的飞速发展,其应用场景已从单纯的文本生成扩展到复杂的任务执行与系统交互

发布时间:2026/9/30 7:17:24来源:尧图网络
随着大语言模型(LLM)的飞速发展,其应用场景已从单纯的文本生成扩展到复杂的任务执行与系统交互
随着大语言模型LLM的飞速发展其应用场景已从单纯的文本生成扩展到复杂的任务执行与系统交互。其中Function Calling函数调用技术是连接大模型“大脑”与本地业务逻辑“手脚”的关键桥梁。本报告将深入探讨如何利用 Python 实现大模型的 Function Calling 机制。我们将通过构建一个模拟的“智能助手”系统展示模型如何理解用户意图、生成结构化参数并由 Python 代码执行具体业务逻辑如查询天气、计算数据最终将结果回传给模型生成自然语言回复。二、技术原理与架构Function Calling 的核心并非模型直接“执行”代码而是一种意图识别与参数提取的交互模式。其工作流程如下用户输入用户提出包含特定意图的请求例如“帮我查一下北京明天的天气”。模型推理大模型接收请求及预定义的函数描述Schema分析用户意图。如果意图匹配某个函数模型不会直接回答而是输出一个包含函数名称和参数的 JSON 结构。本地执行Python 后端解析该 JSON 结构映射到本地的具体 Python 函数并执行。结果回传Python 将执行结果如具体的温度数值作为上下文再次发送给模型。最终回复模型结合上下文和函数执行结果生成最终的自然语言回答给用户。这种机制极大地扩展了 LLM 的能力边界使其能够访问实时数据、操作数据库或控制外部设备。三、核心代码实现为了演示这一过程我们将不依赖特定的商业 API而是使用 Python 原生库构建一个完整的模拟环境。我们将定义一组工具函数并模拟模型的决策过程。3.1 环境准备与工具定义首先我们需要定义一组可供模型调用的“工具”。在实际生产中这些函数可能连接数据库或外部 API这里我们使用模拟数据。importjsonimportinspect# 模拟的工具函数库defget_current_weather(location,unitfahrenheit):获取指定位置的当前天气# 模拟业务逻辑返回硬编码的天气数据weather_data{beijing:{temp:22,condition:Sunny},shanghai:{temp:26,condition:Rainy},shenzhen:{temp:30,condition:Cloudy}}loclocation.lower()iflocinweather_data:returnf{location}现在的天气是{weather_data[loc][condition]}气温{weather_data[loc][temp]}摄氏度。else:returnf抱歉未找到{location}的天气信息。defcalculate_bmi(weight,height):计算BMI指数try:bmifloat(weight)/(float(height)**2)returnf您的BMI指数为:{bmi:.2f}exceptZeroDivisionError:return身高不能为零。defget_stock_price(symbol):查询股票价格prices{AAPL:150.23,TSLA:240.50,BABA:88.10}symbolsymbol.upper()ifsymbolinprices:returnf{symbol}当前股价为 ${prices[symbol]}returnf未找到{symbol}的股价信息。# 将函数注册到工具列表中供模型识别# 在实际应用中这通常对应 API 的 tools 参数available_functions{get_current_weather:get_current_weather,calculate_bmi:calculate_bmi,get_stock_price:get_stock_price}3.2 模拟大模型的决策逻辑由于我们无法在此处直接运行庞大的 LLM我们将编写一个simulate_llm_decision函数来模拟模型在接收到用户提示词后的行为。它会分析输入判断是否需要调用工具并返回标准的 JSON 格式。defsimulate_llm_decision(user_prompt,available_tools): 模拟大模型的决策过程。 在实际场景中这里是调用 OpenAI / Claude / Qwen 等 API 的地方。 prompt_loweruser_prompt.lower()# 简单的关键词匹配模拟模型的意图识别能力if天气inprompt_loweror气温inprompt_lower:# 模拟模型提取参数locationBeijing# 默认if北京inprompt_lower:locationBeijingelif上海inprompt_lower:locationShanghaielif深圳inprompt_lower:locationShenzhenreturn{role:assistant,content:None,tool_calls:[{id:call_12345,type:function,function:{name:get_current_weather,arguments:json.dumps({location:location,unit:celsius})}}]}elifbmiinprompt_loweror体重inprompt_lower:return{role:assistant,content:None,tool_calls:[{id:call_67890,type:function,function:{name:calculate_bmi,arguments:json.dumps({weight:70,height:1.75})}}]}else:# 如果不需要调用工具直接返回文本回复return{role:assistant,content:你好我是你的智能助手。我可以帮你查天气、算BMI或查股价。请问有什么可以帮你}3.3 orchestrator编排器的实现这是系统的核心部分负责协调模型输出与本地代码执行。defrun_agent(user_message):print(f用户:{user_message})print(-*30)# 1. 获取模型的初步响应responsesimulate_llm_decision(user_message,available_functions)# 2. 检查是否有工具调用请求ifresponse.get(tool_calls):fortool_callinresponse[tool_calls]:function_nametool_call[function][name]function_argsjson.loads(tool_call[function][arguments])print(f[系统] 模型决定调用函数:{function_name})print(f[系统] 参数:{function_args})# 3. 执行本地 Python 函数iffunction_nameinavailable_functions:function_to_callavailable_functions[function_name]try:# 使用 ** 解包字典作为参数function_responsefunction_to_call(**function_args)print(f[系统] 函数执行结果:{function_response})exceptExceptionase:function_responsef执行出错:{str(e)}else:function_response错误模型请求了不存在的函数。# 4. 模型根据结果生成最终回复 (模拟)# 在实际 API 中我们需要把 function_response 再次发给模型final_replyf根据查询结果{function_response}。请问还有其他需要吗print(f助手:{final_reply})else:# 无需调用工具直接输出print(f助手:{response[content]})# 测试用例if__name____main__:print( 测试场景 1: 查询天气 )run_agent(帮我查一下北京现在的天气)print(\n 测试场景 2: 计算BMI )run_agent(我体重70公斤身高1.75米帮我算算BMI)print(\n 测试场景 3: 闲聊 )run_agent(你好你是谁)四、代码解析与运行结果上述代码模拟了一个完整的 Agent 运行闭环。意图识别当输入“帮我查一下北京现在的天气”时simulate_llm_decision识别出关键词并构造了调用get_current_weather的请求参数锁定为Beijing。参数映射编排器解析 JSON将location映射到 Python 函数的参数中。业务执行get_current_weather函数被执行返回了硬编码的“Sunny, 22°C”数据。结果合成最终输出为“根据查询结果北京现在的天气是Sunny气温22摄氏度。请问还有其他需要吗”这种设计模式将**逻辑判断模型与数据执行代码**解耦既利用了模型的泛化理解能力又保证了业务数据的准确性和安全性。五、技术亮点分析解耦与模块化该架构最显著的亮点在于将“思考”与“行动”分离。模型不需要知道具体的天气数据存在哪里也不需要知道如何计算 BMI 的公式它只需要知道“有一个函数可以查天气”以及“需要传什么参数”。这使得我们可以随时替换底层的 Python 函数实现例如将硬编码数据改为连接真实的气象 API而无需重新训练或调整模型提示词。结构化输出的稳定性通过强制模型输出 JSON 格式的参数我们解决了传统 NLP 任务中非结构化文本难以解析的痛点。Python 的json.loads可以极其稳定地提取参数避免了正则表达式提取的脆弱性。安全性沙箱在 Function Calling 模式下模型不能随意执行任意代码如rm -rf /。它只能调用我们在available_functions中显式注册的函数。这为大模型的应用提供了一道天然的安全防火墙确保所有操作都在可控范围内。上下文感知的增强虽然本示例是单轮对话但该架构天然支持多轮。我们可以将函数的返回结果如“气温22度”作为新的消息加入对话历史模型在下一轮对话中就能“记住”这个信息从而实现更复杂的推理任务。六、总结与展望Function Calling 是大模型从“玩具”走向“工具”的关键一步。通过 Python 强大的生态库我们可以赋予模型操作文件系统、数据库、网络请求甚至控制硬件的能力。在未来的开发中我们可以进一步优化这一流程例如引入自动重试机制当模型生成的参数格式错误时自动修正或者构建函数链一个函数的输出作为另一个函数的输入从而构建出更加智能、自主的 AI Agent 系统。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

TensorFlow设计哲学:从计算图到SavedModel的工程化本质 2026/9/30 19:35:37

TensorFlow设计哲学:从计算图到SavedModel的工程化本质

1. 这不是“装个库”那么简单:TensorFlow到底在解决什么问题?你搜“tensorflow安装”,页面跳出的全是pip install命令、CUDA版本匹配表、报错截图和“已解决”的标题党文章。但真正用过TensorFlow超过三个月的人心里都清楚:装上只…

阅读更多 →
TensorFlow生产部署核心原理:CUDA契约、SavedModel协议与TF Serving架构 2026/9/30 19:35:37

TensorFlow生产部署核心原理:CUDA契约、SavedModel协议与TF Serving架构

1. 为什么今天还在认真聊 TensorFlow?不是“过时”而是“不可替代” 最近翻了几轮技术社区的讨论帖,发现一个有意思的现象:只要一提 TensorFlow,评论区立刻分成两派——一派说“早该淘汰了,PyTorch写起来像写 Python”…

阅读更多 →
强化学习稀疏奖励太难?HER后见经验回放实战详解 2026/9/30 19:35:37

强化学习稀疏奖励太难?HER后见经验回放实战详解

强化学习领域最劝退新手的一句话,不是那些复杂公式,而是轻飘飘的一句“奖励是稀疏的”。如果你真的在训练过一个操作机械臂或者控制四足机器人的智能体,你就会明白这四个字的杀伤力有多大——智能体像个无头苍蝇一样在环境里乱撞,…

阅读更多 →
Model-Optimizer:大模型推理性能压榨的工程实践体系 2026/9/30 19:35:37

Model-Optimizer:大模型推理性能压榨的工程实践体系

1. 项目概述:Model-Optimizer 不是工具名,而是一类工程实践的统称 “Model-Optimizer”这个标题乍看像某个开源项目或商业软件的名字,但结合你提供的热搜词——NVIDIA、TensorRT-LLM、vLLM、TensorRT、PT文件转换TensorRT、vLLM部署DeepSeek…

阅读更多 →
NS6312 宽压同步降压芯片,4‑30V 输入 2.4A 输出,脚位兼容 SL1587,支持QC快充方案 聚能芯半导体一级代理 2026/9/30 19:35:30

NS6312 宽压同步降压芯片,4‑30V 输入 2.4A 输出,脚位兼容 SL1587,支持QC快充方案 聚能芯半导体一级代理

​ 概述NS6312 是支持高电压输入的同步降压电源管理芯片,在4~30V 的宽输入电压范围内可实现2.4A的连续电流输出。通过调节FB 端口的分压电阻,可以输出1.8V 到28V 的稳定电压。NS6312 具有优秀的恒压/恒流(CC/C)特性。NS6312 采用电流模式的环路控制原理&…

阅读更多 →
计算机毕业设计之基于Vue+SpringBoot框架的仓库管理系统 2026/9/30 19:35:23

计算机毕业设计之基于Vue+SpringBoot框架的仓库管理系统

随着网络科学技术不断的发展和普及化,用户在寻找适合自己的信息管理系统时面临着越来越大的挑战。因此,本文介绍了一套仓库管理系统,在技术实现方面,本系统采用JAVA、HTML、CSS、JS以及MySQL数据库编程,使用springboot…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉