前端后端英文(Google ADK 智能体开发体系全解析)

前端后端英文(Google ADK 智能体开发体系全解析)
Google ADK 智能体开发体系全解析

在 AI 从“能对话”向“能做事”跃迁的时代,智能体(Agent)已成为连接大模型与实际业务的核心载体。而 Google 推出的 Agent Development Kit(ADK),以轻量模块化、低代码门槛的优势,为开发者搭建智能体系统提供了高效路径。本文将从价值本质、开发意义、框架选型、入门实操、模式场景到实战串联,完整拆解 Google ADK 智能体开发全体系。

一、为什么需要智能体?从“被动响应”到“主动做事”

传统 AI 工具多为“单次交互型”,如同高级计算器——需用户明确指令,仅能完成单一任务,无法应对复杂、连续的业务场景。而智能体的核心价值,在于实现了从“被动回答”到“主动执行”的能力跃迁,其必要性源于三大核心需求:

  1. 复杂任务的自主闭环能力:智能体具备目标理解、规划决策、工具调用、反馈修正的全链路能力,可独立完成多步骤任务。例如从“整理市场报告”到“分析数据→生成初稿→优化润色”,无需人工逐环节介入,解决传统 AI 碎片化交互的痛点。
  2. 多工具与多模型的协同需求:实际业务中需联动搜索、数据库、办公软件等多种工具,且不同任务适配不同模型(如创意生成用低成本模型,逻辑推理用高精度模型),智能体可作为中枢,实现工具与模型的无缝协同,打破技术孤岛。
  3. 业务流程的智能化升级:智能体可替代重复人工劳动,如自动化客服、智能办公助理、业务数据分析等,将人类从繁琐操作中解放,聚焦高价值决策,推动产业从“信息化”向“智能化”迭代。

简言之,智能体让 AI 真正融入业务流程,成为具备自主行动能力的“数字员工”,而非单纯的信息查询工具。

二、智能体开发对我们为什么重要?核心竞争力的必然选择

掌握智能体开发,对开发者和企业而言均是时代红利下的核心诉求,其重要性体现在两个维度:

1. 对开发者:能力跃迁与职业扩容

大模型应用开发已从“Prompt 工程”进阶到“智能体系统搭建”,掌握智能体开发意味着从“调用模型”升级为“设计智能系统”,能力边界大幅拓展。同时,智能体开发涵盖模型适配、流程编排、工具集成、工程化部署等全栈技能,是未来 AI 开发者的核心竞争力,可适配企业服务、内容创作、决策支持等多领域岗位需求。

2. 对企业:降本增效与业务创新

通过智能体开发,企业可快速构建贴合业务的自动化系统,如智能客服替代人工应答、智能分析助手自动生成业务报告,大幅降低人力成本。更重要的是,智能体可实现传统系统难以企及的灵活协作模式,如多智能体协同完成产品调研、跨部门业务对接,推动业务模式创新,构建差异化竞争优势。

三、为什么选择 ADK?在众多框架中脱颖而出的核心优势

当前智能体开发框架层出不穷(如 LangChain、CrewAI、Autogen),而 Google ADK 凭借独特的设计理念和生态优势,成为开发者的优选,核心原因在于四大维度的平衡与突破:

  1. 模型与生态的双重灵活:ADK 既支持与 Google Cloud Platform(GCP)、Vertex AI 深度集成,享受谷歌原生基础设施的优化;又通过 LiteLLM 适配器实现模型无关性,一套代码可无缝切换 Gemini、GPT、DeepSeek、Claude 等 100 余种主流模型,彻底摆脱供应商锁定,兼顾生态适配与模型多样性。
  2. 低代码门槛与工程化友好:采用面向对象编程(OOP)范式,对 Python 开发者极度直观;支持“函数即工具”,普通 Python 函数仅需完善注释即可作为智能体工具,无需复杂配置;声明式编程模式让开发者聚焦“智能体是谁、能做什么”,底层推理逻辑由框架自动处理,大幅降低开发成本。
  3. 结构化编排能力完备:内置 SequentialAgent、ParallelAgent、LoopAgent 等专用工作流容器,覆盖线性、并行、循环等多场景编排需求,无需额外封装即可构建复杂多智能体系统,相比其他框架更侧重“开箱即用”的实战体验。
  4. 部署与可视化支持完善:提供原生开发者 UI 和 Web UI 用于调试与智能体可视化,支持通过 Streamlit、Gradio 快速构建自定义前端;可通过 ADK API Server 将智能体逻辑封装为标准 HTTP 接口,轻松实现前后端分离部署,适配生产环境需求。

