Skip to main content
本教程将向您展示如何使用 LangSmith 与流行测试工具(Pytest、Vitest 和 Jest)的集成来评估您的 LLM 应用程序。我们将创建一个回答公开交易股票问题的 ReAct 代理,并为其编写全面的测试套件。

设置

本教程使用 LangGraph 进行代理编排,OpenAI 的 GPT-4o 作为 LLM,Tavily 进行搜索,E2B 的代码解释器,以及 Polygon 获取股票数据,但通过少量修改即可适用于其他框架、模型和工具。Tavily、E2B 和 Polygon 均可免费注册。

安装

首先,安装创建代理所需的包:
接下来,安装测试框架:

环境变量

设置以下环境变量:

创建您的应用

为了定义我们的 ReAct 代理,我们将使用 LangGraph/LangGraph.js 进行编排,使用 LangChain 处理 LLM 和工具。

定义工具

首先,我们将定义代理中要使用的工具。将有 3 个工具:
  • 使用 Tavily 的搜索工具
  • 使用 E2B 的代码解释器工具
  • 使用 Polygon 的股票信息工具

定义代理

现在我们已经定义了所有工具,可以使用 create_agent 来创建我们的代理。

编写测试

现在我们已经定义了代理,让我们编写一些测试以确保基本功能。在本教程中,我们将测试代理的工具调用能力是否正常工作,代理是否知道忽略无关问题,以及它是否能够回答涉及使用所有工具的复杂问题。 我们需要首先设置一个测试文件,并在文件顶部添加所需的导入。

测试 1:处理无关问题

第一个测试将简单检查代理是否不会在无关查询上使用工具。

测试 2:简单工具调用

对于工具调用,我们将验证代理是否使用正确的参数调用了正确的工具。

测试 3:复杂工具调用

有些工具调用比其他调用更容易测试。对于股票代码查找,我们可以断言搜索了正确的股票代码。对于编码工具,工具的输入和输出约束较少,并且有很多方法可以得到正确答案。在这种情况下,更简单的方法是通过运行完整的代理并断言它既调用了编码工具又最终得到了正确答案来测试工具是否被正确使用。

测试 4:LLM 作为评判者

我们将通过运行 LLM 作为评判者评估来确保代理的答案基于搜索结果。为了将 LLM 作为评判者的调用与我们的代理分开跟踪,我们将在 Python 中使用 LangSmith 提供的 trace_feedback 上下文管理器,在 JS/TS 中使用 wrapEvaluator 函数。

运行测试

一旦您设置了配置文件(如果您使用 Vitest 或 Jest),您可以使用以下命令运行测试:

参考代码

请记住将 Vitest 和 Jest 的配置文件也添加到您的项目中。

代理

测试