首页 AI 使用 LangChain 开发 LLM 应用 01:Jupyter 环境搭建

使用 LangChain 开发 LLM 应用 01:Jupyter 环境搭建

0 509

工欲善其事,必先利其器。我们会从学习环境的搭建开始这个系列。

Jupyter 是一种交互式笔记本,可以支持多种语言。就我们现在的学习而言,我们所需的是 Python 的执行能力。我们可以把它理解成可以运行 Python 代码的 Web 笔记本应用。它可以直接运行穿插在 Markdown 文件中的 Python 代码,得到代码执行的结果。这对于我们的学习非常有帮助。

现在,我们首先来搭建 Jupyter 环境。

安装 Miniconda

在开始 Jupyter 环境搭建之前,首先,我们需要准备一个 Python 的运行环境。这里,我们选择使用 Miniconda。Conda 是一个用于管理 Python 虚拟环境的工具,可以方便地安装、运行、更新 Python 以及 Python 的软件包。Miniconda 是 Conda 的一个简化版本。比起完整的 Anaconda,Miniconda 功能一致,但是预安装的包更少,因此占用空间更小。这些特点使 Miniconda 成为只需要基本的 Python 环境和工具的用户的一个很好的选择。

Miniconda 的安装包可以在这个页面找到。按照操作系统选择对应的安装包之后,双击运行开始安装。

点击下一步 Next。

这里需要同意协议,点击“I Agree”,来到下一步。

Miniconda 可以安装给自己或者所有用户。如果给所有用户安装,则需要管理员权限。根据自己的需要进行选择,之后点击下一步。

这里需要选择 Miniconda 安装目录。我们可以考虑安装到 C 盘以外的磁盘。选择完毕之后,点击下一步。

下面需要选择一些安装选项,其中,

  • Create shortcuts:创建快捷方式;
  • Add Miniconda3 to my PATH environment variable:将 Miniconda 添加到环境变量,官方给出的建议是不推荐(NOT recommended);
  • Register Miniconda3 as my default Python 3.12:将 Miniconda3 注册为默认 Python 环境;
  • Clear the package cache upon completion:安装完毕后清理安装包缓存。

根据自己的需要选择,然后点击安装 Install。

下面开始安装,可能需要一段时间,但不会太长。

安装完毕,点击下一步。

取消勾选 Welcome to Anaconda,结束安装。安装完毕之后,开始菜单中会出现 Miniconda 的菜单项。

其中,第一个 Anaconda Powershell Prompt 是在 PowerShell 中打开;第二个则是在 CMD 中打开。这里个人比较喜欢 PowerShell ,所以点击第一个。

这里我们看到,最前面有个(base),表示当前处于 base 环境。前面说过,Conda 用于管理 Python 虚拟环境。base 环境作为 Conda 自己所在环境,一般不会在 base 环境中安装其它包。所以,现在我们创建一个新的环境。创建环境的命令如下:

conda create -n llm

即创建一个新的虚拟环境,该环境名为llm。创建完之后,使用

conda env list

获取已有环境列表,执行结果如下:

这里一共有两行:第一列是环境名字,第二列是该环境所在的目录。可以看到,现在我们有两个虚拟环境:base 和 llm;其中,base 位于 Miniconda 安装目录,llm 位于 Miniconda 安装目录下的 envs 文件夹。除了 base 环境,我们新建的所有环境,都会在这个目录中。目录列前面的*表示当前所在环境。现在,我们当前所在环境是 base。接下来,我们要切换到新建的 llm 环境,使用命令

conda activate llm

即激活 llm 环境。再使用conda env list查看一下:

可以看到,*已经到了 llm 环境,而命令行的前面也变成了(llm),说明我们的环境已经成功切换到了 llm。

Conda 就是使用这种机制:为每个虚拟环境创建一个独立的文件夹,获得彼此独立的多个环境。由于每个环境位于不同目录,所以这些环境之间是没有任何影响的。这意味着,当在环境 A 中安装了某些包之后,环境 B 是没有的。由此通过冗余的磁盘空间换取独立的虚拟环境。