相较于 LangChain 的高灵活性但复杂度高、CrewAI 专注协作但生态薄弱的特点,ADK 更适合追求“开发效率、工程化落地、生态适配”三者平衡的开发者。

四、ADK 如何入门?从环境搭建到首个智能体

ADK 入门遵循“环境准备→核心依赖→案例实操”的路径,全程低代码,新手可快速上手,具体步骤如下:

1. 环境准备:构建独立开发环境

推荐使用 Conda 管理虚拟环境,避免依赖冲突,确保开发稳定性:

复制

# 创建并激活 ADK 专属环境 conda create --name adk pythnotallow=3.10 # 适配 ADK 的 Python 版本 conda activate adk # 激活环境1.2.3.

2. 安装核心依赖:ADK 与模型适配器

安装指定版本的 ADK 和 LiteLLM,确保兼容性,同时验证安装结果:

复制

# 安装 ADK 核心库并验证版本 pip install google-adk==1.21.0 pip show google-adk # 确认版本为 1.21.0 # 安装 LiteLLM 模型适配器 pip install LiteLlm==1.80.10 # 创建第一个 ADK 项目 adk create bs_01_first_agent1.2.3.4.5.6.7.8.9.

3. 配置环境变量:模型 API 密钥

若使用 DeepSeek、OpenAI 等需 API Key 的模型,在项目根目录创建 .env 文件,按规范配置密钥(LiteLLM 会自动读取):

复制

DEEPSEEK_API_KEY=sk-aec0ed22XXXXb6eb5ffd89ff # DeepSeek 密钥 OPENAI_API_KEY=sk-SV1Gms4m5ZDXXXXXXXXXXYFQzXXX # OpenAI 密钥1.2.

4. 实操案例:构建“天气与时间”智能体

通过“模型+指令+工具”三要素构建首个智能体,实现城市天气与时间查询功能,核心代码如下:

复制

import datetime from zoneinfo import ZoneInfo from google.adk.agents import Agent from google.adk.models.lite_llm import LiteLlm # 定义工具函数:查询天气 def get_weather(city: str) -> dict: """查询指定城市的当前天气报告。""" if city.lower() in ["beijing", "北京"]: return {"status": "success", "report": "北京今天天气晴朗,温度25摄氏度。"} else: return {"status": "error", "error_message": f"抱歉,无'{city}'天气信息。"} # 定义工具函数:获取时间 def get_current_time(city: str) -> dict: """获取指定城市的当前时间。""" if city.lower() in ["beijing", "北京"]: tz = ZoneInfo("Asia/Shanghai") now = datetime.datetime.now(tz) return {"status": "success", "report": f"北京当前时间:{now.strftime('%Y年%m月%d日 %H:%M:%S')}"} else: return {"status": "error", "error_message": f"无'{city}'时区信息。"} # 初始化智能体:绑定模型、指令与工具 root_agent = Agent( name="weather_time_agent", model=LiteLlm(model="deepseek/deepseek-chat"), # 连接 DeepSeek 模型 descriptinotallow="回答城市时间和天气问题的智能助手", instructinotallow="使用中文友好回复用户关于城市时间和天气的问题", tools=[get_weather, get_current_time] # 绑定工具函数 ) # 运行智能体 adk run bs_01_first_agent1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.

运行后,智能体可自动识别用户问题(如“北京现在天气怎么样?”),触发对应工具函数,返回结构化结果并整理为自然语言回复,完成从代码到可用智能体的闭环。

五、ADK 核心 Agent 模式:场景适配与应用边界

ADK 提供五种核心 Agent 模式,分别对应不同业务场景,开发者可根据任务复杂度与流程特性选择适配模式,实现精准落地:

1. 单一智能体(Agent):简单任务的快速落地

核心逻辑:通过“模型+指令+工具”三要素构建独立智能体,无复杂编排,框架自动处理工具调用与结果整理。

适用场景:单一维度、低复杂度任务,如天气查询、时间获取、简单数据统计、FAQ 问答等。

优势:开发速度快、代码简洁,无需关注编排逻辑,适合快速原型验证。

前端后端英文(Google ADK 智能体开发体系全解析)

2. 多智能体协同(AgentTool):复杂任务的分工协作

核心逻辑:将子智能体封装为“工具”,由根智能体作为“协调员”,根据任务需求动态调用子智能体,实现职责分离。

