8000 GitHub - KenyonY/openai-forward: 🚀 å¤§è¯­è¨€æ¨¡åž‹é«˜æ•ˆè½¬å‘æœåŠ¡ · An efficient forwarding service designed for LLMs. · OpenAI API Reverse Proxy
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

🚀 å¤§è¯­è¨€æ¨¡åž‹é«˜æ•ˆè½¬å‘æœåŠ¡ · An efficient forwarding service designed for LLMs. · OpenAI API Reverse Proxy

License

Notifications You must be signed in to change notification settings

KenyonY/openai-forward

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 8000  
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简体中文 | English

PyPI version License docker pull tests pypi downloads

Important

在v0.7.0以åŽåœ¨é…置方é¢ä¼šæœ‰è¾ƒå¤§è°ƒæ•´ï¼Œå¹¶ä¸Žä¹‹å‰ç‰ˆæœ¬ä¸å…¼å®¹ã€‚通过UIé…置起æ¥ä¼šæ›´åŠ æ–¹ä¾¿ï¼Œä¸”æä¾›äº†æ›´å¼ºå¤§çš„é…置选项。

OpenAI-Forward æ˜¯ä¸ºå¤§åž‹è¯­è¨€æ¨¡åž‹å®žçŽ°çš„é«˜æ•ˆè½¬å‘æœåŠ¡ã€‚å…¶æ ¸å¿ƒåŠŸèƒ½åŒ…æ‹¬ 用户请求速率控制ã€Token速率é™åˆ¶ã€æ™ºèƒ½é¢„æµ‹ç¼“å­˜ã€æ—¥å¿—管ç†å’ŒAPI密钥管ç†ç­‰ï¼Œæ—¨åœ¨æä¾›é«˜æ•ˆã€ä¾¿æ·çš„æ¨¡åž‹è½¬å‘æœåŠ¡ã€‚ æ— è®ºæ˜¯ä»£ç†æœ¬åœ°è¯­è¨€æ¨¡åž‹è¿˜æ˜¯äº‘端语言模型,如 LocalAI 或 OpenAI,都å¯ä»¥ç”± OpenAI Forward è½»æ¾å®žçŽ°ã€‚ 得益于 uvicorn, aiohttp, å’Œ asyncio 等库支æŒï¼ŒOpenAI-Forward 实现了出色的异步性能。

News

  • 🎉🎉🎉 v0.7.0ç‰ˆæœ¬åŽæ”¯æŒé€šè¿‡WebUI进行é…置管ç†
  • gpt-1106版本已适é…
  • 缓存åŽç«¯åˆ‡æ¢ä¸ºé«˜æ€§èƒ½æ•°æ®åº“åŽç«¯ï¼šðŸ—² FlaxKV

主è¦ç‰¹æ€§

  • 全能转å‘:å¯è½¬å‘几乎所有类型的请求
  • 性能优先:出色的异步性能
  • 缓存AI预测:对AI预测进行缓存,加速æœåŠ¡è®¿é—®å¹¶èŠ‚çœè´¹ç”¨
  • 用户æµé‡æŽ§åˆ¶ï¼šè‡ªå®šä¹‰è¯·æ±‚速率与Token速率
  • 实时å“应日志:æå‡LLMså¯è§‚察性
  • 自定义秘钥:替代原始API密钥
  • 多目标路由:转å‘多个æœåŠ¡åœ°å€è‡³åŒä¸€æœåŠ¡ä¸‹çš„ä¸åŒè·¯ç”±
  • 黑白åå•:å¯å¯¹æŒ‡å®šIP进行黑白åå•é™åˆ¶
  • 自动é‡è¯•ï¼šç¡®ä¿æœåŠ¡çš„ç¨³å®šæ€§ï¼Œè¯·æ±‚å¤±è´¥æ—¶å°†è‡ªåŠ¨é‡è¯•
  • 快速部署:支æŒé€šè¿‡pipå’Œdocker在本地或云端进行快速部署

