大模型和智能体

318 阅读50分钟

大模型和智能体的区别是什么

qwen3-max

大模型(Large Model)和智能体(Agent)是人工智能领域中两个密切相关但本质不同的概念。它们的区别主要体现在定位、功能、结构和目标等方面。以下是详细对比:


1. 定义与核心概念

  • 大模型(Large Model)
    指参数量巨大、训练数据广泛、具备强大语言理解与生成能力的深度学习模型,如 GPT、LLaMA、Claude、通义千问等。
    核心是一个静态的模型,通过输入输出完成任务,本身不具备自主决策或持续行动能力。
  • 智能体(Agent)
    指能够感知环境、做出决策、执行动作并达成目标的自主实体。它可以是一个软件程序、机器人,或由多个模块组成的系统。
    核心是具备目标导向的自主行为能力,强调“行动”和“交互”。

2. 功能与行为方式

全屏复制

维度大模型智能体
输入输出接收提示(prompt),返回文本/图像等响应感知环境状态,执行动作,持续与环境交互
主动性被动响应(需用户触发)主动规划、决策、执行任务
记忆与状态通常无长期记忆(除非外挂记忆模块)可具备短期/长期记忆、内部状态
目标导向无内在目标,仅优化预测下一个 token有明确目标(如“订机票”“写报告”),并规划步骤达成

3. 结构关系

  • 大模型可以是智能体的核心组件
    现代智能体常以大模型作为“大脑”,利用其推理、语言理解、规划能力。例如:

    • 智能体使用大模型生成行动计划;
    • 调用工具(如搜索、计算器、API);
    • 根据反馈调整策略。
  • 但智能体 ≠ 大模型
    智能体通常包含多个模块:

    • 感知模块(输入处理)
    • 规划/决策模块(可能由大模型驱动)
    • 行动模块(调用工具、执行操作)
    • 记忆模块(存储经验)
    • 反馈机制(评估结果并学习)

4. 举例说明

  • 大模型示例
    你问:“写一首关于春天的诗。” → 模型直接生成诗歌。
    → 无目标、无后续行动,任务一次性完成。

  • 智能体示例
    你告诉智能体:“帮我安排一次周末杭州旅行。”
    → 智能体会:

    1. 查询天气;
    2. 搜索酒店和景点;
    3. 比较价格;
    4. 预订门票;
    5. 发送行程表给你。
      → 有目标、多步骤、调用外部工具、持续交互。

5. 总结:关键区别

全屏复制

方面大模型智能体
本质强大的预测/生成模型自主行动的系统
是否主动否(被动响应)是(主动规划执行)
是否包含大模型是自身可能包含(作为推理引擎)
是否需要工具调用通常不直接调用通常需要调用外部工具
目标导向有明确目标

简单类比:

  • 大模型 ≈ 一个超级聪明的“顾问” :你问它问题,它给出答案。
  • 智能体 ≈ 一个“办事员”或“助手” :你给它任务,它自己想办法完成,中间可能多次请教“顾问”(大模型),也可能自己查资料、打电话、订票等。

因此,大模型是智能体的重要组成部分,但智能体是更高级、更完整的自主系统。随着 AI 发展,“大模型 + 智能体架构”正成为实现通用人工智能(AGI)的关键路径。

可以AI出码的IDE是大模型还是智能体

qwen3-max

能够“AI出码”(即自动生成、理解、修改代码)的 IDE(集成开发环境),本质上是一个以大模型为核心驱动的智能体系统。它既包含大模型,又具备智能体的特征,但更准确地说:这类 IDE 是一个基于大模型构建的智能体(Agent)

下面我们从几个维度来分析:


一、为什么说它“包含大模型”?

现代 AI 编程 IDE(如 GitHub Copilot、Cursor、CodeWhisperer、通义灵码、Windsurf 等)的核心能力依赖于大语言模型(LLM) ,尤其是经过代码训练的模型(如 Codex、StarCoder、CodeLlama 等)。

  • 代码补全:基于上下文预测下一行代码 → 大模型的序列预测能力。
  • 自然语言生成代码:用户说“写一个快排函数”,模型生成代码 → 大模型的指令遵循与生成能力。
  • 代码解释/注释:理解代码语义 → 大模型的语义理解能力。

✅ 所以,大模型是其“大脑”或“推理引擎”


二、为什么说它是“智能体”(Agent)?

虽然底层是大模型,但现代 AI IDE 的行为远超“被动响应”,具备典型智能体特征:

全屏复制

智能体特征在 AI IDE 中的体现
目标导向用户目标:“重构这段代码”、“修复 bug”、“添加单元测试”
感知环境读取当前文件、项目结构、错误日志、光标位置、依赖关系
规划与决策分析问题 → 规划修改步骤 → 生成多个候选方案
执行动作插入代码、替换代码块、运行测试、调用 Linter 或编译器
工具调用(Tool Use)调用代码解释器、调试器、版本控制(Git)、API 文档、包管理器
反馈与迭代根据用户接受/拒绝、编译错误、测试失败调整后续行为

例如:

用户说:“这个函数性能太差,优化一下。”
AI IDE 会:

  1. 分析函数逻辑;
  2. 检测热点(可能调用 profiler);
  3. 生成优化版本;
  4. 建议运行基准测试;
  5. 根据测试结果进一步调整。

这已经是一个闭环的、目标驱动的自主行为系统——典型的智能体行为。


三、关键区分:不是所有 AI IDE 都是智能体

  • 初级 AI 辅助(如早期 Copilot) :仅提供代码补全,无上下文感知、无工具调用、无多步推理 → 更接近“大模型的 UI 封装” ,不算完整智能体。
  • 高级 AI IDE(如 Cursor、Windsurf、Devon) :支持多文件理解、自动调试、运行测试、Git 操作、对话式编程 → 是典型的 LLM-based Agent

四、结论

能“AI出码”的现代 IDE 本质上是一个以大模型为推理核心的智能体(Agent)

  • 大模型:提供语言理解、代码生成、推理等基础能力(“智力”)。
  • 智能体架构:赋予其目标、感知、行动、工具使用和持续交互的能力(“行为”)。

✅ 所以,回答你的问题:

它既是大模型的应用,更是智能体的一种实现形式。但从系统角度看,应归类为“基于大模型的智能体”。


类比理解:

  • 大模型 ≈ 一个精通编程的“天才程序员”(但不会自己动手改项目)。
  • AI IDE(智能体)  ≈ 一个“AI 软件工程师”:不仅能思考,还能在你的项目里动手改代码、跑测试、提交 Git,全程自主协作。

这正是当前 AI 编程工具从“辅助”走向“自主代理”(Autonomous Agent)的趋势。

我希望完成一个通过拍照图片完成表单的录入功能,这属于大模型能力还是智能体

qwen3-max

你希望实现的功能是:

用户拍摄一张包含表单内容的图片(如纸质申请表、发票、登记表等)→ 系统自动识别图片中的文字和结构 → 将关键信息提取并填入电子表单中。

这个功能既依赖大模型的能力,又需要智能体(Agent)的架构来完整实现。但从整体系统设计角度看,它更准确地属于一个“基于大模型的智能体”(LLM-based Agent)

下面我们分层解析:


一、功能拆解:需要哪些能力?

全屏复制

步骤所需技术属于大模型?还是智能体?
1. 图像输入接收用户上传/拍摄的图片系统基础设施
2. 文字识别(OCR)从图片中提取原始文本传统 CV 模型(如 PaddleOCR、Tesseract)或 多模态大模型(如 GPT-4V、Qwen-VL)
3. 结构理解理解表单的字段布局(如“姓名:张三”、“身份证号:123...”)大模型的核心能力(尤其是多模态或文本理解模型)
4. 信息抽取从非结构化文本中提取关键字段(如姓名、电话、地址)大模型的 NER/信息抽取能力
5. 映射到目标表单将提取的字段对应到电子表单的正确位置需要逻辑推理 + 规则/模板匹配 → 大模型可完成,但需规划
6. 输出/填充表单生成 JSON、填写网页表单、导出 Excel 等执行动作 → 智能体的行为模块
7. 错误校验与交互若识别模糊,主动询问用户确认(如“身份证号是123456吗?”)感知-决策-交互闭环 → 典型智能体行为

