ultrasev / llmproxy

一个基于 cloudflare worker 的 LLM API 反向代理,支持 OpenAI, Gemini, Groq 等平台。接口兼容 OpenAI API 规范,可以直接使用 OpenAI SDK 调用。
https://llmproxy-xi.vercel.app
99 stars 28 forks source link

一个基于 cloudflare worker 的 LLM API 反向代理,支持 OpenAI, Gemini, Groq 等平台。接口兼容 OpenAI API 规范,可以直接使用 OpenAI SDK 调用。

Quick start

Demo API: https://llmapi.ultrasev.com

通过路由参数指定平台

通过 /v2/openai 路由参数区分不同平台,可结合 chatbox沉浸式翻译 等插件使用。支持的平台有:

Gemini API 示例

from openai import OpenAI
api_key = "YOUR_GEMINI_API_KEY"
model = "gemini-1.5-flash"

BASE_URL = "https://llmapi.ultrasev.com/v2/gemini"

client = OpenAI(base_url=BASE_URL, api_key=api_key)
response = client.chat.completions.create(
    model=model,
    messages=[
        {"role": "system", "content": "You are a helpful assistant。"},
        {"role": "user", "content": "what is the meaning of life?"}
    ],
    temperature=0.7,
    top_p=1,
    max_tokens=1024,
    top_logprobs=32 # topK
)
print(response.choices[0].message.content)

Mistral API 示例

from openai import OpenAI
api_key = "YOUR_MISTRAL_API_KEY"
model = "open-mistral-7b"

BASE_URL = "https://llmapi.ultrasev.com/v2/mistral"

client = OpenAI(base_url=BASE_URL, api_key=api_key)
response = client.chat.completions.create(
    model=model,
    messages=[
        {"role": "system", "content": "You are a helpful assistant。"},
        {"role": "user", "content": "what is the meaning of life?"}
    ],
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.content)

部署自己的 Worker

创建一个新的 cloudflare worker,把 api/llm_api_proxy.js 中的代码粘贴进去,然后部署就可以。

配置自定义域名:设置 -> Triggers -> Custom Domains,把你的域名填进去,然后点击 add custom domain 即可。

YouTuBe 教程

使用 Cloudflare Worker 搭建反向代理

Notes

Q & A

1. Gemini API 无法使用

经常有小伙伴反馈 Groq 和 OpenAI 没有问题,但是 Gemini API 无法使用,一个可能的原因是:cloudflare 中转请求时会根据请求者 IP 按就近原则转发请求,而有的地区不被 Google AI 支持,比如香港,这样就会导致请求返回 User location is not supported for the API use 的结果。解决方法是直接使用国内 IP 或者使用其他地区代理,比如美区。

参考 issues:

更新日志

请访问 CHANGELOG