Basaran 是 OpenAI 文字完成 API 的開源替代品。它為基於 Hugging Face Transformers 的文本生成模型提供相容的流 API。
開源社群最終將見證大型語言模型(LLM)的穩定擴散時刻,Basaran 允許您用最新的開源模型替換 OpenAI 的服務,為您的應用程式提供動力,而無需修改一行程式碼。
巴薩蘭的主要特徵是:
將user/repo
替換為您選擇的型號,將XYZ
替換為最新版本,然後運行:
docker run -p 80:80 -e MODEL=user/repo hyperonym/basaran:X.Y.Z
你就可以出發了!
Playground: http://127.0.0.1/
API: http://127.0.0.1/v1/completions
Docker 映像可在 Docker Hub 和 GitHub Packages 上取得。
對於GPU加速,您還需要安裝NVIDIA驅動程式和NVIDIA容器執行時間。 Basaran的鏡像已經自備了CUDA、cuDNN等相關函式庫,所以不需要手動安裝。
Basaran 的圖像可以透過三種方式使用:
MODEL="user/repo"
環境變量,首次啟動時可以從Hugging Face Hub下載對應的模型。MODEL
環境變數指向對應的路徑。對於上述用例,您可以在部署目錄中找到範例 Dockerfile 和 docker-compose 檔案。
Basaran 在 Python 3.8+ 和 PyTorch 1.13+ 上進行了測試。您應該使用要使用的 Python 版本來建立虛擬環境,並在繼續之前啟動它。
pip
安裝: pip install basaran
pip install accelerate bitsandbytes
user/repo
替換為所選模型並運行 Basaran: MODEL=user/repo PORT=80 python -m basaran
有關環境變數的完整列表,請參閱__init__.py
。
如果您想存取最新功能或自己破解它,您可以選擇使用git
從原始碼運行。
git clone https://github.com/hyperonym/basaran.git && cd basaran
pip install -r requirements.txt
user/repo
替換為所選模型並運行 Basaran: MODEL=user/repo PORT=80 python -m basaran
Basaran的HTTP請求和回應格式與OpenAI API一致。
以文字補全為例:
curl http://127.0.0.1/v1/completions
-H ' Content-Type: application/json '
-d ' { "prompt": "once upon a time,", "echo": true } '
{
"id" : " cmpl-e08c701b4ba032c09ef080e1 " ,
"object" : " text_completion " ,
"created" : 1678003509 ,
"model" : " bigscience/bloomz-560m " ,
"choices" : [
{
"text" : " once upon a time, the human being faces a complicated situation and he needs to find a new life. " ,
"index" : 0 ,
"logprobs" : null ,
"finish_reason" : " length "
}
],
"usage" : {
"prompt_tokens" : 5 ,
"completion_tokens" : 21 ,
"total_tokens" : 26
}
}
如果您的應用程式使用 OpenAI 提供的客戶端程式庫,則只需修改OPENAI_API_BASE
環境變數以符合 Basaran 的端點:
OPENAI_API_BASE= " http://127.0.0.1/v1 " python your_app.py
範例目錄包含使用 OpenAI Python 函式庫的範例。
Basaran 也可以作為 PyPI 上的函式庫使用。它可以直接在Python中使用,無需啟動單獨的API伺服器。
pip
安裝: pip install basaran
load_model
函數載入模型: from basaran . model import load_model
model = load_model ( "user/repo" )
for choice in model ( "once upon a time" ):
print ( choice )
範例目錄包含使用 Basaran 作為函式庫的範例。
Basaran的API格式與OpenAI一致,相容性上的差異主要體現在參數支援和回應欄位。以下部分提供有關每個端點相容性的詳細資訊。
每個 Basaran 進程僅服務一個模型,因此結果將僅包含該模型。
儘管 Basaran 不支援model
參數,但 OpenAI 客戶端程式庫要求它存在。因此,您可以輸入任意隨機型號名稱。
範圍 | 巴薩蘭 | 開放人工智慧 | 預設值 | 最大值 |
---|---|---|---|---|
model | ○ | ● | - | - |
prompt | ● | ● | "" | COMPLETION_MAX_PROMPT |
suffix | ○ | ● | - | - |
min_tokens | ● | ○ | 0 | COMPLETION_MAX_TOKENS |
max_tokens | ● | ● | 16 | COMPLETION_MAX_TOKENS |
temperature | ● | ● | 1.0 | - |
top_p | ● | ● | 1.0 | - |
n | ● | ● | 1 | COMPLETION_MAX_N |
stream | ● | ● | false | - |
logprobs | ● | ● | 0 | COMPLETION_MAX_LOGPROBS |
echo | ● | ● | false | - |
stop | ○ | ● | - | - |
presence_penalty | ○ | ● | - | - |
frequency_penalty | ○ | ● | - | - |
best_of | ○ | ● | - | - |
logit_bias | ○ | ● | - | - |
user | ○ | ● | - | - |
目前提供統一的聊天 API 很困難,因為每個模型都有不同的聊天歷史記錄格式。
因此,建議根據具體模型的需求預先格式化聊天記錄,並將其作為完成API的提示。
**Summarize a long document into a single sentence and ...**
<human>: Last year, the travel industry saw a big ...
<bot>: If you're traveling this spring break, ...
<human>: But ...
<bot>:
[Round 0]
问:你好
答:你好!有什么我可以帮助你的吗?
[Round 1]
问:你是谁?
答:
請參閱未解決的問題以取得建議功能的完整清單。
該專案是開源的。如果您有任何想法或問題,請隨時透過建立問題來聯繫!
非常感謝您的貢獻,請參閱 CONTRIBUTING.md 以了解更多資訊。
Basaran 可在 MIT 授權下使用。
© 2023 Hyperonym 版權所有