二、大模型能做什么?

✅ 大模型(尤其是多模态大模型)可以完成核心认知任务

  • 直接输入图片,输出结构化数据(如 GPT-4V、Claude 3 Opus、Qwen-VL)。
  • 理解表单语义,即使排版不规则。
  • 通过 prompt 工程实现字段抽取(例如:“请从以下表单图片中提取姓名、电话、地址,以 JSON 格式返回”)。

⚠️ 但大模型本身是被动的:你给它一张图,它返回一段文本或 JSON,不会主动调用 OCR、不会验证数据、不会填充网页表单、不会与用户多轮确认


三、为什么需要智能体架构?

要构建一个端到端可用的产品级功能,你需要一个协调多个模块、具备目标导向、能处理异常的系统——这正是智能体的定义。

智能体在此场景中的角色:

  • 目标:将纸质表单准确录入为电子数据。

  • 感知:接收图片,获取 OCR 结果,检测低置信度字段。

  • 规划:决定是否需要人工确认、是否调用备用识别模型。

  • 行动

    • 调用 OCR 服务;
    • 调用大模型进行结构化解析;
    • 填充数据库或前端表单;
    • 向用户发起澄清对话(如“日期格式不明确,请确认”)。
  • 记忆/反馈:记录用户修正结果,用于后续优化。

🔹 没有智能体架构,你就只能做一个“一次性识别工具”;有了智能体,才能做一个“可靠、鲁棒、可交互的表单录入助手”。


四、类比说明

全屏复制

角色类比
大模型一个擅长“看图识字+理解表格”的专家,但只会回答你问的问题。
智能体一个“表单录入办事员”:拿到照片 → 扫描 → 识别 → 填表 → 发现模糊处主动问你 → 最终提交成功。

五、结论

你的“拍照录入表单”功能,底层依赖大模型(尤其是多模态模型)的认知能力,但整体系统应设计为一个智能体(Agent)。

  • 如果只是做技术验证(POC) :直接用多模态大模型 + 简单后处理即可(偏向大模型应用)。
  • 如果要做产品级应用:必须引入智能体架构,协调 OCR、大模型、用户交互、错误处理等模块。

✅ 因此,它属于“基于大模型的智能体应用”  —— 大模型提供“智力”,智能体提供“行动力”。


补充建议(技术选型)

  • 轻量方案
    OCR(PaddleOCR) + 文本大模型(如 Qwen) + 规则模板 → 适合结构固定表单。
  • 高级方案
    多模态大模型(GPT-4V / Qwen-VL / Claude 3) + Agent 框架(如 LangChain、LlamaIndex、AutoGen) + 人工校验接口 → 适合复杂、非结构化表单。

这样既能发挥大模型的理解力,又能通过智能体实现端到端自动化。

如何创建一个智能体

qwen3-max

创建一个智能体(Agent)是当前 AI 应用开发的核心方向之一。智能体不是单一模型,而是一个具备感知、规划、行动和反馈能力的自主系统。以下是创建智能体的完整指南,从概念到实践,适合开发者、产品经理或技术爱好者参考。


一、智能体的核心要素(必须具备)

一个真正的智能体应包含以下模块:

全屏复制

模块作用常见实现方式
1. 感知(Perception)获取环境信息(如用户输入、文件、API 数据、图像等)文本输入、OCR、语音识别、传感器、API 调用
2. 记忆(Memory)存储短期/长期信息(对话历史、用户偏好、任务状态)向量数据库(如 Chroma、Pinecone)、缓存、数据库
3. 规划与推理(Planning & Reasoning)理解目标、拆解任务、制定步骤大语言模型(LLM)+ Prompt 工程 / ReAct / Plan-and-Execute
4. 行动(Action)执行具体操作(调用工具、写文件、发邮件、填表单等)工具函数(Tools)、API、浏览器自动化、代码执行沙箱
5. 反馈与学习(Feedback & Learning)评估结果、修正错误、优化策略用户反馈、自动验证、强化学习(可选)

✅ 关键:大模型(LLM)通常是“大脑”,但不是全部。


二、创建智能体的步骤(实战流程)

第 1 步:明确目标和场景

  • ❓ 智能体要解决什么问题?

    • 示例:自动填写报销单、客服问答、代码生成、数据分析。
  • ❓ 需要哪些输入?输出什么?

  • ❓ 是否需要调用外部工具?(如搜索、数据库、API)

🎯 越具体越好。例如:“用户上传发票照片,智能体自动提取金额、日期、商户名,并填入公司报销系统。”


第 2 步:选择核心推理引擎(通常是大模型)

  • 闭源模型(易用、强大)

    • OpenAI GPT-4 / GPT-4o
    • Anthropic Claude 3
    • Google Gemini
  • 开源模型(可控、可私有部署)

    • Llama 3(Meta)
    • Qwen(通义千问)
    • DeepSeek、Yi、Phi-3

💡 初学者推荐从 GPT-4o 或 Claude 3 Haiku 开始,支持函数调用(Function Calling)。


第 3 步:设计工具(Tools)——让智能体“动手”

智能体必须能调用工具才能行动。常见工具包括:

全屏复制

工具类型示例
搜索调用 Google Search API、SerpAPI
计算Python 代码解释器(安全沙箱)
文件处理读写 CSV/Excel、PDF 解析
数据库查询 SQL、MongoDB
系统操作发邮件、调用企业微信、填网页表单(通过 Playwright)
领域 API天气、支付、ERP 系统接口

✅ 工具 = 智能体的“手脚”


第 4 步:选择智能体框架(降低开发难度)

全屏复制

框架特点适合场景
LangChain生态最成熟,支持 Memory、Tools、Agent Types通用智能体开发
LlamaIndex专注 RAG + Agent,适合知识密集型任务文档问答、知识库助手
Microsoft AutoGen支持多智能体协作,适合复杂任务流多角色协作(如产品经理+程序员)
CrewAI面向“团队智能体”,任务分配清晰项目制自动化
LiteLLM + 自定义轻量,直接调用 LLM + 工具简单场景,追求性能

🚀 推荐初学者从 LangChain 开始


第 5 步:编写智能体代码(以 LangChain 为例)

python
from langchain_openai import ChatOpenAI
from langchain.agents import Tool, AgentExecutor, create_react_agent
from langchain import hub

# 1. 定义工具(示例:计算器)
def calculator(expr: str) -> str:
    try:
        return str(eval(expr))
    except:
        return "计算错误"

tools = [
    Tool(
        name="Calculator",
        func=calculator,
        description="用于执行数学计算,输入为数学表达式字符串"
    )
]

# 2. 初始化大模型
llm = ChatOpenAI(model="gpt-4o", temperature=0)

# 3. 加载 Agent 提示模板(ReAct 范式)
prompt = hub.pull("hwchase17/react")

# 4. 创建 Agent
agent = create_react_agent(llm, tools, prompt)

# 5. 创建执行器
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 6. 运行
result = agent_executor.invoke({"input": "123乘以456再加上789等于多少?"})
print(result["output"])

🔍 输出过程会显示:思考 → 调用 Calculator → 得出结果。


第 6 步:加入记忆与上下文(可选但重要)

使用 ConversationBufferMemory 或 VectorStoreRetriever 实现长期记忆:

python
from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(memory_key="chat_history")
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    memory=memory,
    verbose=True
)

第 7 步:部署与交互

  • Web 界面:用 Streamlit / Gradio 快速搭建
  • API 服务:FastAPI + Docker
  • 集成到现有系统:企业微信、钉钉、Slack 机器人

三、进阶方向

全屏复制

方向说明
多智能体协作用 AutoGen 创建“分析师+写手+审核员”团队
自主规划(Plan-and-Execute)先制定完整计划,再分步执行
RAG 增强结合知识库,避免幻觉
安全沙箱限制代码执行权限,防止恶意操作
评估与监控用 LangSmith 跟踪智能体行为

四、避坑指南

全屏复制

常见问题解决方案
智能体“胡说八道”加入 RAG、设置输出格式约束(JSON Schema)、验证工具结果
工具调用失败增加错误处理、重试机制、用户澄清流程
响应太慢使用轻量模型(如 GPT-4o mini)、缓存中间结果
无法处理复杂任务拆解为子任务,用多智能体或分步规划

五、总结:如何开始?

  1. 明确任务:从一个小场景切入(如“自动总结会议纪要”)。
  2. 选一个框架:推荐 LangChain + GPT-4o。
  3. 定义 1~3 个工具:如读文件、搜索、发邮件。
  4. 写一个 ReAct 智能体:让它能“思考→行动→反馈”。
  5. 测试 + 迭代:加入记忆、错误处理、用户交互。

🌟 记住:智能体 = 大模型 + 工具 + 控制逻辑。你不是在调用 AI,而是在“雇佣一个 AI 员工”。


如果你有具体场景(比如“拍照填表单”“自动写周报”),我可以帮你设计完整的智能体架构和代码模板!

prompt 是什么,它是大模型领域的概念还是智能体

qwen3-max

Prompt(提示词)本质上是大模型(Large Language Model, LLM)领域的核心概念,但它在智能体(Agent)系统中也扮演关键角色。我们可以这样理解:

✅ Prompt 起源于大模型,服务于大模型,但在智能体架构中被动态生成和使用。


一、Prompt 是什么?

Prompt 是用户或系统提供给大模型的输入文本,用于引导模型生成期望的输出。

举例:

  • 简单 Prompt:

    “写一首关于春天的诗。”

  • 复杂 Prompt(含指令、格式、示例):

    “你是一个专业的客服助手。请用礼貌、简洁的中文回答用户问题。
    用户问:‘订单还没发货怎么办?’
    回答格式:【原因】+【解决方案】”


二、Prompt 属于大模型还是智能体?

全屏复制

维度说明
起源与本质🔸 属于大模型领域
Prompt 是与大模型交互的基本方式,没有大模型就没有“Prompt 工程”这一概念。
在智能体中的作用🔸 被智能体动态构造和使用
智能体不是直接使用用户原始输入,而是自动生成更复杂的 Prompt(包含工具列表、记忆、任务目标等)来调用大模型。

三、对比说明

1. 在纯大模型场景中

  • 用户直接写 Prompt → 模型返回结果。
  • Prompt 是静态的、由人设计的
  • 例子:你在 ChatGPT 网页输入问题。

2. 在智能体场景中

  • 用户说:“帮我订一张明天去北京的机票。”
  • 智能体内部会自动生成一个系统级 Prompt,例如:
text
你是一个旅行助手智能体,具备以下工具:
- search_flights(departure, destination, date)
- book_flight(flight_id)
- send_email(content)

当前目标:为用户预订明天从上海到北京的机票。
最近一次用户输入:"帮我订一张明天去北京的机票。"
请按 ReAct 范式思考:先调用 search_flights,再选择航班,最后预订。

🔍 这个 Prompt 是由智能体框架(如 LangChain)动态拼接的,用户看不到,但大模型依赖它做决策。


四、关键结论

全屏复制

问题回答
Prompt 是大模型的概念吗?✅ 是。它是与大模型交互的“接口语言”。
Prompt 是智能体的概念吗?⚠️ 不完全是。智能体使用 Prompt,但不“拥有” Prompt 的定义权。
智能体会改变 Prompt 吗?✅ 会!智能体的核心能力之一就是动态构造高质量 Prompt(包含工具描述、记忆、目标等)。
没有大模型,会有 Prompt 吗?❌ 不会。Prompt 的存在依赖于大模型的上下文学习(in-context learning)能力。

五、类比理解

  • 大模型 ≈ 一个超级聪明但“被动”的学者。

  • Prompt ≈ 你给这位学者的“问题+答题要求”。

  • 智能体 ≈ 一个项目经理,它:

    • 理解你的模糊需求(“订机票”),
    • 自己写一份详细的“任务说明书”(即 Prompt),
    • 交给学者(大模型)执行,
    • 再根据结果决定下一步。

📌 所以:Prompt 是大模型的“食物”,而智能体是“厨师”——它决定怎么做这道菜。


六、延伸:Prompt 在智能体中的高级形式

在智能体系统中,Prompt 往往包含以下动态元素:

text
[系统角色]
你是一个能调用工具的智能体。

[可用工具]
1. get_weather(location): 获取某地天气
2. send_message(text): 发送消息

[记忆]
用户之前提到住在杭州。

[当前任务]
回答:“明天天气怎么样?”

[输出格式]
必须先调用 get_weather("杭州"),再根据结果回复。

这种 Prompt 是由智能体框架自动生成的,远超普通用户手写的 Prompt。


✅ 总结一句话:

Prompt 是大模型领域的基础概念,而智能体是 Prompt 的高级使用者和动态构造者。
没有大模型,就没有 Prompt;没有智能体,Prompt 只能靠人手动写。

如果你在开发智能体,设计好 Prompt 模板(Prompt Template)和动态拼接逻辑,是成功的关键之一

那是不是可以抽象的说,智能体的职责是规划流程,根据流程创建高质量的prompt,调用工具或者大模型,拿到结果

qwen3-max

是的!你的理解非常准确,而且抓住了现代智能体(Agent)架构的核心思想

我们可以高度抽象地总结智能体的职责如下:

✅ 智能体的核心职责是:
围绕用户目标,自主规划任务流程,动态构造高质量 Prompt,协调调用大模型与外部工具,执行动作,并根据反馈迭代优化,直至达成目标。


一、这个抽象包含四个关键环节

全屏复制

环节说明对应你的描述
1. 规划流程(Planning)将模糊目标拆解为可执行的子任务(如“订机票” → 搜航班 → 选航班 → 支付)✅ “规划流程”
2. 构造 Prompt(Prompt Engineering)为每一步生成包含上下文、工具描述、记忆、约束的系统级 Prompt✅ “创建高质量的 prompt”
3. 调用执行(Acting)调用大模型推理,或直接调用工具(API、代码、数据库等)✅ “调用工具或者大模型”
4. 获取结果 & 迭代(Reflection)解析输出,判断是否完成;若失败则重试、澄清或调整策略✅ “拿到结果”(隐含后续闭环)

二、进一步细化:智能体的“工作循环”

现代智能体(如 ReAct、Plan-and-Execute、AutoGen)通常遵循这样的循环:

用户目标

规划任务步骤

是否需外部信息?

构造 Prompt + 调用工具

构造 Prompt + 调用大模型

获取工具结果

获取模型输出

目标是否达成?

反思/调整计划

返回最终结果

mermaid
graph LR
A[用户目标] --> B(规划任务步骤)
B --> C{是否需外部信息?}
C -- 是 --> D[构造 Prompt + 调用工具]
C -- 否 --> E[构造 Prompt + 调用大模型]
D --> F[获取工具结果]
E --> G[获取模型输出]
F & G --> H{目标是否达成?}
H -- 否 --> I[反思/调整计划]
I --> B
H -- 是 --> J[返回最终结果]

