项目简介

Wingman 是一个功能强大的开源 LLM 平台,旨在简化大型语言模型应用的开发和部署。它统一管理各种 LLM 供应商、模型以及文档处理、信息检索、AI 代理等高级AI工作流。其核心亮点之一是内置的 Model Context Protocol (MCP) 服务器,能够以标准化的方式将平台能力作为工具提供给兼容 MCP 的客户端。

主要功能点

  • 多模型集成: 支持 OpenAI、Anthropic、Google Gemini、AWS Bedrock、Groq、Mistral AI、xAI、Hugging Face 以及 Ollama、LLAMA.CPP 等多种本地部署模型。
  • 文档处理与RAG: 提供文档提取器、文本分段器和信息检索器(如 DuckDuckGo, Exa, Tavily),支持构建检索增强生成(RAG)应用。
  • 高级AI工作流: 支持Agent/Assistant链、工具调用、多步推理等复杂AI工作流,让AI能够执行更复杂的任务。
  • MCP 服务器: 内置 Model Context Protocol (MCP) 服务器,通过标准 JSON-RPC 协议对外暴露 Wingman 平台自身的能力和集成的工具,支持 HTTP 流、SSE 等多种传输方式,方便 LLM 客户端(如 LangChain、Agentic 等)调用。
  • 灵活配置: 通过 YAML 配置文件,你可以轻松定义和管理各种提供商、模型、工具、AI 工作流和身份验证设置。
  • API 兼容性: 提供与 OpenAI 兼容的 API 端点,方便现有应用的迁移和集成。
  • 可观测性: 全面集成 OpenTelemetry,提供请求追踪、性能指标和详细日志,便于监控和调试。

安装步骤

  1. 克隆仓库: 打开你的终端,执行以下命令下载 Wingman 项目代码:

    git clone https://github.com/adrianliechti/wingman.git
    cd wingman
  2. 构建二进制文件: Wingman 使用 Go 语言开发,你需要安装 Go 环境。然后执行以下命令构建服务器和客户端程序:

    go build -o wingman-server ./cmd/server
    go build -o wingman-client ./cmd/client
  3. 准备配置文件: 创建一个名为 'config.yaml' 的文件。这个文件将决定 Wingman 服务器启动时会加载哪些 LLM 模型、AI 工具以及如何对外暴露 MCP 服务。

    'config.yaml' 示例(最简配置):

    providers:
      - type: openai
        token: sk-YOUR_OPENAI_API_KEY # 替换为你的 OpenAI API 密钥
        models:
          - gpt-4o # 注册一个 OpenAI 的聊天模型
    
    tools:
      search:
        type: search
        retriever: web # 启用内置的搜索工具,使用默认的 DuckDuckGo 检索器
    
      extract:
        type: extract
        extractor: text # 启用内置的文本提取工具
    
      # Wingman 的内置 MCP 服务器会自动暴露上述在 'tools' 部分定义的平台能力。
      # 你无需在此处额外配置 MCP 服务器本身。

    注意:

    • 请将 'sk-YOUR_OPENAI_API_KEY' 替换为你实际的 OpenAI API 密钥。
    • 如果你需要使用 Apache Tika 等其他提取器,可能需要额外运行相应的服务。请参考 Wingman 仓库 'README.md' 中 'Document Processing & RAG' 和 'Tools & Function Calling' 部分获取更多配置示例和细节。
  4. 运行 Wingman 服务器: 在终端中执行以下命令启动 Wingman 服务器:

    ./wingman-server --config config.yaml --port 8080

    服务器将默认在 'http://localhost:8080' 地址启动。Wingman 内置的 MCP 服务器会自动在 '/mcp' 路径下提供服务,并通过 HTTP 流协议进行通信。

服务器配置(MCP 客户端视角)

作为 MCP 客户端,当你需要连接到 Wingman MCP 服务器时,你不需要编写代码,只需要提供连接服务器所需的配置信息。Wingman 的 MCP 服务器会自动将其平台能力(如 'search'、'extract'、'translate' 等内置工具,以及你在 'config.yaml' 中定义的任何自定义工具或链)暴露给 MCP 客户端。

以下是一个 MCP 客户端连接 Wingman MCP 服务器的示例配置信息(JSON 格式),你的 MCP 客户端工具通常会要求你以类似的方式提供:

{
  "server_name": "wingman-mcp-server",
  "command": "curl",
  "args": [
    "-N",
    "--header", "Content-Type: application/json",
    "--header", "Accept: application/json",
    "--request", "POST",
    "--data", "@-",
    "http://localhost:8080/mcp"
  ],
  "description": "Wingman平台提供的MCP服务器,用于访问其集成的LLM能力和多种AI工具,如在线搜索、网页内容提取等。"
}
  • 'server_name': 这是一个你可以为该 MCP 服务器实例设定的自定义名称,例如 '"wingman-mcp-server"'。
  • 'command': 这是你的 MCP 客户端将用于与 Wingman MCP 服务器进行通信的外部命令。通常,你会使用像 'curl' 这样的 HTTP 客户端工具。
  • 'args': 这些是传递给 'command' 的参数列表。
    • '"http://localhost:8080/mcp"': 这是 Wingman MCP 服务器默认的 HTTP 流接口地址。如果你的 Wingman 服务器监听在不同的端口或地址,请务必将其替换为正确的 URL。
    • '"--header", "Content-Type: application/json"' 和 '"--header", "Accept: application/json"': 设置 HTTP 请求头,表明请求和响应的数据格式是 JSON。
    • '"--request", "POST"': 指定 HTTP 请求方法为 POST。
    • '"--data", "@-"': 指示 'curl' 从标准输入读取请求体(客户端的 JSON-RPC 请求)。
  • 'description': 对这个 MCP 服务器提供的功能进行简要描述,方便你理解它的用途。

一旦 MCP 客户端使用此配置连接,它将能够自动发现并调用 Wingman 暴露的所有工具。例如,你的 LLM 应用可以指示 Wingman 执行 'search_online' 来进行网络搜索,或调用 'crawl_website' 来抓取网页内容。

重要提示:

  • 如果你的 Wingman 服务器配置了鉴权(例如使用静态 token 或 OpenID Connect),你的 MCP 客户端在 'args' 中可能还需要添加相应的 'Authorization' 请求头,例如 '"--header", "Authorization: Bearer YOUR_SECRET_TOKEN"'。
  • Wingman 也支持 SSE (Server-Sent Events) 作为 MCP 传输协议。如果你的客户端需要使用 SSE,可以将 URL 配置为 'http://localhost:8080/sse'。

基本使用方法

在 Wingman 服务器运行后,你可以使用项目提供的命令行客户端工具 'wingman-client' 来测试它的功能。

与聊天模型交互:

./wingman-client --url http://localhost:8080 --model gpt-4o

启动后,你可以在提示符 '>>>' 后输入你的问题,与 'gpt-4o' 模型进行对话。

对于通过 MCP 暴露的工具,你需要使用兼容 Model Context Protocol 的 LLM 客户端或框架(如 LangChain、LlamaIndex 等)来发现和调用这些工具,实现更高级的 AI 代理和工作流。

信息

分类

AI与计算