简而言之: 我们演示了如何使用autogen进行本地LLM应用。例如,我们将使用FastChat启动一个端点,并在ChatGLMv2-6b上进行推理。
准备工作
克隆 FastChat
FastChat为其支持的模型提供了与OpenAI兼容的API,因此您可以将FastChat用作OpenAI API的本地替代品。但是,为了使其正常工作,其代码需要进行一些小的修改。
git clone https://github.com/lm-sys/FastChat.git
cd FastChat
下载检查点
ChatGLM-6B 是一个基于通用语言模型(GLM)框架的开源双语语言模型,拥有62亿个参数。ChatGLM2-6B 是其第二代版本。
在从HuggingFace Hub下载之前,您需要安装Git LFS。
git clone https://huggingface.co/THUDM/chatglm2-6b
启动服务器
首先,启动控制器
python -m fastchat.serve.controller
然后,启动模型工作者
python -m fastchat.serve.model_worker --model-path chatglm2-6b
最后,启动 RESTful API 服务器
python -m fastchat.serve.openai_api_server --host localhost --port 8000
通常这会正常工作。然而,如果你遇到像这样的错误,注释掉fastchat/protocol/api_protocol.py
和fastchat/protocol/openai_api_protocol.py
中包含finish_reason
的所有行会解决问题。修改后的代码看起来像:
class CompletionResponseChoice(BaseModel):
index: int
text: str
logprobs: Optional[int] = None
# finish_reason: Optional[Literal["stop", "length"]]
class CompletionResponseStreamChoice(BaseModel):
index: int
text: str
logprobs: Optional[float] = None
# finish_reason: Optional[Literal["stop", "length"]] = None
使用 oai.Completion
(需要 openai<1)与模型交互
现在可以通过 openai-python 库以及 autogen.oai.Completion
和 autogen.oai.ChatCompletion
直接访问模型。
from autogen import oai
# create a text completion request
response = oai.Completion.create(
config_list=[
{
"model": "chatglm2-6b",
"base_url": "http://localhost:8000/v1",
"api_type": "openai",
"api_key": "NULL", # just a placeholder
}
],
prompt="Hi",
)
print(response)
# create a chat completion request
response = oai.ChatCompletion.create(
config_list=[
{
"model": "chatglm2-6b",
"base_url": "http://localhost:8000/v1",
"api_type": "openai",
"api_key": "NULL",
}
],
messages=[{"role": "user", "content": "Hi"}]
)
print(response)
如果您希望切换到不同的模型,请下载它们检查点并在启动模型工作器时指定模型路径。
与多个本地LLMs交互
如果您想在本地机器上与多个LLMs进行交互,请将上面的model_worker
步骤替换为多模型变体:
python -m fastchat.serve.multi_model_worker \
--model-path lmsys/vicuna-7b-v1.3 \
--model-names vicuna-7b-v1.3 \
--model-path chatglm2-6b \
--model-names chatglm2-6b
推理代码如下:
from autogen import oai
# create a chat completion request
response = oai.ChatCompletion.create(
config_list=[
{
"model": "chatglm2-6b",
"base_url": "http://localhost:8000/v1",
"api_type": "openai",
"api_key": "NULL",
},
{
"model": "vicuna-7b-v1.3",
"base_url": "http://localhost:8000/v1",
"api_type": "openai",
"api_key": "NULL",
}
],
messages=[{"role": "user", "content": "Hi"}]
)
print(response)
进一步阅读
- 文档关于
autogen
。 - Documentation 关于 FastChat。