由本项目æ­å»ºçš„ä»£ç†æœåŠ¡åœ°å€:

æ³¨ï¼šæ­¤å¤„éƒ¨ç½²çš„ä»£ç†æœåŠ¡ä»…ä¾›ä¸ªäººå­¦ä¹ å’Œç ”ç©¶ç›®çš„ä½¿ç”¨ï¼Œå‹¿ç”¨äºŽä»»ä½•å•†ä¸šç”¨é€”ã€‚

部署指å—

👉 部署文档

使用指å—

快速入门

安装

pip install openai-forward 

# 或安装webui版本:
pip install openai-forward[webui]

å¯åЍæœåŠ¡

aifd run
# 或å¯åЍ另webuiçš„æœåŠ¡
aifd run --webui

如果读入了根路径的.envçš„é…ç½®, 将会看到以下å¯åŠ¨ä¿¡æ¯

⯠aifd run
╭────── 🤗 openai-forward is ready to serve!  ───────╮
│                                                    │
│  base url         https://api.openai.com           │
│  route prefix     /                                │
│  api keys         False                            │
│  forward keys     False                            │
│  cache_backend    MEMORY                           │
╰────────────────────────────────────────────────────╯
╭──────────── â±ï¸ Rate Limit configuration ───────────╮
│                                                    │
│  backend                memory                     │
│  strategy               moving-window              │
│  global rate limit      100/minute (req)           │
│  /v1/chat/completions   100/2minutes (req)         │
│  /v1/completions        60/minute;600/hour (req)   │
│  /v1/chat/completions   60/second (token)          │
│  /v1/completions        60/second (token)          │
╰────────────────────────────────────────────────────╯
INFO:     Started server process [191471]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

代ç†OpenAI模型:

aifd run的默认选项便是代ç†https://api.openai.com

下é¢ä»¥æ­å»ºå¥½çš„æœåŠ¡åœ°å€https://api.openai-forward.com 为例

Python

  from openai import OpenAI  # pip install openai>=1.0.0
  client = OpenAI(
+     base_url="https://api.openai-forward.com/v1", 
      api_key="sk-******"
  )

ä»£ç†æœ¬åœ°æ¨¡åž‹

  • 适用场景: 与 LocalAI, api-for-open-llm等项目一起使用

  • 如何æ“作: 以LocalAI为例,如果已在 http://localhost:8080 部署了LocalAIæœåŠ¡ï¼Œä»…éœ€åœ¨çŽ¯å¢ƒå˜é‡æˆ– .env 文件中设置 FORWARD_CONFIG=[{"base_url":"http://localhost:8080","route":"/localai","type":"openai"}]。 ç„¶åŽå³å¯é€šè¿‡è®¿é—® http://localhost:8000/localai 使用LocalAI。

(更多)

代ç†ä»»æ„云端模型

代ç†gemini pro

é…置环境å˜é‡æˆ– .env 文件如下:

FORWARD_CONFIG=[{"base_url":"https://generativelanguage.googleapis.com","route":"/gemini","type":"general"}]

说明:aidf runå¯åЍåŽï¼Œå³å¯é€šè¿‡è®¿é—® http://localhost:8000/gemini 使用gemini pro。

  • 场景1: 使用通用转å‘,å¯å¯¹ä»»æ„æ¥æºæœåŠ¡è¿›è¡Œè½¬å‘, å¯èŽ·å¾—è¯·æ±‚é€ŸçŽ‡æŽ§åˆ¶ä¸Žtoken速率控制;但通用转å‘䏿”¯æŒè‡ªå®šä¹‰ç§˜é’¥.

  • 场景2: å¯é€šè¿‡ LiteLLM å¯ä»¥å°† 众多云模型的 API æ ¼å¼è½¬æ¢ä¸º openai çš„apiæ ¼å¼ï¼Œç„¶åŽä½¿ç”¨openai风格转å‘

