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

环境准备

本教程使用 LangGraph 进行智能体编排,使用 OpenAI 的 GPT-4o,使用 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 的配置文件添加到您的项目中。

智能体

测试