前言
随着大语言模型(LLM)技术的快速发展,掌握其应用开发已成为人工智能领域的重要技能。本文基于实际项目经验,将 LLM 学习路径分为三个层级:入门级、进阶级和综合级。通过具体的代码示例和架构分析,帮助读者从零开始构建图生文、知识库问答等核心功能,并为从事相关岗位提供系统化的项目参考。
本文详细介绍了 LLM 大模型的三个学习阶段。第一阶段通过 VisualGLM 实现多模态图文转换,涵盖依赖安装、模型加载及推理流程;第二阶段基于 RAG 架构构建金融知识库问答系统,讲解文档解析、向量化、FAISS 存储及 Prompt 工程;第三阶段推荐了多模态进阶、医疗 AI、数字人定制及 Agent 开发等综合级项目方向。文章旨在帮助初学者建立完整的技术认知,并为从业者提供系统化的实战参考。

随着大语言模型(LLM)技术的快速发展,掌握其应用开发已成为人工智能领域的重要技能。本文基于实际项目经验,将 LLM 学习路径分为三个层级:入门级、进阶级和综合级。通过具体的代码示例和架构分析,帮助读者从零开始构建图生文、知识库问答等核心功能,并为从事相关岗位提供系统化的项目参考。
本章节介绍如何使用 PaddleMIX 框架加载 VisualGLM 模型,实现图像理解与文本生成。VisualGLM 是一个支持多模态输入的大模型,能够处理图像、文本等多种数据形式。
首先需要在本地环境配置好 Python 运行环境,并下载模型权重及依赖库。推荐使用 Git 克隆官方仓库,并安装必要的音频处理库。
!git clone https://github.com/PaddlePaddle/PaddleMIX.git
!pip install soundfile librosa transformers
注意:确保已安装 PyTorch 或 PaddlePaddle 深度学习框架,并根据显卡型号配置 CUDA 环境。
初始化模型前,需设置环境变量以指定计算设备。从预训练权重加载模型时,建议使用本地路径以提升加载速度。
import os
os.environ["CUDA_VISIBLE_DEVICES"] = "0"
os.environ["FLAGS_use_cuda_managed_memory"] = "true"
import requests
from PIL import Image
from paddlemix import VisualGLMForConditionalGeneration, VisualGLMProcessor
import warnings
warnings.filterwarnings('ignore')
# 设置模型本地路径
pretrained_name_or_path = "./visualglm-6b"
model = VisualGLMForConditionalGeneration.from_pretrained(pretrained_name_or_path)
model.eval()
processor = VisualGLMProcessor.from_pretrained(pretrained_name_or_path)
加载待处理的图片 URL,并配置生成参数。max_length 控制输出长度,temperature 影响生成的随机性,值越小越确定。
url = 'https://example.com/sample_image.jpg'
image = Image.open(requests.get(url, stream=True).raw)
generate_kwargs = {
"max_length": 1024,
"min_length": 10,
"num_beams": 1,
"top_p": 1.0,
"top_k": 1,
"repetition_penalty": 1.2,
"temperature": 0.8,
"decode_strategy": "sampling",
"eos_token_id": processor.tokenizer.eos_token_id,
}
![图 1:VisualGLM 图文转换示例]
向模型发送查询指令,例如要求描述图片内容。模型会结合图像特征与文本提示生成自然语言描述。
query = "写诗描述一下这个场景"
history = []
inputs = processor(image, query)
generate_ids, _ = model.generate(**inputs, **generate_kwargs)
responses = processor.get_responses(generate_ids)
history.append([query, responses[0]])
print(responses)
![图 2:图生文结果展示]
在历史对话基础上进行多轮交互,可以询问更具体的细节,如图片中的人物、动作或背景信息。
query = "这部电影的导演是谁?"
inputs = processor(image, query, history=history)
generate_ids, _ = model.generate(**inputs, **generate_kwargs)
responses = processor.get_responses(generate_ids)
history.append([query, responses[0]])
print(responses)
![图 3:图片内容推理结果]
本章节介绍检索增强生成(RAG)技术,解决大模型幻觉问题,实现基于私有文档的精准问答。流程包括文档解析、分块、向量化、存储及检索生成。
安装 LangChain 及相关工具库,用于文档处理和向量数据库操作。
# 下载示例文档
!wget https://example.com/carbon.pdf -O carbon.pdf
!wget https://example.com/car.pdf -O car.pdf
# 安装依赖
!pip install transformers langchain openai unstructured tiktoken faiss-cpu sentence_transformers pypdf
使用 PyPDFLoader 读取 PDF 文件,提取纯文本内容。支持多种格式加载器,可根据实际文件类型切换。
from langchain.document_loaders import PyPDFLoader
loaders = [
PyPDFLoader('car.pdf'),
PyPDFLoader('carbon.pdf')
]
docs = []
for loader in loaders:
docs.extend(loader.load())
将长文档切分为固定大小的文本块,以便后续嵌入。合理的 chunk_size 和 overlap 能平衡上下文完整性与检索精度。
from langchain.text_splitter import CharacterTextSplitter
text_splitter = CharacterTextSplitter(chunk_size=300, chunk_overlap=30, separator='\n')
splits = text_splitter.split_documents(docs)
print(f"总块数:{len(splits)}")
使用预训练模型将文本块转换为高维向量,捕捉语义信息。moka-ai/m3e-base 是中文效果较好的开源模型之一。
from langchain.embeddings import HuggingFaceEmbeddings
embedding_model = 'moka-ai/m3e-base'
embeddings = HuggingFaceEmbeddings(model_name=embedding_model)
以 FAISS 为例构建本地向量索引。FAISS 适合单机快速检索,生产环境可考虑 Milvus 或 Chroma。
from langchain.vectorstores import FAISS
vector_store = FAISS.from_documents(splits, embeddings)
接收用户提问,在向量库中检索最相关的 Top K 个文本块。注意变量名一致性,此处修正为 query。
query = '政府发布了哪些双碳政策文件'
K = 5
# 修正变量名错误
results = vector_store.similarity_search_with_score(query, k=K)
for i in range(len(results)):
doc = results[i][0]
score = results[i][1]
print(f'来源:{doc.metadata.get("source", "unknown")}')
print(f'相似度:{score}')
print(doc.page_content[:100] + '...')
![图 4:RAG 检索结果展示]
将检索到的上下文拼接,构造包含指令的 Prompt。明确告知模型仅依据已知信息回答,减少幻觉。
context = ''
for doc in results:
context += doc[0].page_content + '\n'
prompt = f'''你是一个学习助手,请根据下面的已知信息回答问题。
你只需要回答和已知信息相关的问题,如果问题和已知信息不相关,你可以直接回答'不知道'。
问题:{query}
已知信息:{context}'''
![图 5:Prompt 构造示意]
封装 API 调用逻辑,获取访问令牌并发送请求。实际生产中建议将密钥存储在环境变量中。
import requests
class BaiduErnie:
host: str = "https://aip.baidubce.com"
client_id: str = ""
client_secret: str = ""
access_token: str = ""
def __init__(self, client_id: str, client_secret: str):
self.client_id = client_id
self.client_secret = client_secret
self.get_access_token()
def get_access_token(self) -> str:
url = f"{self.host}/oauth/2.0/token?grant_type=client_credentials&client_id={self.client_id}&client_secret={self.client_secret}"
response = requests.get(url)
if response.status_code == 200:
self.access_token = response.json()["access_token"]
return self.access_token
else:
raise Exception("获取 access_token 失败")
def chat(self, messages: list, user_id: str) -> tuple:
if not self.access_token:
self.get_access_token()
url = f"{self.host}/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token={self.access_token}"
data = {"messages": messages, "user_id": user_id}
response = requests.post(url, json=data)
if response.status_code == 200:
resp = response.json()
return resp["result"], resp
else:
raise Exception("请求失败")
# 初始化客户端
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
user_id = "YOUR_USER_ID"
baidu_ernie = BaiduErnie(client_id, client_secret)
def chat(prompt):
messages = [{"role": "user", "content": prompt}]
result, response = baidu_ernie.chat(messages, user_id)
return result
将检索与生成步骤整合为一个函数,实现端到端的问答体验。
def predict(query):
results = vector_store.similarity_search_with_score(query, k=K)
context = ''
for doc in results:
context += doc[0].page_content + '\n'
prompt = f'你是一个学习助手,请根据下面的已知信息回答问题。问题:{query} 已知信息:{context}'
result = chat(prompt)
print(result)
predict('政府发布了哪些双碳政策文件')
对于希望深入 LLM/AIGC 领域的开发者,以下项目方向具有较高的学习价值和就业竞争力。建议每个项目投入 2 周以上时间进行系统性实践。
此方向不仅限于图文转换,还涉及视频理解、语音识别等多模态融合。技术栈通常包括 CLIP、Stable Diffusion 以及最新的 Video-LLM 架构。学习者需要掌握如何对齐不同模态的特征空间,并设计高效的推理管线。重点在于理解 Transformer 在不同模态下的变体结构,以及如何利用 LoRA 等技术进行高效微调。
医疗垂直领域对准确性要求极高,且涉及隐私合规问题。项目重点在于构建医疗专用语料库,使用 BioBERT 等基座模型进行领域适应(Domain Adaptation)。同时需关注 HIPAA 等法规,确保数据处理符合安全标准。应用场景包括辅助诊断、病历结构化、药物相互作用检测等。
数字人技术结合了计算机视觉、语音合成与自然语言处理。核心模块包括语音识别(ASR)、情感语音合成(TTS)、唇形同步(Lip-sync)以及 3D 渲染。项目可实现虚拟主播、智能客服等应用。关键技术点在于低延迟交互优化,以及如何让数字人的表情与语音情绪保持一致,提升真实感。
这是当前最前沿的方向之一。让大模型具备规划能力,能够自主调用工具(API)、执行代码或操作浏览器。技术涉及思维链(CoT)、ReAct 模式以及任务分解算法。开发者需设计完善的记忆机制和环境接口,使 Agent 能完成复杂的多步任务,如自动数据分析报告生成、跨平台业务自动化等。
从基础的图文生成到复杂的 RAG 系统,再到行业级的综合应用,LLM 的学习路径清晰且充满挑战。通过上述项目的实战演练,不仅能掌握核心技术栈,还能积累解决实际问题的经验。建议在学习过程中注重代码规范与文档编写,积极参与开源社区,持续跟踪最新论文与技术动态,从而在 AIGC 领域建立核心竞争力。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online