难点:配置conda环境变量
我用的vscode + github方法
目录
[涌现能力(emergent abilities)](#涌现能力(emergent abilities))
[RAG 的工作流程](#RAG 的工作流程)
[RAG VS Finetune](#RAG VS Finetune)
[搭建 LLM 项目的流程简析(以知识库助手为例)](#搭建 LLM 项目的流程简析(以知识库助手为例))
[1. 环境变量设置错误](#1. 环境变量设置错误)
[2. 没有初始化 conda shell 支持](#2. 没有初始化 conda shell 支持)
[3. 虽然运行了 conda init,但 VS Code 的终端还是没有识别到 conda 激活环境的配置,这通常是因为 VS Code 终端未加载更新后的配置文件](#3. 虽然运行了 conda init,但 VS Code 的终端还是没有识别到 conda 激活环境的配置,这通常是因为 VS Code 终端未加载更新后的配置文件)
[4. conda 的初始化命令没有正确添加到 PowerShell 的配置文件中。虽然你执行了 conda init,但 VSCode 的 PowerShell 没有正确读取它。](#4. conda 的初始化命令没有正确添加到 PowerShell 的配置文件中。虽然你执行了 conda init,但 VSCode 的 PowerShell 没有正确读取它。)
[5. 在配置 PowerShell 文件时,它遇到了需要管理员权限的问题(提示 "needs sudo")](#5. 在配置 PowerShell 文件时,它遇到了需要管理员权限的问题(提示 "needs sudo"))
重要名词解释:
涌现能力(emergent abilities)
区分大语言模型(LLM)与以前的预训练语言模型(PLM)最显著的特征之一是它们的 涌现能力
。涌现能力是一种令人惊讶的能力,它在小型模型中不明显,但在大型模型中特别突出。类似物理学中的相变现象,涌现能力就像是模型性能随着规模增大而迅速提升,超过了随机水平,也就是我们常说的 量变引起质变。
涌现能力可以与某些复杂任务有关,但我们更关注的是其通用能力。接下来,我们简要介绍三个 LLM 典型的涌现能力:
-
上下文学习:上下文学习能力是由 GPT-3 首次引入的。这种能力允许语言模型在提供自然语言指令或多个任务示例的情况下,通过理解上下文并生成相应输出的方式来执行任务,而无需额外的训练或参数更新。
-
指令遵循 :通过使用自然语言描述的多任务数据进行微调,也就是所谓的
指令微调
。LLM 被证明在使用指令形式化描述的未见过的任务上表现良好。这意味着 LLM 能够根据任务指令执行任务,而无需事先见过具体示例,展示了其强大的泛化能力。 -
逐步推理 :小型语言模型通常难以解决涉及多个推理步骤的复杂任务,例如数学问题。然而,LLM 通过采用
思维链(CoT, Chain of Thought)
推理策略,利用包含中间推理步骤的提示机制来解决这些任务,从而得出最终答案。据推测,这种能力可能是通过对代码的训练获得的。
这些涌现能力让 LLM 在处理各种任务时表现出色,使它们成为了解决复杂问题和应用于多领域的强大工具。
检索增强生成
检索增强生成(RAG, Retrieval-Augmented Generation) 。该架构巧妙地整合了从庞大知识库中检索到的相关信息,并以此为基础,指导大型语言模型生成更为精准的答案,从而显著提升了回答的准确性与深度。
RAG 的工作流程

RAG VS Finetune

大模型开发的一般流程

搭建 LLM 项目的流程简析(以知识库助手为例)
以下我们将结合本实践项目与上文的整体流程介绍,简要分析知识库助手项目开发流程:
项目规划与需求分析
-
项目目标:基于个人知识库的问答助手
-
核心功能
- 将爬取并总结的 MarkDown 文件及用户上传文档向量化,并创建知识库;
- 选择知识库,检索用户提问的知识片段;
- 提供知识片段与提问,获取大模型回答;
- 流式回复;
- 历史对话记录
-
确定技术架构和工具
- 框架:LangChain
- Embedding 模型 :GPT、智谱、M3E
- 数据库:Chroma
- 大模型:GPT、讯飞星火、文心一言、GLM 等
- 前端:Gradio 和 Streamlit
-
数据准备与向量知识库构建
本项目实现原理如下图所示(图片来源):加载本地文档 -> 读取文本 -> 文本分割 -> 文本向量化 -> question 向量化 -> 在文本向量中匹配出与问句向量最相似的 top k 个 -> 匹配出的文本作为上下文和问题一起添加到 Prompt 中 -> 提交给 LLM 生成回答。

-
收集和整理用户提供的文档
用户常用文档格式有 PDF、TXT、MD 等,首先,我们可以使用 LangChain 的文档加载器模块方便地加载用户提供的文档,或者使用一些成熟的 Python 包进行读取。
由于目前大模型使用 token 的限制,我们需要对读取的文本进行切分,将较长的文本切分为较小的文本,这时一段文本就是一个单位的知识。
-
将文档词向量化
使用
文本嵌入(Embeddings)技术
对分割后的文档进行向量化,使语义相似的文本片段具有接近的向量表示。然后,存入向量数据库,完成索引(index)
的创建。利用向量数据库对各文档片段进行索引,可以实现快速检索。
-
将向量化后的文档导入 Chroma 知识库,建立知识库索引
Langchain 集成了超过 30 个不同的向量数据库。Chroma 数据库轻量级且数据存储在内存中,这使得它非常容易启动和开始使用。
将用户知识库内容经过 Embedding 存入向量数据库,然后用户每一次提问也会经过 Embedding,利用向量相关性算法(例如余弦算法)找到最匹配的几个知识库片段,将这些知识库片段作为上下文,与用户问题一起作为 Prompt 提交给 LLM 回答。
-
大模型集成与 API 连接
- 集成 GPT、星火、文心、GLM 等大模型,配置 API 连接。
- 编写代码,实现与大模型 API 的交互,以便获取问题回答。
-
核心功能实现
- 构建 Prompt Engineering,实现大模型回答功能,根据用户提问和知识库内容生成回答。
- 实现流式回复,允许用户进行多轮对话。
- 添加历史对话记录功能,保存用户与助手的交互历史。
-
核心功能迭代优化
- 进行验证评估,收集 Bad Case。
- 根据 Bad Case 迭代优化核心功能实现。
-
前端与用户交互界面开发
- 使用 Gradio 和 Streamlit 搭建前端界面。
- 实现用户上传文档、创建知识库的功能。
- 设计用户界面,包括问题输入、知识库选择、历史记录展示等。
-
部署测试与上线
- 部署问答助手到服务器或云平台,确保可在互联网上访问。
- 进行生产环境测试,确保系统稳定。
- 上线并向用户发布。
-
维护与持续改进
- 监测系统性能和用户反馈,及时处理问题。
- 定期更新知识库,添加新的文档和信息。
- 收集用户需求,进行系统改进和功能扩展。
整个流程将确保项目从规划、开发、测试到上线和维护都能够顺利进行,为用户提供高质量的基于个人知识库的问答助手。
配置github
- 打开网址链接:https://github.com/features/codespaces
- 登录你的 GitHub 账户
- 点击图示 Your repositories

- 进入自己的存储库列表后,点击图示 New,新建一个存储库

-
这里根据自己需要设置即可,为方便和安全起见 Add a README file 建议勾上,同时选择 Private (因为课程中用到 API key,注意保护隐私),设置完成后点击 Create repository
-
创建好存储库后,点击 code 选择 Codespaces , 点击图示 Create codespace on main

- 等待一段时间后会出现如下界面,接下来操作与 VSCode 相同,可根据需要安装插件调整设置

-
本地 VSCode 连接 Codespace
-
打开 VSCode,搜索 codespace 安装插件

- 在 VSCode 的活动栏中,单击远程资源管理器图标

- 登录 GitHub,根据提示登录即可

- 可以看到这里有我们刚才创建的 codespace,单击红框连接图标

- 成功连接到了 codespace
网页关闭后,找到刚才新建的存储库,点击红框框选内容即可重新进入 codespace

免费额度 找到 GitHub 的账户设置后,可以在Plans and usage中看到剩余的免费额度

停止代码空间
停止和启动 codespace_GitHub中文网可停止和启动 codespace 以保存资源和暂停工作。https://github.net.cn/zh/codespaces/developing-in-a-codespace/stopping-and-starting-a-codespace导航到 Sign in to GitHub · GitHub 上的"你的 Codespaces"页面。
- 单击要停止的 codespace 右侧的省略号 (...)。
- 单击"停止 codespace"。
易错点:
1. 环境变量设置错误
当出现如下提示时:
PS C:\Users\app> conda create -n llm-universe python=3.10 conda : 无法将"conda"项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 + conda create -n llm-universe python=3.10 + ~~~~~ + CategoryInfo : ObjectNotFound: (conda:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException PS C:\Users\app>
CONDA PATH
(系统变量)
-
当前值 :
D:\Users\app\miniconda3\condabin\conda.bat
-
说明 : 这个路径指向
conda.bat
文件,用于初始化 Conda 环境。 -
建议:
-
推荐设置为 PATH 变量(用户或系统)中的一部分,而不是单独的新变量。
-
最好把
D:\Users\app\miniconda3
和D:\Users\app\miniconda3\Scripts
加入系统或用户的Path
环境变量中,而不是用CONDA PATH
。
-

下一步建议:
-
打开一个新的命令提示符窗口(CMD 或 PowerShell)。
-
输入:
bash
conda --version
来确认 Conda 是否可用并输出版本号。

从截图的命令行输出来看,一切都很顺利:
-
✅ 成功执行了
conda create -n llm-universe python=3.10
。 -
✅ Conda 正在准备安装所需的 Python 3.10 及其依赖项。
-
✅ 环境路径是:
D:\Users\app\miniconda3\envs\llm-universe
。 -
✅ 正常提示是否继续安装(
Proceed ([y]/n)?
)
输入如下:
bash
y
然后回车,Conda 就会开始安装这些包并创建环境。
完成后可以通过以下命令激活该环境:
bash
conda activate llm-universe
显示如下即成功。

当在 VS Code 中运行 conda create -n llm-universe python=3.10
时看到这个提示:
WARNING: A conda environment already exists at 'D:\Users\app\miniconda3\envs\llm-universe' Remove existing environment (y/[n])?
说明这个环境 已经存在,
使用已有环境
-
按
n
回车(不要删除环境); -
然后激活环境并在其中安装你需要的包:
conda activate llm-universe
再执行:
bash
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
pip install transformers datasets jupyterlab numpy pandas matplotlib scikit-learn tqdm
2. 没有初始化 conda shell 支持

解决方法:
在 VS Code 终端中运行以下命令(只需运行一次):
conda init
然后 关闭 VS Code 终端 ,再重新打开一个新的终端,或者重启 VS Code。
再尝试激活:
conda activate llm-universe
成功后,提示会变成类似这样:
scss(llm-universe) C:\Users\app>
这时你就在虚拟环境中了,可以开始安装包。
3. 虽然运行了 conda init
,但 VS Code 的终端还是没有识别到 conda
激活环境的配置,这通常是因为 VS Code 终端未加载更新后的配置文件

解决方法(推荐 PowerShell 用户):
请按以下步骤操作:
🛠 方案:打开「Anaconda Prompt」或「PowerShell(非 VS Code 内置终端)」
-
在 Windows 开始菜单中搜索 Anaconda Prompt 或者 PowerShell。
-
打开后输入:
bashconda activate llm-universe
-
如果可以正常激活,说明 Conda 初始化成功,VS Code 的终端没正确加载而已。

4. conda
的初始化命令没有正确添加到 PowerShell 的配置文件中 。虽然你执行了 conda init
,但 VSCode 的 PowerShell 没有正确读取它。
PS C:\Users\app> conda activate llm-universe >> CondaError: Run 'conda init' before 'conda activate' PS C:\Users\app>
解决方案:手动修复 PowerShell 初始化
请按以下步骤操作:
步骤 1:重新运行初始化命令(确保是为 PowerShell)
bashconda init powershell
这会将 Conda 的初始化代码写入 PowerShell 的配置文件(如 $PROFILE
)。
步骤 2:关闭并重新打开 VSCode 的终端
-
在 VSCode 中:
-
关闭当前终端(
垃圾桶图标
) -
再点
+
新建一个终端窗口
-
或者你也可以 重启 VSCode。
步骤 3:再次激活环境
bashconda activate llm-universe
这时应该能看到 (llm-universe)
出现在提示符前,说明环境成功激活。
附加检查(可选)
如果上面不生效,确保 PowerShell 脚本执行权限是开启的:
方法:
在 VSCode 终端中运行:
powershellSet-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
选择 Y
并回车。
尝试上述操作后再运行 conda activate llm-universe
看是否正常了
5. 在配置 PowerShell 文件时,它遇到了需要管理员权限的问题(提示 "needs sudo")

解决办法:手动创建缺失的文件夹
请按以下步骤操作:
-
打开文件资源管理器。
-
进入路径:
C:\Users\app\Documents\
-
在
Documents
目录下,新建一个文件夹,命名为:
WindowsPowerShell
然后在该文件夹下(C:\Users\app\Documents\WindowsPowerShell\
)新建一个文件:
-
文件名:
profile.ps1
-
文件类型:PowerShell 脚本文件
-
内容如下:
powershell# >>> conda initialize >>> & 'D:\Users\app\miniconda3\shell\condabin\conda-hook.ps1' ; conda activate base # <<< conda initialize <<<
请根据你的 Miniconda 安装路径(看起来是 D:\Users\app\miniconda3
)保持路径一致。
接下来
-
保存该
profile.ps1
文件。 -
重新打开 VSCode 或 PowerShell 终端。
-
运行:
powershellconda activate llm-universe
如果一切正常,conda
应该就可以被正常激活了