基于大模型的Agent进行测试评估的3种方案

本文首发于博客 基于大模型的Agent进行测试评估的3种方案

我们都知道当前基于大模型构建的 Agent 能力极不稳定,而今年我司产品又在规划接入 Agent 能力,所以在引入之前,需要先设计一套测试框架,来看看各种场景下容错率是否能达到目标阈值,所以我调研了几种测试方案,本篇来总结下。

AgentBeach

AgentBeach框架

首先来看 AgentBeach,由来自清华大学、俄亥俄州立大学和加州大学伯克利分校的研究者设计的一个测试工具,AgentBench 包括 8 个环境:

  • 操作系统(OS):测试 LLM 在 bash 环境中执行文件操作和用户管理等任务的能力。
  • 数据库操作(DB):评估 LLM 使用 SQL 对指定数据库执行操作的能力。
  • 知识图谱(KG):检验 LLM 利用工具从知识图谱中提取复杂信息的能力。
  • 卡牌对战(DCG):考察 LLM 作为玩家,依据规则和当前状态进行卡牌对战策略决策的能力。
  • 情景猜谜(LTP):在这个游戏中,LLM 需要针对谜题提出问题,以猜测答案,这能够测试 LLM 的横向思维能力。
  • 居家场景(HH):在模拟的家庭环境中,LLM 需要完成一些日常任务,主要测试 LLM 将复杂高级目标分解为一系列简单动作的能力。
  • 网络购物(WS):在模拟的在线购物场景中,LLM 需要根据需求完成购物任务,主要评估 LLM 的自主推理和决策能力。
  • 网页浏览(WB):在模拟的网页环境中,LLM 需要根据指令完成跨网站的复杂任务,考察 LLM 作为网络代理的能力。

这些评测可以帮助了解和验证基于大模型 的 Agent 在不同环境和任务中的表现,其中操作系统和数据库操作属于初阶能力测试,这类场景的特点是操作环境简单,信息纯净;知识图谱和卡牌对战属于进阶能力测试,这类场景的特点是操作环境简单,但信息相对复杂;情景猜谜,居家场景,网络购物,网页浏览这一类场景操作环境相对复杂,信息也相对复杂,是对 Agent 的高阶能力测试。

具体到企业级 Agent 场景,倒不必必须按照上述环境来区分,但需要对自己的需求场景按照容错率低,中,高进行区分,制订相应的通过率指标,进行测试后,决定是否采用乙方 Agent 服务。

AgentBeach 数据集、环境和集成评估包发布地址

ToolEmu

[外链图片转存中…(img-ALkYhDwx-1710314533705)]

ToolEmu 主要是对基于大模型 Agent 的安全测试,ToolEmu 设计了一个仿真框架,通过模拟多样化的工具集,检测 LLM-Base Agent 在各种场景下的表现,旨在自动化地发现真实世界中的故障场景,为 Agent 执行提供了一个高效的沙盒环境。ToolEmu 包括一个对抗性仿真器,专门用于模拟可能导致大模型代理故障的情景,从而让开发者更好地理解并改善代理的弱点,这种方式可以有效地识别真实世界中潜在的严重故障。此外还有自动安全评估器,通过分析代理执行过程中的潜在危险操作,来量化风险的严重性。

类 Agent 产品要集成到产品,在安全性方面可以参考这个项目进行测试。

项目官网

Agent 执行轨迹评估

如果说 AgentBeach 是对基于大模型的 Agent 通用能力测试,则 Agent 执行轨迹评估(Agent Trajectory Evaluation)通过观察基于大模型的 Agent 在执行任务过程中所采取的一系列动作及其响应,来全面评价 Agent 的表现。这种方法用于评估 Agent 在解决问题时的逻辑和效率,以及它是否选择了正确的工具和步骤来完成任务。

代理执行轨迹评估的作用在于:

  1. 全面性:它不仅考虑最终结果,还关注过程中的每一步,从而提供更全面的评估。
  2. 逻辑性:通过分析代理的“思考链”,可以了解其决策过程是否合理。
  3. 效率性:评估代理是否采取了最少的步骤来完成任务,避免不必要的复杂性。
  4. 正确性:确保代理使用了合适的工具来解决问题。

下面是 LangChain 中代理执行轨迹评估的代码示例:

# 导入LangChain的评估器模块
from langchain.evaluation import load_evaluator

# 加载轨迹评估器
evaluator = load_evaluator("trajectory")

