使用说明
🤖 基于人工智能的多模态MCP聊天机器人
一个能够理解和互动的高级AI聊天机器人 文件;文书, 图像,以及 视频 使用 Jac的对象空间编程(OSP) 并且 模型上下文协议(MCP)。
🚀 特点
- 多模态人工智能能力 — 与PDF、文本文件、图片和视频进行聊天
- 智能文档搜索 — 由(某技术/系统)驱动的基于向量的语义搜索 ChromaDB(注:ChromaDB可能是一个特定数据库或系统的名称,根据上下文,这里直接音译,实际翻译可能需根据具体含义调整)
- 网络搜索集成 — 使用实时信息检索 Serper API
- 视觉人工智能 — 理解并讨论图像和视频 OpenAI的视觉模型
- 智能查询路由 — 使用自动分类和路由功能 均值类型化编程(MTP)
- 模块化架构 — 清晰分离关注点,实现可重用性 MCP工具
- 用户友好的界面 — 用……构建 Streamlit(注:这是一个专有名词,通常不进行翻译,直接保留原样,表示一个用于创建数据应用的开源框架) 便于互动
使用的工具/技术
- Jac 语言 — 主要应用逻辑和对象空间编程
- Jac Cloud(人名,可译为“雅克·克劳德”或根据具体语境保留原名) — 后端服务器基础设施
- Streamlit(流式处理框架/应用) — 网页界面
- ChromaDB(可译为“色度数据库”或根据具体上下文意译为更贴切的名称,如“色彩数据库”等,但“ChromaDB”本身作为专有名词,直接使用原名在技术或专业语境下也是可接受的) — 用于文档搜索的向量数据库
- OpenAI GPT — 人工智能聊天和视觉能力
- Serper API — 实时网页搜索
- LangChain — 文档处理与人工智能协同
🧱 架构概述
该应用程序使用 Jac的对象空间编程(OSP) 包含以下组成部分的范式:
- 节点 — 代表系统的不同部分(路由器、聊天类型、会话)
- 步行者(或:漫步者) — 在节点网络中移动,携带信息并执行逻辑
- MTP(Mean Typed Programming)可翻译为“平均类型化编程”或根据上下文简化为“类型化编程(均值导向)”,但具体翻译可能需根据该术语在特定领域或语境中的含义进行调整。如果这是一个特定技术或概念的名称,建议查找官方或权威的中文译名。在缺乏具体上下文的情况下,“平均类型化编程”是一个较为通用的翻译 — 基于人工智能的自动分类和路由
🗂️ 项目结构
.
├── client.jac # Web interface for chat and file uploads
├── server.jac # Main application using Object Spatial Programming
├── server.impl.jac # Implementation details and function bodies
├── mcp_server.jac # Tool server for document and web search
├── mcp_client.jac # Interface to communicate with tools
└── tools.jac # Document processing and search logic
⚙️ 前提条件
- Python 3.12 或更新版本
- OpenAI API密钥
- Serper API密钥 (提供免费层级)
🧩 安装
1️⃣ 克隆仓库
git clone <repository-url>
cd jac-mcp-chatbot
2️⃣ 安装依赖项
pip install jaclang jac-cloud jac-streamlit byllm langchain langchain-community langchain-openai langchain-chroma chromadb openai pypdf tiktoken requests mcp[cli] anyio
3️⃣ 设置环境变量
export OPENAI_API_KEY=<your-openai-key>
export SERPER_API_KEY=<your-serper-key>
🏃 运行应用程序
该应用程序需要 三个终端窗口 同时运行:
航站楼1:启动MCP工具服务器
jac run mcp_server.jac
2号航站楼:启动主应用程序
jac serve server.jac
第三航站楼:启动网页界面
jac streamlit client.jac
一旦所有三项服务都运行起来,请打开您的浏览器并导航至:
http://localhost:8501
💡 使用方法
第一步:注册或登录
通过网页界面创建账户或登录。
步骤2:上传文件
上传 PDFs 翻译成中文是“PDF文件”, 文本文件, 图像,或 视频 给聊天机器人。
步骤3:开始聊天
对您上传的内容提出问题或进行一般性咨询。
步骤4:智能路由
该系统会自动将您的问题路由到相应处理
- 📄(文件/纸张的象征符号,可直接翻译为“文件”或根据上下文译为“纸张”等) 与文档相关的问题 → RAG(检索增强生成)系统
- 🌍(地球) 常见问题 → 网络搜索
- 🖼️(图片) 图像问题 → 视觉人工智能
- 🎥 视频问题 → 视频内容分析
🔗 API 端点
| 终端(或端点) | 描述 |
|---|---|
POST /user/register |
创建一个新用户账户 |
POST /user/login 登录并获取访问令牌 |
|
POST /walker/upload_file |
上传文件(需要认证) |
POST /walker/interact |
与AI聊天(需要认证) |
完整API文档可在以下地址获取:
⚙️ 工作原理
- 文档处理 — 上传的文档被处理并存储为向量嵌入 ChromaDB(可译为“色彩数据库”或根据具体上下文保留为专有名词)。
- 查询分类 — 用户查询会自动进行分类,使用 平均打字编程(MTP)。
- 智能路由 — 问题被路由到相应的处理程序(RAG、网络搜索或视觉AI)。
- 情境感知响应 — 这个聊天机器人会根据您的数据或实时来源提供基于上下文的答案。
- 多模态理解 — 图像和视频通过 OpenAI的视觉模型。
🔧 扩展聊天机器人功能
模块化架构使其易于扩展:
- 新的文件类型 — 添加对音频、电子表格或演示文稿的支持
- 附加工具 — 集成天气API、数据库或自定义业务逻辑
- 增强型人工智能模型 — 为特定任务使用不同的大型语言模型(LLM)
- 高级搜索 — 实施结合关键词搜索和语义搜索的混合搜索
- 自定义聊天节点 — 为特定领域的疑问创建专门的处理程序
🛠️ 故障排除
依赖问题
确保所有包都已安装且与您的Python版本兼容:
pip install --upgrade pip
服务器启动问题
始终先启动MCP服务器(终端1),再启动主服务器(终端2)
文件上传问题
- 检查服务器日志中的错误
- 验证文件类型是否受支持(PDF、TXT、PNG、JPG、MP4)
- 确保文件未损坏
API密钥错误
验证您的环境变量是否设置正确:
echo $OPENAI_API_KEY
echo $SERPER_API_KEY
端口冲突
确保端口8000、8501以及MCP服务器端口可用
📚 关键概念
对象空间编程(OSP)
将你的应用程序组织成一个由相互连接的节点组成的网络,这些节点由遍历它们的“行者”(或“导航者”)来连接,从而使复杂的逻辑变得直观且易于维护。
均值类型化编程(MTP)
无需编写复杂的基于规则的逻辑,即可让AI自动对数据进行分类和路由。只需定义类型,系统即可自动完成分类。
模型上下文协议(MCP)
构建模块化、可重用的人工智能工具,以便在不同应用程序之间共享,从而促进代码的重用和可维护性。
🤝 贡献(或“参与贡献”)
欢迎贡献!请随时提交拉取请求。
🙏 致谢
使用(以下材料/技术)建造 Jac 语言 并由OpenAI的GPT模型提供支持。
💬 支持
对于问题和疑问:
- 在GitHub上打开一个议题(或问题)
- 检查一下 Jac 文档
- 参观 Jaseci Labs 代码库