项目简介
'langchain-fastapi-production' 是一个功能丰富的FastAPI应用模板,旨在帮助开发者快速构建生产级的LLM应用。它深度集成了LangChain、LangGraph和LangSmith,并支持Google Gemini模型。该模板的核心亮点之一是其对Model Context Protocol (MCP) 的支持,使其能够作为MCP服务器提供各种内置工具服务,供LLM客户端调用。
主要功能点
- MCP服务器能力: 本项目内嵌了多个MCP服务器实现,可作为独立的工具服务供外部LLM客户端调用,包括:
- 数学服务: 提供基础和复杂的数学计算功能。
- 天气服务: 获取实时的天气信息。
- 数据库服务: 允许LLM执行数据库查询和操作。
- 文件系统服务: 提供文件读写和管理功能。
- 支持轻松扩展自定义MCP工具服务器。
- 大型语言模型集成: 与Google Gemini Pro, Flash等模型全面集成,支持聊天、嵌入和多模态视觉任务。
- RAG (检索增强生成): 利用Pinecone向量数据库,实现高效的语义搜索、文档检索和增强式问答。
- 文档处理: 集成Docling,支持PDF、DOCX、PPTX、HTML、Markdown等多种格式文档的解析、内容提取和预处理。
- Web爬取: 通过Crawl4AI实现智能网页内容抓取,支持JavaScript渲染和速率限制,用于获取实时信息。
- AI Agent工作流: 基于LangGraph构建复杂的Agent工作流,支持ReAct、Plan-and-Execute等模式,以及多Agent编排。
- 生产级特性: 包含Docker支持、性能监控(LangSmith)、Redis缓存、速率限制、全面的错误处理和日志记录等。
安装步骤
- 克隆仓库:
git clone https://github.com/Harmeet10000/langchain-fastapi-production cd langchain-fastapi-production - 安装 uv (推荐): 如果尚未安装,请通过以下命令安装快速Python包管理器 'uv':
- macOS/Linux: 'curl -LsSf https://astral.sh/uv/install.sh | sh'
- Windows: 'powershell -c "irm https://astral.sh/uv/install.ps1 | iex"'
- 或者使用pip: 'pip install uv'
- 配置环境变量: 复制示例环境变量文件并编辑,填入必要的API密钥:
cp .env.example .env # 编辑 .env 文件,添加您的 Google Gemini, Pinecone, LangSmith (可选) 和 OpenWeather (如果启用天气MCP服务器) API 密钥 - 使用 Docker 启动 (推荐): 这是生产环境的首选方式。此方式将同时启动主应用、MongoDB、Redis以及配置中启用的MCP服务器(如天气MCP服务器)。
docker-compose up --build -d # 查看日志:docker-compose logs -f app - 本地开发: 如果您想在本地运行应用程序和MCP服务器,请使用'uv':
uv venv source .venv/bin/activate # Windows: .venv\Scripts\activate uv pip install -e . playwright install chromium # 安装 Crawl4AI 所需的浏览器 uv add langchain-mcp-adapters # 安装MCP适配器库 # 运行主应用:uv run uvicorn src.main:app --reload --host 0.0.0.0 --port 5000 # 注意:如需同时运行MCP服务器(如Stdio模式),您可能需要根据MCP_INTEGRATION_GUIDE.md手动启动或通过其他进程管理工具管理。
服务器配置
本项目中的MCP服务器是为MCP客户端提供服务的后端组件。MCP客户端需要知道MCP服务器的通信方式、地址以及其提供的功能。以下是连接到本项目中内置MCP服务器的客户端配置示例:
1. 连接到HTTP传输的MCP服务器 (例如:天气MCP服务器)
假设您通过Docker Compose启动了本项目,其中包含天气MCP服务器,它将通过HTTP在'http://localhost:8001'端口提供服务。您的MCP客户端可以使用以下JSON结构进行配置:
{ "server_name": "WeatherService", "transport": { "type": "http", "url": "http://localhost:8001/mcp" }, "description": "提供实时天气查询的MCP服务器" }
- 'server_name': 这是一个为MCP服务器定义的唯一名称,客户端将通过此名称引用该服务器。
- 'transport': 此对象定义了客户端与服务器进行通信的协议和地址。
- 'type': 传输协议的类型,例如 '"http"' 表示通过HTTP协议通信。
- 'url': MCP服务器的HTTP端点地址。在本项目中,天气MCP服务器通常会监听'http://localhost:8001/mcp'。
- 'description': 对该MCP服务器功能的简要描述。
2. 连接到Stdio传输的MCP服务器 (例如:数学MCP服务器)
对于以Stdio(标准输入输出)方式运行的MCP服务器,通常是在本地作为子进程启动。MCP客户端需要知道启动该子进程的命令和参数。例如,连接到本项目中的数学MCP服务器:
{ "server_name": "MathService", "command": "python", "args": ["-m", "langchain_mcp_adapters.cli", "server", "stdio"], "env": { "MCP_SERVER_MODULE": "src.mcp.servers.math_server" }, "transport": { "type": "stdio" }, "description": "提供数学计算功能的MCP服务器" }
- 'server_name': 为MCP服务器定义的唯一名称。
- 'command': 启动MCP服务器进程的命令,例如 '"python"'。
- 'args': 传递给'command'的参数列表。此处指示'langchain_mcp_adapters'库启动一个Stdio传输的MCP服务器。
- 'env': 启动MCP服务器进程所需的环境变量。'MCP_SERVER_MODULE'应指向本项目中数学服务器的Python模块路径(例如'src.mcp.servers.math_server')。
- 'transport': 传输协议的类型,此处为 '"stdio"'。
- 'description': 对该MCP服务器功能的简要描述。
重要提示: 更详细的MCP服务器实现细节和客户端集成模式,请查阅仓库内的 'MCP_INTEGRATION_GUIDE.md' 文件。
基本使用方法
- 启动应用程序: 按照上述安装步骤启动您的FastAPI应用和MCP服务器(无论是通过Docker还是本地方式)。
- 访问API接口: 应用程序启动后,可以通过浏览器或API客户端访问FastAPI提供的各项功能:
- Swagger UI: 'http://localhost:5000/api-docs' (或 '/api/v1/docs')
- RAG查询: '/api/v1/rag/query'
- AI聊天: '/api/v1/chat'
- MCP Agents执行: '/api/v1/mcp-agents/execute' (此端点允许Agent利用本项目中集成的MCP工具)
- 使用MCP客户端: 如果您希望直接作为MCP客户端与本项目中的某个MCP服务器(如天气MCP服务器)通信,您需要使用支持MCP协议的客户端库(例如'langchain-mcp-adapters')。
- 根据上述“服务器配置”提供的JSON结构,在您的MCP客户端中加载相应的配置。
- 通过客户端API,您可以发现和调用该MCP服务器提供的工具,例如请求天气数据或执行数学计算。
信息
分类
AI与计算