Conda 默认的服务器可能比较慢,我们可以修改为国内镜像服务器,以便加快下载速度。使用下面的命令创建配置文件:

conda config --add channels conda-forge

没有出错的话,会在用户目录下生成一个 .condarc 文件。Windows 平台是 C:\Users\<用户名> 目录,Linux/Unix/Mac 平台则是 ~ 目录。用文本编辑器打开 .condarc 文件,修改如下:

channels:
  - conda-forge
  - defaults
show_channel_urls: true
default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/

然后运行

conda clean -i

清空索引缓存即可。

值得注意的是,配置 conda 服务器镜像地址是全局的,并不与虚拟环境相关,即不需要为每一个环境单独设置。

安装 Jupyter

接下来,我们开始安装 Jupyter 笔记本应用。

conda install python jupyter notebook

等待 Conda 处理过依赖之后,需要直接按下回车或 y 键确认安装。

等待安装完毕之后,输入python,进入 Python 交互环境,然后输入下面的命令。

python
from jupyter_server.auth import passwd;
passwd() # 该命令输入两遍密码后,会生成散列后的字符串,该字符串需要复制保存下来
quit() # 退出 python 环境

接着使用下面的命令

jupyter notebook --generate-config

用于生成 Jupyter 配置文件,位置会在命令返回中显示。

使用文本编辑器打开生成的配置文件,按照下面的说明进行修改。

# 允许任何来源的请求
# 如果在服务器运行,则需要配置,否则不需要
# c.ServerApp.allow_origin = '*'

# 允许远程访问
# 如果在服务器运行,则需要配置,否则不需要
# c.ServerApp.allow_remote_access = True

# jupyter notebook所在主机IP地址
# 如果在服务器运行,则需要配置,否则不需要
# c.ServerApp.ip = 'localhost'

# 生成项目文件的保存路径,注意 Windows 平台下需要使用 / 作为路径分隔符
c.ServerApp.root_dir = 'E:/jupyter'

# 本地浏览器打开(关闭)
# 如果在服务器运行,则需要配置,否则不需要
# c.ServerApp.open_browser = False

# 配置密码时生成的字符串写入进去
# 文件中 c.ServerApp.password 已经被废弃了,按照下面配置
# 配置过后,在打开 Jupyter 后需要输入密码,如果不需要配置密码,则不要修改该配置
c.PasswordIdentityProvider.hashed_password = 'hashed_password'

# 服务器端本地IP访问端口设置(不是公网地址端口)
# 如果在服务器运行,则需要配置,否则不需要
# c.ServerApp.port = 8888

该文件是一个 Python 文件,所以应该符合 Python 的语法,否则会报错。注意上面代码中的说明,有些配置是在服务器运行 Jupyter 时所需要的,本地运行并不需要。修改完毕保存之后,使用命令

jupyter notebook

启动 Jupyter。如果上面没有配置c.ServerApp.open_browserFalse,则应该自动打开浏览器。当显示如下页面,表示安装成功。

Jupyter 的基本使用

现在,Jupyter 的页面是英文的,让我们修改为中文显示。回到之前的 Conda 环境,输入下面的命令

pip install jupyterlab-language-pack-zh-CN

重新运行 Jupyter,可以看到已经有中文选项了。

点击菜单项,会询问是否切换语言,确定之后,浏览器会自动刷新。此时,Jupyter 的界面就变成中文的了。

下面我们试着创建一篇笔记。点击“新建”按钮,可以看到,我们可以创建几种类型的笔记。首先我们选择使用 Python 3 (ipyternel) 内核,看看 Jyputer 能干什么。

点击选择内核之后,浏览器弹出新的 tab 页面。

整篇文档以块的形式组织。每个块都有自己的类型,这些类型可以在上面的下拉菜单中修改。右侧是使用的内核,可以看到我们选择的是 Python 3。内核意味着,这篇文档中的代码块都可以使用这个内核运行。这里就是 Python。下面我们试一下。

