Gemini-OpenAI-Proxy
Gemini-OpenAI-Proxy 是一个设计用于将 OpenAI API 协议转换为 Google Gemini 协议的代理。此代理使为 OpenAI API 构建的应用程序能够无缝地与 Gemini 协议通信,包括支持聊天完成、嵌入和模型端点。
目录
构建
要构建 Gemini-OpenAI-Proxy,请按照以下步骤操作:
go build -o gemini main.go
部署
我们建议使用 Docker 部署 Gemini-OpenAI-Proxy,以实现简便的设置。请按照以下步骤使用 Docker 部署:
您可以在命令行上执行此操作:
docker run --restart=unless-stopped -it -d -p 8080:8080 --name gemini zhu327/gemini-openai-proxy:latest
或者使用以下 docker-compose 配置:
version: '3'
services:
gemini:
container_name: gemini
environment: # 在此设置环境变量。默认值如下
- GPT_4_VISION_PREVIEW=gemini-1.5-flash-latest
- DISABLE_MODEL_MAPPING=0
ports:
- "8080:8080"
image: zhu327/gemini-openai-proxy:latest
restart: unless-stopped
根据需要调整端口映射(例如 -p 8080:8080
),并确保 Docker 镜像版本(zhu327/gemini-openai-proxy:latest
)与您的需求一致。
使用
Gemini-OpenAI-Proxy 提供了一种简便的方法,将 OpenAI 功能集成到支持自定义 OpenAI API 端点的任何应用程序中。请按照以下步骤利用此代理的功能:
-
设置 OpenAI 端点: 确保您的应用程序配置为使用自定义 OpenAI API 端点。Gemini-OpenAI-Proxy 可以无缝地与任何兼容 OpenAI 的端点一起工作。
-
获取 Google AI Studio API 密钥: 在使用代理之前,您需要从 ai.google.dev 获取 API 密钥。在与 Gemini-OpenAI-Proxy 交互时,将此 API 密钥视为您的 OpenAI API 密钥。
-
将代理集成到您的应用程序中: 修改应用程序的 API 请求以目标为 Gemini-OpenAI-Proxy,并提供获取的 Google AI Studio API 密钥,仿佛它是您的 OpenAI API 密钥。
样例聊天完成 API 请求(假设代理托管在
http://localhost:8080
):curl http://localhost:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $YOUR_GOOGLE_AI_STUDIO_API_KEY" \ -d '{ "model": "gpt-3.5-turbo", "messages": [{"role": "user", "content": "Say this is a test!"}], "temperature": 0.7 }'
或者,使用 Gemini Pro Vision:
curl http://localhost:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $YOUR_GOOGLE_AI_STUDIO_API_KEY" \ -d '{ "model": "gpt-4-vision-preview", "messages": [{"role": "user", "content": [ {"type": "text", "text": "What’s in this image?"}, { "type": "image_url", "image_url": { "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" } } ]}], "temperature": 0.7 }'
如果您希望将
gpt-4-vision-preview
映射到gemini-1.5-pro-latest
,您可以配置环境变量GPT_4_VISION_PREVIEW = gemini-1.5-pro-latest
。这是因为gemini-1.5-pro-latest
现在也支持多模态数据。否则,默认使用gemini-1.5-flash-latest
模型。如果您已经有 Gemini 1.5 Pro API 的访问权限,您可以使用:
curl http://localhost:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $YOUR_GOOGLE_AI_STUDIO_API_KEY" \ -d '{ "model": "gpt-4-turbo-preview", "messages": [{"role": "user", "content": "Say this is a test!"}], "temperature": 0.7 }'
样例嵌入 API 请求:
curl http://localhost:8080/v1/embeddings \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $YOUR_GOOGLE_AI_STUDIO_API_KEY" \ -d '{ "model": "text-embedding-ada-002", "input": "This is a test sentence." }'
您还可以传入多个输入字符串作为列表:
curl http://localhost:8080/v1/embeddings \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $YOUR_GOOGLE_AI_STUDIO_API_KEY" \ -d '{ "model": "text-embedding-ada-002", "input": ["This is a test sentence.", "This is another test sentence"] }'
模型映射:
GPT 模型 Gemini 模型 gpt-3.5-turbo gemini-1.0-pro-latest gpt-4 gemini-1.5-flash-latest gpt-4-turbo-preview gemini-1.5-pro-latest gpt-4-vision-preview gemini-1.0-pro-vision-latest text-embedding-ada-002 text-embedding-004 如果您想禁用模型映射,可以配置环境变量
DISABLE_MODEL_MAPPING=1
。这将允许您直接引用 Gemini 模型。以下是禁用模型映射的示例 API 请求:
curl http://localhost:8080/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $YOUR_GOOGLE_AI_STUDIO_API_KEY" \ -d '{ "model": "gemini-1.0-pro-latest", "messages": [{"role": "user", "content": "Say this is a test!"}], "temperature": 0.7 }'
-
处理响应: 处理来自 Gemini-OpenAI-Proxy 的响应与处理 OpenAI 的响应相同。
现在,您的应用程序已经装备好,可以通过 Gemini-OpenAI-Proxy 利用 OpenAI 功能,弥合 OpenAI 和使用 Google Gemini Pro 协议的应用程序之间的差距。
兼容性
许可证
Gemini-OpenAI-Proxy 根据 MIT 许可证授权 - 有关详细信息,请参阅 LICENSE 文件。