构建语言伴侣 AI 代理

发布: (2025年12月12日 GMT+8 13:42)
5 min read
原文: Dev.to

Source: Dev.to

背景

在过去的几周里,我一直在学习 Google 的 ADK(Agent Development Kit),并为 AI 代理课程完成一个顶点项目。由于我的背景是前端(最近也做了一些后端),我想探索 AI 代理的 UI/UX,并尝试专门的界面,让用户在不切换上下文的情况下完成任务。

问题陈述

我学习中文已有好几年,并把 AI 当作语言伴侣使用。一个主要痛点是需要在对话、编辑器和浏览器之间不断搬运信息,以查找视频或其他资源。我希望有一个统一的地方,能够同时容纳对话、解释和交互式测验。

初始设置挑战

  • 开发环境 – Kaggle Notebook 适合学习,但在生产级项目中显得受限。
  • Python 版本差异 – ADK 示例使用的 Python 环境与学习材料略有不同,我不确定该采用哪些工具。于是我引入了 uvicorn 和类型化 Python,最终创建了 Dockerfile 来隔离环境。

在几天的环境搭建后,我把重点从完善环境转向优化提示词和代理架构。

代理架构

子代理

  1. Prompt Inspector – 分析用户的目标。
  2. Meaning Extractor – 判断输入的语义含义。
  3. Vocabulary Retriever – 查找相关词汇。
  4. Pattern Finder – 识别常见语言模式。
  5. Summarizer – 整合前面子代理的输出。

经验教训

  • 文档字符串的细微改动(例如提到 “English language”)会导致代理拒绝非英文输入。
  • 最初的 summarizer 会忽略子代理的结果,有时甚至对自己的摘要再做摘要。通过添加显式条件解决了该行为。

交互流程

  1. 解释短语 – 代理拆解特定句子,提供含义、词汇和模式。
  2. 解释主题 – 代理生成示例短语,然后对每个短语应用相同的子代理,提供更广泛的上下文理解。

记忆与状态

虽然课程笔记本建议使用简易的会话和长期记忆处理,但配置 ADK runner 和会话相当繁琐。原型中我省略了持久记忆,专注于核心功能。

人在回路 & 引导

我探索了一种称为 elicitation(引导)的人工在回路模式。为协调外部调用,我使用 FastMCP 构建了一个 MCP(Multi‑Component Protocol)服务器,它简化了请求处理。官方云服务尚未支持部署,所以我在本地运行服务器,并提供流式 HTTP 接口。

测验生成工作流

  1. ADK 捕获对话上下文并生成 MCP 请求。
  2. 创建测验页面,并返回链接给用户。
  3. 用户完成测验后,可请求代理对其进行评估。
  4. 答案存储在外部数据库中,以实现持久化和共享。
  5. AI 代理对测验进行评分,包括开放式问题——这在没有 LLM 的情况下很难实现。

结果

该原型实现了一个 AI 驱动的语言导师,能够:

  • 通过详细的语言拆解解释短语和主题。
  • 生成在主对话之外运行的交互式测验。
  • 持久化测验结果并提供基于 AI 的评分。

未来工作

  • 将 MCP 服务器部署到云平台,以提升可访问性。
  • 实现稳健的会话和长期记忆处理。
  • 优化 summarizer,使其始终整合子代理输出。
  • 扩展测验系统,支持更丰富的题型和协作共享。

结论

构建此语言伴侣项目凸显了 Google ADK 的强大以及 FastMCP 在简化样板代码方面的便利。虽然仍需进一步工作才能达到生产质量,但该项目展示了一种将对话式 AI 与交互式语言学习工具相结合的可行路径。

Back to Blog

相关文章

阅读更多 »