96SEO 2026-07-23 18:45 0
至于本篇文章是。从基础开始,亲手开发你的第一个AI大模型! 的最终篇。在第二篇的基础上配合 Gemini 大模型,实现智能 Agent 的工具链集成。

在我上一篇文章中,我们探讨了如何 和 MCP 工具协议。从零建立一个智能航班查询 Agent,实现以下功能:
我们将延续上一篇文章中使用的架构,并在此基础上,引入 ADK进行集成。
Runner 负责在 Agent 生命周期中协调各个组件之间的交互。它采用内存级实现来管理 artifact 、 session 和 memory 服务,从而为 Agent 的运行提供一个轻量级、独立的执行环境。
InMemorySessionService 是 ADK 中 SessionService 接口的一个实现,它将所有会话数据直接存储在应用的内存中。这代表着一旦应用停止或重启,所有会话信息都将丢失。
当使用者与 AI Agent 进行交互时程序会创建一个 Session 对象,用于跟踪整个对话过程。
MCPToolSet 是 ADK 中的一个类,用于让我们的 AI Agent 能够连接外部的 MCP 服务端。这些服务端通常会暴露一些工具,供 Agent 调用以完成特定任务。通过使用 MCPToolSet。Agent 可以实现对这些外部工具的自动发现、调用与管理,这样就能实现无缝集成。
StdioServerParameters 是一个配置类,用于指定 Agent 如何通过标准输入 / 输出流与 MCP 服务端建立连接。当 MCP 服务端作为本地进程并通过控制台进行通信时这个类尤其有用。
💡 MCPToolSet 与 StdioServerParameters 如何协同工作?
将 MCPToolSet 与 StdioServerParameters 结合使用时 ADK Agent 可以实现以下功能:
StdioServerParameters ,定义启动 MCP 服务进程所需的命令及参数,从而初始化连接。 MCPToolSet 连接 MCP 服务端,并获取该服务端所暴露的所有可用工具列表。 MCPToolSet 负责 MCP 服务连接的建立与断开,确保资源得到妥善管理。
# --- Step : 从 MCP 服务端获取工具 --- async def gettoolsasync : """从航班搜索 MCP 服务端获取工具。""" print serverparams = StdioServerParameters },) tools,exitstack = await MCPToolset . fromserver print return tools。exit_stack
如上所述,我们使用的是 LlmAgent,它是应用中的“思考主要”部分。
# --- 接下来:定义 ADK Agent 的创建 --- async def get_agent_async: """创建一个配备了 MCP 工具的 ADK Agent。""" tools,exit_stack = await get_tools_async print} 个工具。") # 创建符合示例结构的 LlmAgent &root_agent = LlmAgent。
name='flight_search_assistant',instruction='帮助使用者根据提示使用可用工具搜索航班。如果未指定返程日期,则将其设为空字符串表示单程。',tools=tools,
)
return root_agent,exit_stack
async def async_main:
# 创建服务
session_service = InMemorySessionService
# 创建一个会话
session = session_service.create_session(
state={},app_name='flight_search_app',user_id='user_flights'
)
# 定义使用者输入的查询语句
query = "Find flights from Atlanta to Las Vegas --"
print
# 将输入格式化为 types.Content 类型
content = types.Content])
# 获取 Agen t和资源释放堆栈
root_agent,exit_stack = await get_agent_async
# 创建 Runner
runner = Runner(
app_name='flight_search_app'。agent=root_agent,session_service=session_service,)
print
events_async = runner.run_async(
session_id=session.id,user_id=session.user_id,new_message=content
)
# 处理事件流
final_content =
async for event in events_async:
print
#始终清理资源
print
await exit_stack.aclose
print
final_content =
async for event in events_async:
print
#始终清理资源
print
await exit_stack.aclose
print
. M CP与 A DK的区别
. 异步架构设计
ValueError : Mis sing key inputs argument!To use G oogle A I AP I,provide arguments . To use G oogle Cloud AP I。provide arguments .
至于✅方法,确保将 AP I Ke y设置为环境变量 GOO GLEAP IKE Y。
经常出现 和?不过,
EXHAUS TED . { 'error': { 'co de ':,'message': 'You exceeded your current quota,please check your plan and billing details . For more information on this error,head to : https://ai.go ogle.dev/gemin i-ap i/docs/rate-limits .','status': 'RES OURCEEXHAUS TED ','detai ls ': },{'@type': 'type.go ogleapis.com/go ogle.rpc.Help'。'links': }]}
An error occurred during execut ion : IN TERNAL . { 'error': { '
co de ':,'
message': '
An internal error has occurred . Please retry or report in https://deve lopers.generat iv eai.go ogle/gu ide/troubles hoot ing ','
status': '
IN TERNAL '}}
至于原因分析,Gem in i AP I 的“免费套餐”是用途,其速率限制较低,容易触发请求限制。使用 Gem in i Flash可有效缓解该问题。
📦完整代码已发布至 👉 arjunpra bh ulal/ mc p-gemin i-search
更多A I大模型开发学习视频籽料,都在这>Github x3C; x3C,
。作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback