# Lingma OpenAI Gateway 把本地 Lingma 能力封装为 OpenAI 兼容接口,支持: - `GET /v1/models` - `POST /v1/chat/completions` - `stream=true`(SSE) - Bearer API Key 鉴权 ## 1. 准备目录 ```bash mkdir -p bin cp ../Lingma bin/Lingma chmod +x bin/Lingma ``` ## 2. 配置环境变量 ```bash cp .env.example .env ``` 至少修改: - `API_KEYS` - `LINGMA_USERNAME` - `LINGMA_PASSWORD` 如果你的 Lingma 路径不同,修改: - `LINGMA_BIN` 可选(企业专属域): - `DEDICATED_DOMAIN_URL` ## 3. Docker 运行 ```bash docker compose up -d --build ``` 查看日志: ```bash docker compose logs -f ``` ## 4. 调用示例 ### 模型列表 ```bash curl -s http://127.0.0.1:8317/v1/models \ -H "Authorization: Bearer sk-DXKFFEL0A1bN8Teqz" ``` 说明: - `id` 保持 Lingma 原始模型 key(兼容 OpenAI 客户端) - `name` 提供可读名称(如 `qwen3.6-plus`) - 调用 `/v1/chat/completions` 时,`model` 既可传 `id`,也可直接传 `name` ### 非流式聊天 ```bash curl -s http://127.0.0.1:8317/v1/chat/completions \ -H "Authorization: Bearer sk-DXKFFEL0A1bN8Teqz" \ -H "Content-Type: application/json" \ -d '{ "model": "dashscope_qmodel", "messages": [ {"role": "user", "content": "写一个 python hello world"} ] }' ``` ### 流式聊天 ```bash curl -N http://127.0.0.1:8317/v1/chat/completions \ -H "Authorization: Bearer sk-DXKFFEL0A1bN8Teqz" \ -H "Content-Type: application/json" \ -d '{ "model": "dashscope_qmodel", "stream": true, "messages": [ {"role": "user", "content": "介绍一下你自己"} ] }' ``` ## 5. 统计与监控 支持调用次数与 token(估算值)统计: - `GET /internal/stats`(需 Bearer) - `GET /metrics`(Prometheus 文本格式) 示例: ```bash curl -s http://127.0.0.1:8317/internal/stats \ -H "Authorization: Bearer sk-xxx" ``` ```bash curl -s http://127.0.0.1:8317/metrics ``` 说明: - `usage.prompt_tokens/completion_tokens` 为估算值(按字节近似换算)。 - 非流式响应里会附带 `usage` 字段。 ## 6. 容器内自动登录 已内置自动登录能力(Playwright + Chromium)。 你可以主动触发: ```bash curl -s -X POST http://127.0.0.1:8317/internal/auto-login/start \ -H "Authorization: Bearer sk-DXKFFEL0A1bN8Teqz" ``` 查看状态: ```bash curl -s http://127.0.0.1:8317/internal/auto-login/status \ -H "Authorization: Bearer sk-DXKFFEL0A1bN8Teqz" ``` 说明: - 若未登录,`/v1/models` 与 `/v1/chat/completions` 也会尝试自动登录。 - 账号密码来自 `.env`(`LINGMA_USERNAME` / `LINGMA_PASSWORD`)。 - 建议仅在受控环境使用,并妥善保护 `.env`。 ## 7. agent 模式 在 v1 中,若 `model` 传 `agent` 或 `lingma-agent`,会走 agent 模式。 ```bash curl -s http://127.0.0.1:8317/v1/chat/completions \ -H "Authorization: Bearer sk-xxx" \ -H "Content-Type: application/json" \ -d '{ "model": "agent", "messages": [ {"role": "user", "content": "分析这个项目目录结构"} ] }' ```