对于任何一位想要深入了解大模型Agent(智能体),并应用到具体项目的读者,都需要使用编程语言来实现自己的设计意图。本书将使用Python语言作为开发语言。Python之所以在深度学习领域中被广泛采用,得益于许多第三方提供的集成了大量科学计算类库的Python标准安装包,其中最常用的便是Miniconda。
Python是一种脚本语言,如果不使用Miniconda,那么第三方库的安装就不太方便,同时各个库之间的依赖性也很难得到妥善处理。因此,为了简化安装过程并确保库之间的良好配合,推荐安装Miniconda来替代原生的Python语言安装。此外,我们还需要知道,目前大部分的大模型开发都依托于PyTorch。这是一种开源的深度学习框架,由人工智能研究团队开发,它提供了两个高级功能:
- 强大的GPU加速的张量计算(类似于NumPy)。
- 基于深度神经网络的自动求导系统。
PyTorch的主要特点是动态计算图,这意味着计算图可以在每个运行时刻动态改变,大大提高了模型的灵活性和效率。此外,PyTorch还提供了丰富的API,支持多种深度学习的模型和算法,并能够轻松地与其他Python库(如NumPy和SciPy)进行交互。
本章将引导读者完成Miniconda的完整安装,然后通过运行一个程序来验证PyTorch框架的安装。通过这个讲解,读者将能够初步掌握Qwen3的环境配置。
Python是一种使用广泛的高级编程语言,因简洁易读、语法灵活而受到众多开发者的青睐。它在数据科学、人工智能、Web开发等多个领域都有广泛应用。安装Python开发环境是进行后续智能体开发与项目学习的第一步。
为了方便开发和管理项目的依赖库,我们推荐使用虚拟环境来隔离不同项目的运行环境。本节将详细演示如何下载并安装稳定版本的Python解释器,并通过命令行工具完成安装配置;随后,创建一个简单的Python脚本文件,并运行输出“Hi Pycharm”,以验证开发环境是否搭建成功。
第一步:下载和安装
在Miniconda官网打开下载页面,如图2-1所示。
图2-1 Miniconda主页面
读者可以直接单击右侧的Download the .exe installer链接下载和安装最新版本的Mincoda,如图2-2所示。
图2-2 Miniconda下载页面
下载集成最新Python版本的Minconda,如图2-3所示。这里下载的是Python 3.12.4版本,读者可以根据自己的操作系统选择下载对应的版本。
图2-3 集成最新Python版本的Minconda安装
下载完成后得到的是EXE文件,直接运行即可进入安装过程。安装完成以后,出现如图2-4所示的目录结构,说明安装正确。
图2-4 Miniconda安装目录
第二步:打开控制台
在计算机桌面依次单击“开始”→“所有程序”→“Miniconda3”→“Miniconda Prompt (Miniconda3)”,打开Miniconda Prompt窗口,它与CMD控制台类似,输入命令就可以控制和配置Python。在Miniconda中最常用的是conda命令,该命令可以执行一些基本操作,读者可以在Miniconda Prompt窗口中自行测试一下这个命令。
第三步:验证Python
在Miniconda Prompt窗口中输入python,如果安装正确,会打印出Python版本号以及控制符号。在控制符号下输入代码:
print("hello Python")
输出结果如图2-5所示,说明Minicoda安装成功。
图2-5 Minicoda安装成功
第四步:使用pip命令
使用Miniconda的好处在于,它能够很方便地安装和使用大量第三方类库。在本书中,将使用pip命令安装第三方类库。查看已安装的第三方类库的命令如下:
pip list
结果如图2-6所示。
图2-6 列出已安装的第三方类库
在Miniconda中安装第三方类库的命令如下:
pip install name
这里的name是需要安装的第三方类库名,假设需要安装NumPy包(这个包已经安装过),那么输入的命令就是:
pip install numpy
这个安装过程略去,请读者自行验证。使用Miniconda的好处就是默认已安装好了大部分深度学习所需要的第三类库,避免了使用者在安装和使用某个特定类库时,可能出现的依赖类库缺失的情况。
在深度学习领域,PyTorch堪称一颗璀璨的明星,是常用的框架之一。它独有的动态计算图特性,让模型构建与调试更加灵活高效,能根据实际需求实时调整计算流程;其简洁易用的API设计,极大地降低了开发门槛,即使是初涉深度学习领域的新手,也能快速上手;再加上背后强大的社区支持。丰富的开源资源与活跃的技术交流氛围,为开发者提供了源源不断的助力。
本书聚焦讲解的Qwen3模型,在进行部署和微调操作时,同样需要借助PyTorch作为后端支持框架。PyTorch为Qwen3的高效运行和精准优化提供了坚实的技术基础。因此,为了能够顺利开展Qwen3的部署与微调工作,充分发挥其强大性能,我们有必要完成PyTorch的安装。
在具体使用上,PyTorch的安装分为CPU版与GPU版。对于PyTorch CPU版本的安装,我们可以使用如下命令(以PyTorch 2.6.0为例):
# CPU only
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cpu
而PyTorch GPU版本的安装则略为复杂,下面我们将主要讲解GPU版本的安装。
第一步:CUDA与cuDNN的安装
对于GPU版本的PyTorch来说,由于调用了NVIDIA显卡作为其代码运行的主要工具,因此额外需要NVIDIA提供的运行库作为运行基础。
我们选择使用CUDA 11.8版本的PyTorch进行讲解,读者可以登录PyTorch安装界面查阅其他支持的版本,如图2-7所示。
图2-7 PyTorch官网的安装提示
从页面上可以看到,针对Windows版本的PyTorch,官方提供了几种安装模式,分别对应CUDA 11.8、CUDA 12.6、CUDA 12.8和CPU。读者可以单击不同的标签选择对应的安装方式。下面主要讲解CUDA 11.8+cuDNN 8.9的安装方法。
首先是CUDA的安装。在搜索页面我们可以搜索CUDA 11.8 download,进入官方下载页面,选择适合的操作系统安装方式(推荐使用exe(local)本地化安装方式),如图2-8所示。
图2-8 CUDA下载页面
此时下载下来的是一个EXE文件,读者自行安装,不要修改其中的路径信息,完全使用默认路径安装即可。
下载和安装对应的cuDNN文件。要下载cuDNN,需要先注册,相信读者可以很快完成,之后直接进入下载页面,如图2-9所示。
注意:cuDNN一定要找到对应CUDA 11.8的版本来下载,不要选择错误的版本。
图2-9 cuDNN 8.9下载页面
下载的cuDNN是一个压缩文件,将它解压并把所有的目录复制到CUDA安装主目录中(直接覆盖原来的目录即可)。CUDA安装主目录如图2-10所示。
图2-10 CUDA安装主目录
确认PATH环境变量,这里需要将CUDA的运行路径加载到环境变量的PATH路径中。安装CUDA时,安装向导能自动加入这个环境变量值,确认一下即可,如图2-11所示。
第二步:PyTorch的安装与验证
下面继续完成PyTorch GPU版本的安装,我们选择PyTorch 2.6.0版本进行讲解。只需在Miniconda Prompt窗口中执行PyTorch安装命令即可。
# CUDA 11.8
pip install torch==2.6.0 torchvision==0.21.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu118
下面使用PyTorch做一个小练习。打开Miniconda Prompt窗口,执行python命令并依次输入如下命令,验证安装是否成功。
import torch
result = torch.tensor(1) + torch.tensor(2.0)
result
结果如图2-12所示。至此,我们成功搭建了PyTorch开发环境。
图2-11 将CUDA路径加载到环境变量PATH中
图2-12 验证安装是否成功
最终结果请读者自行验证。
和其他语言类似,Python程序的编写可以使用Windows自带的编辑器,但是这种方式对于较为复杂的程序工程来说,容易混淆相互之间的层级和交互文件。因此,在编写程序工程时,我们可以使用专用的Python编译器PyCharm。
第一步:PyCharm的下载和安装
进入PyCharm官网的Download页面,选择不同的版本,如图2-13所示。PyCharm有收费的专业版和免费的社区版,这里建议读者选择免费的社区版即可。
图2-13 PyCharm的免费版
下载PyCharm安装文件后,双击运行进入安装界面,如图2-14所示。直接单击Next按钮,采用默认安装即可。
图2-14 PyCharm的安装文件
在安装PyCharm的过程中需要对安装的参数进行选择,如图2-15所示,这里建议直接使用默认安装即可。
图2-15 PyCharm的配置选择(按个人真实情况选择)
安装完成后出现Finish按钮,单击该按钮完成安装,如图2-16所示。最后将在桌面上显示一个PyCharm程序图标
,双击该图标即可运行PyCharm。
图2-16 PyCharm安装完成
第二步:使用PyCharm创建程序
单击桌面上新生成的
图标进入PyCharm程序界面。由于是第一次启动PyCharm,需要接受相关的协议,在勾选界面下方的复选框后单击Continue按钮,进行下一步操作。因为操作比较简单,这里就不截图了。
进入PyCharm工程创建界面创建新的项目,可以直接创建一个新项目(New Project),或者打开一个已有的项目文件夹(Open),如图2-17所示。
图2-17 PyCharm工程创建界面
这里单击New Project按钮创建一个新项目,下面就是配置Python环境路径,填写好python.exe地址后(就是2.1.1节安装的C:\miniconda3目录下的python.exe),如图2-18所示。单击Create按钮,将在PyCharm项目管理目录PycharmProjects下面创建一个新项目。
图2-18 PyCharm新建文件界面
对于创建的新项目,PyCharm默认提供了一个测试程序main.py,内容如图2-19所示。
图2-19 PyCharm工程运行界面
选中main.py,单击菜单栏中的Run|run…运行代码,或者直接右击main.py文件名,在弹出的快捷菜单中选择run命令。如果成功,将输出“Hi, PyCharm”,如图2-20所示。
图2-20 运行成功
至此,我们初步完成了Qwen3开发环境的配置。
前面已经完成了Qwen3开发环境的配置,本节将介绍本地化Qwen3的下载与基础使用。要使用大模型做应用开发,就不得不提及ModelScope(魔搭社区)。它是由阿里巴巴达摩院推出的开源AI模型共享平台,致力于为开发者、研究人员和企业提供一站式的模型服务。该平台汇聚了大量高质量的人工智能模型,涵盖自然语言处理、计算机视觉、语音识别等多个技术方向,满足不同行业和场景下的应用需求。用户不仅可以在这里轻松查找、下载所需的模型,还可以通过平台提供的在线推理、模型训练及部署工具,快速实现模型的测试与应用落地。
ModelScope提供了丰富的预训练模型、数据集和工具,支持多种任务和应用场景,如自然语言处理、计算机视觉、语音识别等。ModelScope模型库首页如图2-21所示。
图2-21 ModelScope模型库首页
ModelScope主要提供了三大功能:模型库、数据集和创空间(Studio)。
1. 模型库
模型库汇集了各领域最先进的机器学习模型,包括自然语言处理、计算机视觉、语音识别等。用户可以在平台上发现和探索这些模型,了解其特性和性能,如图2-21所示。
2. 数据集
数据集是方便共享及访问的数据集合,可用于算法训练、测试、验证,通常以表格形式出现,按照模态可划分为文本、图像、音频、视频、多模态等。数据集可通过Git方式进行管理,公开的数据集可免费下载使用。
3. 创空间(Studio)
创空间是ModelScope平台提供的模型应用可视化私域空间与运营阵地,可基于ModelScope平台上模型提供的原子能力,自行搭建与展示不同AI应用,包括自定义的模型输入/输出、多模型的组合,以及可视化交互展现形式等。
如果要使用大模型做应用开发,我们可以通过ModelScope官网在模型库中查找,比如要使用Qwen3大模型,可以查找“Qwen3”关键字,结果如图2-22所示。
图2-22 查找Qwen3
从图2-22中可以看到,这里找到了多个不同种类的Qwen3模型。我们单击“通义千问3-1.7B”,进入模型介绍界面,如图2-23所示。
图2-23 “通义千问3-1.7B”介绍界面
这个页面对通义千问3-1.7B进行模型介绍,我们下拉页面左侧的介绍框,可以看到基于ModelScope本地模型的读取与处理示例,代码如下:
from modelscope import AutoModelForCausalLM, AutoTokenizer
model_name = "Qwen/Qwen3-1.7B"
# load the tokenizer and the model
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype="auto",
device_map="auto"
)
# prepare the model input
prompt = "Give me a short introduction to large language model."
messages = [
{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True # Switches between thinking and non-thinking modes.
Default is True.
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
# conduct text completion
generated_ids = model.generate(
**model_inputs,
max_new_tokens=32768
)
output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
# parsing thinking content
try:
# rindex finding 151668 (</think>)
index = len(output_ids) - output_ids[::-1].index(151668)
except ValueError:
index = 0
thinking_content = tokenizer.decode(output_ids[:index],
kip_special_tokens=True).strip("\n")
content = tokenizer.decode(output_ids[index:],
kip_special_tokens=True).strip("\n")
print("thinking content:", thinking_content)
print("content:", content)
上面代码读者可以自行验证。
默认情况下,Qwen3启用了思考能力,类似于QwQ-32B。这意味着模型将利用其推理能力来提高生成回复的质量。例如,显式设置enable_thinking=True或者在设置tokenizer.apply_chat_template时保持默认值,模型将进入思考模式。
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=True # True is the default value for enable_thinking
)
在这种模式下,模型将生成被<think>...</think>块包裹的思考内容,然后是最终回复。
当设置enable_thinking=Falses时,Qwen3提供了一个硬开关,可以严格禁用模型的思考模式,使其功能与之前的Qwen2.5-Instruct模型对齐。这种模式在需要通过禁用思考来提高效率的场景中特别有用。
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True,
enable_thinking=False #设置enable_thinking=False禁用思考模式
在这种模式下,模型不会生成任何思考内容,也不会包含<think>...</think>块。
此外,Qwen3还有一种软开关机制,允许用户在enable_thinking=True时动态控制模型的行为。具体来说,读者可以在提示或系统消息中添加/think和/no_think来逐个回合地切换模型的思考模式。模型将在多轮对话中遵循最近的指令。
from modelscope import AutoModelForCausalLM, AutoTokenizer
class QwenChatbot:
def __init__(self, model_name="Qwen/Qwen3-1.7B"):
self.tokenizer = AutoTokenizer.from_pretrained(model_name)
self.model = AutoModelForCausalLM.from_pretrained(model_name)
self.history = []
def generate_response(self, user_input):
messages = self.history + [{"role": "user", "content": user_input}]
text = self.tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = self.tokenizer(text, return_tensors="pt")
response_ids = self.model.generate(**inputs, max_new_tokens=32768)[0][len(inputs.input_ids[0]):].tolist()
response = self.tokenizer.decode(response_ids, skip_special_tokens=True)
#更新历史
self.history.append({"role": "user", "content": user_input})
self.history.append({"role": "assistant", "content": response})
return response
#示例用法
if __name__ == "__main__":
chatbot = QwenChatbot()
#第一次输入(不带/inthink或/no_think标签,默认情况下启用思考模式)
user_input_1 = "How many r's in strawberries?"
print(f"User: {user_input_1}")
response_1 = chatbot.generate_response(user_input_1)
print(f"Bot: {response_1}")
print("----------------------")
#第二次输入,带/no_think标签
user_input_2 = "Then, how many r's in blueberries? /no_think"
print(f"User: {user_input_2}")
response_2 = chatbot.generate_response(user_input_2)
print(f"Bot: {response_2}")
print("----------------------")
#第二次输入,带/think标签
user_input_3 = "Really? /think"
print(f"User: {user_input_3}")
response_3 = chatbot.generate_response(user_input_3)
print(f"Bot: {response_3}")
上面代码读者可以自行验证。
在本章中,首先讲解了Agent基本开发环境的配置,安装了用于后续学习和计算的稳定版Python,并使用PyCharm创建了一个示例程序。通过该示例,读者将初步掌握开发环境的基本搭建流程,包括解释器的配置、虚拟环境的创建以及代码的运行与调试。
然后介绍了ModelScope这个常用的大模型社区平台。作为国内活跃的模型开放平台之一,ModelScope不仅汇聚了大量主流的AI模型,还提供了便捷的模型下载与使用方式,极大地方便了开发者的学习与实践。
最后演示了如何在ModelScope上查找、下载并加载Qwen3模型。通过简单的代码调用,我们成功运行了Qwen3模型。这为后续深入学习和构建基于大模型的Agent系统打下了基础。
通过本章的学习,读者不仅能掌握开发环境的搭建方法,也对如何获取和使用现有大模型资源有了初步认识。下一章将初步介绍Qwen3大模型的微调和训练方法,希望帮助读者建立起完整的知识框架。