首先在第一个代码块输入

print("hello, world")

然后点击工具栏的“运行”按钮,或者使用快捷键 Shift + Enter,代码块下面会出现运行结果。这就是 Jupyter 的强大之处,它可以直接在笔记中运行 Python 代码,并且输出结果。可以把它理解为一个简单的 Python 代码编辑器,但它更适合学习。接下来,在新出现的第二个代码块中输入一段 Markdown:

# hello

别忘了把代码块类型改为 Markdown,然后运行这个代码块。

这段 Markdown 经过运行之后,渲染成 HTML 显示出来。双击生成结果,或者选中之后点击回车,即可继续编辑。

下面我们看另外的两个命令。

%dir
!dir

dir是 Windows PowerShell 的命令,类似于 Linux 平台的 ls,用于输出当前目录中的所有文件。第一个命令%dir报错:%dir没有找到。这是因为,所有以%开头的命令,都是 Jupyter 的魔法命令(magic commands)。魔法命令就是 Jupyter 能够执行的一系列特殊命令,并不一定是 shell 命令。Jupyter 提供了大量魔法命令,可以使用%lsmagic查看全部魔法命令。第二个命令!dir,则是将!后面的命令,直接发送给 Jupyter 所在 shell 去执行。了解了这一区别,才能理解,有时候在网上看到别人分享的 Jupyter 学习笔记,有的会使用%pip,有的会使用!pip,看起来是一样的,其实是因为 Jupyter 自己实现了%pip命令。而且也能够理解为什么下面的输出会有不同:

这是因为 Jupyter 实现了%ls魔法命令,而 Windows 下并没有ls命令。

可以在这里查看 Jupyter 提供的所有魔法命令。

能够在 Jupyter 中使用 shell 命令是很重要的,这意味着我们有了安装 Python 依赖包的能力。下面将演示这一点。

matplotlib 是一个 Python 库,它可以进行 2D 绘图,功能强大。比如在代码块中使用下面的代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 200)
y = np.sin(x)

fig, ax = plt.subplots()
ax.plot(x, y)
plt.show()

但这段代码执行会报错:因为 Jupyter 运行环境中并没有安装 matplotlib,正如报错信息最后一行所示。我们知道,Python 包可以使用 pip命令安装,那么,如果能够在环境中事先安装好 matplotlib,不就可以了?所以,我们在这段代码的上面添加上安装的命令,再来试一下。

这里需要注意的是,在执行耗时的任务时,Jupyter 的界面不会有明显的反馈,不能很好的分辨任务是否完成。这时我们可以通过右上角的圆点查看内核的状态:当圆点是黑色时,说明内核忙碌。安装完毕之后,再次运行上面的代码,即可看到运行结果。

注意到,Jupyter 的 Python 内核为 ipykernel。当我们有多个 Conda 虚拟环境时,有时会希望,Jupyter 直接使用 Conda 虚拟环境中的 Python。这样就能直接使用 Conda 中安装的包了。要达到这一目的,我们可以在 Conda 中安装 ipynernel:

conda install -c ipynernel

然后使用下面的命令:

python -m ipykernel install --user --name=llm --display-name="Python 3 (llm)"

其中,--name是 Conda 虚拟环境的名字,--display-name是 Jupyter 内核下拉菜单中显示的名字。

现在,我们已经使用 Conda 创建好 Python 虚拟环境,安装了交互式笔记应用 Jupyter,介绍了 Jupyter 的基本使用。下面,我们将真正开始 LangChain 的开发学习。

发表评论

关于我

devbean

devbean

豆子,生于山东,定居南京。毕业于山东大学软件工程专业。软件工程师,主要关注于 Qt、Angular 等界面技术。

主题 Salodad 由 PenciDesign 提供 | 静态文件存储由又拍云存储提供 | 苏ICP备13027999号-2