(更多)

é…ç½®

执行 aifd run --webui 进入é…ç½®é¡µé¢ (默认æœåŠ¡åœ°å€ http://localhost:8001)

ä½ å¯ä»¥åœ¨é¡¹ç›®çš„è¿è¡Œç›®å½•下创建 .env 文件æ¥å®šåˆ¶å„项é…置。å‚考é…ç½®å¯è§æ ¹ç›®å½•下的 .env.example文件

智能缓存

å¼€å¯ç¼“å­˜åŽï¼Œå°†ä¼šå¯¹æŒ‡å®šè·¯ç”±çš„内容进行缓存,其中转å‘类型分别为openai与general两者行为略有ä¸åŒï¼Œ 使用generalè½¬å‘æ—¶ï¼Œé»˜è®¤ä¼šå°†ç›¸åŒçš„请求一律使用缓存返回,
使用openaiè½¬å‘æ—¶ï¼Œåœ¨å¼€å¯ç¼“å­˜åŽï¼Œå¯ä»¥é€šè¿‡OpenAI çš„extra_body傿•°æ¥æŽ§åˆ¶ç¼“存的行为,如

Python

  from openai import OpenAI 
  client = OpenAI(
+     base_url="https://smart.openai-forward.com/v1", 
      api_key="sk-******"
  )
  completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
      {"role": "user", "content": "Hello!"}
    ],
+   extra_body={"caching": True}
)

Curl

curl https://smart.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-******" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Hello!"}],
    "caching": true
  }'

自定义秘钥

Click for more details

è§.env文件

用例:

  import openai
+ openai.api_base = "https://api.openai-forward.com/v1"
- openai.api_key = "sk-******"
+ openai.api_key = "fk-******"

多目标æœåŠ¡è½¬å‘

支æŒè½¬å‘ä¸åŒåœ°å€çš„æœåŠ¡è‡³åŒä¸€ç«¯å£çš„ä¸åŒè·¯ç”±ä¸‹ ç”¨ä¾‹è§ .env.example

å¯¹è¯æ—¥å¿—

Click for more details

ä¿å­˜è·¯å¾„在当å‰ç›®å½•下的Log/openai/chat/chat.log路径中。
记录格å¼ä¸º

{'messages': [{'role': 'user', 'content': 'hi'}], 'model': 'gpt-3.5-turbo', 'stream': True, 'max_tokens': None, 'n': 1, 'temperature': 1, 'top_p': 1, 'logit_bias': None, 'frequency_penalty': 0, 'presence_penalty': 0, 'stop': None, 'user': None, 'ip': '127.0.0.1', 'uid': '2155fe1580e6aed626aa1ad74c1ce54e', 'datetime': '2023-10-17 15:27:12'}
{'assistant': 'Hello! How can I assist you today?', 'is_tool_calls': False, 'uid': '2155fe1580e6aed626aa1ad74c1ce54e'}

转æ¢ä¸ºjsonæ ¼å¼ï¼š

aifd convert

得到chat_openai.json:

[
    {
        "datetime": "2023-10-17 15:27:12",
        "ip": "127.0.0.1",
        "model": "gpt-3.5-turbo",
        "temperature": 1,
        "messages": [
            {
                "user": "hi"
            }
        ],
        "tools": null,
        "is_tool_calls": false,
        "assistant": "Hello! How can I assist you today?"
    }
]

贡献

欢迎通过æäº¤æ‹‰å–请求或在仓库中æå‡ºé—®é¢˜æ¥ä¸ºæ­¤é¡¹ç›®åšå‡ºè´¡çŒ®ã€‚

许å¯è¯

OpenAI-Forward 采用 MIT 许å¯è¯ã€‚

About

🚀 å¤§è¯­è¨€æ¨¡åž‹é«˜æ•ˆè½¬å‘æœåŠ¡ · An efficient forwarding service designed for LLMs. · OpenAI API Reverse Proxy

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  
0