当前位置: 首页 > news >正文

[智能体-41]:智能体识别调用外部工具:原理 + 判定手段 + Python 最简代码示例

一、核心识别逻辑大模型本身无工具调用能力智能体靠三类判定手段判断是否要调工具意图语义识别用户问题超出模型静态知识库实时数据、计算、联网、硬件操作格式规则匹配关键词、指令、参数触发工具调用这是最初的方式。函数调用 Prompt 约束大模型按指定JSON 格式输出调用指令智能体解析执行。MCP就采用的这种方式。二、通用识别判定手段知识库边界判断时间、价格、天气、数学计算、外部接口类问题必调用关键词触发计算、查询、搜索、打开、获取、运行等词触发Prompt 强制约定只在无法回答时输出工具调用结构体输出解析器正则 / JSON 解析模型返回区分普通回答和工具指令三、完整可运行代码示例轻量 Agent 工具调用python运行import json import re # 1. 模拟外部工具库 tools { calculator: lambda a,b: a b, weather_query: lambda city: f{city}今日晴天25℃ } # 2. 工具调用识别解析器 def parse_tool_call(llm_response): # 匹配模型输出的工具调用JSON格式 pattern r\{.*?\tool_name\.*?\} match re.search(pattern, llm_response, re.S) if not match: return None, llm_response try: call_info json.loads(match.group()) return call_info, None except: return None, llm_response # 3. 模拟大模型判断是否需要调用工具 def llm_judge_need_tool(user_query): # 简单语义识别规则 if any(word in user_query for word in [加,计算,求和]): return json.dumps({tool_name:calculator,params:{a:10,b:20}}) elif 天气 in user_query: return json.dumps({tool_name:weather_query,params:{city:北京}}) else: return f直接回答{user_query}无需调用工具 # 4. 智能体主调度 def agent_run(user_input): # 模型判断是否调用工具 resp llm_judge_need_tool(user_input) # 解析识别工具指令 tool_call, normal_ans parse_tool_call(resp) if normal_ans: return normal_ans # 执行外部工具 tool_func tools[tool_call[tool_name]] res tool_func(**tool_call[params]) return f工具调用结果{res} # 测试 if __name__ __main__: print(agent_run(10加20等于多少)) print(agent_run(北京天气)) print(agent_run(你好))四、主流框架底层识别原理LangChainPydantic结构化输出 解析器识别函数调用OpenAI Function Call模型原生输出函数参数SDK 自动解析判定Coze / 豆包智能体意图分类 槽位填充命中工具域则调用五、运行输出plaintext工具调用结果30 工具调用结果北京今日晴天25℃ 直接回答你好无需调用工具
http://www.zskr.cn/news/1363352.html

相关文章:

  • 突破下载瓶颈:macOS百度网盘提速插件实战指南
  • 教师今晚必须做的1件事:用Claude 3.5 Sonnet重写你的公开课逐字稿——实测课堂语言感染力提升58%(附对比音频+评分报告)
  • 【Claude学术写作辅助应用】:教育部新文科AI赋能白皮书唯一推荐工具,附12所双一流高校实证数据
  • Midjourney对比度调控失效全解析(从sref色域偏移到底层CLIP文本嵌入权重干预)
  • 超维计算:重塑端侧视觉处理的低功耗架构方案
  • 区块链+计算机视觉:构建可信AI系统的链上存证架构实践
  • 机器学习评估可信度危机:数据污染、选择性报告与结果误报的深度剖析与应对
  • TabularMark表格数据水印:原理、实现与参数调优实战
  • Mamba-X:为Vision Mamba模型定制的边缘AI硬件加速器架构解析
  • 随机数值线性代数:原理、算法与应用实践
  • MultiEgo数据集:多视角第一人称动态重建技术解析
  • 数学超图模型:AI自主数学发现的计算框架与实现路径
  • 渗透测试中漏洞扫描器的深度认知与人机协同实战
  • 保姆级教程:用Python脚本给YOLOv8检测结果“上色”,一眼看懂TP/FP/FN
  • LeetCode 560:和为 K 的子数组 | 前缀和与哈希表
  • 基于LLM与多智能体的微服务自治运维系统设计与实践
  • 量子数据中心:分布式量子计算架构与技术解析
  • Ubuntu 22.04下Nsight System/Compute保姆级安装与权限配置避坑指南(附.conf文件修改)
  • 智慧医院边缘计算架构:QoS驱动的低延迟医疗物联网实践
  • 别再乱改注册表了!Windows系统文件夹移动后还原的完整避坑指南
  • 跨环境漏洞复现:Docker Desktop与VMware Kali的TCP/信号对齐实战
  • 机器学习模型监控实战:KS检验与BC系数在大数据供应链预测中的应用
  • 安卓加固反调试核心机制:D-Bus监听与/proc/self/maps检测绕过实战
  • AI+PDCA循环:构建医院后勤韧性系统的实践与思考
  • 告别密码!5分钟搞定CentOS 7服务器间的SFTP免密互传(附权限避坑指南)
  • Unity AssetBundle浏览器(ABB)深度解析与工程实践技巧
  • 边缘AI实时调度:DeepRT如何保障计算机视觉任务的确定性响应
  • Unity殖民模拟底层架构:资源管道与任务图谱设计
  • C/C++编译器优化等级对嵌入式开发的影响与解决方案
  • 量子优化算法QAOA与电路编译技术解析