Files
lingma-openai-gateway/README.md

156 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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": "分析这个项目目录结构"}
]
}'
```