编者按:这篇博文来自 Mendable 首席技术官 Nicolas Camara。Mendable.ai 是一个帮助企业团队使用 AI 回答技术问题的平台。我们非常激动地重点介绍他们如何在最新的功能:工具和行动中使用 LangChain Agents 和 LangSmith。
2024 年将是我们开始看到更多 LLM 融入工作流程的一年,这已不是什么秘密。这意味着我们与 LLM 模型交互的方式将不再仅仅是问答,而更多地是基于行动。
在 Mendable.ai,我们亲身经历了这种转变。去年年底,我们为一家市值超过 200 亿美元的科技公司的约 1000 名客户成功和销售人员配备了 GTM 助手,以帮助他们获得技术指导、流程帮助和行业专业知识。在五个月内,该平台节省了 130 万美元的成本,并且由于研究时间的减少和对技术资源的依赖降低,预计今年将节省 300 万美元。现在,我们正在与同一家公司合作,使这些助手能够采取行动,从而进一步提高效率。
一个用例示例是,销售人员想要了解潜在客户及其公司的最新关注领域。当询问启用了我们的工具和行动的助手“X 公司的最新关键举措是什么”时,助手可以
- 调用 CRM API 并获取销售人员尝试销售的确切团队
- 使用 Google 新闻或 DUNS API 获取有关特定团队和相关举措的最新消息
- 调用 CoreSignal API 以根据职位发布等信息获取公司最新的招聘趋势
- 解读新闻和招聘趋势,重点介绍销售人员如何在会议中使用这些新发现的举措来进行销售
正如您所见,在 Mendable 中引入工具和行动极大地扩展了功能,使聊天机器人能够访问和利用更广泛的数据源并执行各种自动化任务。在后端,为了确保这些功能的精确性和效率,Mendable 利用 LangSmith 的调试工具,这是我们 AI 驱动功能开发和优化的关键组成部分。
打开 Agent 执行的“黑匣子”
构建依赖于 Agent 行为的应用程序时,最大的问题之一是可靠性和缺乏可观察性。了解 Agent 循环的关键交互和决策可能非常棘手。特别是当它已获得对多种资源的访问权限并嵌入到生产管道中时。
在构建工具和行动时,我们考虑的核心方面是让用户能够通过 API 调用创建自己的工具。我们这样设计是为了让用户在创建 API 请求时可以输入诸如 <ai-generated-value> 之类的标签,并且 AI 可以在请求时根据用户的问题和模式使用“AI 生成”的值来填充该值。这只是一个例子,但其中包含更多及时的 AI 输入/输出。这在构建过程中带来了一些我们没有预料到的挑战。很快,我们的开发过程就充满了“console.logs”,并且运行延迟很高。试图调试为什么工具没有被调用或 API 请求失败的原因变成了一场噩梦。它很快变得混乱不堪,我们既没有对 Agent 行为的适当可见性,也没有对自定义工具是否按预期工作进行可见性。
LangChain 的 LangSmith 在这里提供了帮助。如果您不熟悉 LangSmith,它可以让您轻松调试、评估和管理 LLM 应用程序。当然,它与 LangChain 快速集成。由于我们已经使用了 LangChain 提供的 OpenAI 工具 Agents 的一部分,因此集成非常顺利。
调试过程
LangSmith 允许我们窥探 Agent 的“大脑”。这对于调试 Agent 的思维和决策过程如何影响输出非常有用。
当您在 LangChain 中启用追踪时,应用程序会捕获并显示运行调用层次结构的详细可视化。此功能允许您探索运行的输入、输出、参数、响应时间、反馈、令牌消耗和其他关键指标。
当我们将 LangSmith 连接到我们的工具和行动模块时,我们很快发现了我们之前无法看到的问题。
以我们使用工具的第一个跟踪为例。正如您在此处看到的,上次对 `ChatOpenAI` 的调用花费了很长时间:7.23 秒。
当您单击 7.23 秒的运行时间时,我们看到提示非常庞大,它将我们所有的 RAG 管道提示/源与我们的工具和行动连接在一起,导致流式传输过程延迟。这允许进一步优化工具和行动模块需要使用的提示块,从而全面减少延迟。
检查工具
轻松访问跟踪的另一个有价值的方面是能够检查工具输入。正如我在一开始提到的,我们允许用户在 Mendable 中创建自定义工具。为此,我们需要确保在 UI 中构建工具的过程简单快捷,并且性能良好。这意味着当我们在后端创建工具时,它需要具有正确的模式定义,部分由用户在我们的 UI(API 请求详细信息)中输入的内容定义,但也由 AI 在请求时自动输入的内容定义。
在下面的示例中,它显示了一个最近新闻工具的运行。{query : { q } } 参数中的问题由 AI 生成。
确保查询与用户输入的内容准确一致,并针对正在使用的工具进行了优化,这非常具有挑战性。值得庆幸的是,使用 LangSmith 可以非常轻松地进行双重检查。我们所做的是使用不同的查询运行相同的工具约 20 次,并快速滚动浏览 LangSmith,确保输出和模式准确无误。对于不准确的时间,我们可以通过进一步打开跟踪或在 LangSmith 中添加注释来轻松理解原因,以便我们稍后进行审查。
我们意识到工具描述对于生成正确的模式和输入至关重要。通过从大量实验中获得的这一新见解,我们继续改进了我们产品中 AI 生成的部分,并让用户意识到他们在创建工具时需要提供良好的详细描述。
构建我们的数据集
随着所有优化实验的进行,快速保存输入/输出以供进一步评估的需求变得显而易见。借助 LangSmith,我们选择了要添加到数据集的运行,然后单击“添加到数据集”按钮。
这对我们来说是一个非常快速且轻松的胜利,因为我们现在在一个地方拥有了来自我们运行的所有数据,我们甚至可以使用 LangSmith 本身对其进行评估。
结论
LangSmith 的调试工具对我们来说是一项颠覆性变革。它们为我们提供了一个清晰的窗口,让我们了解我们的工具和行动 AI Agent 的思考和行动方式,这对于解决诸如响应时间缓慢等棘手问题以及使我们的调试过程更加顺畅非常有帮助。Mendable 工具和行动已经发布,但我们仍处于早期阶段。我们一直在与出色的企业合作,以帮助改进它并为他们量身定制自定义操作。如果您有兴趣测试 Mendable,请通过电子邮件 garrett@mendable.ai 与我们联系,并告知您的用例。
此外,如果您希望加快 LLM 开发过程,我绝对建议您尝试 LangSmith - 特别是如果您已经在管道中使用 LangChain。
希望我的见解对您有所帮助,并感谢 LangChain 成为出色的合作伙伴。