适用场景:多维度协同任务,如内容创作(头脑风暴→素材整理→润色)、业务调研(数据采集→分析→总结)、客户服务(咨询应答→问题分类→工单生成)等。

优势:类似微服务架构,降低单一 Prompt 复杂度;支持模型差异化配置(如创意子智能体用低成本模型,总结子智能体用高精度模型),平衡效果与成本。

3. 确定性工作流(SequentialAgent):固定流程的自动化

核心逻辑:线性编排子智能体,按预设顺序依次执行,前序智能体结果自动传入后序智能体,无需根智能体决策下一步。

适用场景:流程固定、无分支的任务,如报告生成(大纲→初稿→编辑→排版)、代码开发(需求解析→架构设计→编码→测试)、公文撰写等。

优势:流程稳定性高,无额外决策 Token 消耗;数据通过会话状态自动传递,实现“接力棒”式流转,减少手动干预。

4. 并行协作(ParallelAgent):多维度分析的效率提升

核心逻辑:多个子智能体同时执行任务,各智能体独立输出结果,最终通过聚合智能体汇总分析,实现“扇出/扇入”架构。

适用场景:多视角独立分析任务,如投资评估(经济→文化→环境→竞争对手分析)、产品调研(需求→技术→市场分析)、风险审计(合规→安全→成本分析)等。

优势:大幅缩短任务耗时(并行执行时间取决于最慢子智能体);确保各视角独立性,避免观点干扰。

5. 循环迭代(LoopAgent):需要持续优化的任务

核心逻辑:按顺序循环执行子智能体(如“执行者→评论家”),直到满足退出条件(最大迭代次数、触发退出函数),实现结果持续优化。

适用场景:需反复打磨的任务,如内容润色(初稿→评价→修改)、方案优化(草案→风控审核→调整)、代码重构(编写→检测→优化)等。

优势:具备自愈与优化能力,通过反馈闭环逼近最优结果;支持设置“护栏”(最大迭代次数),避免无限消耗 Token。

六、实战串联:Idea Factory 项目整合 ADK 全知识点

Idea Factory(创意工厂)是基于 ADK 构建的端到端复合智能体系统,可实现从用户创意输入到业务逻辑可视化的全流程自动化。该项目整合了前文所有知识点,完美诠释 ADK 多模式编排与工程化落地能力。以下结合核心代码(`agent.py` 后端逻辑、`app.py` 前端交互),拆解其实现逻辑与知识点映射。

可以先看看效果, 如下图所示, 可以通过三个步骤引入三个专家, 产生 MVP 功能清单和业务流程图。

1. 项目核心代码解析:后端与前端协同设计

项目采用前后端分离架构,后端通过 ADK 封装智能体编排逻辑,前端通过 Streamlit 提供交互界面,二者通过 ADK API Server 通信,形成完整闭环。

1.1 后端逻辑(agent.py):ADK 多模式编排核心

后端核心是通过 ADK 组合 ParallelAgent、SequentialAgent 实现“并行分析→串行汇总→动态适配”流程,以下提炼关键代码片段,拆解核心逻辑与知识点映射:

核心片段1:模型配置与环境变量(复用模型适配知识点)

通过 LiteLLM 配置模型,从环境变量读取密钥,兼顾安全性与模型无关性,是 ADK 连接外部模型的标准方式。

复制

import os from dotenv import load_dotenv from google.adk.models.lite_llm import LiteLlm load_dotenv() # 加载.env文件,对应前文“环境变量配置”知识点 # 模型配置:通过LiteLLM连接DeepSeek,支持无缝切换其他模型 model_config = LiteLlm( model="deepseek/deepseek-chat",  api_key=os.getenv("DEEPSEEK_API_KEY") # 安全读取密钥 )1.2.3.4.5.6.7.8.9.10.

核心片段2:并行分析容器(串联ParallelAgent知识点)

创建多专家智能体,通过 ParallelAgent 实现并行执行,大幅缩短多维度分析耗时,结果通过 output_key 存入会话状态。

复制

from google.adk.agents import Agent, ParallelAgent # 需求专家:聚焦用户痛点分析,结果标识为user_analysis user_expert = Agent( name="UserExpert", model=model_config, instructinotallow="分析产品创意的目标用户、核心痛点、需求优先级(Markdown列表)", output_key="user_analysis" # 定义输出标识,供后续智能体引用 ) # 技术专家、市场专家(逻辑同上,略去重复代码) tech_expert = Agent(name="TechExpert", model=model_config, instructinotallow="...", output_key="tech_analysis") market_expert = Agent(name="MarketExpert", model=model_config, instructinotallow="...", output_key="market_analysis") # 并行容器:同时启动选中的专家智能体,实现“扇出”分析 parallel_analysis = ParallelAgent( name="ParallelAnalysis", sub_agents=[user_expert, tech_expert, market_expert] # 并行执行的子智能体列表 )1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.

