Agent 开发实战
从理论到实践,掌握 AI Agent 核心技术栈
4
核心模块
2
实战项目
15+
代码示例
100%
可运行
🎯 技术栈总览
🧠
LLM
大语言模型交互
OpenAI / Claude / 本地模型
📚
RAG
检索增强生成
向量数据库 + 文档问答
🔧
LoRA
模型微调
低成本模型定制
⚡
Dify/Coze
工作流编排
可视化 Agent 搭建
🧠 LLM 大语言模型
大语言模型交互、Prompt Engineering、模型选择
LLM Prompt Engineering 实践
通过设计不同的 Prompt 模板,引导 LLM 生成高质量输出。
# prompt_engineering.py - Prompt 设计模式 from openai import OpenAI client = OpenAI(api_key="your-api-key") # 1. 零样本提示 (Zero-shot) def zero_shot(question): response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{ "role": "user", "content": question }] ) return response.choices[0].message.content # 2. 少样本提示 (Few-shot) def few_shot(question): prompt = """ 你是一个图书管理助手。请根据以下示例回答问题。 示例1: 用户: 有哪些计算机类的书? 助手: 图书馆有3本计算机类书籍:《深入理解计算机系统》、《算法导论》、《Python编程》 示例2: 用户: 借阅期限是多久? 助手: 图书借阅期限为30天,到期前请按时归还。 请回答: """ + question response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": prompt}] ) return response.choices[0].message.content # 3. 思维链提示 (Chain of Thought) def chain_of_thought(question): prompt = f""" 请一步一步思考以下问题: 问题:{question} 让我们逐步分析: 1. 首先,理解问题的核心... 2. 然后,分析相关因素... 3. 最后,得出结论... 请按此格式回答: """ response = client.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": prompt}] ) return response.choices[0].message.content
选择 Prompt 模式:
📊 模型对比
● GPT-3.5-turbo
快速、经济,适合大多数任务
速度
质量
成本
● GPT-4
最强推理能力,适合复杂任务
速度
质量
成本
📚 RAG 检索增强生成
基于文档的智能问答系统
RAG 工作原理
📄
文档加载
→
✂️
文本分块
→
🔢
向量化
→
💾
向量存储
→
🔍
检索
→
🤖
生成回答
RAG 代码实现
# rag_system.py - RAG 系统实现 from langchain.document_loaders import TextLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.embeddings import OpenAIEmbeddings from langchain.vectorstores import FAISS from langchain.chains import RetrievalQA from langchain.llms import OpenAI # 1. 加载文档 loader = TextLoader("library_books.txt") documents = loader.load() # 2. 文本分块 text_splitter = RecursiveCharacterTextSplitter( chunk_size=500, chunk_overlap=50 ) chunks = text_splitter.split_documents(documents) # 3. 向量化并存储 embeddings = OpenAIEmbeddings() vectorstore = FAISS.from_documents(chunks, embeddings) # 4. 创建检索器 retriever = vectorstore.as_retriever( search_kwargs={"k": 3} ) # 5. 创建 QA 链 llm = OpenAI(model="gpt-3.5-turbo") qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=retriever ) # 6. 提问 question = "图书馆有哪些计算机类的书?" answer = qa_chain.run(question) print(answer)
🔍 RAG 参数配置
🔧 LoRA 模型微调
低秩适配,低成本模型定制
LoRA 工作原理
LoRA (Low-Rank Adaptation) 通过在预训练模型中注入可训练的低秩矩阵,实现高效微调。 相比全量微调,LoRA 只需训练 0.1%~1% 的参数,大幅降低计算成本。
原始权重 W (冻结)
+
LoRA 矩阵 A × B (训练)
×
仅 0.1% 参数
=
微调后模型
LoRA 训练代码
# lora_finetune.py - LoRA 微调实现 from transformers import AutoModelForCausalLM, AutoTokenizer from peft import LoraConfig, get_peft_model, TaskType # 1. 加载基座模型 model_name = "Qwen/Qwen2-7B" model = AutoModelForCausalLM.from_pretrained(model_name) tokenizer = AutoTokenizer.from_pretrained(model_name) # 2. 配置 LoRA lora_config = LoraConfig( task_type=TaskType.CAUSAL_LM, r=8, # 低秩矩阵的秩 lora_alpha=32, # 缩放因子 lora_dropout=0.1, # Dropout 比例 target_modules=["q_proj", "v_proj"], # 目标模块 ) # 3. 应用 LoRA model = get_peft_model(model, lora_config) model.print_trainable_parameters() # 输出: trainable params: 4,194,304 || all params: 7,615,616,000 || 0.05% # 4. 准备训练数据 train_data = [ {"input": "图书馆有哪些书?", "output": "图书馆有8本图书..."}, {"input": "如何借书?", "output": "选择图书后点击借阅..."}, ] # 5. 训练配置 from transformers import TrainingArguments training_args = TrainingArguments( output_dir="./lora_output", num_train_epochs=3, per_device_train_batch_size=4, learning_rate=2e-4, warmup_steps=100, logging_steps=10, save_strategy="epoch", )
⚙️ LoRA 参数说明
| 参数 | 说明 | 推荐值 |
|---|---|---|
r |
低秩矩阵的秩,越大容量越大 | 8-64 |
lora_alpha |
缩放因子,影响学习率 | 16-64 |
target_modules |
应用 LoRA 的层 | q_proj, v_proj |
lora_dropout |
防止过拟合 | 0.05-0.1 |
⚡ Dify/Coze 工作流
可视化 Agent 工作流编排
Dify 工作流架构
📥
用户输入
→
🧠
LLM 节点
→
🔍
知识库检索
→
⚙️
条件分支
→
📤
输出结果
Dify 工作流配置示例
# dify_workflow.yaml - Dify 工作流配置 app: name: "智能图书馆助手" mode: "workflow" workflow: nodes: - id: "start" type: "start" data: variables: - name: "user_question" type: "string" required: true - id: "llm_node" type: "llm" data: model: "gpt-3.5-turbo" prompt: | 你是一个专业的图书馆助手。 用户问题: {{user_question}} 请根据知识库内容回答。 - id: "knowledge_retrieval" type: "knowledge_retrieval" data: knowledge_base: "图书馆书籍库" query: "{{user_question}}" top_k: 3 - id: "condition" type: "if_else" data: condition: "{{relevance_score}} > 0.7" - id: "output" type: "end" data: output: "{{llm_response}}" connections: - source: "start" target: "llm_node" - source: "llm_node" target: "knowledge_retrieval" - source: "knowledge_retrieval" target: "condition" - source: "condition" target: "output"
Coze Bot 配置示例
# coze_bot.json - Coze Bot 配置 { "bot_name": "图书馆智能助手", "description": "帮你查询图书、借阅、归还", "model": "gpt-3.5-turbo", "system_prompt": "你是图书馆的智能助手...", "plugins": [ { "name": "知识库", "type": "knowledge_base", "config": { "dataset_ids": ["books_db"] } }, { "name": "API调用", "type": "api_call", "config": { "url": "http://oywangzhan.cn/library/api.php" } } ] }
💬 智能客服 Agent
基于 RAG + LLM 的图书馆智能问答系统
💡 快捷问题
📖 使用说明
支持的提问方式:
• 查询图书:"有哪些书"、"书单"
• 搜索图书:"找Python"、"搜索算法"
• 借阅相关:"怎么借书"、"借阅期限"
• 推荐图书:"推荐一本书"、"推荐编程书"
• 统计信息:"有多少书"、"统计数据"
技术架构:
• 意图识别 → API 调用 → 智能回复
• 实时连接图书馆数据库
🛠️ 技术栈
LLM
RAG
意图识别
API 调用
实时数据
🧠 Agent 能力展示
🎯
意图识别
理解用户意图,自动路由
🔌
API 调用
实时查询图书馆数据库
💬
智能回复
格式化输出,清晰易读
⚡
实时响应
毫秒级响应,流畅体验
📄 文档问答系统
上传文档,基于内容进行问答
📤 上传文档
📁
点击或拖拽上传文档
支持 PDF、TXT、Markdown 格式
❓ 文档问答
🏗️ 架构设计
Agent 系统整体架构
系统架构图
📖 开发指南
快速上手 Agent 开发
🚀 快速开始
# 1. 安装依赖 pip install langchain openai faiss-cpu # 2. 设置 API Key import os os.environ["OPENAI_API_KEY"] = "your-key" # 3. 最简单的 RAG from langchain.document_loaders import TextLoader from langchain.indexes import VectorstoreIndexCreator loader = TextLoader("your_doc.txt") index = VectorstoreIndexCreator().from_loaders([loader]) query = index.query("你的问题") print(query)
📚 学习路线
1
LLM 基础
学习 Prompt Engineering,理解 LLM 工作原理
2
RAG 实战
搭建文档问答系统,掌握向量检索
3
LoRA 微调
学习模型微调,定制专属模型
4
Agent 编排
使用 Dify/Coze 搭建完整 Agent 应用