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

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’”)。

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

相关文章:

  • 51、c# 请列举出6个集合类及用途
  • pyhton基础【2】基本语法
  • 代码随想录算法训练营第四十九天
  • 【Linux 学习计划】-- Linux调试工具 - gdb cgdb
  • DPDK QDMA 驱动详解 - tx
  • c++命名空间的作用及命名改编
  • 大学生科创项目在线管理系统设计与实现
  • 环境配置文档撰写指南
  • TReport组件指南总结
  • 元组可以比较大小吗?一次返回多个值?编程语言的元组?声明变量一定需要指定类型吗?
  • 【AI实战】从“苦AI”到“爽AI”:Magentic-UI 把“人类-多智能体协作”玩明白了!
  • MSP430通用电机控制代码(Motor)设计与实现
  • 长序列高时空分辨率月尺度温度和降水数据集(1951-2011)
  • 电磁场与电场、磁场的关系
  • Java 内存模型(JMM)深度解析:理解多线程内存可见性问题
  • Python系列教程242——from与reload合不来
  • 算法笔记·数学·欧拉函数
  • 心有灵犀数
  • nginx的一些配置的意思
  • python训练营day34
  • 付费 视频 网站 怎么做/企业自助建站
  • wordpress 对接app/优化怎么做
  • 天津 网站策划/网页广告
  • 有哪些做应援的网站/重庆百度seo整站优化
  • 西宁市公司网站建设/新东方雅思培训价目表
  • 政府移动网站建设整体风格控制/深圳网络推广公司哪家好