LLM高效轉(zhuǎn)發(fā)服務(wù):OpenAI-Forward
發(fā)布日期:2024/7/10 8:50:47 瀏覽量:
LLM高效轉(zhuǎn)發(fā)服務(wù):OpenAI-Forward
OpenAI-Forward 是為大型語(yǔ)言模型實(shí)現(xiàn)的高效轉(zhuǎn)發(fā)服務(wù)。其核心功能包括 用戶請(qǐng)求速率控制、Token速率限制、智能預(yù)測(cè)緩存、日志管理和API密鑰管理等,旨在提供高效、便捷的模型轉(zhuǎn)發(fā)服務(wù)。無論是代理本地語(yǔ)言模型還是云端語(yǔ)言模型,如 LocalAI 或 OpenAI,都可以由 OpenAI Forward 輕松實(shí)現(xiàn)。得益于 uvicorn, aiohttp, 和 asyncio 等庫(kù)支持,OpenAI-Forward 實(shí)現(xiàn)了出色的異步性能
主要特性
-
全能轉(zhuǎn)發(fā):可轉(zhuǎn)發(fā)幾乎所有類型的請(qǐng)求
-
性能優(yōu)先:出色的異步性能
-
緩存AI預(yù)測(cè):對(duì)AI預(yù)測(cè)進(jìn)行緩存,加速服務(wù)訪問并節(jié)省費(fèi)用
-
用戶流量控制:自定義請(qǐng)求速率與Token速率
-
實(shí)時(shí)響應(yīng)日志:提升LLMs可觀察性
-
自定義秘鑰:替代原始API密鑰
-
多目標(biāo)路由:轉(zhuǎn)發(fā)多個(gè)服務(wù)地址至同一服務(wù)下的不同路由
-
黑白名單:可對(duì)指定IP進(jìn)行黑白名單限制
-
自動(dòng)重試:確保服務(wù)的穩(wěn)定性,請(qǐng)求失敗時(shí)將自動(dòng)重試
-
快速部署:支持通過pip和docker在本地或云端進(jìn)行快速部署
由本項(xiàng)目搭建的代理服務(wù)地址:
-
原始OpenAI 服務(wù)地址
https://api.openai-forward.com
https://render.openai-forward.com -
開啟緩存的服務(wù)地址(用戶請(qǐng)求結(jié)果將被保存一段時(shí)間)
https://smart.openai-forward.com
注:此處部署的代理服務(wù)僅供個(gè)人學(xué)習(xí)和研究目的使用,勿用于任何商業(yè)用途。
部署指南
?? 部署文檔
使用指南
快速入門
安裝
pip install openai-forward # 或安裝webui版本:pip install openai-forward[webui]
啟動(dòng)服務(wù)
aifd run# 或啟動(dòng)帶webui的服務(wù)aifd run --webui
如果讀入了根路徑的.env的配置, 將會(huì)看到以下啟動(dòng)信息
? 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的默認(rèn)選項(xiàng)便是代理https://api.openai.com
下面以搭建好的服務(wù)地址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-******" )
代理本地模型
-
適用場(chǎng)景: 與 LocalAI, api-for-open-llm等項(xiàng)目一起使用
-
如何操作: 以LocalAI為例,如果已在 http://localhost:8080 部署了LocalAI服務(wù),僅需在環(huán)境變量或 .env 文件中設(shè)置 FORWARD_CONFIG=[{"base_url":"http://localhost:8080","route":"/localai","type":"openai"}]。然后即可通過訪問 http://localhost:8000/localai 使用LocalAI。
(更多)
代理任意云端模型
代理gemini pro
配置環(huán)境變量或 .env 文件如下:
FORWARD_CONFIG=[{"base_url":"https://generativelanguage.googleapis.com","route":"/gemini","type":"general"}]
說明:aidf run啟動(dòng)后,即可通過訪問 http://localhost:8000/gemini 使用gemini pro。
-
場(chǎng)景1: 使用通用轉(zhuǎn)發(fā),可對(duì)任意來源服務(wù)進(jìn)行轉(zhuǎn)發(fā), 可獲得請(qǐng)求速率控制與token速率控制;但通用轉(zhuǎn)發(fā)不支持自定義秘鑰.
-
場(chǎng)景2: 可通過 LiteLLM 可以將 眾多云模型的 API 格式轉(zhuǎn)換為 openai 的api格式,然后使用openai風(fēng)格轉(zhuǎn)發(fā)
(更多)
配置
執(zhí)行 aifd run --webui 進(jìn)入配置頁(yè)面 (默認(rèn)服務(wù)地址 http://localhost:8001)
你可以在項(xiàng)目的運(yùn)行目錄下創(chuàng)建 .env 文件來定制各項(xiàng)配置。參考配置可見根目錄下的 .env.example文件
智能緩存
開啟緩存后,將會(huì)對(duì)指定路由的內(nèi)容進(jìn)行緩存,其中轉(zhuǎn)發(fā)類型分別為openai與general兩者行為略有不同, 使用general轉(zhuǎn)發(fā)時(shí),默認(rèn)會(huì)將相同的請(qǐng)求一律使用緩存返回,
使用openai轉(zhuǎn)發(fā)時(shí),在開啟緩存后,可以通過OpenAI 的extra_body參數(shù)來控制緩存的行為,如
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})
多目標(biāo)服務(wù)轉(zhuǎn)發(fā)
支持轉(zhuǎn)發(fā)不同地址的服務(wù)至同一端口的不同路由下 用例見 .env.example
對(duì)話日志
保存路徑在當(dāng)前目錄下的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’}
轉(zhuǎn)換為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?" }]
項(xiàng)目鏈接
https://github.com/KenyonY/openai-forward
馬上咨詢: 如果您有業(yè)務(wù)方面的問題或者需求,歡迎您咨詢!我們帶來的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生