当前位置: 首页 > ops >正文

LangGraph的智能评估

从聊天机器人到智能助手,我们都在努力提升用户体验。但如何确保这些应用真的能达到预期效果呢?这就需要一个强大的评估系统。LangGraph结合了LangSmith和OpenEvals,为智能应用提供了一套完整的评估解决方案。看看这个评估系统是如何工作的。

评估可以帮助我们发现应用的优点和不足,从而进行优化和改进。
就像一个医生给病人做体检一样,评估就是给智能应用做“体检”,确保它健康、高效。

LangGraph的评估流程

LangGraph的评估流程可以分为几个简单的步骤:创建数据集、定义目标函数、定义评估器、运行评估。接下来,我们详细看看每个步骤。

1.创建数据集

首先,需要准备一些测试数据,这些数据将用来评估我们的智能应用。在LangGraph中,我们可以使用LangSmith来创建和管理数据集。比如,我们可以创建一个包含一些常见问题和答案的数据集。


from langsmith import Clientclient = Client()# 在 LangSmith 中以编程方式创建数据集
# 关于其他数据集创建方法,请参阅:
# https://docs.smith.langchain.com/evaluation/how_to_guides/manage_datasets_programmatically
# https://docs.smith.langchain.com/evaluation/how_to_guides/manage_datasets_in_applicationdataset_name = "示例数据集2"dataset = client.create_dataset(dataset_name=dataset_name, description="LangSmith 中的一个示例数据集。"
)# 创建示例
examples = [{"inputs": {"question": "杭州在哪里?"},"outputs": {"answer": "中国的南方。"},},{"inputs": {"question": "地球的最低点是什么?"},"outputs": {"answer": "地球的最低点是死海。"},},
]# 将示例添加到数据集
client.create_examples(dataset_id=dataset.id, examples=examples)#会上传到langSmith服务中了

运行后会上传到LangSmith中
在这里插入图片描述
在这个例子中,我们创建了一个名为“示例数据集2”的数据集,并添加了两个示例问题和答案。

2.定义目标函数

接下来,我们需要定义一个目标函数,将包含我们要评估的内容。
比如,我们可以定义一个函数,让它调用我们的智能应用来回答问题。

 pip install -U agentevals
# -*- coding: utf-8 -*-
from langgraph.prebuilt import create_react_agent
from langchain_community.chat_models.tongyi import ChatTongyi# 提示
# 这个快速入门使用了开源 openevals 包中的预构建 LLM-as-judge 评估器。OpenEvals 包含了一组常用的评估器,如果你是评估新手,这是一个很好的起点。如果你想在评估你的应用程序时有更大的灵活性,你也可以使用自己的代码定义完全自定义的评估器。# 要开始,你可以使用 AgentEvals 包中的预构建评估器:
# pip install -U agentevals#模型初始化
llm = ChatTongyi(model="qwen-max-latest",#qwen-max-latest qwen-plus qwen-turbotemperature=0,verbose=True,)def target(inputs: dict) -> dict:#构建一个智能体agent = create_react_agent(model=llm,tools=[],)response = agent.invoke({"messages": [{"role": "system", "content": "准确回答以下问题"},{"role": "user", "content": inputs["question"]},]})return {"answer": print(response["messages"][-1]) }

这个函数会调用我们的智能应用,传入一个问题,然后返回应用的回答。

3.定义评估器

有了目标函数和测试数据后,我们需要定义评估器。评估器的作用是根据测试数据和目标函数的结果,给出一个评估分数。LangGraph使用了OpenEvals来定义评估器。


from openevals.llm import create_llm_as_judge
from openevals.prompts import CORRECTNESS_PROMPTdef correctness_evaluator(inputs: dict, outputs: dict, reference_outputs: dict):evaluator = create_llm_as_judge(prompt=CORRECTNESS_PROMPT,model=llm,feedback_key="correctness",)eval_result = evaluator(inputs=inputs,outputs=outputs,reference_outputs=reference_outputs)return eval_result

这个评估器会比较目标函数的结果和测试数据中的正确答案,然后给出一个评估分数。

4.运行评估

最后,我们运行评估。LangGraph会自动将测试数据传入目标函数,然后用评估器给出评估分数。

experiment_results = client.evaluate(target,# data="Sample dataset",data=dataset_name,#8e388686-616d-4c66-8467-1b0e8270f983evaluators=[correctness_evaluator,# 可以在这里添加多个评估器],experiment_prefix="first-eval-in-langsmith",max_concurrency=2,
)

运行结果截图

在这里插入图片描述

langchain服务上查看报错

在这里插入图片描述
运行评估后,LangGraph会提供一个链接,我们可以在这个链接中查看详细的评估结果。

当然运行结果会报错,应该时国内大模型有些参数还没有定义吧!报错:AttributeError(“‘ChatTongyi’ object has no attribute ‘startswith’”)。

通过这个评估过程,可以发现智能客服的优点和不足,从而进行优化和改进。比如,如果评估结果显示智能客服在回答某些问题时不够准确,你可以调整模型或优化提示,提高回答的准确性。

http://www.xdnf.cn/news/8609.html

相关文章:

  • 【深度学习新浪潮】什么是MCP?
  • LangGraph:部署智能应用
  • 地理特征类相关可视化图像总结
  • stream数据流
  • 电子电路:再谈滤波原理及其应用
  • 再谈Linux 进程:进程等待、进程替换与环境变量
  • [Solution] git push error (exit code 128)
  • linux 内存碎片分析
  • Firecrawl MCP Server 深度使用指南
  • No such file or directory: ‘ffprobe‘
  • 构建智能AI记忆系统:多智能体系统记忆机制的设计与技术实现
  • Spark MLlib的运维与管理
  • 接口性能测试-工具JMeter的学习
  • UDP和TCP示例程序
  • 【MySQL】第8节|Innodb底层原理与Mysql日志机制深入剖析(一)
  • 从稳定到卓越:服务器部署后的四大核心运维策略
  • IP查询基础介绍
  • 二、ZooKeeper 集群部署搭建
  • 《深入Python:新手易踩的语法雷区与进阶启示》
  • STM32CubeMX的初使用GPIO的端口配置
  • 虚幻基础:AI
  • Baklib内容中台的主要构成是什么?
  • 大般涅槃经卷第三十五
  • windows11 安装 jupyter lab
  • ARM笔记-嵌入式系统基础
  • untiy实现汽车漫游
  • JVM(Java虚拟机)
  • MSP430通用电机控制代码(Motor)设计与实现
  • vue3 发票税率 计算
  • 人工智能杂谈(十二)大模型与小模型的应用场景及未来发展趋势