# 设置代理的输入,例如用户询问的问题
input = "莫尔索个人网站(https://liduos.com)的延迟情况如何?"

# 代理的最终预测响应,这里应该是代理给出的答案
prediction = "代理的预测响应"  # 需要替换为实际的预测结果

# 代理的行为轨迹,记录了代理在处理问题时的每一步操作
agent_trajectory = [
    # 这里应该是代理在处理问题时的中间步骤,例如使用的函数和参数
    # 例如:('使用ping工具', 'https://liduos.com')
]

# 使用评估器对代理的行为轨迹进行评估
evaluation_result = evaluator.evaluate_agent_trajectory(
    input=input,
    prediction=prediction,
    agent_trajectory=agent_trajectory
)

# 打印评估结果,包括评分和推理链
print(evaluation_result)

FireAct架构概览

此外,对 Agent 轨迹跟踪的思路还有一个妙用,就是微调出侧重于特定垂直场景 Agent 任务的模型,这种思路对应的技术叫FireAct(公众号后台回复FireAct,获取相应代码、数据和模型,快手的KwaiAgents也是类似的路子),它使用 GPT-4 生成的 500 个 Agent 操作轨迹来微调 Llama2-7B 模型,使其在 HotpotQA 任务上的表现提高了 77%,Midreal AI(一款小说生成产品,可以生成真正的小说,逻辑性和创造力都在线,而且还加入了互动能力,每到关键节点会让你选择剧情走向,还会生成一张配图。)也是用了 FireAct 的技术。
在这里插入图片描述

我创建了【AI 产品】和【AI 开发】交流群,用于 AI 产品构建和分享交流,如果你负责的工作和这个领域强相关并且感兴趣,欢迎加我入群交流 ,务必备注来由,否则不予通过!

如果觉得内容不错,订阅邮件和RSS,转发文章~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/453301.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux 基本命令

文章目录 1.echo2.cd3.find4.mkdir5.cp6.rm7.wc8.tar9.tail10.vim11.grep12.sed13 touch14 ls15 快捷键16 ln17 mv18 useradd19 usermod20 su 每天一个Linux命令 提示:以下是本篇文章正文内容,下面案例可供参考 1.echo 中文 (Chinese): “回声” 或 “输…

分布式链路追踪(一)SkyWalking(2)使用

一、使用方法 1、简介 agent探针可以让我们不修改代码的情况下,对Java应用上使用到的组件进行动态监控,获取运行数据发送到OAP上进行统计和存储。agent探针在Java使用中是使用Java agent技术实现。不需要更改任何代码,Java agent会通过虚拟…

Linux虚拟机安装Qt步骤记录

(一)安装命令,按照网上的教程,亲测可行 在终端中依次输入以下命令, 1.更新软件源列表: sudo apt-get update 2.安装Qt开发工具包,windows上我用的是Qt6,根据网上也是初次在Linux上安装Qt,安装版本5应该问题不大&…

智慧农业新篇章:DSSAT模型、APSIM模型、WOFOST与PCSE模型综合应用,引领作物生长模拟与产量预测新潮流

目录 ★WOFOST模型与PCSE模型应用 ★基于R语言APSIM模型进阶应用与参数优化、批量模拟 ★最新DSSAT作物模型建模方法及应用 ★基于Python语言快速批量运行DSSAT模型及交叉融合、扩展应用 ★R语言与作物模型(以DSSAT模型为例)融合应用 ★遥感数据与…

论文阅读——VSA

VSA: Learning Varied-Size Window Attention in Vision Transformers 方法: 给定输入特征X,VSA首先按照基线方法的例程,将这些标记划分为几个窗口Xw,窗口大小为预定义的w。我们将这些窗口称为默认窗口,并从默认窗口中…

KMP算法——解决字符串匹配问题

一般来说在你没学过KMP算法前,你解决字符串匹配问题会采用BF算法——BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,…

BM1684X搭建sophon c++环境

1:首先安装编译好sophon-sail 比特大陆BM1684X开发环境搭建--SOC mode-CSDN博客 2:在将之前配置的soc-sdk拷贝一份到sdk根目录,将交叉编译好的sail中的build_soc拷贝至soc-sdk文件夹内; cp -rf build_soc/sophon-sail/inlcude soc-sdk cp -rf build_soc…

YOLOv8独家改进:backbone改进 | TransXNet:聚合全局和局部信息的全新CNN-Transformer视觉主干| CVPR2024