核心片段3:串行汇总与动态路由(串联SequentialAgent+动态编排)

通过 SequentialAgent 按顺序执行汇总、风控(可选)、建模流程,通过条件判断插入风控智能体,实现流程柔性适配。

复制

from google.adk.agents import SequentialAgent # 功能提炼:汇总并行结果生成MVP清单,引用前文output_key数据 feature_agent = Agent( name="FeatureManager", model=model_config, instructinotallow="基于{user_analysis}、{tech_analysis}、{market_analysis}生成MVP功能清单(Markdown表格)", output_key="feature_list" ) # 逻辑建模:将功能清单转化为Mermaid流程图 logic_agent = Agent( name="LogicDesigner", model=model_config, instructinotallow="基于{feature_list}生成Mermaid graph TD流程图(纯文本代码)", output_key="mermaid_code" ) # 串行流程构建:按顺序执行并行分析、功能提炼、逻辑建模 sub_agents = [parallel_analysis, feature_agent, logic_agent] # 动态路由:启用风控模式时插入风险评估智能体 if detailed_mode: risk_agent = Agent(name="RiskAgent", model=model_config, instructinotallow="...", output_key="risk_analysis") sub_agents.insert(2, risk_agent) # 插入串行流程指定位置 # 根容器:串联所有子流程,形成完整系统 root_system = SequentialAgent(name="ProductAnalystSystem", sub_agents=sub_agents)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.

后端核心知识点总结:

  • 状态管理:通过 output_key 定义输出标识,后续智能体用模板语法直接引用,实现会话状态自动传递。
  • 复合编排:嵌套 ParallelAgent(并行扇出)与 SequentialAgent(串行收敛),兼顾分析效率与流程完整性。
  • 动态适配:通过 detailed_mode 条件判断插入智能体,实现流程柔性调整,满足不同场景需求。

后端代码聚焦智能体系统构建,整合了 ParallelAgent、SequentialAgent、动态路由等核心知识点,实现“并行分析→串行汇总→条件适配”的复合流程。核心代码及解析如下:

复制

