
构建并测试 User Assistant Agent 基线基于 Google ADK 与 Gemini 的通用对话助手实战指南【免费下载链接】generative-aiSample code and notebooks for Generative AI on Google Cloud, with Gemini Enterprise Agent Platform项目地址: https://gitcode.com/GitHub_Trending/ge/generative-ai导读User Assistant Agent是 personalized-agent-swarms从对话历史生成个性化 Mini-Agent Swarm项目中作为对照组使用的基线Baseline对话助手。它基于 Google Agent Development KitADK构建使用 Gemini 3 Flash Preview 模型通过纯对话推理帮助用户回答任意问题、完成各类任务。读完本文你将掌握如何在本地通过 ADK Web UI 与 CLI 运行该 Agent如何配置 Google Cloud 后端.env如何理解其零工具tools[]设计背后的评估公平性考量以及如何利用仓库内的自动化测试脚本对部署后的 Agent 进行系统化验证。重要定位说明该 Agent 是用于与增强版swarm 增强Agent 对比的基线对照组。项目明确规定不得修改此 Agent因为它承担着整个评估体系中控制变量的角色。一、这个 Agent 到底做什么User Assistant Agent是一个通用的对话式 AI Agent用户可以用自然语言提出任意问题Agent 的应答逻辑遵循一个清晰的三步流程理解问题或请求——解析用户的意图自信时直接从训练知识作答——不依赖外部工具仅凭模型自身知识储备请求模糊时提出一个有针对性的澄清问题——宁可先问清楚也不要在信息不足时盲目猜测。这一行为模式由 agent.py 中完整的 System Instruction提示词驱动其中明确规定了角色定位、回答策略、多语言支持与结束语格式。例如规则中写道如果问题含糊不清先提出一个有针对性的澄清问题不要猜测、对不确定性要诚实说我不确定而不是编造、不要编造 URL、引用或来源。在项目中的角色公平评估的控制变量该 Agent 是整个 Personalized Mini-Agent Swarms 研究管线的 Phase 1 与 Phase 4 的基石Phase 1历史采集它作为被模拟用户询问的基线助手产生多轮对话历史Phase 4对比评估同一开场消息分别发给基线助手与 swarm 增强助手比较两者在达成目标所需轮数与回答质量上的差异。由于增强版 Agent 在 swarm 未触发时会委托给一个与user_assistant_agent指令完全一致的子 Agent因此保证了两者在无 swarm 路径上的行为等价这正是本基线存在的意义。二、运行环境与前置条件在启动 Agent 之前需要准备以下环境Python 3.10Google Cloud 认证执行gcloud auth application-default login获取 Application Default CredentialsADCGoogle Cloud 项目访问权限能够访问 .env 中配置的 GCP 项目从项目根目录即user_assistant_agent/的上级目录完成依赖安装# 激活虚拟环境 source .venv/bin/activate # 安装依赖如尚未安装 pip install google-adk[vertexai] google-cloud-aiplatform[agent_engines,adk] python-dotenv依赖清单与 requirements.txt 一致包含google-adk[vertexai]、google-cloud-aiplatform[agent_engines,adk]与python-dotenv三个核心包。注意 agent.py 在导入 ADK 之前会通过load_dotenv加载项目根目录下的.env文件pathlib.Path(__file__).parent.parent / .env因此请确保.env放在user_assistant_agent/的上一级而非该目录内部。三、启动方式一ADK Web UI可视化调试ADK 自带 Web 开发界面可以交互式地与 Agent 对话并查看内部运行状态# 注意必须在项目根目录运行而不是在 user_assistant_agent/ 目录内部 adk web启动后在浏览器中打开 UI默认地址为http://localhost:8000从 Agent 下拉列表中选择user_assistant即可开始对话。端口冲突的规避方式在部分受限环境中默认的 8000 端口可能被禁用。参考项目 README 中的做法可以通过显式指定端口与 Host 解决同时配合--allow_origins避免经代理访问时状态变更类 POST 请求被403 Forbidden拒绝adk web --port 8080 --host 0.0.0.0 --allow_origins regex:.*四、启动方式二ADK CLI命令行直接对话如果不习惯使用浏览器 UI可以直接通过 ADK 的 CLI 命令与 Agent 交互adk run user_assistant_agentadk run会在终端中启动一个交互式会话适合快速验证 Agent 行为或进行脚本化冒烟测试。ADK 如何发现这个 AgentADK 的发现机制依赖 __init__.py该文件从agent.py导入并导出root_agent__all__ [root_agent]。也就是说包级命名空间中名为root_agent的Agent对象即 ADK 的发现入口目录名user_assistant_agent随之成为 CLI / Web UI 中使用的 Agent 标识。五、核心配置.env环境变量所有 Google Cloud 后端配置均集中在.env文件中共三个变量变量值用途GOOGLE_GENAI_USE_VERTEXAITRUE使用 Google CloudVertex AI作为 LLM 后端GOOGLE_CLOUD_PROJECTyour-gcp-project-idGoogle Cloud 项目 IDGOOGLE_CLOUD_LOCATIONus-central1Google Cloud 区域完整的配置模板如下GOOGLE_GENAI_USE_VERTEXAITRUE GOOGLE_CLOUD_PROJECTyour-gcp-project-id GOOGLE_CLOUD_LOCATIONus-central1将GOOGLE_GENAI_USE_VERTEXAI设为TRUE后google-genaiSDK 会自动把请求路由到 Vertex AI 端点从而复用你项目下的 Gemini 模型配额与日志能力。六、当前配置为什么是零工具tools[]这是理解本 Agent 设计的最关键一点。当前基线 Agent不使用任何工具——没有 Web 搜索、没有记忆工具仅依赖 LLM 的训练知识回答问题root_agent Agent( nameuser_assistant, modelgemini-3-flash-preview, ... tools[], )代码位于 agent.py其中tools[]是刻意为之的这是为了与增强版 Agent 形成公平对比——两者唯一差异就是 swarm 工具。如果基线和增强版同时接入 Web 搜索或记忆工具就无法把效果差异归因于 swarm 本身。同时tools/__init__.py 的注释明确说明该包目前不含自定义工具No custom tools历史上的google_search来自google.adk.tools。版本演进历史来自项目文档原文档还记录了该 Agent 的工具配置演进历程早期版本曾包含google_search、PreloadMemoryTool、LoadMemoryTool以及 Memory Bank 所需的after_agent_callback移除原因为保证评估对等性evaluation parity这些工具被全部移除未来方向当 Google Cloud 支持在函数调用工具中混用google_searchgrounding 时这些能力可能被重新加回。这意味着如果你在评估中看到无法搜索实时数据的应答属于当前设计内的预期行为而非缺陷。七、文件结构速览agents/personalized-agent-swarms/user_assistant_agent/ __init__.py # 导出 root_agent 供 ADK 发现 agent.py # Agent 定义Gemini 3 Flash Preview, tools[] tools/ __init__.py # 自定义工具包当前为空 .env # Google Cloud 配置 requirements.txt # Python 依赖 DEPLOYMENT.md # 部署到 Agent Engine / Gemini Enterprise 的完整指南 test_scenarios.md # 手动测试用例定义5 个多轮场景除 README 中列出的核心文件外仓库还补充了两份关键文档DEPLOYMENT.md云部署指南与 test_scenarios.md手动测试用例下文会逐一展开。八、验证与测试从手动用例到自动化脚本8.1 官方手动测试场景README 提供了 5 个快速验证用例覆盖事实问答、实时信息边界、澄清、多部分问题与多语言能力输入预期行为What is photosynthesis?基于知识给出清晰的事实解释What are the top news stories today?依据训练知识回答并说明无法联网搜索实时数据Tell me about Mercury提出澄清问题指行星还是元素Whats the capital of Japan and how many people live there?完整回答两个部分你好澳大利亚的首都是哪里用中文回答堪培拉 (Canberra)8.2 更完整的多轮场景定义test_scenarios.md 将上述能力扩充为 5 个真实感的多轮对话场景每个场景标注了被测能力与期望行为Follow-up clarification跟进澄清——珠穆朗玛峰多轮追问验证逐轮加深且不重复已答信息Current events当前事件——詹姆斯·韦伯望远镜及其发现验证何时需要 Web 搜索与来源引用Multi-topic conversation话题切换——从松饼食谱切换到区块链解释验证干净利落的话题切换Multilingual多语言——你好请问澳大利亚的首都是哪里与悉尼为什么不是首都验证中文应答与历史背景解释Correction handling纠正处理——从《罗密欧与朱丽叶》剧本纠正到 1996 年电影版导演 Baz Luhrmann验证优雅接受纠正。每个场景还附带统一的评估标准准确性Accuracy、帮助性Helpfulness、来源使用Source usage、清晰度Clarity、简洁性Conciseness、语气Tone、多语言Multilingual。8.3 自动化测试部署后回归仓库提供了可对已部署到 Agent Engine的 Agent 进行自动回归的脚本 test_deployed_agent.py。它通过vertexai.Client.agent_engines.get()连接线上 Agent运行 15 个单轮测试 5 个多轮场景用关键词命中检查判定回答是否包含预期要点并可叠加Gemini 2.5 Pro LLM-as-Judge按 8 个维度accuracy、helpfulness、source_usage、clarity、conciseness、tone、multi_part_handling、multilingual_support打分python test_deployed_agent.py # 仅关键词检查 python test_deployed_agent.py --verbose # 显示完整应答 python test_deployed_agent.py --judge # 关键词检查 LLM 裁判评分 python test_deployed_agent.py --single # 仅单轮测试 python test_deployed_agent.py --multi # 仅多轮测试脚本支持通过环境变量AGENT_ENGINE_ID、GOOGLE_CLOUD_PROJECT、GOOGLE_CLOUD_LOCATION覆盖默认连接参数每次运行都会在evaluation_output/下生成带时间戳的完整 JSON 报告。例如单轮测试中的 Science — photosynthesis explanation 会检查应答是否包含sunlight、carbon dioxide、oxygen、plant等关键词Disambiguation — ambiguous queryTell me about Mercury则要求应答同时出现planet、element、?以验证澄清行为。8.4 在 swarm 项目中的完整验证方式在 personalized-agent-swarms 项目根目录还可以通过项目级的评估入口test_augmented_agent.py同时驱动基线 Agent 与增强 Agent 做头对头比较例如--baseline-only或--augmented-only可单独运行一方并支持--calibrate-embeddings校准嵌入相似度阈值。相关说明详见项目根 README 的 Phase 4 章节。九、部署到生产Agent Engine 与 Gemini Enterprise可选若要将基线 Agent 从本地调试推向云端DEPLOYMENT.md 提供了完整的 7 步流程步骤 1~2gcloud 配置与认证# 创建并激活命名配置 gcloud config configurations create my-config gcloud config set project your-gcp-project-id gcloud config set account your-emailexample.com gcloud config configurations list export CLOUDSDK_ACTIVE_CONFIG_NAMEmy-config # 登录并生成 ADC gcloud auth login gcloud auth application-default login # 启用必要 API gcloud services enable aiplatform.googleapis.com --projectyour-gcp-project-id gcloud services enable cloudresourcemanager.googleapis.com --projectyour-gcp-project-id步骤 3~4安装依赖与更新 .envpip install google-adk[vertexai] python-dotenv编辑.env填入你的项目 ID 与区域同第五节的三变量模板。步骤 5部署到 Agent Engine# 从项目根目录执行 adk deploy agent_engine \ --projectyour-gcp-project-id \ --regionus-central1 \ --display_nameUser Assistant Agent \ --descriptionGeneral-purpose AI assistant \ user_assistant_agent部署成功后 CLI 会输出类似Agent deployed successfully. Resource ID: 1234567890的资源 ID务必保存该 ID更新既有部署时通过--agent_engine_idRESOURCE_ID复用adk deploy agent_engine \ --projectyour-gcp-project-id \ --regionus-central1 \ --agent_engine_idRESOURCE_ID \ user_assistant_agent步骤 6注册到 Gemini Enterprise可选交互式方式推荐agent-starter-pack register-gemini-enterprise非交互方式通过环境变量传参IDprojects/YOUR_PROJECT_NUMBER/locations/global/collections/default_collection/engines/YOUR_APP_ID \ AGENT_ENGINE_IDprojects/YOUR_PROJECT_NUMBER/locations/us-central1/reasoningEngines/YOUR_ENGINE_ID \ GEMINI_DISPLAY_NAMEUser Assistant Agent \ GEMINI_DESCRIPTIONGeneral-purpose AI assistant with web search \ agent-starter-pack register-gemini-enterprise步骤 7验证与常见问题控制台检查确认 Agent 出现在 Gemini Enterprise 控制台对话测试例如提问 What are the latest news headlines?排障速查表问题解决方法部署时Permission denied确认账号具备 Google Cloud User / Editor 角色Agent 未出现在 Gemini Enterprise重新运行register-gemini-enterprise区域不匹配Agent Engine 与 Gemini Enterprise 应用需使用兼容区域ADC 过期重新执行gcloud auth application-default login十、给二次开发者的三条建议想启用 Web 搜索在 agent.py 中向tools列表加入google_search工具并同步更新测试场景中对实时数据的期望行为——但请注意这会破坏与增强版评估的对等性想调整行为风格修改instruction字段中的 Personality / How to Respond / Rules 段落即可无需改动模型或工具配置想复用为子 Agent增强版 Agent 正是通过 ADK 的AgentTool将本 Agent指令副本包装为baseline_assistant子 Agent 来保证无 swarm 路径的行为等价这一模式可直接借鉴。结语User Assistant Agent虽被定位为基线却是整个 Personalized Mini-Agent Swarms 研究管线中不可动摇的对照组它的零工具 纯训练知识 澄清式提问设计决定了后续所有 swarm 增强效果的归因可信度。通过本文的本地运行、配置、测试与部署流程你既可以将其作为 ADK 通用对话助手的入门范例也可以为将来复现或扩展该项目打下坚实基础。【免费下载链接】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),仅供参考