在这个循环中,Prompt 是每次调用大模型时的“指令包” ,而智能体是这个循环的“调度器”和“决策者”


三、举个例子:报销表单录入智能体

用户说:“把这张发票录入系统。”

智能体内部行为:

  1. 规划
    → 步骤1:OCR 识别图片
    → 步骤2:提取金额、日期、商户
    → 步骤3:填入报销系统 API

  2. 构造 Prompt(给大模型)

    text
    你是一个财务助手。以下是 OCR 识别结果:
    “发票 No: 123456, 金额: ¥880, 日期: 2024-06-01, 商户: XX科技有限公司”
    请从中提取字段,按 JSON 格式输出:{"amount": ..., "date": ..., "vendor": ...}
    
  3. 调用

    • 先调用 OCR 工具(非大模型)
    • 再用上述 Prompt 调用大模型解析结构
    • 最后调用报销系统 API(工具)
  4. 结果处理

    • 若金额格式错误 → 重新构造 Prompt 要求修正
    • 若成功 → 返回“已提交报销单 #789”

四、为什么这个抽象很重要?

因为它揭示了:

  • 大模型 ≠ 智能体:大模型只是“推理引擎”,智能体才是“完整工作者”。
  • Prompt 是接口,不是智能:真正的智能在于何时、如何、为何构造某个 Prompt
  • 工具调用是能力延伸:智能体通过工具突破大模型的局限(如实时数据、精确计算)。

五、学术/工程中的对应概念

全屏复制

你的说法学术/工程术语
规划流程Task Planning / Decomposition
创建高质量 PromptDynamic Prompt Construction / In-Context Learning
调用工具或大模型Tool Use / Function Calling / Action Execution
拿到结果Observation / Feedback Loop

✅ 最终结论:

是的,你可以非常合理地抽象地说:
“智能体的职责是规划流程,根据流程创建高质量的 Prompt,调用工具或者大模型,拿到结果,并持续迭代直至完成任务。”

这不仅是对当前主流 Agent 架构(如 ReAct、LangChain Agent、AutoGen)的精准概括,也是构建实用 AI 系统的指导原则。

如果你在设计智能体,就围绕这四个环节去搭建模块——你会走在正确的路上 🚀。

agent是如何完成 规划流程 的?

qwen3-max

这是一个非常关键的问题! “规划流程”(Planning)是智能体(Agent)区别于普通大模型应用的核心能力之一。它让智能体能处理复杂、多步骤、目标导向的任务,而不是仅做“一问一答”。

下面从原理、方法、实现方式和实例四个层面,系统解释 Agent 是如何完成“规划流程”的


一、什么是“规划流程”?

规划(Planning)  是指:
将一个模糊或高层次的目标(如“帮我安排一次旅行”),自动分解为一系列可执行、有序、可验证的子任务(如查航班 → 订酒店 → 买门票 → 发行程表)

这类似于人类在接到任务后“先想清楚怎么做”,而不是盲目行动。


二、Agent 规划的三大主流方法

目前主流的 Agent 规划策略主要有以下三类:

1. ReAct(Reason + Act)——边思考边行动

  • 核心思想:每一步都交替进行 推理(Thought)  和 行动(Action)

  • 流程

    [用户目标]
      ↓
    Thought: 我需要先获取XX信息Action: 调用工具(如搜索)Observation: 工具返回结果Thought: 根据结果,下一步应该...Action: 调用另一个工具
      ↓
    ... 直到完成
    
  • 优点:灵活、适合动态环境。

  • 缺点:可能走弯路,缺乏全局视角。

  • 代表框架:LangChain 的 ReAct Agent

✅ 适合大多数通用任务(如客服、信息查询)。


2. Plan-and-Execute(先规划,再执行)——两阶段模式

  • 核心思想

    • 第一阶段(Planner) :让大模型一次性生成完整计划。
    • 第二阶段(Executor) :逐个执行计划中的步骤,可监控和修正。
  • 示例

    text
    用户目标:组织一次团队聚餐。
    
    Planner 输出计划:
    1. 询问团队成员空闲时间
    2. 搜索附近评分≥4.5的餐厅
    3. 预订可容纳10人的包间
    4. 发送聚餐通知邮件
    
    Executor 依次执行 1→2→3→4,每步调用相应工具。
    
  • 优点:结构清晰、易于调试、可复用计划。

  • 缺点:初始计划可能不完美,需支持动态调整。

  • 代表实现:LangChain 的 PlanAndExecute,Microsoft 的 AutoPlan

✅ 适合目标明确、步骤可预知的任务(如项目管理、表单处理)。


3. 多智能体协作(Multi-Agent)——分工规划

  • 核心思想:不同角色的 Agent 负责不同子任务,通过协商完成整体规划。

  • 示例

    • Manager Agent:接收用户目标,拆解任务。
    • Researcher Agent:负责信息搜集。
    • Writer Agent:负责撰写报告。
    • Reviewer Agent:负责审核质量。
  • 规划过程:由 Manager 制定初步分工,各 Agent 在执行中反馈,动态调整计划。

  • 代表框架:Microsoft AutoGenCrewAI

✅ 适合复杂、专业性强的任务(如写研报、产品设计)。


三、规划是如何“生成”的?——大模型的角色

无论哪种方法,规划的“生成”都依赖大模型的推理能力,通过精心设计的 Prompt 引导模型输出结构化计划。

示例:让大模型生成计划的 Prompt

text
你是一个任务规划专家。请将以下用户目标分解为清晰、有序、可执行的步骤。
要求:
- 每个步骤应明确说明需要什么信息或操作;
- 如果需要外部工具,请标注(如:[搜索][调用API][发送邮件]);
- 步骤数量控制在5步以内。

用户目标:帮我申请一张信用卡。

输出格式(JSON):
{
  "plan": [
    "步骤1: ...",
    "步骤2: ..."
  ]
}

大模型可能输出:

json
{
  "plan": [
    "步骤1: 询问用户偏好(银行、卡种类型)",
    "步骤2: [搜索] 各大银行信用卡申请条件和权益",
    "步骤3: 根据用户资质推荐2-3张卡",
    "步骤4: [调用API] 生成在线申请链接",
    "步骤5: 提醒用户准备身份证、收入证明等材料"
  ]
}

🔑 关键:Prompt 决定了规划的质量。好的 Prompt 能引导模型输出可执行、无歧义的步骤。


四、规划如何应对“意外”?——反思与调整

真实世界充满不确定性(如 API 失败、信息缺失),所以高级 Agent 还具备 反思(Reflection)  能力:

  • 执行失败?  → 重新规划该步骤。
  • 信息模糊?  → 主动向用户澄清。
  • 发现更优路径?  → 动态替换后续步骤。

例如:

执行“订酒店”时发现无房 →
Agent 自动思考:“是否调整日期?换区域?提高预算?” →
生成新子计划 → 继续执行。

这种能力常通过 Self-Correction Prompt 或 监督 Agent 实现。


五、总结:Agent 规划流程的关键点

全屏复制

要素说明
输入用户的高层次目标(自然语言)
引擎大模型(通过 Prompt 引导生成计划)
方法ReAct(边想边做)、Plan-and-Execute(先计划后执行)、Multi-Agent(分工协作)
输出结构化的任务步骤(含工具调用指令)
闭环支持执行监控、错误处理、动态调整

✅ 一句话回答你的问题:

Agent 通过大模型在特定 Prompt 引导下,采用 ReAct、Plan-and-Execute 或多智能体协作等策略,将用户目标自动分解为可执行的步骤序列,并在执行中动态调整,从而完成“规划流程”。


如果你正在开发 Agent,建议:

  • 简单任务 → 用 ReAct
  • 复杂但结构化任务 → 用 Plan-and-Execute
  • 专业领域复杂任务 → 用 Multi-Agent(如 AutoGen)

