编者按:这篇文章由 Paul Thomson 撰写,他来自 Commandbar。他们一直是出色的合作伙伴,将他们的应用程序与 LangSmith 一起投入生产,我们很高兴分享他们实现这一目标的故事。
您是否曾经想过为什么有时会收到 ChatGPT 的不靠谱回复?或者为什么 Midjourney 会在您的创作中给出 7 根奇怪的手指?尽管 AI 被认为是智能的,但有时确实会产生一些非常不智能的回复。
现在,如果您使用 GPT 编写下一条“委婉的分手信息”,风险很低 - 这真的无关紧要。但是,如果核心产品功能是利用 AI,并且您的客户依赖于超级智能的完美性,那么您将需要一些安全性和保证,以确保输出符合标准。LangSmith 应运而生。
自从 HelpHub 推出以来,我们在迭代和改进功能方面一直试图采用困难模式。当然,直到 LangChain 团队用他们的 LangSmith beta 测试版吸引了我们。我们没有想到的是,下游改进对我们的旗舰 AI 驱动产品来说是多么的立竿见影。
但是 LangSmith 是否足够强大,值得我们完全依赖它来支持我们基于 LLM 的 QA 呢?或者它只是我们 ENG 团队的另一个锦上添花的功能?
如果您正处于产品、LLM 和 用户体验 的交汇点,那么我们已经为您铺平了道路。是时候继续阅读了。
什么是 LangSmith?
LangSmith 是一个建立在 LangChain 之上的框架。它旨在跟踪您产品中 LLM 和 AI 代理的内部运作。

这些 LLM 的内部运作可以分为 4 个主要类别 - 每个类别都有其自身的用处。以下是它们如何协同工作以及您可以期待什么的细分。
调试
当您的 LLM 开始抛出变化球而不是答案时,您不只是想坐在那里接球。借助 LangSmith,您可以卷起袖子,扮演侦探的角色。我们使用调试工具来深入研究令人困惑的代理循环、令人沮丧的缓慢链,并像审视嫌疑人一样仔细检查提示。
测试
在没有 LangSmith 的情况下测试 LLM 应用程序就像试图在没有说明书的情况下组装宜家家具:当然,您可以碰运气,但您真的想冒险吗?LangSmith 内置了使用现有数据集或创建新数据集的选项,并针对您的链运行它们。界面内呈现了关于输出和准确性指标的可视反馈,从而简化了我们工程团队的测试过程(我们真的很喜欢这一点)。
评估
除了简单的测试之外,LangSmith 中的评估还深入研究了 LLM 运行的性能细微之处。虽然内置评估器提供了初步分析,但真正的力量在于引导您关注关键示例(稍后会详细介绍我们如何做到这一点)。随着数据集的增长,LangSmith 确保您不会错过任何一个节拍,使评估既全面又富有洞察力。因为“足够好”不在您的词典中,对吧?
监控
将 LangSmith 的监控视为您 AI 的保姆:始终保持警惕,永不分心,并准备好报告每一个小小的恶作剧。它会为您提供逐场报道,确保一切井然有序,并在情况失控时通知您。我们甚至更进一步,将这些标志直接管道传输到 Slack 中,以便在我们用户在聊天对话中遇到死胡同时,几乎可以进行实时监控。

LangChain vs LangSmith:有什么区别?
虽然 LangChain 是肌肉,负责处理链、提示和代理的繁重工作,但理解 LLM 决策背后的“原因”是我们经常迷失的迷宫。这正是 LangSmith 的闪光点,它充当 LangChain 内置的 AI 指南针,引导我们穿越聊天机器人生成的复杂决策路径和结果。
“LangChain(公司)的目标是尽可能轻松地开发 LLM 应用程序”
LangChain 的联合创始人兼首席执行官 Harrison Chase 说。
“为此,我们很早就意识到,需要的 - 并且缺失的 - 不仅仅是像 LangChain 这样的开源工具,还是一个用于管理这些新型应用程序的补充平台。为此,我们构建了 LangSmith - 它可以与 LangChain 一起使用,也可以在不使用 LangChain 的情况下使用,并且让用户可以轻松地调试、监控、测试、评估,以及现在(通过最近推出的 Hub)共享和协作他们的 LLM 应用程序。”
什么是 LangSmith 追踪?
LangSmith 世界中的追踪类似于编程时的日志;它们让我们能够轻松地看到文本进出链和 LLM 的情况。将它们视为照亮 AI 之旅的详细面包屑。每个追踪,就像沙滩上的脚印一样,都代表着一个关键的 AI 决策。追踪不仅仅描绘了所采取的路径;它们还揭示了每个关键点的潜在思维过程和采取的行动。
以下是我们的一个追踪在 LangSmith 内的样子

