EasyLLM -
EasyLLM是一个开源项目,为开源和闭源的大型语言模型(LLMs)提供有用的工具和方法。立即开始使用或查看文档。
EasyLLM实现了与OpenAI的Completion API兼容的客户端。这意味着你可以通过更改一行代码,轻松地将openai.ChatCompletion
、openai.Completion
、openai.Embedding
替换为huggingface.ChatCompletion
、huggingface.Completion
或huggingface.Embedding
。
支持的客户端
huggingface
- HuggingFace模型huggingface.ChatCompletion
- 与LLMs聊天huggingface.Completion
- 使用LLMs进行文本补全huggingface.Embedding
- 使用LLMs创建嵌入
sagemaker
- 部署在Amazon SageMaker上的开放LLMssagemaker.ChatCompletion
- 与LLMs聊天sagemaker.Completion
- 使用LLMs进行文本补全sagemaker.Embedding
- 使用LLMs创建嵌入
bedrock
- Amazon Bedrock LLMs
查看示例以开始使用。
🚀 快速开始
通过pip安装EasyLLM:
pip install easyllm
然后导入并开始使用客户端:
from easyllm.clients import huggingface
# 用于构建llama2提示的辅助函数
huggingface.prompt_builder = "llama2"
response = huggingface.ChatCompletion.create(
model="meta-llama/Llama-2-70b-chat-hf",
messages=[
{"role": "system", "content": "\n你是一个像海盗一样说话的有帮助的助手。啊哈!"},
{"role": "user", "content": "太阳是什么?"},
],
temperature=0.9,
top_p=0.6,
max_tokens=256,
)
print(response)
结果将如下所示:
{
"id": "hf-lVC2iTMkFJ",
"object": "chat.completion",
"created": 1690661144,
"model": "meta-llama/Llama-2-70b-chat-hf",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": " 啊哈,太阳是天空中的一个大火球,我的好伙计!它是我们美丽星球的光和热的来源,是一股强大的力量,明白吗?没有太阳,我们就会在黑暗中航行,迷失而寒冷,所以让我们为太阳欢呼一声"呀呼!",我的好伙计们!啊哈!"
},
"finish_reason": null
}
],
"usage": {
"prompt_tokens": 111,
"completion_tokens": 299,
"total_tokens": 410
}
}
查看其他示例:
更多详细用法和示例,请参阅文档。
💪🏻 从OpenAI迁移到HuggingFace
从OpenAI迁移到HuggingFace很简单。只需更改导入语句和你想使用的客户端,以及可选的提示构建器。
- import openai
+ from easyllm.clients import huggingface
+ huggingface.prompt_builder = "llama2"
- response = openai.ChatCompletion.create(
+ response = huggingface.ChatCompletion.create(
- model="gpt-3.5-turbo",
+ model="meta-llama/Llama-2-70b-chat-hf",
messages=[
{"role": "system", "content": "你是一个有帮助的助手。"},
{"role": "user", "content": "敲敲门。"},
],
)
切换客户端时,请确保你的超参数仍然有效。例如,GPT-3的temperature
可能与Llama-2
的temperature
不同。
☑️ 主要特点
🤝 兼容的客户端
- 实现与OpenAI API格式兼容的客户端,包括
openai.ChatCompletion
、openai.Completion
、openai.Embedding
。 - 通过更改一行代码,轻松在不同的LLMs之间切换,如
openai.ChatCompletion
和huggingface.ChatCompletion
。 - 支持流式传输补全,查看示例如何流式传输补全。
⚙️ 辅助模块 ⚙️
-
evol_instruct
(正在开发中)- 使用进化算法为LLMs创建指令。 -
prompt_utils
- 辅助方法,用于轻松在提示格式之间转换,如将OpenAI消息转换为开源模型(如Llama 2)的提示。
🙏 贡献
EasyLLM是一个开源项目,欢迎各种形式的贡献。
该项目使用hatch进行开发。要开始贡献,请fork仓库并克隆到本地机器。
- 确认已安装hatch(pipx是一个很好的工具,可以在你的机器上全局使用它)
- 进入项目目录后,运行
hatch env create
创建默认的虚拟环境用于开发。 - 使用
hatch shell
激活虚拟环境 - 开始开发!🤩
📔 引用与致谢
如果你使用了EasyLLM,请在社交媒体或通过电子邮件与我分享。我很乐意听到你的反馈! 你也可以使用以下BibTeX引用该项目:
@software{Philipp_Schmid_EasyLLM_2023,
author = {Philipp Schmid},
license = {Apache-2.0},
month = juj,
title = {EasyLLM: 简化的LLMs工具},
url = {https://github.com/philschmid/easyllm},
year = {2023}
}