AI实习生分配:EduChain MCP服务器
此存储库包含AI实习生分配的完整实现。该项目是一个MCP(元控制器协议)服务器,通过 educhain 图书馆生成教育内容的原则。
项目概述
这项任务的主要目标是构建一个可以按需提供教育内容的服务器。服务器公开了几个可以由主机应用程序(如Claude Desktop)访问的工具。所有AI内容生成都在本地执行,不依赖于外部API,确保隐私和离线功能。
______________________________________________________________________
特性
服务器提供三种不同的教育工具,包括奖金要求:
- MCQ发电机 (
/tools/generate-mcqs)
- 就任何给定主题生成指定数量的多项选择题。 - 每个问题包括问题文本、四个选项、正确答案和详细解释。
- 课程计划生成器 (
/tools/generate-lesson-plan)
- 为指定主题创建结构化的课程计划。 - 输出包括标题、学习目标和活动列表。
- 闪卡生成器 (
/tools/generate-flashcards)-(奖金)
- 为给定主题生成一组抽认卡。 - 每张抽认卡都有一个“正面”(一个术语或问题)和一个“背面”(定义或答案)。
______________________________________________________________________
技术实施和理由
开发过程涉及一个重要的架构支点,以确保项目的健壮性和可靠性。
初步方法:直接使用图书馆
最初的计划是使用 educhain 库直接从其GitHub存储库安装。这涉及到进口 QnAEngine 和 ContentEngine 并使用它们来生成内容。
遇到的问题
在开发过程中,我们在 educhain 阻止应用程序正常运行的库,特别是在使用本地LLM时:
- 安装错误:图书馆的
setup.py文件有一个UnicodeDecodeError在Windows系统上,这需要手动修补程序来修复。 - 循环导入错误:该库包含几个循环导入错误(例如。,
qna_models.py试图从自身导入),这导致应用程序在启动时崩溃。 - 模型输出不兼容:该库的代码主要是为OpenAI API输出而设计的。当与a一起使用时
LlamaCpp模型,它失败了,因为本地模型返回了一个纯字符串,而库需要一个具有.content属性。 - JSON格式不可靠:本地模型经常无法生成结构完美的JSON对象,包括导致Pydantic解析器失败的会话文本。
最终架构:一个自给自足的引擎
为了克服这些问题,我们转向了更稳定、自包含的架构。我们没有将图书馆修复到位(图书馆很脆弱),而是 提取核心逻辑并将其放入我们自己的项目结构中.
为什么选择这种方法:
- 可靠性:它消除了对外部库中有缺陷部分的所有依赖。我们的服务器现在控制着自己的引擎。
- 控制:它使我们能够完全控制简化和调整代码。我们重写了
generate_questions函数具有更直接的提示和健壮的逐行解析器,这对局部模型更有效。 - 效率:我们实现了一个服务层(
src/services.py)确保将数GB的AI模型加载到内存中 仅一次 当服务器启动时,使后续的API调用速度极快。
这个最终的架构更加健壮,并展示了一种在处理外部或不稳定库时解决现实世界开发挑战的实用方法。
______________________________________________________________________
设置和使用说明
按照以下步骤在本地运行服务器。
1.克隆存储库
git clone
cd claude_educhain_mcp_server```