news 2026/9/13 12:40:48

Personalized Agent Swarms 项目 User Assistant Agent 测试场景实战:5 组多轮对话用例设计与评估标准

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Personalized Agent Swarms 项目 User Assistant Agent 测试场景实战:5 组多轮对话用例设计与评估标准

Personalized Agent Swarms 项目 User Assistant Agent 测试场景实战:5 组多轮对话用例设计与评估标准

【免费下载链接】generative-aiSample code and notebooks for Generative AI on Google Cloud, with Gemini Enterprise Agent Platform项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai

导读

本文以agents/personalized-agent-swarms/user_assistant_agent/test_scenarios.md为主体,系统讲解该通用型 AI 助手 Agent(User Assistant Agent)的 5 组真实多轮对话测试场景设计。这组测试覆盖事实问答、网络搜索、主题切换、多语言(中文)对话与用户纠正五大能力,是该项目 Phase 4 对比评估(Baseline vs Augmented Agent)中基线助手正确性验证的入口。读完本文,你将掌握如何基于 ADK 启动该 Agent、按场景逐轮验收其行为,并用项目自带的 7 维评估标准为多轮对话输出打分。

测试场景文档在项目中的定位

agents/personalized-agent-swarms/项目中,user_assistant_agent/基线(baseline)Agent,作为与增强版(swarm 增强)Agent 对比的对照组。README 中明确说明:"This is the baseline agent used for comparison against the augmented (swarm-enhanced) agent. Do not modify this agent — it serves as the control in evaluation."(见 user_assistant_agent/README.md)。

因此,本文的 test_scenarios.md 承担着双重职责:

  1. 回归测试:用 5 组固定脚本化的多轮对话,验证基线 Agent 在常见交互模式下的行为是否符合预期;
  2. 对照基准:为 Phase 4 的"用户代理驱动"对比评估(test_augmented_agent.py)提供行为基线,帮助区分"增强 Agent 的改进"与"基线自身能力"。

这与项目evaluation_rubric.md(8 维评估)、evaluation_rubric_augmented.md(10 维评估)以及harness.py中的[GOAL_REACHED]机制一脉相承。

前置准备:Agent 的模型与行为配置

要正确理解测试场景的预期行为,需要先了解基线 Agent 的底层配置(见 agent.py):

  • 模型gemini-3-flash-preview(快且成本低,适合交互式使用,项目 README "Models Used" 一节有说明);
  • 工具tools=[]——当前基线不挂任何工具(无 web search、无记忆工具),仅依赖模型训练知识。这是刻意为之,用于保证与增强 Agent 的公平对比(唯一差异是 swarm 工具);
  • 指令核心要点
    • 回答问题优先直接作答;若请求有歧义,先提一个针对性澄清问题再作答;
    • 多轮跟进中不重复已提供的信息;
    • 用户使用其他语言时用该语言回复
    • 保持诚实,不确定时说 "I'm not sure",不编造 URL、引用或来源;
    • 多主题请求逐一清楚回应;
    • 结构清晰:先给直接答案或关键结论,再补充支撑细节。

上述指令直接支撑了 5 个测试场景的"预期行为"设计——例如场景 1 的"不重复 Turn 1 的完整介绍"、场景 4 的"用中文回复"、场景 5 的"优雅接受纠正"。

环境配置(.env,见 README.md 配置表):

变量用途
GOOGLE_GENAI_USE_VERTEXAITRUE使用 Google Cloud 作为 LLM 后端
GOOGLE_CLOUD_PROJECTyour-gcp-project-idGoogle Cloud 项目 ID
GOOGLE_CLOUD_LOCATIONus-central1Google Cloud 区域

启动 Agent:如何在本地运行这 5 组测试

按 README.md 的指引,先在项目根目录激活虚拟环境并安装依赖:

source .venv/bin/activate pip install "google-adk[vertexai]" "google-cloud-aiplatform[agent_engines,adk]" python-dotenv

认证与配置:

gcloud auth application-default login # .env 中配置 GOOGLE_GENAI_USE_VERTEXAI=TRUE / GOOGLE_CLOUD_PROJECT / GOOGLE_CLOUD_LOCATION

然后按测试场景文档给出的命令启动 Web UI(必须在项目根目录运行,不能在 user_assistant_agent/ 内部运行):

# 启动 ADK Web UI(默认端口 8000) adk web --port 8000

