OpenAI到VertexAI的反代服务,支持logprobs保存功能。
这个项目提供了一个兼容OpenAI API格式的服务器,接收请求后转发到Google VertexAI,并将logprobs数据保存到本地文件。
- 🔄 OpenAI兼容接口: 完全兼容OpenAI Chat Completions API格式
- 🤖 VertexAI集成: 自动转发请求到Google VertexAI (Gemini模型)
- 📊 Logprobs保存: 自动保存详细的logprobs数据到JSON文件
- 🚀 高性能: 基于FastAPI构建,支持异步处理
- 📝 详细日志: 完整的请求响应日志记录
- 🔍 健康检查: 内置健康检查和监控端点
- 克隆项目
git clone <your-repo-url>
cd oai2vertexlogprob- 创建虚拟环境
py -m venv .venv
.venv\Scripts\activate # Windows
# 或者
source .venv/bin/activate # Linux/Mac- 安装依赖
pip install -r requirements.txt通过环境变量进行配置:
# VertexAI配置
export VERTEX_PROJECT_ID="your-gcp-project-id"
export VERTEX_LOCATION="us-central1"
export VERTEX_DEFAULT_MODEL="gemini-2.5-flash"
# 服务器配置
export HOST="0.0.0.0"
export PORT="8000"
# 文件存储配置
export LOGPROBS_DIR="logprobs"# 基本启动
python main.py
# 自定义端口和主机
python main.py --host 127.0.0.1 --port 3000
# 开发模式(自动重载)
python main.py --reload
# 调试模式
python main.py --log-level debug服务器启动后,你可以像使用OpenAI API一样调用:
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-flash",
"messages": [
{"role": "user", "content": "Hello, world!"}
],
"logprobs": true,
"top_logprobs": 3
}'import openai
# 设置自定义API端点
client = openai.OpenAI(
base_url="http://localhost:8000/v1",
api_key="dummy" # 不需要真实的API密钥
)
response = client.chat.completions.create(
model="gemini-2.5-flash",
messages=[
{"role": "user", "content": "介绍一下人工智能"}
],
logprobs=True,
top_logprobs=3
)
print(response.choices[0].message.content)| 端点 | 方法 | 描述 |
|---|---|---|
/v1/chat/completions |
POST | OpenAI兼容的聊天完成接口 |
/v1/models |
GET | 获取可用模型列表 |
/health |
GET | 健康检查 |
/logprobs |
GET | 查看保存的logprobs文件列表 |
/ |
GET | 服务状态信息 |
所有包含logprobs的请求和响应都会自动保存到logprobs/目录(可通过LOGPROBS_DIR环境变量配置)。
保存的JSON文件包含:
- 原始OpenAI格式请求
- OpenAI格式响应
- VertexAI原始logprobs数据
- 请求元数据(时间戳、token使用量等)
主要依赖包:
google-genai: Google Generative AI库fastapi: Web框架uvicorn: ASGI服务器pydantic: 数据验证aiofiles: 异步文件操作
oai2vertexlogprob/
├── main.py # 主入口文件
├── src/oai2vertexlogprob/ # 源代码
│ ├── __init__.py
│ ├── api.py # FastAPI应用
│ ├── config.py # 配置管理
│ ├── models.py # Pydantic模型
│ ├── vertexai_client.py # VertexAI客户端
│ ├── converters.py # 格式转换器
│ └── logprobs_saver.py # Logprobs保存器
├── requirements.txt # 依赖列表
├── pyproject.toml # 项目配置
└── logprobs/ # Logprobs保存目录
# 安装开发依赖
pip install -e ".[dev]"
# 代码格式化
black src/
isort src/
# 类型检查
mypy src/
# 运行测试
pytestMIT License