import os from dotenv import load_dotenv from google.adk.agents import Agent, ParallelAgent, SequentialAgent from google.adk.models.lite_llm import LiteLlm load_dotenv() # 加载.env文件中的API密钥,对应前文“环境变量配置”知识点 def create_product_analyst(selected_agents=None, detailed_mode=False): """创建产品分析系统,支持动态选择专家与风控模式""" if selected_agents is None: selected_agents = ["UserExpert", "TechExpert", "MarketExpert"] # 模型配置:复用“模型无关性”知识点,通过LiteLLM连接DeepSeek model_config = LiteLlm( model="deepseek/deepseek-chat",  api_key=os.getenv("DEEPSEEK_API_KEY") # 从环境变量读取密钥,安全便捷 ) # --- 并行阶段:多专家同时分析(串联ParallelAgent知识点)--- # 需求专家:聚焦用户痛点,输出结果存入user_analysis(output_key状态管理) user_expert = Agent( name="UserExpert", model=model_config, instructinotallow="""你是一名产品经理。请分析用户提出的产品创意的用户痛点。 请用 Markdown 列表格式输出,包括: 1. 目标用户群体 2. 核心痛点分析 3. 用户需求优先级""", output_key="user_analysis" # 定义输出标识,供后续智能体引用 ) # 技术专家:评估技术可行性,输出结果存入tech_analysis tech_expert = Agent( name="TechExpert", model=model_config, instructinotallow="""你是一名CTO。请为用户提出的产品创意提供技术架构建议。 请用 Markdown 格式输出,包括: 1. 技术选型建议 2. 系统架构设计 3. 技术难点分析 4. 开发成本估算""", output_key="tech_analysis" ) # 市场专家:分析商业模式,输出结果存入market_analysis market_expert = Agent( name="MarketExpert", model=model_config, instructinotallow="""你是一名商业分析师。请分析用户提出的产品创意的商业模式。 请用 Markdown 格式输出,包括: 1. 目标市场分析 2. 竞品分析 3. 盈利模式建议 4. 市场推广策略""", output_key="market_analysis" ) # 过滤激活的专家智能体,支持动态选择 all_agents = {"UserExpert": user_expert, "TechExpert": tech_expert, "MarketExpert": market_expert} active_agents = [all_agents[name] for name in selected_agents if name in all_agents] # 并行容器:同时启动选中的专家,大幅缩短分析耗时 parallel_analysis = ParallelAgent( name="ParallelAnalysis", sub_agents=active_agents ) # --- 串行阶段:汇总与建模(串联SequentialAgent知识点)--- # 功能提炼:汇总并行分析结果,生成MVP功能清单 feature_agent = Agent( name="FeatureManager", model=model_config, instructinotallow="""基于以下分析报告: 用户分析:{user_analysis} 技术建议:{tech_analysis} 市场分析:{market_analysis} 请整理出该产品的 MVP 功能列表,用 Markdown 表格格式输出。 表格应包含:功能名称、优先级、实现难度、预期效果。""", output_key="feature_list" # 结果供后续流程图生成使用 ) # 逻辑建模:将功能清单转化为Mermaid流程图 logic_agent = Agent( name="LogicDesigner", model=model_config, instructinotallow="""请根据以下功能列表:{feature_list} 生成一个 Mermaid graph TD 格式的业务逻辑流程图。 要求: 1. 不要包含 ```mermaid 标签,直接输出纯文本代码 2. 流程清晰完整,包含主要业务节点和流转关系 3. 语法有效,不使用JSON格式""", output_key="mermaid_code" ) # 构建核心流程:串行执行并行分析、功能提炼、逻辑建模 sub_agents = [parallel_analysis, feature_agent, logic_agent]  # 动态路由:启用风控模式时插入风险评估智能体(串联动态编排知识点) if detailed_mode: risk_agent = Agent( name="RiskAgent", model=model_config, instructinotallow="""基于用户分析、技术建议、市场分析和功能列表, 进行全面产品风险评估,用 Markdown 格式输出: 1. 技术风险 2. 市场风险 3. 运营风险 4. 法律风险 5. 缓解建议""", output_key="risk_analysis" ) sub_agents.insert(2, risk_agent) # 插入串行流程的指定位置 # 根容器:串联所有子流程,形成完整系统 root_system = SequentialAgent( name="ProductAnalystSystem", sub_agents=sub_agents # 按列表顺序执行,无需额外决策逻辑 ) return root_system # 给ADK API Server提供入口,供前端调用 root_agent = create_product_analyst()1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102.103.104.105.106.107.108.109.110.111.112.113.114.115.116.117.118.119.

后端代码核心知识点映射:

  • 状态管理:通过 `output_key` 定义各智能体输出标识,后续智能体用模板语法(如 `{user_analysis}`)直接引用,实现会话状态自动传递。
  • 复合编排:嵌套 ParallelAgent(并行分析)与 SequentialAgent(串行汇总),构建“扇出/扇入”架构,兼顾效率与流程完整性。
  • 动态适配:通过 `detailed_mode` 条件判断插入 RiskAgent,实现流程柔性调整,呼应前文“动态路由”技巧。

1.2 前端交互(app.py):Streamlit 可视化与 API 调用

前端核心是通过 Streamlit 构建交互界面,调用 ADK API Server 与后端联动,以下提炼核心代码片段,拆解交互逻辑:

核心片段1:会话创建与API调用(串联ADK API部署知识点)

生成唯一会话ID,向后端注入初始参数(创意、专家、风控模式),调用 ADK 接口触发智能体执行,实现前后端联动。

复制

import streamlit as st import requests import time # 前端参数获取(侧边栏输入,略去UI渲染冗余代码) idea = st.text_area("输入产品创意") selected_agents = st.multiselect("选择专家") detailed_mode = st.checkbox("启用风控") if st.button("开始分析") and idea: # 专家名称映射(前端中文→后端英文标识) expert_mapping = {"需求专家": "UserExpert", "技术专家": "TechExpert", "市场专家": "MarketExpert"} backend_agents = [expert_mapping[name] for name in selected_agents]  # 生成唯一会话ID,确保多用户并发隔离 session_id = f"s_{int(time.time())}" BASE_URL = "http://127.0.0.1:8000" # ADK API Server地址 app_name = "ad_03_product_adk" # 后端项目名 # 1. 创建会话:注入初始状态 session_payload = {"state": {"input_query": idea, "selected_agents": backend_agents, "detailed_mode": detailed_mode}} requests.post(f"{BASE_URL}/apps/{app_name}/users/teacher_cui/sessions/{session_id}", jsnotallow=session_payload)  # 2. 触发智能体执行:调用ADK /run接口 run_payload = { "sessionId": session_id, "appName": app_name, "userId": "teacher_cui", "newMessage": {"role": "user", "parts": [{"text": idea}]} } response = requests.post(f"{BASE_URL}/run", jsnotallow=run_payload, timeout=180)1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.

