Skip to content

starowo/OAI2VertexLogProbs

Repository files navigation

OAI2VertexLogProb

OpenAI到VertexAI的反代服务,支持logprobs保存功能。

这个项目提供了一个兼容OpenAI API格式的服务器,接收请求后转发到Google VertexAI,并将logprobs数据保存到本地文件。

功能特性

  • 🔄 OpenAI兼容接口: 完全兼容OpenAI Chat Completions API格式
  • 🤖 VertexAI集成: 自动转发请求到Google VertexAI (Gemini模型)
  • 📊 Logprobs保存: 自动保存详细的logprobs数据到JSON文件
  • 🚀 高性能: 基于FastAPI构建,支持异步处理
  • 📝 详细日志: 完整的请求响应日志记录
  • 🔍 健康检查: 内置健康检查和监控端点

安装

  1. 克隆项目
git clone <your-repo-url>
cd oai2vertexlogprob
  1. 创建虚拟环境
py -m venv .venv
.venv\Scripts\activate  # Windows
# 或者
source .venv/bin/activate  # Linux/Mac
  1. 安装依赖
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

API调用

服务器启动后,你可以像使用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
     }'

Python客户端示例

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)

API端点

端点 方法 描述
/v1/chat/completions POST OpenAI兼容的聊天完成接口
/v1/models GET 获取可用模型列表
/health GET 健康检查
/logprobs GET 查看保存的logprobs文件列表
/ GET 服务状态信息

Logprobs保存

所有包含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/

# 运行测试
pytest

许可证

MIT License

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors