项目简介

LitServe 是一个强大而灵活的 Python 框架,旨在简化任何 AI 模型(包括视觉、音频、文本模型)的部署。它支持构建复杂的 AI 系统,如 Agent、聊天机器人、RAG (Retrieval Augmented Generation) 管道和 MCP 服务器,同时提供批处理、多 GPU 支持、流式传输、自定义逻辑和零 YAML 配置等高级功能。

LitServe 作为一个 MCP 服务器,其核心职责是以标准化方式向 LLM 客户端提供上下文信息和功能。它支持托管和管理资源、注册和执行工具,以及定义和渲染 Prompt 模板,并通过 JSON-RPC 协议与客户端通信。

主要功能点

  • 部署任何AI系统:无论是Agent、RAG、聊天机器人还是多模态模型,LitServe 都能轻松部署。
  • 内置MCP服务器支持:提供标准化的接口,让 LLM 客户端可以发现和调用部署在 LitServe 上的 AI 功能,实现上下文交互。
  • 高性能推理:针对 AI 工作负载优化,比 FastAPI 快 2 倍,并支持 GPU 自动扩缩、批处理和流式传输。
  • 简化MLOps:无需繁琐的 MLOps 代码,使用简单的 Python API 即可构建完整的 AI 系统。
  • 灵活部署:支持自托管,也可以一键部署到 Lightning AI 云平台,提供自动扩缩、监控和高可用性。

安装步骤

  1. 创建虚拟环境(推荐)
    python -m venv venv
    source venv/bin/activate # Linux/macOS
    # 或 venv\Scripts\activate # Windows
  2. 安装 LitServe
    pip install litserve fastmcp
    'fastmcp' 库是 LitServe 提供 MCP 服务器支持所必需的。

服务器配置(MCP客户端使用)

MCP 客户端需要通过 JSON-RPC 协议与 MCP 服务器通信。对于 LitServe 部署的 MCP 服务器,客户端需要配置其连接参数。以下是 MCP 客户端配置信息示例及其说明:

{
  "mcpServers": {
    "litserve-mcp-server": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://8000-YOUR_HOST_NAME.cloudspaces.litng.ai/mcp/"
      ],
      "name": "litserve-mcp-server",
      "description": "一个由 LitServe 部署的 MCP 服务器,提供模型推理和工具执行功能。"
    }
  }
}
  • 'mcpServers': 包含所有 MCP 服务器配置的根对象。
  • 'litserve-mcp-server': 这是您为 LitServe MCP 服务器定义的唯一名称,您可以根据实际情况进行修改。
  • 'command': 启动 MCP 远程客户端的命令,通常是 '"npx"'。
  • 'args': 传递给 'npx mcp-remote' 命令的参数列表。
    • '"mcp-remote"': MCP 远程客户端的名称。
    • '"https://8000-YOUR_HOST_NAME.cloudspaces.litng.ai/mcp/"': 这是 LitServe MCP 服务器的实际 URL。 请务必将其替换为您部署的 LitServe 服务器的公共访问地址,并确保末尾包含 '/mcp/' 路径。例如,如果您在本地运行,则可能是 '"http://localhost:8000/mcp/"'。
  • 'name': 服务器的友好名称,用于在 MCP 客户端界面中显示。
  • 'description': 对服务器功能的简要描述。

基本使用方法

以下是一个简单的 LitServe MCP 服务器示例,它部署了一个计算输入平方的工具:

  1. 创建 'server.py' 文件

    # server.py
    from pydantic import BaseModel
    import litserve as ls
    from litserve.mcp import MCP
    
    class PowerRequest(BaseModel):
        input: float
    
    class MyLitAPI(ls.LitAPI):
        def setup(self, device):
            self.model = lambda x: x**2
    
        def decode_request(self, request: PowerRequest) -> float:
            print(f"Decoding request: {request}")
            return request.input
    
        def predict(self, x):
            return self.model(x)
    
        def encode_response(self, output):
            return {"output": output}
    
    if __name__ == "__main__":
        api = MyLitAPI(mcp=MCP(description="计算输入数字的平方。"))
        server = ls.LitServer(api)
        server.run(port=8000)
  2. 运行服务器

    python server.py

    服务器将在 'http://localhost:8000' 启动,其 MCP 接口可在 'http://localhost:8000/mcp/' 访问。

  3. MCP 客户端交互: 使用配置好的 MCP 客户端(例如 Claude desktop,按照“服务器配置”部分进行配置)连接到 'http://localhost:8000/mcp/'。客户端将能够发现名为 'predict' (或您在 'MCP' 中自定义的 'name') 的工具,并根据其描述(“计算输入数字的平方。”)和输入 Schema 调用它。例如,LLM 客户端可以传递 '{"input": 4.0}',服务器将返回 '{"output": 16.0}'。

信息

分类

AI与计算