原贴链接

近几个月来,AI领域发生了许多变化。随着每次发布,大语言模型(LLM)的能力不断增强。然而,大多数AI实验室都非常看好通过工具调用实现的代理行为。

但对于非AI人士来说,工具调用究竟是什么似乎有些模糊。因此,这里简要介绍LLM中的工具调用。

什么是工具?

工具本质上是为LLM提供的函数。例如,一个天气工具可以是一个带有参数和描述的Python或JS函数,用于获取某个地点的当前天气。

一个LLM工具可能包含:

  • 一个合适的名称
  • 相关参数
  • 工具用途的描述

什么是工具调用?

与字面意思相反,在工具调用中,LLM并不直接调用工具/函数;而是生成一个工具的结构化模式。

工具调用功能使LLM能够接受工具模式定义。工具模式包含工具的名称、参数和描述。

当你向LLM提出需要工具辅助的问题时,模型会查找它拥有的工具,如果根据工具名称和描述找到相关工具,它会停止文本生成并输出一个结构化响应。

这个响应通常是一个JSON对象,包含LLM模型认为合适的工具名称和参数值。现在,你可以使用这些信息执行原始函数,并将输出返回给LLM以获得完整答案。

以下是一个简单的工作流程示例:

  1. 定义一个天气工具并提出问题。例如,纽约的天气如何?
  2. 模型停止文本生成并生成带有参数值的结构化工具模式。
  3. 提取工具输入,运行代码并返回输出。
  4. 模型使用工具输出生成完整答案。

这就是工具调用。有关在开源Llama 3中使用工具调用构建代理的深入指南,请查看这篇博客文章:Llama 3中的工具调用:构建代理的逐步指南

请分享您对工具调用的看法,特别是您如何使用它以及AI代理的总体未来。

讨论总结

帖子介绍了LLM中的工具调用功能,引发了广泛的技术讨论。主要话题包括工具调用的基本概念、实现方法、安全风险、以及其在实际应用中的潜力和局限性。评论者们分享了各自的实践经验、提出了改进建议,并对一些具体的技术细节进行了深入探讨。此外,还有部分评论对帖子本身的语法错误和商业化倾向表达了不满。

主要观点

  1. 👍 基础实现与安全风险
    • 支持理由:简单易理解,适合初学者。
    • 反对声音:存在安全漏洞,容易出错。
  2. 🔥 工具调用的潜力与局限性
    • 正方观点:具有巨大潜力,能处理复杂任务。
    • 反方观点:在实际应用中存在性能下降等问题。
  3. 💡 技术细节与优化建议
    • 通过Python函数和字典实现复杂逻辑。
    • 建议使用沙盒环境执行函数。
    • 提出更有效的工具调用方法。

金句与有趣评论

  1. “😂 方法极其基础且易出错,但你大概不该直接运行LLM给出的系统命令。”
    • 亮点:幽默地指出安全风险。
  2. “🤔 等着看LLM发现 !!script!! rm -rf / 那天吧。”
    • 亮点:讽刺地预测潜在风险。
  3. “👀 使用 JSON 作为提示和输出是既不自然又消耗大量 tokens 的。”
    • 亮点:直指技术弊端。

情感分析

整体情感倾向较为中性偏正面,讨论氛围以技术探讨为主。主要分歧点在于工具调用的实现方式和安全性问题。部分用户对帖子本身的语法错误和商业化倾向表达了负面情绪。

趋势与预测

  • 新兴话题:更高效的工具调用方法和安全性的提升。
  • 潜在影响:推动LLM在实际应用中的普及,提升AI系统的智能化水平。

详细内容:

《深入探讨LLMs中的工具调用:Reddit热门讨论解析》

最近在Reddit上,一篇题为“Tool Calling in LLMs: An Introductory Guide”的帖子引发了热烈讨论。该帖子获得了众多关注,评论数众多,大家围绕工具调用在LLMs中的应用展开了深入探讨。

在讨论中,观点纷呈。有人分享了自己非常初级但易于理解的函数调用方式,比如通过告知助手特定的指令来实现,然后对输出进行解析。但也有人对此的安全性表示担忧。还有人指出,工具调用存在的问题在于LLM只能输出文本,且容易产生幻觉,导致输出不准确。

有趣的是,有人开玩笑说“就等着LLM弄出!!script!! rm -rf /”,引发了大家对潜在风险的思考。也有人提到Llama 3.1在强制遵循特定语法方面非常可靠。

对于工具能否处理文本的输入和输出,大家也进行了讨论。有人认为可以,甚至有人提供了相关的实现方式和示例。比如,可以创建一系列函数,并将其放入字典中供LLM按需选择,框架会创建执行环境并返回结果。但也有人质疑是否存在能协调这些函数的提示编程环境。

在实现方式上,有人认为使用JSON作为提示和输出不好,成本高,更倾向于让LLM生成nano-python。还有人分享了相关的代码示例和链接。

关于如何让LLM实际调用工具,有人提出通过观察输出中的关键词,不断提醒LLM在特定问题出现时调用工具。也有人分享了一些实用的项目和工具,如https://n8n.io/ai/ 、https://github.com/sigoden/llm-functions 等。

总之,这场讨论展示了大家对LLMs中工具调用的不同看法和实践经验,也反映出在这一领域仍存在许多待解决的问题和探索的空间。你对LLMs中的工具调用又有怎样的见解呢?