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

河北建设厅注册中心网站首页网站头页

河北建设厅注册中心网站首页,网站头页,北京赵公口网站建设,wordpress支持手机吗文章目录1. 为什么需要 Tool Calling?AI 的"知识囚笼"2. 什么是 Tool Calling?给 AI 一套工具箱3. Tool Calling 是如何工作的?3.1 在 LangChain 中如何实现?工具定义工具绑定调用和执行4. Tool Calling 的意义&#xf…

文章目录

    • 1. 为什么需要 Tool Calling?AI 的"知识囚笼"
    • 2. 什么是 Tool Calling?给 AI 一套工具箱
    • 3. Tool Calling 是如何工作的?
    • 3.1 在 LangChain 中如何实现?
      • 工具定义
      • 工具绑定
      • 调用和执行
    • 4. Tool Calling 的意义:从"博学"到"万能"
    • 5. Tool Calling 最佳实践
      • 工具设计原则
      • 技术选择
      • 示例对比
    • 总结
    • 参考

在捣鼓 AI 应用的时候,总是遇到一个词: Tool Calling(工具调用)。一开始觉得这个概念有点抽象,但随着我深入了解 LangChain 和一些 AI Agent 的实现后,我发现 Tool Calling 简直是为大语言模型(LLM)插上了翅膀,让它从一个"只会聊天"的语言天才,变成了一个能"动手干活"的实干家。

在这里插入图片描述
图片来源:LangChain tool_calling

术语说明:Tool Calling 有时也被称为 Function Calling(函数调用),这两个术语在实际使用中是可以互换的。官方文档中两种表述都会出现。

1. 为什么需要 Tool Calling?AI 的"知识囚笼"

我们都知道,像 GPT-4 或 Gemini 这样的 LLM 非常强大,它们能写代码、能写诗、能做翻译。但它们有一个天生的限制:它们生活在一个"信息茧房"里。

  • 知识有截止日期:模型的知识停留在它训练完成的那一刻,问它今天的天气,它不知道。
  • 无法与外界互动:它不能帮你发邮件、不能帮你订机票、也不能去访问一个网页来获取实时信息。

简单来说,没有 Tool Calling 的 LLM,就像一个博学但被关在房间里的智者,它知道很多事,但无法对外界产生实际影响。

2. 什么是 Tool Calling?给 AI 一套工具箱

Tool Calling 就是打破这个"囚笼"的钥匙。

它的核心思想是:授权 LLM 在需要的时候,去调用外部的工具(函数、API 等)来完成任务。

这就像你给一个聪明的实习生分配任务。这个实习生(LLM)本身很会写东西,但如果你让他"查一下公司最新的股价,并写一份总结报告",他需要:

  1. 判断:意识到自己不知道实时股价,需要借助外部工具。
  2. 选择工具:从他可用的工具(比如浏览器、公司的股价查询软件)中,选择一个最合适的。
  3. 执行工具:打开股价查询软件,输入公司代码,获取股价。
  4. 整合结果:拿到股价后,再结合自己的写作能力,完成最终的总结报告。

在这个过程中,Tool Calling 就是实习生判断、选择和执行工具的整个流程。LLM 不再仅仅是生成文本,它还能"决定"并"请求"执行一个动作,然后利用这个动作的结果来更好地完成我们的指令。

3. Tool Calling 是如何工作的?

