基于 HelloAgents 框架的语言学习对话智能体 Language-Learn-Agent:多 Agent 协作实现沉浸式口语陪练与自动纠错
发布时间:2026/9/12 9:53:44来源:尧图网络
基于 HelloAgents 框架的语言学习对话智能体 Language-Learn-Agent多 Agent 协作实现沉浸式口语陪练与自动纠错【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents本文以开源仓库 Co-creation-projects/zzuu222-LanlearnAgent 中的 Language-Learn-Agent语言学习助手为蓝本完整拆解一个以对话驱动语言学习的智能体项目它如何基于 HelloAgents 框架用 4 个 SimpleAgent 协作实现沉浸式口语陪练、自主联网搜索、语法纠错与对话总结。读完本文你将掌握这类教师 搜索 审核 总结多角色对话 Agent 的提示词设计、调用编排与工程落地方法可直接复用到英语学习、外语陪练、面试模拟等场景。一、项目定位解决学了英语却没机会说的问题在英语学习过程中绝大多数学习者面临同一个困境缺乏真实、低压力的英语交流机会。传统的背单词、刷语法题只能积累输入无法训练开口表达的输出能力。Language-Learn-Agent 的定位正是填补这一空白——它不是一个教知识的 App而是一个用目标语言与你持续对话的 AI 口语老师。该项目的核心设计思路记录在 README 中可概括为三点解决的问题语言学习中缺少使用目标语言进行真实交流的场景特色功能用户可设定偏好的话题方向如科技、日常等与难度等级对话长度不固定可由用户主动触发结束也可由 AI 自行判断何时结束对话结束后自动生成总结覆盖拼写错误、语法错误、较难单词等学习要点适用场景覆盖从中小学生到大学生的语言学习以及从业人员面向专业领域的语言学习。从仓库结构看这是一个结构极简但职责分明的工程Co-creation-projects/zzuu222-LanlearnAgent/ ├── main.py # 程序入口装配 LLM 与 SpeakTeacherAgent ├── requirements.txt # 依赖清单 ├── README.md # 项目说明 └── src/ ├── agents/ │ └── conversation.py # 核心4 个 Agent 的提示词定义与编排逻辑 └── tools/ └── tools.py # 基于 HelloAgents SearchTool 的搜索封装二、架构剖析4 个 SimpleAgent 的角色分工与协作流程Language-Learn-Agent 并非单一 Prompt 的聊天机器人而是一个多角色协作系统。在 conversation.py 中SpeakTeacherAgent在初始化时基于hello_agents框架的SimpleAgent创建了 4 个职责独立的智能体角色名称职责提示词常量口语老师专业口语老师根据场景与难度生成对话回复决定何时结束对话SENTENCE_AGENT_PROMPT信息搜索专家信息搜索专家判断是否需要联网搜索输出结构化决策SEARCH_AGENT_PROMPT对话审核员对话审核员校验待回复语句的语法与拼写正确性CONFIRM_AGENT_PROMPT总结专家总结专家对话结束后总结语法易错点与较难单词SUMMARY_AGENT_PROMPT2.1 口语老师场景、难度、偏好的提示词模板口语老师由SENTENCE_AGENT_PROMPT驱动通过str.format()注入三个动态参数conversation.pyself.prompt SENTENCE_AGENT_PROMPT.format( languagelanguage, difficultydifficulty, preferencepreference)提示词中定义了完整的对话规范这些约束直接决定了产品体验角色设定一位专业的口语老师根据对话场景和相关信息选择合适措辞与用户对话并根据对话轮次和上一轮用户话语决定何时结束对话难度映射入门对应小学难度初级对应初中和高中难度中级对应四级和六级难度高级对应六级以上难度行为约束不要说自己是 AI / 语言模型要像真实老师一样耐心不使用 emoji回复有人情味、不要太机械以对话为目的而不过度解释提及对象教学策略回复可适度多包含当前难度对应的语法和单词作为学习素材当用户输入包含语法错误或单词拼写错误时适当纠正并给出正确表达结束机制当对话轮次接近上限或用户表达结束意愿时回复合适的结束语并在末尾追加标记字符串--thisisend--提示词中同时要求忽略该标记避免被审核员误判为错误。2.2 搜索专家结构化决策 外部信息增强当用户提到时效性话题如RTX 60 系列有什么新品时Agent 需要最新信息。SEARCH_AGENT_PROMPT让搜索专家输出机器可解析的决策回复格式要求: 如果需要搜索回复: [True, 搜索查询语句] 如果不需要搜索回复: [False, ]对应的方法infosearcher()conversation.py执行以下流程将用户输入包装进搜索决策提示词调用搜索专家解析返回字符串以[True开头则提取逗号后的查询语句剥离引号与方括号调用tools.search(search_query)获取搜索结果若调用失败则打印搜索出错请检查搜索配置并返回空串保证对话不被搜索故障中断若返回[False, ]则直接返回空串对话老师仅凭自身知识作答。2.3 对话审核员LLM 作为质量门禁CONFIRM_AGENT_PROMPT定义了审核规则根据用户输入判断待回复语句是否存在语法和单词拼写错误、是否符合用户输入若有问题描述问题并给出修改意见同样以[True, ]/[False, 问题描述和修改意见]的结构化格式返回。在chatter()方法conversation.py中审核机制形成了生成 → 审核 → 修正的闭环reply self.conversation_agent.run(uprompt) # 调用审核员确认回复的正确性 replystate self.confirm_agent.run(user_sentence, reply) if replystate: reply_confirm_prompt f【审核员提示】:{replystate} reply self.conversation_agent.run(reply_confirm_prompt)即口语老师先产出回复审核员复核若发现问题则把审核意见回灌给口语老师要求其修正后再次回复。注意replystate是布尔判定审核员返回以[True开头时reply_confirm()返回空串无需修正否则返回修改意见——这正是if replystate:分支的判定依据。2.4 总结专家对话结束后的学习报告对话终止后summary()将完整的对话历史self.sentences交给总结专家其要求为总结对话中需要注意的语法和易错语法根据当前对话场景下的难度设定总结较难单词conversation.py。整个对话流程在letstalk()conversation.py中编排为循环输入 → 智能回复 → 结束判定 → 自动总结 → 落盘存档的完整闭环我们将在第五节结合运行示例详述。三、难度与偏好体系一套参数控制整个对话体验SpeakTeacherAgent的构造签名是__init__(self, llm, language, difficulty, preference)三个业务参数贯穿 4 个 Agent 的提示词参数可选值来自源码注释与提示词作用language如英语对话使用的目标语言注入口语老师与总结专家的场景设定difficulty入门 / 初级 / 中级 / 高级映射到小学、初中高中、四六级、六级以上四档控制回复中的语法与单词难度preference如科技、日常对话话题方向决定聊天内容的领域难度映射在SENTENCE_AGENT_PROMPT与SUMMARY_AGENT_PROMPT中保持一致保证对话难度与总结难度对齐。入口文件 main.py 给出了典型装配方式from dotenv import load_dotenv from hello_agents import HelloAgentsLLM from src.agents.conversation import SpeakTeacherAgent load_dotenv() llm HelloAgentsLLM() # 传入参数为 语言、难度、偏好 # 难度可选入门、初级、中级、高级 # 偏好可选科技、日常等 talkagent SpeakTeacherAgent(llm, 英语, 中级, 科技) result talkagent.letstalk()四、技术栈与底层框架HelloAgents 的 LLM 客户端与工具体系项目技术栈十分克制requirements.txthello_agents0.2.8 python-dotenv1.2.2HelloAgents 框架提供SimpleAgent单轮 Prompt 驱动的轻量 Agent、HelloAgentsLLMLLM 客户端以及SearchTool/ToolRegistry搜索工具与工具注册表等基础能力python-dotenv负责从.env文件加载 API 密钥等环境变量。4.1 HelloAgentsLLM兼容 OpenAI 接口的客户端仓库 code/chapter4/llm_client.py 中提供了本书定制的HelloAgentsLLM实现其初始化逻辑为优先使用构造参数未提供时从环境变量LLM_MODEL_ID、LLM_API_KEY、LLM_BASE_URL加载超时默认 60 秒LLM_TIMEOUT三个核心配置缺一不可否则抛出ValueError。因此运行前必须在.env中配置模型 ID、API 密钥与兼容 OpenAI 协议的服务地址。4.2 搜索工具Tavily 混合搜索封装src/tools/tools.py 基于hello_agents.tools的SearchTool封装了search(query)函数search_tool SearchTool(backendhybrid) response search_tool.run({ input: query, backend: tavily, mode: structured, fetch_full_page: True, max_results: 5, max_tokens_per_source: 2000, loop_count: 0, })关键参数的含义与效果backendhybrid与参数中的backend: tavily启用混合搜索模式优先使用 Tavily 作为实际搜索后端运行日志中的✅ Tavily 搜索引擎已初始化 混合搜索模式已启用可用后端: tavily即源于此modestructured返回结构化结果便于程序提取标题、链接、内容字段fetch_full_pageTrue抓取完整页面内容适合信息密集的资讯类查询max_results5最多取 5 条来源控制注入上下文的信息量max_tokens_per_source2000限制单来源内容长度防止上下文爆炸。search()将结果拼装为来源 N标题 / 链接 / 内容的文本块返回给对话老师作为参考信息。README 中未安装 google-search-results无法使用 SerpApi 搜索的日志则表明SearchTool的 hybrid 后端支持多后端探测未配置的搜索渠道会被跳过而不影响主流程。五、快速开始与运行效果5.1 环境要求与安装环境要求Python 3.10安装依赖pip install -r requirements.txt配置 API 密钥复制环境变量模板并填入密钥与模型配置cp .env.example .env # 编辑 .env 文件填入你的 API 密钥LLM_API_KEY、LLM_MODEL_ID、LLM_BASE_URL 等5.2 运行项目直接运行主程序即可开启对话python main.py交互方式来自 README 与 conversation.py 的letstalk()循环启动后提示输入语句进入第 1 轮对话若直接回车且处于第 1 轮会以默认开场白Hello! Who are you?启动对话对话轮次不固定由 AI 或用户决定何时结束退出方式在输入语句中写入bye等表达结束的单词口语老师会回复结束语并在末尾附加--thisisend--标记主循环检测到该标记后 break自动进入总结阶段对话与总结会以output/{时间戳} {语言}.md的形式写入文件存档写入失败会打印提示并返回False。5.3 完整对话示例README 中记录了一次真实的科技 中级对话节选第1轮对话 请输入句子进行对话Hi, you got anything new about RTX 60 series? ✅ Tavily 搜索引擎已初始化 ⚠️ 未安装 google-search-results无法使用 SerpApi 搜索 混合搜索模式已启用可用后端: tavily INFO:openai._base_client:Retrying request to /chat/completions in 0.475520 seconds Thats a really interesting topic, and Im glad you brought it up. So, based on the latest rumors,...... ...... 第4轮对话 请输入句子进行对话bye, i have to go. Thanks for the reminder. I see that in your last message, bey should be bye, and i should be capitalized as I. So the correct sentence would be: Bye, I have to go. It was a pleasure chatting with you about the RTX 60 series and the 5070 Ti. Feel free to come back if you have more questions or want to practice English. Take care! 对话总结如下 以下是根据当前对话内容生成的总结包含语法易错点和较难单词对应中级难度即四级到六级水平。 --- ### 【语法和易错点总结】 1. **现在完成时中动词形式错误** - 用户错误I have not think - 正确I have not thoughtthink 的过去分词是 thought - 提示现在完成时have/has 过去分词中动词必须用过去分词形式不能直接用原形。 2. **否定回答的用词错误** ......这个示例完整展示了三个关键机制的真实运行效果主动联网用户提及RTX 60 series这一时效性话题后搜索专家判定需要搜索Tavily 被初始化并拉取最新资讯对话老师据此回答INFO:openai...为 LLM 客户端的重试日志属正常现象原地纠错用户输入bye, i have to go.后口语老师既完成了结束语又顺手纠正了bey→bye与i→I实现了纠错即教学自动总结对话结束后总结专家按难度中级 四六级输出语法易错点清单如现在完成时动词形式与较难单词形成可留存的学习报告。六、设计亮点与可复用经验6.1 用结构化文本协议代替工具调用协议整个系统没有依赖复杂的函数调用机制而是让每个子 Agent 输出[True/False, 内容]这样的机器可解析文本再由主流程用字符串前缀匹配startswith([True)与split(,)解析。这种模式实现成本极低、可读性强适合轻量级多 Agent 编排也便于调试——你可以在日志中直接看到每个 Agent 的原始决策。6.2 独立审核 Agent 提升输出质量通过独立的对话审核员对口语老师的输出做二次校验并把审核意见回灌重写实际上构建了一个生成器 判别器的自我修正循环。由于审核结果同样由 LLM 给出无需任何额外标注数据即可生效。6.3 搜索故障的优雅降级infosearcher()用 try/except 包裹搜索调用失败时返回空串对话老师仍可基于自身知识继续回复——联网搜索是增强项而非硬依赖保证了对话主链路的健壮性。6.4 可扩展的方向从源码结构看该项目已具备进一步扩展的良好基础难度与偏好通过参数注入提示词新增话题方向只需扩展preference取值总结专家与审核专家的提示词均可独立调优--thisisend--标记机制可迁移到任意需要受控结束的对话场景如面试模拟、心理咨询练习。此外仓库 code/chapter7/my_react_agent.py 展示了 HelloAgents 框架中ReActAgent的推理-行动循环实现若需要更复杂的工具调用链可在此基础上升级。七、结语Language-Learn-Agent 是一个麻雀虽小、五脏俱全的多 Agent 应用范本它用 4 个职责单一、提示词精良的SimpleAgent通过结构化文本协议完成了对话生成、时效信息检索、输出质量审核与学习总结四个环节并以--thisisend--标记实现了对话的自然收束。其核心价值不在于模型能力本身而在于编排设计——难度参数化、纠错即教学、总结即复习的产品思路对任何想做以对话驱动的教育类 Agent的开发者都具有直接的参考意义。许可证MIT License。项目由社区作者创作感谢 Datawhale 社区与 Hello-Agents 项目。【免费下载链接】hello-agents 《从零开始构建智能体》——从零开始的智能体原理与实践教程项目地址: https://gitcode.com/GitHub_Trending/he/hello-agents创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网