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

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

0 1.1K

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

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