虽然不同框架的实现细节不同,但核心流程大同小异:

  1. 定义工具:首先,作为开发者,我们需要先定义一套"工具"给 LLM。这套工具通常就是我们自己写的函数,比如 get_current_weather(city: str)send_email(to: str, subject: str, body: str)
  2. 用户提问:用户向 LLM 提出一个请求,比如"帮我查一下北京今天的天气怎么样?"
  3. LLM 的"智能决策":这里有个关键点 —— LLM 会智能分析用户的意图。如果用户只是说"你好",LLM 不会调用天气工具;只有当问题与工具功能相关时(如"北京天气怎么样?"),它才会在我们提供的工具列表中找到最匹配的 get_current_weather 工具。
  4. 生成工具调用请求:LLM 不会自己去执行这个函数。相反,它会生成一个特殊格式的"工具调用请求",具体包含:
  • name: 工具名称(如 get_current_weather
  • args: 调用参数(如 {'city': '北京'}
  • id: 调用标识符
  • type: ‘tool_call’

例如:[{'name': 'get_current_weather', 'args': {'city': '北京'}, 'id': 'call_123', 'type': 'tool_call'}]
5. 执行并返回:我们的应用程序接收到这个请求后,就在自己的代码环境中执行 get_current_weather('北京') 这个函数,得到结果,比如 {'temperature': '25°C', 'condition': '晴'}
6. LLM 组织语言:最后,应用程序把函数执行的结果再发回给 LLM。LLM 拿到这个信息后,就用更自然、更人性化的语言回复用户:“北京今天天气晴朗,温度是 25 摄氏度。”

整个过程是 LLM 和我们的代码之间的一次完美协作。LLM 负责"大脑"的部分(理解、决策),我们的代码负责"手脚"的部分(执行)。

重要: LLM 的"智能选择"是 Tool Calling 的核心特征。它不是盲目调用工具,而是根据用户输入的语义来判断是否需要以及如何使用工具。

3.1 在 LangChain 中如何实现?

说了这么多理论,让我们看看在 LangChain 这个流行框架中具体是怎么做的:

工具定义

使用 @tool 装饰器定义工具:

from langchain_core.tools import tool@tool
def get_current_weather(city: str) -> str:"""获取指定城市的当前天气Args:city: 城市名称"""# 这里是实际的天气查询逻辑# 实际应用中可能会调用天气 APIreturn f"{city}今天天气晴朗,温度25°C"@tool
def send_email(to: str, subject: str, body: str) -> str:"""发送邮件Args:to: 收件人邮箱subject: 邮件主题body: 邮件内容"""# 实际的邮件发送逻辑return f"邮件已发送给 {to}"

工具绑定

将工具绑定到支持工具调用的模型:

# 假设我们有一个支持工具调用的模型
model_with_tools = model.bind_tools([get_current_weather, send_email])

调用和执行

response = model_with_tools.invoke("北京今天天气怎么样?")# 如果模型选择调用工具,response.tool_calls 会包含调用信息
if response.tool_calls:# 获取工具调用信息tool_call = response.tool_calls[0]print(f"模型要调用: {tool_call['name']}")print(f"参数: {tool_call['args']}")# 执行对应的工具result = get_current_weather.invoke(tool_call['args'])print(f"执行结果: {result}")

4. Tool Calling 的意义:从"博学"到"万能"

理解了 Tool Calling 的工作原理后,它的重要性就不言而喻了:

  • 打破信息壁垒:通过接入搜索引擎、数据库等工具,LLM 可以获取实时、动态的信息。
  • 实现与现实世界的交互:可以操作各种软件 API,实现发邮件、订票、控制智能家居等功能,成为真正的"智能助理"。
  • Agent 的基石:它是构建更复杂的 AI Agent 的基础。Agent 的核心就是能够自主地、连续地调用多个工具来完成一个复杂的目标。没有 Tool Calling,Agent 就无从谈起。

5. Tool Calling 最佳实践

基于 LangChain 官方建议,在设计工具时需要注意:

工具设计原则

  • 工具命名要清晰get_weathertool1 更好,让 LLM 一眼就知道这个工具是干什么的
  • 工具描述要详细:在 docstring 中详细描述工具的功能和参数,帮助 LLM 理解何时使用该工具
  • 保持工具简单:一个工具专注做一件事,比复杂的多功能工具更容易被正确使用
  • 避免工具列表过长:太多选择会让 LLM “选择困难”,建议控制在合理数量内

技术选择

  • 选择支持工具调用的模型:专门优化过工具调用的模型(如 GPT-4、Claude 3 等)表现更好
  • 合理的错误处理:为工具执行失败的情况设计优雅的降级策略

示例对比

# ❌ 不好的工具设计
@tool
def tool1(data):"""处理数据"""# 功能不明确,参数类型不清楚pass# ✅ 好的工具设计
@tool
def calculate_mortgage_payment(principal: float, rate: float, years: int) -> float:"""计算房贷月供根据贷款本金、年利率和贷款年限,计算每月还款金额Args:principal: 贷款本金(元)rate: 年利率(小数形式,如 0.05 表示 5%)years: 贷款年限Returns:每月还款金额(元)"""monthly_rate = rate / 12num_payments = years * 12payment = principal * (monthly_rate * (1 + monthly_rate) ** num_payments) / ((1 + monthly_rate) ** num_payments - 1)return round(payment, 2)

总结

对我来说,Tool Calling 是学习 AI 应用开发时遇到的第一个"啊哈!"时刻。它清晰地揭示了 LLM 如何从一个纯粹的语言模型,转变为一个可以与真实世界互动的强大引擎。

它就像一座桥梁,连接了 LLM 的虚拟智能和我们现实世界的无限可能。理解了它,也就真正开始理解了如何构建一个有用的、能解决实际问题的 AI 应用。

更重要的是,通过学习 LangChain 等框架的具体实现,我们不仅能理解概念,还能动手实践。这种从理论到实践的过程,让 Tool Calling 不再是一个抽象的概念,而是成为了我们构建智能应用的得力工具。

怎么感觉跟 MCP 很像呢!!!需要深入对比一下。。。

参考

https://python.langchain.com/docs/concepts/tool_calling/

http://www.dtcms.com/a/554257.html

相关文章:

  • Vue3教程简介
  • Excel天气查询插件开发指南(★)
  • GO语言-->Gin 框架 HTTP 路由
  • Android EDLA项目导入mainline包后蓝牙签名报错分析解决
  • 保定网站建设找谁建设部四库一平台查询
  • 网站查询信息wordpress清空数据
  • 光伏开发小程序:快速获客,成交项目更迅速
  • 单位建设网站需要的材料wordpress无法开启多站点
  • 免得做网站东莞服装网站建设
  • 从零搭建 VisionMaster 自动上传系统
  • 微信小程序因视频播放不合规问题解决,微信小程序包含视频功能审核不通过解决方案
  • 江苏网站建设要多少钱html5做图网站
  • 企业网站建站意义建筑师必看的16部纪录片
  • BLDC直流无刷电机开环与PID闭环无扰切换
  • 泗水做网站ys178万能优化大师下载
  • 3D城市模型COLLADA数据格式详解
  • 外贸网站建设推广公司价格网站建设基础知识及专业术语
  • Go Web 编程快速入门 20 - 附录D:ORM 简介(可选,GORM)
  • 长春制作手机网站门户网站制作方法
  • 遵义网站开发的公司有哪些虚拟机iis网站建设
  • 网站备案号是什么能看人与动物做的网站
  • Mermaid语法、实战
  • DOM Attribute
  • php 企业网站 后台图片上传ps怎么制作网页
  • 建设对公银行网站打不开想做电商网站运营要怎么做
  • 服务器偶尔连接超时connection timedout
  • NestJS 路由顺序问题解决指南
  • 做的最好的手机网站秦皇岛建设规划
  • 苏州网站优化排名推广做网站分辨率多少
  • 做淘宝浏览单的网站创意设计文案