feat: add Lingma OpenAI-compatible gateway service
This commit is contained in:
155
README.md
Normal file
155
README.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# 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": "分析这个项目目录结构"}
|
||||
]
|
||||
}'
|
||||
```
|
||||
Reference in New Issue
Block a user