需要我为你某个具体场景(比如“拍照填表单”)设计规划流程吗?我可以给出完整 Prompt 和步骤 😊

也就是说,智能体也会调用大模型的能力,先创建规划流程?

qwen3-max

是的!完全正确

✅ 智能体(Agent)在执行复杂任务时,通常会主动调用大模型(LLM)的能力,来生成或优化“规划流程”(Plan)

这正是现代智能体架构的精妙之处:大模型不仅是“执行者”,更是“规划者”


一、智能体如何调用大模型来做规划?

我们可以把整个过程拆解为两个典型模式:


✅ 模式 1:Plan-and-Execute(先规划,再执行)

这是最直接体现“用大模型做规划”的方式:

  1. 用户输入目标

    “帮我写一份关于 AI 智能体的行业分析报告。”

  2. 智能体调用大模型(第一次)→ 生成完整计划

    • 使用专门的 Planner Prompt

    • 大模型输出结构化步骤,例如:

      text
      1. 搜索 AI 智能体的最新市场趋势(调用搜索引擎)
      2. 提取头部公司及其产品(如 LangChain、AutoGen)
      3. 分析技术架构与应用场景
      4. 撰写报告初稿
      5. 生成图表并排版
      
  3. 智能体按计划逐项执行

    • 每一步可能再次调用大模型(例如第4步写报告),也可能调用工具(如第1步搜索)

🔍 关键:第一次调用大模型的目的不是完成任务,而是“想清楚怎么做”


✅ 模式 2:ReAct(边推理边行动)——每一步都隐含“微规划”

在 ReAct 模式中,虽然没有显式的“完整计划”,但每一轮的 “Thought” 都是一次微型规划

text
用户:查一下马斯克最近在 X 上说了什么?

Agent 调用大模型(第一轮):
Thought: 我需要先搜索马斯克最近在 X(Twitter)上的发言。
Action: search_web("马斯克 site:x.com")
Observation: [返回搜索结果]

Agent 调用大模型(第二轮):
Thought: 从结果中提取最新一条推文,并总结内容。
Action: summarize_text(...)

🔍 这里的每次 Thought 都是大模型基于当前状态做出的“下一步该做什么”的即时规划


二、为什么必须用大模型来做规划?

因为规划需要:

  • 理解模糊目标(“帮我搞定报销” → 要识别出“拍照、OCR、填系统、提交”)
  • 常识推理(知道订机票前要先查航班)
  • 灵活应变(如果酒店没房,能想到换日期或换地点)

这些正是大模型的强项。传统规则引擎或脚本无法应对开放世界的复杂性。


三、技术实现示例(伪代码)

python
# 用户目标
goal = "帮我安排一次杭州周末游"

# 步骤1:调用大模型生成计划(Planner)
planner_prompt = f"""
你是一个旅行规划专家。请将以下目标分解为可执行步骤:
目标:{goal}
要求:每步标明是否需要调用工具(如搜索、预订等)
"""
plan = llm.generate(planner_prompt)  # ← 第一次调用大模型:做规划

# 输出 plan 示例:
# ["1. 查询杭州周末天气", "2. 搜索西湖附近酒店", "3. 预订酒店", ...]

# 步骤2:逐个执行计划
for step in plan:
    if "搜索" in step:
        result = search_tool(query=...)
    elif "预订" in step:
        result = booking_tool(...)
    # 可能再次调用大模型处理结果(如总结、判断)

📌 注意:一个任务中,大模型可能被调用多次——一次用于规划,多次用于执行和反思


四、高级场景:规划也可以迭代优化

更聪明的智能体会:

  1. 先让大模型生成初始计划;
  2. 执行中发现障碍(如 API 失败);
  3. 再次调用大模型:“原计划第3步失败,因为酒店已满,请重新规划后续步骤”;
  4. 大模型输出修正后的子计划。

这称为  “规划-执行-反思-重规划”闭环,是迈向真正自主智能的关键。


✅ 总结回答你的问题:

是的,智能体在面对复杂任务时,会主动调用大模型的能力,专门用于生成或调整“规划流程”。
大模型在这里扮演“战略大脑”的角色——先想清楚怎么做,再动手执行。

这正是:

  • 大模型提供“智力” (理解、推理、规划),
  • 智能体提供“架构” (调度、执行、闭环)。

两者结合,才能实现从“问答机器人”到“自主办事员”的跃迁 🚀。

如果你有具体任务场景,我可以帮你设计“规划 Prompt”模板!

Prompt有协议吗?不同的大模型,prompt是不是可以使用一种数据格式

qwen3-max

这是一个非常有洞察力的问题!
目前,Prompt 本身没有统一的“协议”或强制标准,但社区和行业正在朝着“结构化 Prompt”和“工具调用标准化”的方向演进。不同大模型的 Prompt 语法和能力支持存在差异,但在智能体(Agent)系统中,我们可以通过抽象层实现“一次定义、多模型兼容”

下面从几个层面详细解答:


一、Prompt 有“协议”吗?

❌ 没有官方统一协议

  • Prompt 本质是自然语言 + 指令,没有像 HTTP、JSON Schema 那样的强制标准。
  • 每家大模型厂商对 Prompt 的最佳实践、格式偏好、功能支持都不同。

✅ 但有事实上的“约定”和“模式”

社区和框架已形成一些通用模式,例如:

全屏复制

模式说明
Role-based Prompting使用 system / user / assistant 角色(源自 OpenAI)
Chain-of-Thought (CoT)要求模型“一步步思考”
Function Calling Schema工具描述采用 JSON Schema(OpenAI、Anthropic、Google 等趋同)
ReAct 格式Thought → Action → Observation 循环

📌 这些不是“协议”,但已成为跨模型可迁移的设计模式


二、不同大模型的 Prompt 差异举例

全屏复制