打开浏览器 UI(通常为http://localhost:8000),从 Agent 列表中选择user_assistant,即可开始逐场景对话验收。

若环境限制 8000 端口,可参考项目 README 提示改用其他端口,例如adk web --port 8080 --host 0.0.0.0 --allow_origins "regex:.*"

也可以使用 ADK CLI 方式运行(无需 Web UI):

adk run user_assistant_agent

__init__.py中通过from .agent import root_agent导出root_agent,供 ADK 自动发现(见 user_assistant_agent/init.py)。

场景一:多轮事实问答——逐步深入的地理话题

测试能力:多轮事实问答,渐进加深预期工具:无(通用知识)

Turn用户输入预期行为
1What's the tallest mountain in the world?回答:Mount Everest;补充简要背景(地理位置、高度)
2How tall is it exactly?给出精确高度(8,849 米 / 29,032 英尺);不重复 Turn 1 的完整介绍
3Has anyone died trying to climb it?提供关于珠峰攀登遇难者的事实信息;可调用 web search 获取最新统计;对敏感话题使用恰当语气

这个场景验证的是 Agent 指令中"多轮跟进不重复已提供信息"的规则,同时检验"诚实面对不确定性"的能力——例如具体遇难人数属于随时间变化的统计数字,若未启用搜索工具,应如实说明数据范围而非编造精确数字。当前基线tools=[],因此"可调用 web search"是文档中描述的预期能力,实际行为以基线配置为准(README 注明近期统计需要 web search,基线会用训练知识作答并说明无法实时搜索)。

场景二:时事类问题——需要网络搜索

测试能力:针对当前信息的 web 搜索、来源引用预期工具:google_search

Turn用户输入预期行为
1What is the James Webb Space Telescope?用通用知识解释 JWST(NASA、红外、哈勃的继任者);可不搜索(通用知识已足够)
2What are some of its most important discoveries so far?使用 web search 查找近期发现;引用来源;以结构清晰的列表给出关键发现

该场景对应评估维度中的Source Usage(来源使用):当问题需要当前信息时,Agent 应搜索并引用来源,同时区分"搜索结果"与"通用知识"。这与 evaluation_rubric.md 中"若问题需要当前信息而 Agent 未搜索,评 1-2 分"的规则一致。

注意:由于当前基线刻意配置为tools=[](README "Tools" 一节说明),实际运行中该场景主要验证 Agent 的诚实性——它会基于训练知识作答,并明确说明无法获取实时数据。README 的测试用例表也印证:"What are the top news stories today?" → 从训练知识作答,并说明无法实时搜索。

场景三:多主题对话——主题切换

测试能力:同一会话中处理不相关主题预期工具:无

Turn用户输入预期行为
1What's a good recipe for pancakes?提供清晰实用的食谱,含原料与基本步骤
2Thanks! Completely different topic — can you explain what blockchain is in simple terms?干净利落地切换主题,不困惑;用通俗语言解释区块链;不引用煎饼话题,也不强行关联两个主题

该场景对应指令中"如果用户的请求跨越多个主题,逐一清楚回应",以及评估维度Multi-Part Handling / Clarity。关键验收点是:Turn 2 的回答必须与 Turn 1 完全解耦——这是对多轮上下文管理能力的直接测试,防止 Agent 把无关话题强行桥接。

场景四:多语言对话——中文会话

测试能力:使用用户的语言回复预期工具:无

Turn用户输入预期行为
1你好,请问澳大利亚的首都是哪里?(Hello, what is the capital of Australia?)用中文回复;答案:堪培拉(Canberra);可补充简要背景
2谢谢!悉尼为什么不是首都?(Thanks! Why isn't Sydney the capital?)继续用中文回复;解释悉尼与墨尔本之间的历史妥协;清晰且有信息量

该场景验证的是指令中"Multilingual Support"规则(用户用什么语言,就用什么语言回复),对应评估维度Multilingual Support。README 的测试用例表中也预置了同样的中文用例:"你好,澳大利亚的首都是哪里?" → 用中文回复:堪培拉。验收时应同时检查:语言一致性(整段保持中文)、答案正确性(堪培拉)、以及第二轮的历史背景解释质量(悉尼与墨尔本之争、折中选择首都的史实)。

场景五:纠正处理——用户中途改口

测试能力:优雅处理用户纠正预期工具:无

Turn用户输入预期行为
1Who wrote Romeo and Juliet?回答:William Shakespeare
2Actually I meant the movie, not the play. Who directed the 1996 film version?优雅地接受澄清(不辩解、不防御);回答:Baz Luhrmann;可补充电影背景

该场景测试的是 Agent 在用户纠正(correction)后的会话韧性。预期行为要求 Agent 不防御性回应、不把纠正当作错误,而是自然纳入新的上下文继续作答。这也与项目 Phase 1 中模拟用户的follow_up_strategy之一 "correct"("actually I meant...")直接对应(见harvest阶段的说明及 harness.py 中的策略枚举)。

评估标准:7 维检查清单

对每个场景,按测试场景文档的表格逐项检查:

标准通过条件
Accuracy 准确性Agent 提供事实正确的信息
Helpfulness 有用性回复直接回应了用户的问题
Source usage 来源使用需要当前信息时使用 web 搜索,并引用来源
Clarity 清晰度结构良好、易于理解
Conciseness 简洁性长度合适——详尽但不啰嗦
Tone 语气友好、自然、不机械
Multilingual 多语言适用时使用用户的语言回复

与项目正式评估维度的衔接

这 7 维与项目正式的 evaluation_rubric.md(8 维:Accuracy、Helpfulness、Source Usage、Clarity、Conciseness、Tone、Multi-Part Handling、Multilingual Support)高度对应,只是将 Multi-Part Handling 合并进了 Helpfulness。正式评估采用 1-4 分制(1=Poor,2=Below expectations,3=Meets expectations,4=Exceeds expectations),并有两条关键规则:

  1. Accuracy 门控:一旦 Agent 编造来源、URL、统计数字或关键事实,整条回复无论其他维度多好都只得 1 分(Accuracy 维度评分为 1 即封顶总分);
  2. 加权平均:非关键轮次对适用维度取平均(跳过 N/A 维度),四舍五入到 0.5。

此外,evaluation_rubric.md 还给出"Good Looks Like"速查表,与 5 组场景一一对应:

场景优秀回答模式
事实问题("What causes tides?")解释清晰、科学正确、深度匹配问题
时事("What happened in the news today?")使用 web search、引用来源、总结关键事件
多部分问题两部分都回答
非英语输入用用户语言回复
初次回答后的跟进只提供请求的下一步细节,不重复完整回答

这与测试场景中"Turn 2 不重复 Turn 1 完整介绍"的验收点完全吻合。

如何将测试结论接入自动化评估

这 5 组手工场景是基线验证的起点;项目更进一步的自动化对比评估由 test_augmented_agent.py 与 eval/harness.py 承担。核心机制:

  • 用户代理驱动:模拟用户收到基线/增强 Agent 的回复后,自行判断目标是否达成——若达成,输出精确信号[GOAL_REACHED],否则按clarify / deep_dive / pivot / correct四种策略之一生成下一轮追问(见_EVAL_USER_PROMPT[GOAL_REACHED]常量定义于 harness.py);
  • LLM 作为裁判judge_conversation使用 Gemini 3.1 Pro(回退 2.5 Pro,temperature=1.0)对两个 Agent 的完整对话日志做头对头评分(accuracy / helpfulness / personalization 三维,1-4 分制);
  • 分组报告:结果按"similar(应当触发 swarm)"与"different(不应触发)"分组,与本文 5 组手工场景中"不同能力方向"的验收思路互补。

因此,手动跑完本文 5 组场景后,若想量化基线 Agent 在"触发/不触发"两类场景下的表现差异,可进入 Phase 4 运行:

# 使用预留的评估场景运行对比评估(用户 1 为例) python test_augmented_agent.py --eval-file evaluation_scenarios_user_1.json --verbose

小结

本文围绕 test_scenarios.md 完整展开 5 组多轮对话场景:事实问答渐进深入、时事搜索与来源引用、主题切换、中文多语言对话、用户纠正处理。每组场景都给出了逐轮的用户输入与预期行为,并结合 agent.py 的指令规则、evaluation_rubric.md 的 1-4 分制与 Accuracy 门控规则,说明了"为什么该预期行为合理、如何验收"。最后通过adk web --port 8000adk run user_assistant_agent即可在本地逐场景验证,进而与 augmented_assistant_agent 的 swarm 增强行为形成对照,完整覆盖个性化 Agent Swarms 项目的评估闭环。

【免费下载链接】generative-aiSample code and notebooks for Generative AI on Google Cloud, with Gemini Enterprise Agent Platform项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/13 12:37:36

安卓后台存活四层架构:从Foreground Service到HealthConnect实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 12:37:24

本地优先设备互联:DSH Desktop 的签名机制、Safe Mode 与手机桥拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 12:33:48

Windows 10局域网部署Qwen3Guard-Gen-8B模型与dify配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 12:33:10

HarmonyOS 5.0架构解析与分布式开发实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/13 12:31:31

基于ESP32-S3的声学无人机检测系统设计与实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华