ç®€ä½“ä¸æ–‡ | English
特点 | éƒ¨ç½²æŒ‡å— | ä½¿ç”¨æŒ‡å— | é…ç½® | å¯¹è¯æ—¥å¿—
Important
在v0.7.0以åŽåœ¨é…置方é¢ä¼šæœ‰è¾ƒå¤§è°ƒæ•´ï¼Œå¹¶ä¸Žä¹‹å‰ç‰ˆæœ¬ä¸å…¼å®¹ã€‚通过UIé…置起æ¥ä¼šæ›´åŠ æ–¹ä¾¿ï¼Œä¸”æä¾›äº†æ›´å¼ºå¤§çš„é…置选项。
OpenAI-Forward 是为大型è¯è¨€æ¨¡åž‹å®žçŽ°çš„é«˜æ•ˆè½¬å‘æœåŠ¡ã€‚å…¶æ ¸å¿ƒåŠŸèƒ½åŒ…æ‹¬ 用户请求速率控制ã€Token速率é™åˆ¶ã€æ™ºèƒ½é¢„测缓å˜ã€æ—¥å¿—管ç†å’ŒAPI密钥管ç†ç‰ï¼Œæ—¨åœ¨æä¾›é«˜æ•ˆã€ä¾¿æ·çš„æ¨¡åž‹è½¬å‘æœåŠ¡ã€‚ æ— è®ºæ˜¯ä»£ç†æœ¬åœ°è¯è¨€æ¨¡åž‹è¿˜æ˜¯äº‘端è¯è¨€æ¨¡åž‹ï¼Œå¦‚ LocalAI 或 OpenAI,都å¯ä»¥ç”± OpenAI Forward è½»æ¾å®žçŽ°ã€‚ 得益于 uvicorn, aiohttp, å’Œ asyncio ç‰åº“支æŒï¼ŒOpenAI-Forward å®žçŽ°äº†å‡ºè‰²çš„å¼‚æ¥æ€§èƒ½ã€‚
- 🎉🎉🎉 v0.7.0ç‰ˆæœ¬åŽæ”¯æŒé€šè¿‡WebUI进行é…置管ç†
- gpt-1106版本已适é…
- 缓å˜åŽç«¯åˆ‡æ¢ä¸ºé«˜æ€§èƒ½æ•°æ®åº“åŽç«¯ï¼šðŸ—² FlaxKV
- 全能转å‘:å¯è½¬å‘å‡ ä¹Žæ‰€æœ‰ç±»åž‹çš„è¯·æ±‚
- æ€§èƒ½ä¼˜å…ˆï¼šå‡ºè‰²çš„å¼‚æ¥æ€§èƒ½
- 缓å˜AI预测:对AI预测进行缓å˜ï¼ŒåŠ é€ŸæœåŠ¡è®¿é—®å¹¶èŠ‚çœè´¹ç”¨
- 用户æµé‡æŽ§åˆ¶ï¼šè‡ªå®šä¹‰è¯·æ±‚速率与Token速率
- 实时å“应日志:æå‡LLMså¯è§‚察性
- 自定义秘钥:替代原始API密钥
- å¤šç›®æ ‡è·¯ç”±ï¼šè½¬å‘多个æœåŠ¡åœ°å€è‡³åŒä¸€æœåŠ¡ä¸‹çš„ä¸åŒè·¯ç”±
- 黑白åå•:å¯å¯¹æŒ‡å®šIP进行黑白åå•é™åˆ¶
- 自动é‡è¯•ï¼šç¡®ä¿æœåŠ¡çš„ç¨³å®šæ€§ï¼Œè¯·æ±‚å¤±è´¥æ—¶å°†è‡ªåŠ¨é‡è¯•
- 快速部署:支æŒé€šè¿‡pipå’Œdocker在本地或云端进行快速部署
由本项目æå»ºçš„ä»£ç†æœåŠ¡åœ°å€:
-
原始OpenAI æœåŠ¡åœ°å€
https://api.openai-forward.com
https://render.openai-forward.com -
å¼€å¯ç¼“å˜çš„æœåŠ¡åœ°å€ï¼ˆç”¨æˆ·è¯·æ±‚结果将被ä¿å˜ä¸€æ®µæ—¶é—´ï¼‰
👉 部署文档
安装
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)
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 许å¯è¯ã€‚