开始使用
欢迎来到 LazyLLM!
LazyLLM
是构建和优化多 Agent 应用的一站式开发工具,为应用开发过程中的全部环节(包括应用搭建、数据准备、模型部署、模型微调、评测等)提供了大量的工具,协助开发者用极低的成本构建 AI 应用,并可以持续地迭代优化效果。
环境准备
可以用以下任一方式搭建 LazyLLM
开发环境。
手动配置
LazyLLM
基于 Python 开发,我们需要保证系统中已经安装好了 Python
, Pip
和 Git
。
首先准备一个名为 lazyllm-venv
的虚拟环境并激活:
如果运行正常,你可以在命令行的开头看到 (lazyllm-venv)
的提示。接下来我们的操作都在这个虚拟环境中进行。
从 GitHub 下载 LazyLLM
的代码:
并切换到下载后的代码目录:
安装基础依赖:
把 LazyLLM
加入到模块搜索路径中:
这样我们在任意目录下都可以找到它。
拉取 Docker 镜像
我们提供了包含最新版本的 LazyLLM
的 docker 镜像,开箱即用:
也可以从 https://hub.docker.com/r/lazyllm/lazyllm/tags 查看并拉取需要的版本。
从 Pip 安装
LazyLLM
支持用 pip
直接安装,下面三种安装方式分别对应不同功能的使用
-
安装
LazyLLM
基础功能的最小依赖包。可以支持线上各类模型的微调和推理。 -
安装
LazyLLM
的所有功能最小依赖包。不仅支持线上模型的微调和推理,而且支持离线模型的微调(主要依赖LLaMA-Factory
)和推理(主要依赖vLLM
)。 -
安装
LazyLLM
的所有依赖包,所有功能以及高级功能都支持,比如自动框架选择(AutoFinetune
、AutoDeploy
等)、更多的离线推理工具(如增加LightLLM
等工具)、更多的离线训练工具(如增加AlpacaloraFinetune
、CollieFinetune
等工具)。
Hello, world!
为了让大家对 LazyLLM
有个初步的认识,我们基于下面提供的 平台 提供的对话功能,使用 LazyLLM
来实现一个聊天机器人。
首先如果没有对应平台的账号,就需要先在平台注册一个账号,然后根据下面平台对应的获取 API key 的链接获取所需要的key(注意:sensenova需要获取两个key),并设置对应的环境变量:
接着打开编辑器输入以下代码,保存为 chat.py
:
import lazyllm #(1)
chat = lazyllm.OnlineChatModule() #(2)
while True:
query = input("query(enter 'quit' to exit): ") #(3)
if query == "quit": #(4)
break
res = chat.forward(query) #(5)
print(f"answer: {res}") #(6)
最后运行我们的 demo:
当出现输入提示之后,输入我们的问题并回车,稍等一会就可以看到回答了。
我们来简单介绍一下这段代码的功能。
首先语句 1 引入了模块 lazyllm
,并且在语句 2 中生成了一个在线聊天服务的实例 chat
。接着我们进入一个无限循环,只有当接收到 "quit" 这个字符串才会退出(语句 4)。语句 3 打印输入提示,并把用户的输入保存在 query
这个变量中。语句 5 把用户的输入内容传给聊天模块,由聊天模块向日日新模型在线服务发送请求,并把日日新返回的回复保存在变量 res
中。语句 6 把收到的回复打印到屏幕上。
平台 | 获取 api key | 需要设置的环境变量 |
---|---|---|
日日新 | 获取访问密钥(ak and sk), 获取访问密钥(only api key) |
LAZYLLM_SENSENOVA_API_KEY ,LAZYLLM_SENSENOVA_SECRET_KEY |
OpenAI | 获取访问密钥 | LAZYLLM_OPENAI_API_KEY |
智谱 | 获取访问密钥 | LAZYLLM_GLM_API_KEY |
Kimi | 获取访问密钥 | LAZYLLM_KIMI_API_KEY |
通义千问 | 获取访问密钥 | LAZYLLM_QWEN_API_KEY |
豆包 | 获取访问密钥 | LAZYLLM_DOUBAO_API_KEY |
可以通过设置不同的环境变量来使用对应的平台。
注意
日日新平台可以使用两种方式配置 Key,一种是同时配置 ak (api key) 和 sk (secret key), 即需要同时配置 LAZYLLM_SENSENOVA_API_KEY
和 LAZYLLM_SENSENOVA_SECRET_KEY
两个变量。 一种是只需要配置api key, 即只需要配置 LAZYLLM_SENSENOVA_API_KEY
变量即可。
再多一点:多轮对话
上面的例子演示的是一问一答,每个问题都是新一轮的对话,不会接着前面的回答结果来继续推导。接下来我们稍加改动,让机器人支持多轮对话:
import lazyllm #(1)
chat = lazyllm.OnlineChatModule() #(2)
# history has the form of [[query1, answer1], [query2, answer2], ...]
history = [] #(7)
while True:
query = input("query(enter 'quit' to exit): ") #(3)
if query == "quit": #(4)
break
res = chat(query, llm_chat_history=history) #(5')
print(f"answer: {res}") #(6)
history.append([query, res]) #(8)
对应标号的语句和前面一问一答的版本一样,运行方式也一样。代码中不同的地方主要有下面这些:
- 语句 7 加了个
history
字段,用来保存对话的历史; - 语句 5' 传给远程服务器的内容,除了当前
query
外,还把历史内容history
也传进去了; - 语句 8 把本次对话的问答内容拼接到
history
之后。
使用 web 界面
LazyLLM
内建了一个 web 界面模块 WebModule
,方便快速搭建各类常见的应用:
WebModule
接受两个参数:用于对话的模块 chat
和作为 web server 监听的端口号 port
。调用成员函数 start()
启动成功之后,接着调用 wait()
阻塞等待用户在 web 界面上的操作。我们可以使用浏览器访问 http://localhost:23333,通过页面上的聊天机器人组件调用后台的大模型服务,LazyLLM
会将模型的返回结果展示在页面上。
注意
如果启动报错或者网页访问出错,请查看终端窗口的错误信息,检查是否端口被其它应用占用,或者启用了代理,或者被防火墙拦截等。
使用命令行工具
如果你是使用 pip
安装的 lazyllm
,并且保证python环境的bin
目录已经在$PATH
中,则你可以通过执行:
来快速启动一个对话机器人。如果你想使用本地模型,则需要用--model
参数指定模型名称,例如你可以用:
来启动基于本地模型的对话机器人。
以上就是 LazyLLM
的入门介绍,接下来的章节会从不同的方面来探索 LazyLLM
的强大功能。