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

上海网站建设选缘魁-企查滕州做网站比较好的网络公司

上海网站建设选缘魁-企查,滕州做网站比较好的网络公司,网站如何选择服务器,吉林网站建设哪家好文章目录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/408554.html

相关文章:

  • 武夷山景区网站建设特点临沧网站建设临沧
  • 做海报哪个网站好thinkphp5来做网站吗
  • 河北雄安新区规划建设局网站宜选科技就是帮人做网站
  • 焦作网站建设兼职洛阳市做网站贴吧
  • 移动网站开发书籍江苏扬州建设工程信息网站
  • 网站如何适应屏幕现在pc端网站开发用的什么技术
  • 网站制作公司很好 乐云践新快速做效果图的网站叫什么
  • 黄石市建设局网站湖南众诚建设 官方网站
  • 自己做装修网站需要多少钱上海网址大全
  • [嵌入式embed]Keil5-STM32F103C8T6(江协科技)+移植FreeRTOS v9模版项目
  • 做窗帘的效果图网站那些因素会影响网站的排名位置
  • 惠州做网站哪家公司好wordpress吗
  • 网站做好了 后期怎么做企业网站营销优缺点
  • 做电子商务网站 除了域名 网页设计 还有服务器 和网站空间怎样建设网站后台
  • 做网站赚钱不旅游网站的首页怎么做
  • 美的网站建设用ps做网站首页
  • 巢湖网站建设公司东莞黄页大全
  • 公路水运建设质量安全监督网站it外包公司联系电话
  • 做卷皮网类似网站wordpress网站手机端菜单栏
  • 网站开发的解决方案国家城乡和住房建设部网站
  • 网站推广需求学习网站后台维护
  • 肇庆住房和城乡建设局网站建设局是个好单位吗
  • 简单建优化网站无需技术php网站服务器搭建
  • 然后建设一个论坛网站外贸网站建设是什么
  • 网站建设方案书阿里云高清图片素材网站推荐
  • 广东网站设计服务商怎么制作表白链接
  • 做网站需要Excel表格吗高端顺口公司名字
  • 多网站绑定域名企业门户网站模式
  • 定制做网站费用广州电商小程序开发
  • 上海好的网站制作公司百度应用商店