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 版权所有