核心片段2:结果解析与可视化(串联ADK可视化知识点)

解析后端返回的状态数据,清洁 Mermaid 代码并渲染流程图,通过折叠面板展示详细报告,优化用户体验。

复制

# 解析后端返回数据,合并增量结果 final_state = {} for event in response.json(): state_delta = event.get("actions", {}).get("stateDelta", {}) if state_delta: final_state.update(state_delta) # 展示MVP功能清单 st.subheader(" MVP 功能清单") st.markdown(final_state.get("feature_list", "未生成功能清单")) # 渲染Mermaid业务逻辑图(核心可视化环节) m_code = final_state.get("mermaid_code", "") if m_code: cleaned_m_code = m_code.replace("```mermaid", "").replace("```", "").strip() if "graph " not in cleaned_m_code: cleaned_m_code = "graph TD\n" + cleaned_m_code # 嵌入HTML渲染流程图,适配Streamlit展示 html_content = f""" [xss_clean][xss_clean] 
{cleaned_m_code}
[xss_clean]mermaid.initialize({{startOnLoad:true}});[xss_clean] """ st.components.v1.html(html_content, height=800) # 折叠面板展示详细报告(略去冗余UI代码) with st.expander(" 查看详细分析报告"): tabs = ["用户报告", "技术方案", "市场分析"] if detailed_mode: tabs.append("风控分析") # 标签页渲染对应报告内容1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.

前端核心知识点总结:

  • 会话隔离:通过时间戳生成唯一 session_id,避免多用户并发时状态干扰,契合 ADK Session 特性。
  • API 联动:调用 ADK API Server 的 /sessions(创建会话)和/run(触发执行)接口,实现前后端数据交互。
  • 可视化适配:清洁 Mermaid 代码并通过 HTML 渲染,实现“智能体生成代码→前端可视化”闭环,复用 ADK 可视化能力。

前端代码负责用户交互、后端 API 调用与结果可视化,将 ADK 智能体系统封装为易用界面,核心代码及解析如下:

复制

import streamlit as st import requests import time st.set_page_config(page_title="ADK 专家系统", layout="wide") st.title(" 产品分析专家 - API 模式") # 侧边栏:用户输入与参数配置 with st.sidebar: app_name = "ad_03_product_adk" # 与后端项目文件夹名一致 st.subheader("第一步:输入创意") idea = st.text_area(" ", height=150, label_visibility="collapsed")  st.divider() st.subheader("第二步:选择专家") selected_agents = st.multiselect( " ", optinotallow=["需求专家", "技术专家", "市场专家"], default=["需求专家", "技术专家", "市场专家"], label_visibility="collapsed" )  st.divider() st.subheader("第三步:是否风控") detailed_mode = st.checkbox("启用风控专家分析", value=False, label_visibility="collapsed")  start_btn = st.button("开始分析", type="primary") if start_btn and idea: with st.spinner(" 正在启动专家团..."): # 专家名称映射:前端中文→后端英文标识 expert_mapping = {"需求专家": "UserExpert", "技术专家": "TechExpert", "市场专家": "MarketExpert"} backend_agents = [expert_mapping[name] for name in selected_agents]  # 后端服务配置 BASE_URL = "http://127.0.0.1:8000" user_id = "teacher_cui" session_id = f"s_{int(time.time())}" # 时间戳生成唯一会话ID,确保会话隔离 try: # 1. 创建会话:向后端注入初始状态(创意、专家、风控模式) session_url = f"{BASE_URL}/apps/{app_name}/users/{user_id}/sessions/{session_id}" session_payload = { "state": { "input_query": idea, "selected_agents": backend_agents, "detailed_mode": detailed_mode } } requests.post(session_url, jsnotallow=session_payload, timeout=10)  # 2. 调用后端API,触发智能体执行 run_url = f"{BASE_URL}/run" run_payload = { "sessionId": session_id, "appName": app_name, "userId": user_id, "newMessage": {"role": "user", "parts": [{"text": idea}]} } response = requests.post(run_url, jsnotallow=run_payload, timeout=180) response.raise_for_status() events = response.json()  # 3. 解析后端返回的状态数据,合并增量结果 final_state = {} for event in events: state_delta = event.get("actions", {}).get("stateDelta", {}) if state_delta: final_state.update(state_delta)  # 4. 可视化渲染结果 st.success("✅ 分析完成!") # 展示MVP功能清单 st.subheader(" MVP 功能清单") st.markdown(final_state.get("feature_list", "未生成功能清单"))  # 渲染Mermaid业务逻辑图 st.subheader(" 业务逻辑图") m_code = final_state.get("mermaid_code", "") if m_code: cleaned_m_code = m_code.replace("```mermaid", "").replace("```", "").strip() if "graph " not in cleaned_m_code: cleaned_m_code = "graph TD\n" + cleaned_m_code # 用HTML渲染Mermaid图表,实现可视化 html_content = f""" [xss_clean][xss_clean] 
{cleaned_m_code}
[xss_clean]mermaid.initialize({{startOnLoad:true, theme:'default'}});[xss_clean] """ st.components.v1.html(html_content, height=800, scrolling=True) # 展开显示详细分析报告 with st.expander(" 查看详细分析报告"): tabs = ["用户报告", "技术方案", "市场分析"] if detailed_mode: tabs.append("风控分析") tabs = st.tabs(tabs) with tabs[0]: st.markdown(final_state.get("user_analysis", "未生成")) with tabs[1]: st.markdown(final_state.get("tech_analysis", "未生成")) with tabs[2]: st.markdown(final_state.get("market_analysis", "未生成")) if detailed_mode: with tabs[3]: st.markdown(final_state.get("risk_analysis", "未生成")) except Exception as e: st.error(f"❌ 调用失败: {str(e)}")1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102.103.104.

前端代码核心知识点映射:

  • 会话隔离:通过时间戳生成唯一 `session_id`,确保多用户并发时状态互不干扰,呼应 ADK Session 隔离特性。
  • API 联动:通过 ADK API Server 的 `/sessions` 和 `/run` 路由,实现前端与后端智能体系统的通信,完成状态注入与任务触发。
  • 可视化适配:针对 Mermaid 代码做清洁与渲染处理,实现“智能体生成代码→前端可视化”的闭环,复用 ADK 可视化部署知识点。

2. 项目目标与架构设计

核心目标:用户输入产品创意(如“智能办公助理”),系统自动完成多维度分析、功能提炼、逻辑建模,最终生成可视化业务流程图。

架构逻辑:采用“并行发散→串行收敛→动态适配”的复合编排模式,前后端分离部署,具体分为三个阶段:

阶段一:并行发散分析(串联 ParallelAgent 知识点)

通过 ParallelAgent 同时启动需求、技术、市场三大专家智能体,并行完成多维度分析,结果分别存入会话状态(对应后端output_key 配置)。各专家独立工作,既保证分析视角客观性,又大幅缩短整体耗时。

阶段二:串行收敛建模(串联 SequentialAgent 知识点)

ParallelAgent 输出结果后,由 SequentialAgent 按固定顺序执行后续流程:先通过 FeatureManager 汇总分析结果,提炼 MVP 功能清单;若启用风控模式则插入 RiskAgent 做风险评估;最后由 LogicDesigner 生成业务逻辑流程图,实现从“分析报告”到“结构化成果”的跃迁。

阶段三:动态路由与前后端分离(串联动态编排、API 部署知识点)

通过 detailed_mode 开关实现动态路由,按需插入风控智能体,适配“快速分析”与“全面评估”两种场景。后端通过 ADK API Server 将智能体逻辑封装为 HTTP 接口,前端基于 Streamlit 构建交互界面,用户操作通过 API 传递至后端,执行结果实时回显并可视化,形成完整业务闭环。

3. 核心知识点串联逻辑

Idea Factory 项目将前文 ADK 核心知识点深度串联,形成完整技术闭环,各环节对应关系如下:

  • 工具集成与模型适配:复用“函数即工具”“模型无关性”知识点,通过 LiteLLM 连接 DeepSeek 模型,专家智能体按需调用分析能力。
  • 流程编排:融合 ParallelAgent(并行分析)、SequentialAgent(串行汇总)与动态路由,覆盖复杂场景的编排需求,呼应前文 Agent 模式知识点。
  • 状态管理:通过 output_key 定义各智能体输出标识,实现会话状态自动传递,无需手动衔接数据,简化开发复杂度。
  • 部署与可视化:后端通过 ADK API Server 封装接口,前端通过 Streamlit 实现交互与可视化,落地“工程化部署”与“可视化支持”知识点。

4. 项目启动与效果验证

复制

# 安装前端依赖 pip install streamlit streamlit-mermaid # 启动 ADK API Server 后端(指定项目目录与端口) adk api_server ad_03_product_adk --port 8000 # 启动 Streamlit 前端(进入项目目录) cd ad_03_product_adk python -m streamlit run app.py1.2.3.4.5.6.7.8.9.

启动后,用户在前端输入创意并选择参数,系统会动态展示专家分析进度,最终输出 MVP 功能清单、可视化业务流程图及详细分析报告,实现“创意输入→智能分析→结构化输出”的全自动化,完整验证 ADK 从开发到落地的全流程能力。

核心目标:用户输入产品创意(如“智能办公助理”),系统自动完成多维度分析、功能提炼、逻辑建模,最终生成可视化业务流程图。

架构逻辑:采用“并行发散→串行收敛→动态适配”的复合编排模式,前后端分离部署,具体分为三个阶段:

阶段一:并行发散分析(串联 ParallelAgent 知识点)

通过 ParallelAgent 同时启动三个子智能体,并行完成多维度分析,结果存入会话状态:

  • 需求专家(UserExpert):分析用户痛点、核心需求,输出 user_analysis;
  • 技术专家(TechExpert):评估技术可行性、核心架构,输出 tech_analysis;
  • 商业专家(MarketExpert):分析市场前景、竞争对手,输出 market_analysis。

此阶段复用“并行协作”模式,大幅缩短分析耗时,确保各视角独立客观。

阶段二:串行收敛建模(串联 SequentialAgent 知识点)

通过 SequentialAgent 按顺序执行后续流程,实现数据从“分析报告”到“结构化成果”的跃迁:

  • FeatureManager:汇总并行分析结果,提取 MVP 功能清单(表格形式),输出 feature_list;
  • LogicDesigner:将功能清单转化为 Mermaid 流程图代码,输出 mermaid_code,实现从文字到图形的质变。

此阶段复用“确定性工作流”模式,通过会话状态自动传递数据,无需手动衔接。

阶段三:动态路由与前后端分离(串联动态编排、API 部署知识点)

  • 动态路由:新增 detailed_mode 开关,若为 True,在并行分析后插入 RiskAgent(风险评估),否则跳过,复用“条件编排”技巧;
  • 后端部署:通过 ADK API Server 将智能体逻辑封装为 HTTP 接口(如 8000 端口),支持外部调用;
  • 前端交互:基于 Streamlit 构建界面,收集用户创意,调用后端接口,实时渲染分析结果与 Mermaid 流程图,复用“可视化部署”知识点。

3. 核心知识点串联逻辑

Idea Factory 项目中,各环节均对应 ADK 核心知识点,形成完整闭环:

  • 工具集成:需求/技术/商业专家的工具函数定义,复用“函数即工具”知识点;
  • 模型适配:不同专家智能体配置差异化模型(创意用 DeepSeek,分析用 Claude),复用“模型无关性”知识点;
  • 状态管理:各智能体结果通过 output_key 存入会话状态,复用“会话状态共享”知识点;
  • 部署落地:API 封装与 Streamlit 前端搭建,复用“ADK 部署与可视化”知识点。

4. 项目启动与效果验证

复制

# 安装前端依赖 pip install streamlit streamlit-mermaid # 启动 ADK API Server 后端(指定项目目录与端口) adk api_server ad_03_product_adk --port 8000 # 启动 Streamlit 前端(进入项目目录) cd ad_03_product_adk python -m streamlit run app.py1.2.3.4.5.6.7.8.9.

启动后,用户在前端输入创意,系统可动态展示各专家分析进度,最终输出 MVP 功能清单与可视化业务流程图,实现“创意输入→智能分析→结构化输出”的全自动化,完美落地 ADK 核心能力。

总结:ADK 智能体开发的核心价值与未来方向

Google ADK 以“价值为导向、工程化为核心”,通过模型无关性、低代码工具集成、灵活编排容器三大优势,降低了智能体开发门槛,让开发者可快速从“入门案例”迭代到“生产级系统”。从单一智能体到复合编排,从本地调试到云端部署,ADK 构建了完整的开发体系,适配从简单工具到复杂系统的全场景需求。

未来,随着大模型技术与智能体生态的迭代,ADK 将进一步强化生态集成与低代码能力,推动智能体在企业服务、内容创作、决策支持等领域规模化落地。对于开发者而言,掌握 ADK 不仅是掌握一款框架,更是掌握智能体系统的设计思维与工程化落地能力,在 AI 时代构建核心竞争力。

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有