wingman
adrianliechti/wingman加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Wingman 项目图标
想象这样一个场景:你花了一周时间基于 GPT-4 写好了一个智能客服 demo,给领导做了演示。领导很满意,说"能不能换成 Claude?Claude 便宜一些。"然后你打开代码,开始改 API Key、调整 Prompt、修改 Tool Calling 格式……又是三天。
更糟糕的是,你的应用依赖了 OpenAI 的特定功能,但新模型不完全兼容——你得加 Workaround,做特性检测,甚至重写部分逻辑。
这就是 AI 应用开发者的日常:平台绑定(Vendor Lock-in) 带来的无尽痛苦。
Wingman 正是为了解决这个问题而生的。它是一个开源的 LLM 推理网关,用一套统一的 OpenAI-/Anthropic-/Gemini-兼容 API,同时对接所有主流模型提供商——无论你是用 OpenAI GPT、Claude、Gemini,还是本地部署的 Ollama、LLAMA.CPP,甚至是 AWS Bedrock、Mistral AI 或者各种自定义 gRPC 端点,写一份代码,随意切换,无需重写。
Wingman 整体架构图
Wingman 由独立开发者 Adrian Liechti 开发维护(GitHub @adrianliechti),采用 MIT License 完全开源。项目以 Go 语言构建,充分利用 Go 的并发优势和轻量级运行时,适合在生产环境中部署作为统一 AI 网关层。
项目定位清晰:对标 Kong/NGINX 在 API 网关领域的角色,但专门为 LLM 场景优化,提供了 RAG、Agents、Tools、MCP(Model Context Protocol)、智能路由、流量限制和 OpenTelemetry 可观测性等开箱即用的功能。
Wingman 支持的 LLM 提供商覆盖了市面上几乎所有主流选择:
云端 API 服务:
本地运行时:
特色能力:
通过 OpenAI 兼容的 /v1/chat/completions 和 /v1/embeddings 接口,你可以用任何 OpenAI SDK 直接连接 Wingman,背后自由切换实际模型,无需修改应用代码。
Wingman 内置了完整的 Retrieval-Augmented Generation 流水线:
文档提取: 支持 Azure Document Intelligence、Docling、Kreuzberg、Mistral 文档提取,以及基于视觉 LLM 的通用文档解析,覆盖 PDF/DOCX/TXT 等常见格式。
文本分块: 提供基于 Kreuzberg 的智能分块和可配置的传统定长分块策略。
向量检索: 集成 DuckDuckGo、Exa、Tavily 等网页搜索能力作为检索来源,支持自定义 gRPC 检索器插件。
Wingman 的 Agent 模块支持:
项目深度集成 OpenTelemetry,提供:
此外还内置了限流(Rate Limiting)和策略引擎(Open Policy Agent)保障服务稳定性。
Wingman 代码组织清晰,采用模块化设计:
pkg/agent # Agent 编排
pkg/auth # 认证授权
pkg/client # LLM 客户端封装
pkg/extractor # 文档提取
pkg/guard # 内容安全
pkg/mcp # MCP 协议支持
pkg/provider # 多提供商适配器
pkg/router # 智能路由
pkg/scraper # 网页抓取
pkg/searcher # 搜索引擎
pkg/segmenter # 文本分块
pkg/tool # 工具注册
pkg/translator # 翻译服务
pkg/summarizer # 摘要生成
pkg/otel # OpenTelemetry 集成
pkg/policy # 策略管理
server/ # HTTP/gRPC 入口
cmd/ # 可执行文件入口
config/ # 配置加载(40+ 配置文件)
核心 HTTP 路由基于轻量级框架 go-chi/chi v5,无重型依赖。服务端模块分别处理 Anthropic、OpenAI、Gemini 和 MCP 协议路由,插件系统通过 gRPC 实现,扩展性极强。
Wingman 提供 Docker Compose 一键部署,只需三步:
# 1. 克隆并进入目录
git clone https://github.com/adrianliechti/wingman.git
cd wingman
# 2. 配置环境变量(LLM 提供商凭证)
export LLM_URL=https://api.openai.com/v1
export LLM_MODEL=gpt-4o
export EMBEDDING_URL=https://api.openai.com/v1
export EMBEDDING_MODEL=text-embedding-3-small
# 3. 启动
docker compose up -d
# 访问 http://localhost:4242
compose.yaml 默认包含三个服务:
Web UI 提供对话界面、模型选择、工具配置等可视化操作,适合快速体验和演示。
1. LLM 提供商的差异性: 虽然 Wingman 做了大量适配工作,但各家模型的 Tool Calling 格式、Function Calling 能力、上下文窗口策略存在差异,某些高级特性在切换提供商后可能需要微调。
2. 本地部署成本: 如果选择 Ollama 或 LLAMA.CPP 本地运行,仍需配置足够的 GPU 资源(推荐 8GB+ 显存)。
3. 生产级 HA 方案: 当前 compose.yaml 为单机部署方案,缺少 Kubernetes 生产级 HA 配置(无 kubernetes/ 目录),大规模高可用部署需要自行扩展。
4. 中文文档相对匮乏: 项目文档以英文为主,中文社区的使用经验和踩坑分享较少。
Wingman 是当前 LLM Gateway 赛道中功能最为全面的开源实现之一。它用 Go 的高性能和轻量级依赖,解决了"避免供应商绑定"这个 AI 应用开发的核心痛点。配合完整的 RAG、Agent、工具调用和可观测性支持,非常适合作为企业内部 AI 应用平台的基础设施层。
对于 AI 爱好者而言,它是理解 LLM 应用架构的绝佳学习案例;对于 AI 开发者而言,它是提升开发效率、降低平台切换成本的实用工具。
推荐指数:⭐⭐⭐⭐⭐(适合作为团队 AI 网关基础设施)