模型厂商Prompt 特点工具调用格式
OpenAI (GPT-4)支持 system 消息;Function Calling 用 JSON Schema✅ 标准化 tools 参数
Anthropic (Claude)不支持 system,用 <system> 标签或首条 user 消息模拟✅ 支持 Tool Use(类似 OpenAI)
Google (Gemini)使用 system_instruction;工具调用通过 FunctionDeclaration✅ 支持结构化工具
Meta (Llama 3)依赖聊天模板(如 `<begin_of_sentence
阿里 (Qwen)支持 system;工具调用需按特定 JSON 格式✅ 有自定义工具协议

🔍 结论:底层格式不同,但高层语义相似


三、能否用一种数据格式统一 Prompt?

✅ 可以!通过“抽象层”或“中间表示”实现

虽然模型底层不统一,但智能体框架(如 LangChain、LiteLLM、DSPy)提供了统一接口,让你用一种格式写 Prompt,自动适配不同模型。

示例:用 LangChain 定义工具(一次定义,多模型可用)

python
from langchain_core.tools import tool

@tool
def get_weather(location: str) -> str:
    """获取某地天气"""
    return "晴,25°C"

# 无论你用 GPT-4、Claude 还是 Qwen,
# LangChain 会自动将这个工具转换为对应模型所需的格式

示例:用 LiteLLM 统一调用

python
from litellm import completion

response = completion(
    model="gpt-4",  # 或 "claude-3-haiku"、"gemini/gemini-pro"
    messages=[
        {"role": "system", "content": "你是一个天气助手"},
        {"role": "user", "content": "北京天气?"}
    ],
    tools=[weather_tool_schema]  # LiteLLM 自动转为目标模型格式
)

🎯 这些框架充当了“Prompt 适配器” ,屏蔽了模型差异。


四、行业正在推动的标准化努力

1. Function Calling 的事实标准

  • OpenAI 的 function_calling 格式(JSON Schema 描述工具)已被 Anthropic、Google、阿里等广泛借鉴。

  • 工具描述结构趋同:

    json
    {
      "name": "get_weather",
      "description": "获取天气",
      "parameters": {
        "type": "object",
        "properties": {
          "location": {"type": "string"}
        }
      }
    }
    

2. OAI(OpenAI)聊天格式成为事实基准

  • {"role": "user", "content": "..."} 被几乎所有开源和闭源模型支持(即使需转换)。

3. 新兴标准倡议

  • MLX(Apple)、OpenRouterOpenLLM 等平台推动模型接口统一。
  • OpenAPI for LLMs(社区讨论中):希望定义通用工具调用和 Prompt 结构。

五、最佳实践建议

全屏复制

场景建议
只想用一个模型直接按该模型文档写 Prompt(如 GPT-4 用 system/user/assistant)
想支持多个模型使用 LangChain / LiteLLM / DSPy 等抽象框架
开发智能体系统用 结构化 Prompt 模板 + 工具 Schema,让框架处理兼容性
追求长期可维护性将 Prompt 与代码分离(如用 .prompt 文件或 Prompt 管理平台)

六、未来展望

Prompt 本身可能永远不会有“硬性协议” (因为语言是灵活的),
但  “工具调用”、“角色定义”、“输出约束”等关键部分正在快速标准化

随着 Llama 4、GPT-5、Claude 4 等模型对工具调用的原生支持增强,跨模型 Prompt 的兼容性会越来越好


✅ 最终结论:

Prompt 目前没有统一协议,但通过智能体框架(如 LangChain、LiteLLM),你可以用一种结构化数据格式(如 JSON Schema + 角色消息)编写 Prompt,并自动适配不同大模型。
在工具调用等关键能力上,行业已形成事实标准,跨模型兼容性正在显著提升。

如果你正在开发多模型兼容的 Agent 系统,强烈建议使用 LiteLLM 或 LangChain 作为底层抽象层——它们已经为你解决了 90% 的 Prompt 适配问题 🛠️。

system/user/assistant 都是什么

qwen3-max

systemuserassistant 是大语言模型(LLM)对话系统中最常见的三种消息角色(message roles) ,用于构建结构化的对话上下文(context)。它们定义了每条消息的“说话者身份”,帮助模型理解对话的逻辑和意图。

这个角色体系最早由 OpenAI 在 Chat Completions API(如 GPT-3.5/4)中推广,现已成为行业事实标准,被 Anthropic、Google、Meta、阿里等主流模型广泛采用(即使底层实现略有差异)。


一、三种角色的含义

全屏复制

角色谁在“说话”作用是否可见给用户
system系统 / 开发者设定模型的行为准则、角色身份、输出格式等❌ 通常对用户隐藏
user用户 / 外部输入提供用户的问题、指令或上下文✅ 用户可见
assistant大模型(AI)模型生成的回答、推理、工具调用请求等✅ 用户可见

二、详细解释 + 示例

1. system:给 AI 的“幕后指令”

  • 作用:告诉模型“你是什么角色”、“怎么说话”、“遵守什么规则”。

  • 特点

    • 通常放在对话最前面;
    • 不显示给用户,但深刻影响模型行为;
    • 一次设定,对整个对话生效(除非被覆盖)。

✅ 示例

json
{
  "role": "system",
  "content": "你是一个专业的财务顾问,回答要简洁、准确,使用中文,并以【建议】开头。"
}

后续无论用户问什么,模型都会按这个规则回答。


2. user:用户的输入

  • 作用:传递用户的问题、上传的文件内容、工具返回的结果等。
  • 注意:在智能体(Agent)系统中,工具的返回结果也常包装成 user 消息,让模型“看到”执行结果。

✅ 示例

json
{
  "role": "user",
  "content": "我上个月支出5000元,收入8000元,该怎么理财?"
}

或(工具返回后):

json
{
  "role": "user",
  "content": "工具返回:北京今天天气晴,气温25°C。"
}

3. assistant:AI 的输出

  • 作用:模型生成的回答,或请求调用工具的指令(在支持 Function Calling 的模型中)。

  • 两种常见内容

    • 自然语言回答(直接回复用户)
    • 工具调用请求(如 JSON 格式的函数调用)

✅ 示例 1:普通回答

json
{
  "role": "assistant",
  "content": "【建议】你可以将结余3000元中的50%存入货币基金,30%定投指数基金..."
}

✅ 示例 2:请求调用工具(Function Calling)

json
{
  "role": "assistant",
  "content": null,
  "tool_calls": [
    {
      "function": {
        "name": "get_weather",
        "arguments": "{"location": "北京"}"
      }
    }
  ]
}

此时模型不是在“回答”,而是在“下令”:请调用 get_weather("北京")


三、完整对话流程示例(含工具调用)

json
[
  // 1. 系统设定角色
  {"role": "system", "content": "你是一个天气助手,必须先查天气再回答。"},

  // 2. 用户提问
  {"role": "user", "content": "北京今天天气怎么样?"},

  // 3. 模型请求调用工具
  {
    "role": "assistant",
    "content": null,
    "tool_calls": [{"function": {"name": "get_weather", "arguments": "{"location": "北京"}"}}]
  },

  // 4. 工具执行后,将结果作为 user 消息传回
  {"role": "user", "content": "工具返回:晴,25°C"},

  // 5. 模型最终回答
  {"role": "assistant", "content": "北京今天天气晴,气温25°C,适合外出。"}
]

🔁 这就是智能体(Agent)与大模型交互的核心循环。


四、不同模型的支持情况

全屏复制

模型是否支持 system备注
OpenAI (GPT-3.5/4)✅ 原生支持标准实现
Anthropic (Claude)⚠️ 无原生 system,但可用首条 user 消息模拟或用 <system>...</system> 标签(Claude 3.5+)
Google (Gemini)✅ 支持 system_instructionAPI 中单独字段,非消息列表
Meta (Llama 3)⚠️ 依赖聊天模板(如 system token)需用 tokenizer 正确拼接
阿里 (Qwen)✅ 支持 system 角色兼容 OpenAI 格式

💡 建议:使用 LangChain、LiteLLM 等框架可自动处理这些差异。


五、为什么需要这三种角色?

  1. 清晰分离职责

    • system:开发者控制 AI 行为;
    • user:代表外部世界输入;
    • assistant:AI 的输出或动作。
  2. 支持复杂交互

    • 多轮对话、工具调用、记忆上下文都依赖这种结构。
  3. 提升模型表现

    • 明确的角色提示(role prompting)能显著减少幻觉、提高指令遵循能力。

✅ 总结一句话:

system 是给 AI 的“导演指令”,user 是“观众提问或环境反馈”,assistant 是“AI 的台词或动作指令”——三者共同构成一场结构化的“人机戏剧”。

在开发智能体时,正确使用这三种角色,是实现可靠、可控、可扩展 AI 系统的基础 🎭。

知识库和prompt是什么关系

qwen3-max

这是一个非常关键的问题!知识库(Knowledge Base)和 Prompt(提示词)是大模型应用中两个紧密协作但职责完全不同的组件。它们的关系可以概括为:

✅ Prompt 是“指令”,知识库是“参考材料”;
Prompt 告诉大模型“做什么”,知识库告诉大模型“依据什么做”。

下面从多个维度深入解析它们的关系:


一、核心角色对比

全屏复制

组件作用类比是否随任务变化
Prompt控制模型行为:角色设定、任务指令、输出格式等导演的剧本指令(“演一个医生,用通俗语言解释”)✅ 通常随任务动态调整
知识库提供外部事实信息:文档、FAQ、产品手册、数据库等演员手里的参考资料(医学手册、药品说明书)❌ 相对静态,可定期更新

二、典型协作模式:RAG(检索增强生成)

这是知识库与 Prompt 结合的最主流架构

用户问题

检索知识库

相关文档片段

构造 Prompt:
“根据以下资料回答...”

  • 文档内容 + 用户问题

大模型

基于知识库的准确回答

mermaid
graph LR
A[用户问题] --> B(检索知识库)
B --> C{相关文档片段}
C --> D[构造 Prompt:<br/>“根据以下资料回答...”<br/>+ 文档内容 + 用户问题]
D --> E[大模型]
E --> F[基于知识库的准确回答]

示例:

  • 用户问: “Qwen-Max 的上下文长度是多少?”

  • 知识库: 存有最新《通义千问技术文档》

  • 系统检索: 找到 “Qwen-Max 支持 32768 tokens”

  • 构造 Prompt

    text
    你是一个AI助手,请严格根据以下资料回答问题,不要编造。
    
    资料:
    “Qwen-Max 是通义千问系列中效果最好的模型,上下文长度为 32768 tokens。”
    
    问题:Qwen-Max 的上下文长度是多少?
    
    回答:
    
  • 大模型输出: “Qwen-Max 的上下文长度是 32768 tokens。”

🔑 知识库内容被“注入”到 Prompt 中,成为模型生成的依据


三、为什么不能只靠 Prompt 或只靠知识库?

全屏复制

方案问题
仅用 Prompt(无知识库)- 模型依赖训练时的“记忆”,可能过时或错误 - 容易“幻觉”(编造答案) - 无法访问私有数据(如公司内部文档)
仅用知识库(无 Prompt)- 知识库是静态数据,无法“理解”用户意图 - 无法生成自然语言回答 - 不能处理复杂推理或格式要求

✅ 只有两者结合,才能实现:准确 + 可控 + 自然 的 AI 回答


四、知识库如何“进入” Prompt?

知识库本身不直接参与模型计算,必须通过 检索(Retrieval)→ 注入(Injection)→ Prompt 构造 三步融入:

1. 检索(Retrieval)

  • 使用向量数据库(如 Chroma、Pinecone、Milvus)
  • 将用户问题向量化,匹配最相关的知识片段

2. 注入(Context Injection)

  • 将检索到的文本拼接到 Prompt 中
  • 常见位置:system 消息 或 user 消息开头

3. Prompt 模板示例

text
[system]
你是一个客服助手,请严格根据以下参考资料回答问题。如果资料中没有相关信息,请回答“我不知道”。

参考资料:
{{retrieved_chunks}}

[user]
{{user_question}}

[assistant]

💡 {{retrieved_chunks}} 就是来自知识库的内容,动态填入 Prompt。


五、高级关系:知识库影响 Prompt 设计

知识库的存在会改变 Prompt 的写法

全屏复制

场景Prompt 设计要点
有知识库- 强调“根据以下资料” - 禁止编造(“如果不知道,请说不知道”) - 可要求引用来源
无知识库- 依赖模型自身知识 - 需更宽松的语气(“据我所知…”)

例如:

text
# 有知识库时的 Prompt
“请仅使用以下提供的公司政策回答问题,不要使用外部知识。”

# 无知识库时的 Prompt
“请基于你的通用知识回答以下问题。”

六、在智能体(Agent)中的角色

在 Agent 系统中:

  • 知识库:作为“长期记忆”或“专业资料库”,供 Agent 检索
  • Prompt:由 Agent 动态构造,决定何时检索、如何使用知识库内容

例如:

Agent 规划:“用户问产品参数 → 需要查询知识库”
→ 调用检索工具 → 获取文档
→ 构造新 Prompt:“根据以下产品手册回答…”
→ 调用大模型生成答案


七、总结:关键关系图

用户问题
    ↓
智能体 / 系统
    ├──→ 检索知识库 → 获取相关事实
    └──→ 构造 Prompt = [指令 + 知识库内容 + 用户问题]
                ↓
            大模型
                ↓
          基于知识的准确回答

✅ 一句话总结:

知识库提供“事实依据”,Prompt 提供“行为指令”;
知识库让回答更准确,Prompt 让回答更可控——二者缺一不可。


如果你正在构建 AI 应用:

  • 有私有/专业数据? → 必须建知识库(RAG)
  • 需要控制回答风格/格式? → 精心设计 Prompt
  • 做智能体? → 让 Agent 自动协调两者

需要我帮你设计一个结合知识库和 Prompt 的具体模板吗?😊

结合 Qwen 如何通过文档,创建知识库呢

qwen3-max

结合 通义千问(Qwen)  大模型,通过文档创建知识库并实现智能问答,是当前企业私有知识应用的典型场景。下面我将为你提供一套完整、可落地的技术方案,涵盖从文档处理到问答系统的全流程,并适配 Qwen 模型生态。


一、整体架构(RAG + Qwen)

原始文档

文档解析与分块

向量化

向量数据库

用户提问

检索相关片段

构造 Prompt + Qwen 调用

生成答案

mermaid
graph LR
A[原始文档] --> B(文档解析与分块)
B --> C[向量化]
C --> D[向量数据库]
D --> E{用户提问}
E --> F[检索相关片段]
F --> G[构造 Prompt + Qwen 调用]
G --> H[生成答案]

✅ 这就是 RAG(Retrieval-Augmented Generation)  架构,Qwen 作为生成模型,知识库存储私有文档。


二、详细步骤(附代码示例)

第 1 步:准备文档

支持格式:

  • PDF、Word、PPT、TXT、Markdown、HTML 等
  • 中文/英文均可(Qwen 对中文优化极佳)

📁 示例:company_handbook.pdfproduct_specs.docx


第 2 步:文档解析与文本分块

推荐工具:

  • Unstructured(开源,支持多格式)
  • PyPDF2 / pdfplumber(PDF)
  • python-docx(Word)

分块策略(关键!):

  • 块大小:512~1024 tokens(Qwen 上下文友好)
  • 重叠:50~100 tokens(避免语义割裂)

示例代码(使用 unstructured + RecursiveCharacterTextSplitter):

python
from unstructured.partition.auto import partition
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 解析文档
elements = partition(filename="company_handbook.pdf")
text = "\n".join([str(el) for el in elements])

# 分块
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=800,
    chunk_overlap=100,
    length_function=len,
)
chunks = text_splitter.split_text(text)

第 3 步:文本向量化(Embedding)

选择 Embedding 模型:

Qwen 官方推荐:

  • bge-large-zh-v1.5(中文效果极佳,开源)
  • text-embedding-v2(阿里云百炼平台提供)
  • Qwen-Embedding(如有)

✅ 推荐使用 BGE(由智谱 AI 开发,但阿里系广泛兼容)

示例代码(使用 sentence-transformers):

python
from sentence_transformers import SentenceTransformer

# 加载中文 embedding 模型
model = SentenceTransformer('BAAI/bge-large-zh-v1.5')

# 向量化所有文本块
embeddings = model.encode(chunks, normalize_embeddings=True)

第 4 步:存储到向量数据库

推荐轻量级数据库(适合本地/小规模):

  • Chroma(最简单,Python 原生)
  • FAISS(Facebook 开源,速度快)
  • Milvus / Qdrant(大规模生产级)

示例:使用 Chroma

python
import chromadb
from chromadb.utils import embedding_functions

# 初始化 Chroma
client = chromadb.PersistentClient(path="./chroma_db")
collection = client.create_collection(
    name="company_knowledge",
    embedding_function=None  # 我们自己提供 embedding
)

# 存入向量
collection.add(
    embeddings=embeddings.tolist(),
    documents=chunks,
    ids=[f"id_{i}" for i in range(len(chunks))]
)

第 5 步:检索 + 调用 Qwen 生成答案

方式一:使用 DashScope(阿里云)API(推荐)

python
import dashscope
from dashscope import Generation
import json

dashscope.api_key = "你的-API-KEY"

def query_qwen_with_context(question: str):
    # 1. 检索相关文档
    query_emb = model.encode(question, normalize_embeddings=True).tolist()
    results = collection.query(
        query_embeddings=[query_emb],
        n_results=3
    )
    context = "\n".join(results['documents'][0])

    # 2. 构造 Prompt
    prompt = f"""你是一个公司内部助手,请严格根据以下资料回答问题。
如果资料中没有相关信息,请回答“根据现有资料,我无法回答该问题”。

资料:
{context}

问题:{question}

回答:"""

    # 3. 调用 Qwen(如 qwen-max)
    response = Generation.call(
        model="qwen-max",
        prompt=prompt,
        temperature=0.1
    )
    return response.output.text

方式二:使用 本地 Qwen 模型(如 Qwen-7B-Chat)

python
from transformers import AutoTokenizer, AutoModelForCausalLM

tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen-7B-Chat", device_map="auto", trust_remote_code=True)

def chat_with_qwen(prompt):
    response, _ = model.chat(tokenizer, prompt, history=None)
    return response

⚠️ 本地部署需 GPU(建议 24G 显存跑 7B,或用量化版 Qwen-1.8B/4B)


第 6 步(可选):集成到 Web 界面

用 Gradio 快速搭建:

python
import gradio as gr

def qa_interface(question):
    return query_qwen_with_context(question)

gr.Interface(
    fn=qa_interface,
    inputs="text",
    outputs="text",
    title="公司知识库问答系统",
    description="基于 Qwen + RAG 构建"
).launch()

访问 http://localhost:7860 即可使用!


三、优化建议(提升效果)

全屏复制

问题解决方案
检索不准- 使用 HyDE(假设性文档嵌入) - 调整分块策略(按章节/标题分)
答案不准确- 在 Prompt 中强调“不要编造” - 设置 temperature=0.1 降低随机性
长文档丢失信息- 使用 Parent-Child Chunking(小块检索,返回大块上下文)
中文分词问题- Embedding 模型选 bge-large-zh 系列
私有部署- 用 Qwen + BGE + Chroma 全开源栈,无需联网

四、阿里云百炼平台(低代码方案)

如果你不想写代码,阿里云提供 百炼(Model Studio)

  1. 上传文档
  2. 自动构建知识库
  3. 选择 Qwen 模型
  4. 一键发布 API 或 Web 应用

🔗 bailian.console.aliyun.com/

适合企业快速落地。


五、总结:Qwen + 知识库的关键点

全屏复制

组件推荐选择
文档解析unstructured
分块RecursiveCharacterTextSplitter(800+100)
EmbeddingBAAI/bge-large-zh-v1.5
向量库Chroma(开发) / Milvus(生产)
Qwen 调用DashScope API(简单) 或 本地 HuggingFace(私有)
Prompt 模板强调“依据资料回答,不知道就说不知道”

✅ 最终效果
用户问:“公司年假怎么算?” → 系统自动从《员工手册》中找到相关条款 → Qwen 生成简洁准确的回答。


如果你提供具体文档类型(如 PDF 手册、Word 制度),我可以给你定制分块和 Prompt 模板!是否需要?😊

如果我的文档比较少,是不是可以轻量处理,每次都传递给大模型

qwen3-max

是的!如果你的文档总量较小(例如总长度 ≤ 3000 字,或不超过大模型上下文长度的 1/3),完全可以采用“轻量级”方案:每次将全部文档直接放入 Prompt,无需搭建向量数据库和检索系统

这种做法简单、高效、零运维,特别适合:

  • 个人知识库(如笔记、简历、项目文档)
  • 小型企业 FAQ(几十条问答)
  • 产品说明书(1~2 页 PDF)
  • 会议纪要、合同草案等短文本

✅ 一、为什么可以这样做?

现代大模型(包括 Qwen-Max、GPT-4、Claude 3 等)支持 长上下文

  • Qwen-Max:32768 tokens
  • GPT-4o:128K tokens
  • Claude 3.5 Sonnet:200K tokens

📌 1 token ≈ 0.75 个汉字,所以 32768 tokens ≈ 2.4 万汉字(约 10~15 页 A4 文字)。

如果你的全部文档加起来远小于此,直接塞进 Prompt 是最优解


✅ 二、轻量方案 vs RAG 方案对比

全屏复制

维度轻量方案(全量注入)RAG(检索增强)
适用文档量< 5000 字(保守) ≤ 2 万字(激进)任意大小(万页级)
开发复杂度⭐ 极低(10 行代码)⭐⭐⭐ 高(需分块、向量化、数据库)
准确性✅ 全文可见,无遗漏⚠️ 依赖检索质量,可能漏关键信息
成本每次调用 token 更多每次调用 token 较少(只传相关片段)
延迟低(无检索步骤)略高(需检索 + 生成)

🔍 结论:小文档 → 用轻量方案;大文档 → 用 RAG


✅ 三、如何实现?(以 Qwen 为例)

步骤 1:准备你的文档内容

假设你有两份文档:

  • policy.txt:公司报销政策(500 字)
  • faq.md:常见问题(800 字)

合并为一个字符串:

python
with open("policy.txt", "r") as f:
    policy = f.read()
with open("faq.md", "r") as f:
    faq = f.read()

knowledge = f"""【报销政策】
{policy}

【常见问题】
{faq}"""

步骤 2:构造 Prompt(关键!)

python
user_question = "出差打车能报销吗?"

prompt = f"""你是一个公司行政助手,请严格根据以下内部资料回答问题。
如果资料中没有明确说明,请回答“根据现有资料,我无法确定”。

内部资料:
{knowledge}

问题:{user_question}

回答:"""

步骤 3:调用 Qwen(DashScope API)

python
from dashscope import Generation
import dashscope

dashscope.api_key = "你的-key"

response = Generation.call(
    model="qwen-max",
    prompt=prompt,
    temperature=0.1  # 降低随机性,更忠实于原文
)
print(response.output.text)

✅ 四、优化技巧(提升效果)

1. 结构化文档内容

用标题、分隔符增强可读性:

text
=== 报销政策 ===
- 打车费:实报实销,需提供发票
- 住宿:标准间,≤500元/晚

=== 常见问题 ===
Q: 能报销网约车吗?
A: 可以,需行程单+支付凭证

2. 限制回答范围

在 Prompt 中强调:

“不要使用外部知识”
“仅根据上述资料回答”
“如果不确定,请说‘无法确定’”

避免模型“脑补”。

3. 控制总长度

确保 len(knowledge) + len(question) + 预期回答 < 模型最大上下文
(Qwen-Max 建议总输入 ≤ 25000 tokens 留余量)


✅ 五、什么情况下不能用轻量方案?

全屏复制

情况建议
文档 > 2 万字→ 用 RAG,避免超上下文或高成本
文档频繁更新→ 轻量方案需每次重传,RAG 只需更新向量库
多用户不同知识库→ 轻量方案需为每个用户拼接不同内容,管理复杂
需要高精度定位来源→ RAG 可返回“参考第3段”,轻量方案难溯源

✅ 六、总结:小文档的最佳实践

如果你的文档少而精,直接“全文注入 + 精心设计 Prompt”是最简单、最可靠的方式

优势

  • 零依赖(不用装 Chroma、FAISS)
  • 100% 信息可见(无检索遗漏)
  • 开发快(1 小时内上线)
  • 效果好(模型看到全部上下文)

适用场景举例

  • 个人简历问答机器人
  • 小团队项目文档助手
  • 单份合同/说明书解读
  • 课程讲义答疑

需要我帮你写一个完整的“小文档问答”脚本模板吗?只需提供文档格式(TXT/Markdown/PDF),我可以给出一键运行的代码 😊