项目简介

'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缓存、速率限制、全面的错误处理和日志记录等。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/Harmeet10000/langchain-fastapi-production
    cd langchain-fastapi-production
  2. 安装 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'
  3. 配置环境变量: 复制示例环境变量文件并编辑,填入必要的API密钥:
    cp .env.example .env
    # 编辑 .env 文件,添加您的 Google Gemini, Pinecone, LangSmith (可选) 和 OpenWeather (如果启用天气MCP服务器) API 密钥
  4. 使用 Docker 启动 (推荐): 这是生产环境的首选方式。此方式将同时启动主应用、MongoDB、Redis以及配置中启用的MCP服务器(如天气MCP服务器)。
    docker-compose up --build -d
    # 查看日志:docker-compose logs -f app
  5. 本地开发: 如果您想在本地运行应用程序和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' 文件。

基本使用方法

  1. 启动应用程序: 按照上述安装步骤启动您的FastAPI应用和MCP服务器(无论是通过Docker还是本地方式)。
  2. 访问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工具)
  3. 使用MCP客户端: 如果您希望直接作为MCP客户端与本项目中的某个MCP服务器(如天气MCP服务器)通信,您需要使用支持MCP协议的客户端库(例如'langchain-mcp-adapters')。
    • 根据上述“服务器配置”提供的JSON结构,在您的MCP客户端中加载相应的配置。
    • 通过客户端API,您可以发现和调用该MCP服务器提供的工具,例如请求天气数据或执行数学计算。

信息

分类

AI与计算