💡💡💡本文独家改进:CVPR2024 TransXNet助力检测,代替YOLOv8 Backbone 改进结构图如下: 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡💡💡全网独家首发创新(原创),适合paper !!! 💡…

突发:日本火箭发射后爆炸

综合路透社、法新社13日消息,现场直播画面显示,日本初创公司Space One火箭发射失败,在半空中发生爆炸。 ▲日媒视频报道截图 据共同社此前介绍,Space One公司11日宣布,13日上午11点零1分将从日本首个民用火箭发射场“…

数据集成平台选型建议

一 数据集成介绍 数据集成平台是一种用于管理和协调数据流动的软件工具或服务。它的主要目标是将来自多个不同数据源的数据整合到一个统一的、易于访问和分析的数据存储库中。这些数据源可以包括数据库、云应用、传感器、日志文件、社交媒体等等。数据集成平台的关键任务是确保…

代码随想录算法训练营第五九天 | 下一个更大元素II、接雨水

目录 下一个更大元素II接雨水 LeetCode 503.下一个更大元素II LeetCode 42. 接雨水 下一个更大元素II 给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数字 x 的 下一…

《Ubuntu20.04环境下的ROS进阶学习2》

一、使用rviz和gazebo实时仿真 本节我们将使用三维可视化工具rviz(The Robot Visualization Tool)来实时观测gazebo仿真中的激光雷达数据。 二、打开仿真gazebo项目 如果您已经按照 《Ubuntu20.04环境下的ROS进阶学习0》-CSDN博客 如果您已经按照上次的文…

C++作业day2

封装一个矩形类(Rect)&#xff0c;拥有私有属性:宽度(width)、高度(height)&#xff0c; 定义公有成员函数: 初始化函数:void init(int w, int h) 更改宽度的函数:set_w(int w) 更改高度的函数:set_h(int h) 输出该矩形的周长和面积函数:void show() #include <iostre…

计算机网络面经八股-HTTP常见的状态码有哪些?

常见状态码&#xff1a; 200&#xff1a;服务器已成功处理了请求。 通常&#xff0c;这表示服务器提供了请求的网页。301 &#xff1a; (永久移动) 请求的网页已永久移动到新位置。 服务器返回此响应(对 GET 或 HEAD 请求的响应)时&#xff0c;会自动将请求者转到新位置。302&…

浅淡 C++ 与 C++ 入门

我们知道&#xff0c;C语言是结构化和模块化的语言&#xff0c;适用于较小规模的程序。而当解决复杂问题&#xff0c;需要高度抽象和建模时&#xff0c;C语言则不合适&#xff0c;而C正是在C的基础之上&#xff0c;容纳进去了面向对象编程思想&#xff0c;并增加了许多有用的库…

基于JAVA的数码产品应用平台设计与实现【附项目源码】分享

基于JAVA的数码产品应用平台设计与实现&#xff1a; 源码地址&#xff1a;https://download.csdn.net/download/weixin_43894652/88842576 基于Web的数码产品应用平台设计与实现需求文档 一、引言 随着科技的飞速发展和数码产品的普及&#xff0c;用户对于获取数码产品信息…

淘宝扭蛋机小程序:探索未知的惊喜之旅

你是否曾在商场里被那闪闪发光的扭蛋机吸引&#xff0c;却因为种种原因无法下手&#xff1f;现在&#xff0c;淘宝扭蛋机小程序带给你全新的扭蛋体验&#xff0c;让你随时随地都能感受到那份未知的惊喜。 淘宝扭蛋机小程序是一款集娱乐与购物于一体的全新应用。它汇聚了众多热…

浅谈船舶岸电系统绝缘监测及故障定位需求及应用

彭姝麟 Acrelpsl 0 项目背景 随着现代船舶发展&#xff0c;船舶电气化程度越来越高&#xff0c;船舶电站的的容量也越来越大&#xff0c;随之而来的是电网的绝缘问题更加复杂化。船舶电力系统一般采用IT系统&#xff0c;即不接地系统。IT系统的优点是发生单相接地时不会出现TN…

【算法集训】基础算法:递推 | 概念篇

前言 递推最通俗的理解就是数列&#xff0c;递推和数列的关系就好比 算法 和 数据结构 的关系&#xff0c;数列有点像数据结构中的顺序表&#xff0c;而递推就是一个循环或者迭代的枚举过程。 递推本质上是数学问题&#xff0c;所以有同学问算法是不是需要数学非常好&#xff…

250+可用的 AI 资源网站

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 这里是关于AI网站的一份资源列表。欢迎访问该链…