所有单独的追踪都整合到数据集中

您真的需要使用 LangSmith 吗?
当生成式 AI 工作时,感觉就像观看病毒式传播的“令人满意的视频”蒙太奇 - 非常令人愉快。但是当它不工作时,它会很糟糕,有时会非常糟糕。
相信我们,随着我们在产品中更深入、更广泛地集成 AI,我们比以往任何时候都更清楚,输出的质量要与客户对我们产品的质量和信任相匹配。G2 评论在此炫耀。
事实是,在我们启用 LangSmith 之前,我们真的无法对 OpenAI 的回复进行事后分析,也无法测试提示更改,甚至升级到像 GPT-4 这样的新模型,会对答案产生什么影响。
我们在 CommandBar 如何使用 LangSmith:AI 驱动的用户协助
到目前为止,我们已经介绍了 LangSmith 的工作原理。从现在开始,我们将揭开盖子,向您展示我们 HelpHub <> LangSmith 设置的内部结构。为了给您一点背景知识,首先,让我们深入了解 HelpHub 是什么。
HelpHub 是一个适用于任何网站的 GPT 驱动的聊天机器人。它可以与任何公共 URL 或您现有的帮助中心同步,以帮助用户获得即时支持,同时绕过客户服务团队或手动筛选文档。
虽然我们使用我们自己的 ElasticSearch 搜索,但我们依靠 LangChain 将这些搜索结果合并到 HelpHub 的有意义的提示中。这种协同作用使我们能够在毫秒内搜索数百个文档和网站,获取相关上下文,计算推理,并几乎立即向我们的用户提供答案(带有引文!)。
正是通过与 LangChain 的这种核心集成,我们能够通过 LangSmith 捕获追踪。主要用于微调和优化我们聊天机器人的功能,并为我们用户的未来改进进行沙盒测试。
准确的 AI 回复是必需品,而不是锦上添花
我们为自己能够为用户查询提供准确且相关的答案而自豪,这始终是我们的强大 USP。然而,由于前面提到的不靠谱的 AI 生成回复并不总是符合用户期望的挑战,一旦我们开启 LangSmith,我们就将我们的原型设计和 QA 从平庸的猜测提升到了大卫·布莱恩级别的巫术。
自从集成以来,LangSmith 已经为 HelpHub 追踪了超过 X0 百万个 token(每周约 XM 个 token!)。
LangSmith 在我们生产中的真实示例
以下是 Gus(我们才华横溢的 LangSmith 专家之一)在我们的一个追踪中捕捉到的示例。

他在屏幕截图中指的是,HelpHub 的每个提示都应该引用在给用户答案时引用的源文档。我们这样做主要是为了使 LLM 的回复合法化,并让我们的 HelpHub 客户安心,他们的最终用户实际上正在获得他们需要的帮助资源(而不是 LLM 只是幻觉并给出它想要的任何回复。)
从这里,我们进入 LangSmith 并看到 LLM 实际上没有返回任何来源,即使我们要求它这样做。理想情况下,来源应该在实际答案上方的“输出”部分的第一行返回。
我们更新了我们的提示,以便在要求来源时更加坚定
- 之前提示中负责此操作的代码片段是:
返回与您的答案最相关的来源 ID。
- 我们将提示的这一部分更新为:
在回答问题之前,始终返回与您的答案最相关的来源 ID
。
然后,我们使用 LangSmith evals 测试了一切,以确保它在推送到生产环境之前修复了问题。

您现在可以清楚地看到引文随着追踪中的回复一起出现,我们可以很好地将提示的更改发布到生产环境。
结论:我们是否在 LangSmith 上孤注一掷?
当像 LangSmith 这样的产品出现时,默认选择阻力最小的路径并卸下所有责任似乎非常自然。当我们开始向 HelpHub 添加更多功能时,GPT 很可能会误导用户,这是一个固有的风险,这不是我们愿意接受的选择。
因此,简而言之,是的,我们现在对 LangSmith 寄予厚望,并迅速扩展我们的原型设计和调试。我们内部构建的系统已经在改善用户体验方面发挥了重要作用,正如您之前读到的那样,许多这些见解和改进都直接来自用户在野外与 HelpHub 聊天的实时追踪。
利用用户反馈进行改进:
我们相信,每一条用户反馈,无论是积极的还是消极的,都是洞察力的金矿。借助 LangSmith 的帮助(加上我们这边的一点创意),我们将这些洞察力转化为可操作的改进。
以下是我们的反馈循环如何运作
- 实时反馈收集:当用户与 HelpHub 互动时,他们有机会对 AI 生成的回复提供反馈,通过简单的“赞”或“踩”表示。
- 使用 LangSmith 进行深入分析:我们不仅仅以正面或负面信号的形式收集反馈,我们还会进行更深入的研究(特别是对于负面信号)。使用 LangSmith,我们能够将每个信号归因于单个追踪。在该追踪中,我们可以映射模型生成该回复所采取的确切步骤序列。我们基本上重放了 GPT 的思维过程和 LangChain 的操作,从而使我们深入了解了哪些地方做得对,哪些地方偏离了轨道。
- 分类到数据集中:我们改进过程的核心是 LangSmith 对动态数据集的使用。我们维护多个数据集,每个数据集都针对不同的查询类型和用户互动量身定制。这些数据集本质上是在捕获追踪时我们的环境相同状态的汇编。这确保了当提示或 LLM 更新时,新的数据集开始编译这些追踪,从而防止任何污染。
- 自动化 ENG 团队信号:当用户提供反馈时,例如踩,它会立即通过 Slack 向我们的团队发出标记。我们构建了这个小代码片段,以帮助团队筛选追踪并优先处理需要立即关注的追踪。
- 快速迭代:我们严格审查反馈,分析相应的追踪,然后,根据我们的见解,对模型的角色、提示或配置进行明智的调整,以尝试抑制发生的任何不稳定性。这种迭代过程确保我们的 AI 聊天机器人不断改进其理解,更贴近用户需求,并在一段时间内超越期望。
通过将通过 LangSmith 获得的精细 AI 洞察力与用户反馈相结合,我们为 HelpHub 创建了一个非常紧密的永久改进循环。当我们为我们的 AI 构建战术功能时,这对我们来说是一个非常重要的解锁。
给考虑使用 LangSmith 的产品团队的建议
当您身处产品开发的中心时,AI 和 LLM 的旋风可能会让人不知所措。我们曾经身临其境,脚踏实地,理清这一切。根据我们与 LangSmith 和 HelpHub 的合作经验,以下是一些为其他产品团队提供的来之不易的智慧。
从数据开始,现在就开始
AI 依靠数据蓬勃发展。但不要等待“完美”时刻或“完美”数据集。现在就开始收集。如果您已经在使用 LangChain,设置 LangSmith 只需 5 分钟。每一位数据,每一次互动,都会增加一层理解。但是,忠告一句:质量很重要。确保数据反映真实世界的场景,确保您的 AI 与真实的用户需求产生共鸣。
- 深入研究追踪:不要只停留在表面。使用 LangSmith 的追踪功能深入研究 AI 决策。每一个追踪都是一堂课,都是一次改进的机会。
- 尝试提示:LangSmith 的突出特点之一是它能够跨多个示例测试新提示,而无需每次手动输入。这使得迭代您的设置非常有效,确保您从 AI 获得所需的输出。另请注意,Playground 也是一个很棒的工具,可以用来挖掘和测试提示以及对追踪进行调整。
- 依靠社区:那里有一个庞大的 LangSmith 用户社区。交流故事,分享挑战,庆祝成功。您并非孤身一人踏上这段旅程。
- 保持警惕:AI 不会停滞不前,您也不应该停滞不前。密切关注 LangSmith 的更新。新功能?深入研究。测试、迭代、改进。
结论
在深入研究 LangSmith 的追踪、尝试提示、测试和迭代我们的 LLM 环境之后,以下是真正的谈话:LangSmith 不仅仅是我们的一个工具 - 它已成为我们技术栈中的关键组成部分。我们已经从交叉手指祈祷我们的 AI 能够工作,转变为确切地知道它如何以及为什么工作。
因此,对于我们的人工智能产品先驱们,请深入研究 LangSmith。如果您已经在使用 LangChain,那么不使用它就太傻了!