977be91cbce10ba68c371063d663059cc09a1bcf
LLM_Proxy
基于 Flask 的 OpenAI 兼容代理服务,聚焦模型转发、访问控制与请求统计。
功能特性
- OpenAI 兼容接口:支持
POST /v1/chat/completions和GET /v1/models - 多 Provider / 多模型路由:按
model自动选择上游 provider - Hook 扩展:单一
hook配置,模块中通过Hook(BaseHook)按需实现阶段方法 - 访问白名单控制:可按客户端 IP 控制是否允许调用代理接口
- 管理后台与认证:支持登录、用户管理、统计查询页面与 API
- 流式与非流式统一处理:支持 SSE 转发并提取 usage 信息
使用方式
1. 安装依赖
pip install flask gevent requests pyyaml urllib3
2. 配置服务
编辑 config.yaml,至少确认以下字段:
server.host/server.portchat.whitelist_enabledproviders[].nameproviders[].apiproviders[].api_keyproviders[].model_list
可选字段:
admin.username/admin.passwordproviders[].hooklogging.path/logging.leveldatabase.path
3. 启动服务
python main.py
或指定配置文件:
python main.py --config path/to/config.yaml
4. 调用代理接口
获取模型列表:
curl http://127.0.0.1:22026/v1/models
发起聊天请求:
curl http://127.0.0.1:22026/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "your-model-name",
"messages": [{"role": "user", "content": "hello"}],
"stream": false
}'
Hook API(类接口)
Provider 配置使用单一 hook 字段。
providers:
- name: your-provider
api: https://example.com/v1/chat/completions
api_key: your-key
model_list:
- your-model
hook: example_hook.py
Hook 模块必须导出一个名为 Hook 的类,通常继承 BaseHook:
from src.hooks import BaseHook, HookContext
class Hook(BaseHook):
def header_hook(self, ctx: HookContext, headers: dict[str, str]) -> dict[str, str]:
return headers
可选实现的方法:
header_hook(ctx, headers) -> headersinput_body_hook(ctx, body) -> bodyoutput_body_hook(ctx, body) -> body
Languages
Python
54.1%
HTML
31.4%
CSS
13.1%
JavaScript
1.4%