🧠 AI-LOCAL-MCP 翻译为中文可以是:“🧠 本地人工智能-多控制点(或模块)系统”。不过,这里的“LOCAL-MCP”具体含义可能根据上下文有所不同,“MCP”可能代表“Multi-Control Points”(多控制点)、“Module Control Points”(模块控制点)或其他相关术语,因此翻译时可能需要根据具体情境进行调整
此项目实现了一个模块化的聊天系统,并集成了外部工具,完全部署在Docker容器中。\ 最初的目标是创造 一个简单的聊天机器人来总结信息,但随后进行了扩展,以允许使用本地模型并通过微服务进行额外处理。
______________________________________________________________________
🧩 整体结构
该系统分为多个服务(容器),每个服务都有其特定的功能:
controller/→ 主FastAPI服务接收用户的请求(聊天消息或工具调用)。
- 连接到 PostgreSQL(译文保持原样,因为“PostgreSQL”是一个专有名词,通常不翻译,直接使用其原名) 以保存对话。 - 美国 Redis 作为临时缓存。 - 呼叫 LiteLLM (代理OpenAI兼容)以从本地模型(Gemma或Qwen)获取响应。
mcp-server/→ FastAPI服务器,用于暴露(或“提供”) *“tools”翻译成中文是“工具”* 或聊天的标准实用工具,如:
- 查询 PostgreSQL 数据postgres.query) - 在Qdrant中列出集合qdrant.list_collections) - 发送文件至 Docling(注:这是一个专有名词,通常指的是一款文档处理或翻译软件的名称,直接翻译为“多灵”或保持原名“Docling”均可,具体取决于上下文和品牌偏好。) 用于OCR和文本提取(docling.convert)
litellm/→ 在OpenAI API和本地模型(Ollama)之间的代理。\
不是直接从Python调用推理函数,而是使用 LiteLLM(可译为“轻量级语言模型管理器”或根据具体语境简化为“轻量级LLM”) 作为HTTP代理,它:
- 提供一个与OpenAI相同的API(/v1/chat/completions) - 便于在不修改代码的情况下更换模型 - 它允许添加请求的身份验证和集中控制
👉 这极大地简化了不同组件之间的集成,因为所有服务都可以像调用OpenAI的API一样与模型进行交互。
ollama-gpu/→ 包含本地模型的容器(例如, *Gemma 3 12B IT* o *Qwen 2.5*),由……管理 Ollama(注:Ollama是一个用于本地运行大型语言模型的工具或框架的名称,在中文中通常直接使用其英文原名,不进行翻译。) 用于在GPU上执行。
qdrant-ai/→ 用于语义检索的向量数据库(RAG)。
docling/→ PDF文档提取及OCR服务。
sp-sync/→ 通过嵌入和Docling实现从SharePoint到Qdrant的文档同步器。
openwebui/→ 类ChatGPT的图形界面,连接至controller。
______________________________________________________________________
⚙️ 主要技术
- FastAPI — 用于构建轻量级网络服务(
controller,mcp-server) - PostgreSQL — 结构化存储对话
- Redis — 快速结果缓存
- LiteLLM + Ollama — 语言模型的代理和后端
- Qdrant(注:Qdrant是一个向量数据库,但在此处作为专有名词,直接音译) — 用于语义检索的向量数据库
- Docling(注:Docling是一个文档处理和翻译工具的名称,直接翻译为中文并无特定含义,因此通常保留原名或根据具体语境进行意译,此处为保持原名) — OCR(光学字符识别)和文本处理
- Docker Compose — 所有服务的协调安排
______________________________________________________________________
💬 基本操作
- 用户从Open WebUI发送了一条消息。
- El 控制器 收到它于
/chat,它在Postgres中查看并将其转发到 LiteLLM。 - LiteLLM 将HTTP请求转换为Ollama格式,并从本地模型获取响应。
- El 控制器 保存回答并返回给用户。
- (可选)如果用户执行一个 *工具*,el 控制器 将请求重定向到 MCP服务器,它与Qdrant、Docling或Postgres进行通信。
______________________________________________________________________
🚀 教育目标
主要目的是展示如何创建一个 本地人工智能的分布式架构,结合大型语言模型(LLMs)、数据库和应用程序编程接口(APIs)。\ 尽管最初的需求是一个能够汇总数据的聊天程序,但这种模块化的方法使得系统易于扩展(例如,集成文档搜索、OCR或自动SQL查询功能)。
______________________________________________________________________
👨💻 使用示例
curl -X POST http://localhost:8100/chat \
-H "Content-Type: application/json" \
-d "{\"user_message\": \"Resume los datos del informe trimestral\"}"