Agent 开发实战

从理论到实践,掌握 AI Agent 核心技术栈

4
核心模块
2
实战项目
15+
代码示例
100%
可运行
🎯 技术栈总览
🧠

LLM

大语言模型交互

OpenAI / Claude / 本地模型

📚

RAG

检索增强生成

向量数据库 + 文档问答

🔧

LoRA

模型微调

低成本模型定制

⚡

Dify/Coze

工作流编排

可视化 Agent 搭建

🔗 关联项目

本项目基于 图书馆管理系统 的数据进行 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 的图书馆智能问答系统

📚
图书馆智能助手
基于 RAG + LLM
在线
🤖
你好!👋 我是图书馆智能助手,基于 RAG 技术构建。

我可以帮你:
📚 查询图书信息
🔍 搜索特定图书
📊 查看统计数据
📖 了解借阅规则

试试点击右侧的问题卡片,或直接输入你的问题
💡 快捷问题
📖 使用说明

支持的提问方式:

• 查询图书:"有哪些书"、"书单"

• 搜索图书:"找Python"、"搜索算法"

• 借阅相关:"怎么借书"、"借阅期限"

• 推荐图书:"推荐一本书"、"推荐编程书"

• 统计信息:"有多少书"、"统计数据"

技术架构:

• 意图识别 → API 调用 → 智能回复

• 实时连接图书馆数据库

🛠️ 技术栈
LLM RAG 意图识别 API 调用 实时数据
🧠 Agent 能力展示
🎯

意图识别

理解用户意图,自动路由

🔌

API 调用

实时查询图书馆数据库

💬

智能回复

格式化输出,清晰易读

⚡

实时响应

毫秒级响应,流畅体验

📄 文档问答系统

上传文档,基于内容进行问答

📤 上传文档
📁

点击或拖拽上传文档

支持 PDF、TXT、Markdown 格式

❓ 文档问答
📄
文档已加载,你可以基于文档内容提问。

🏗️ 架构设计

Agent 系统整体架构

系统架构图
用户界面 (Web/App/API) Agent 编排层 Dify / Coze / LangChain LLM GPT/Claude/Qwen RAG 向量数据库 + 检索 LoRA 微调模型 Tools API / 数据库 / 搜索 知识库 FAISS / Pinecone / Milvus 外部服务 图书馆API / 邮件 / 通知

📖 开发指南

快速上手 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 应用