不做大哥好多年 不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • Langchain
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核

逍遥子

不做大哥好多年
首页
  • MySQL
  • Redis
  • Elasticsearch
  • Kafka
  • Etcd
  • MongoDB
  • TiDB
  • RabbitMQ
  • 01.Python
  • 02.GO
  • 03.Java
  • 04.业务问题
  • 05.关键技术
  • 06.项目常识
  • 10.计算机基础
  • Docker
  • K8S
  • 容器原理
  • Istio
  • 01.GO基础
  • 02.面向对象
  • 03.并发编程
  • 04.常用库
  • 05.数据库操作
  • 06.Beego框架
  • 07.Beego商城
  • 08.GIN框架
  • 09.GIN论坛
  • 10.微服务
  • 01.Python基础
  • 02.Python模块
  • 03.Django
  • 04.Flask
  • 05.SYL
  • 06.Celery
  • 10.微服务
  • 01.Java基础
  • 02.面向对象
  • 03.Java进阶
  • 04.Web基础
  • 05.Spring框架
  • 100.微服务
  • 数据结构
  • 算法基础
  • 算法题分类
  • 前置知识
  • PyTorch
  • Langchain
  • Linux基础
  • Linux高级
  • Nginx
  • KeepAlive
  • ansible
  • zabbix
  • Shell
  • Linux内核
  • 前置知识

  • PyTorch

  • Langchain

    • 01.Langchain基础
    • 02.数据检索增强RAG
    • 03.文档向量化原理
    • Agent智能体
    • 05.快递Agent智能体
    • 100.Agent智能体核心梳理
      • 01.Agent 任务链路管理器(核心)
        • 0、技术栈一览
        • 1、能力拆解
        • 1)用户任务识别(意图理解)
        • 2)任务规划(Task Decomposition)
        • 3)执行链路控制(流程控制器)
        • 4)状态跟踪(Memory / 中间状态管理)
        • 5)回调与反馈机制(可选)
        • 2、知识报告自动生成 Agent
      • 02.知识库与行业知识封装模块
        • 0、技术栈一览
        • 1、行业知识转为“可调用知识”
        • 1)多源行业数据解析
        • 2)知识向量化与索引(RAG支持)
        • 2、行业系统/API 封装为可调用“工具”
        • 3、知识使用融合策略
      • 03.Agent Memory(任务上下文/长期记忆)
        • 0、技术栈一览
        • 1、短期记忆
        • 2、长期记忆
        • 3、状态追踪能力(任务状态机)
      • 04.RAG 检索增强生成模块
        • 0、技术栈一览
        • 1、文档预处理
        • 1)多源文档解析与切分
        • 2)向量化(Embedding)
        • 3)高效存储与检索(Vector Store)
        • 4)检索增强生成(RAG)
      • 05.Tool 调用与 Function 执行
        • 0、技术栈一览
        • 1、查销售数据并生成报表
        • 1)LLM 判断意图 & 工具调用
        • 2)工具定义(Function Schema)
        • 3)模型构造 Tool 调用参数
        • 4)后端工具执行
        • 5)模型继续调用第二个工具
        • 6)最终模型输出响应
    • 105.Agent智能体梳理
    • 200.AI Agent核心概念
  • 大模型
  • Langchain
xiaonaiqiang
2024-06-02
目录

100.Agent智能体核心梳理

  • 最核心的结构概览(按开发工作量与智能性排序)
层级 模块 作用 是否最核心 开发工作量
1️⃣ Agent 调度与任务链路管理 多轮规划、子任务拆解、执行控制器 决定 Agent 是否智能,能否完成复杂任务 ✅ 最核心 🟥 很大
2️⃣ 领域知识解析与调用接口封装 结合行业知识的检索、API包装、数据调用 决定 Agent 是否“专业” ✅ 最核心 🟥 很大
3️⃣ Memory 状态管理(上下文记忆) 存储任务状态、历史上下文、用户意图等 决定 Agent 是否“持续对话” ✅ 核心 🟧 中大
4️⃣ RAG 系统(知识接入) 检索知识、注入上下文 🔶 辅助大模型“说得对” ⚠️ 必要但非最核心 🟨 中等
5️⃣ Tool 调用模块(Function Call / 外部接口) LLM 能否调用工具、获取实时信息、执行动作 ✅ Agent 工具化必备 🟧 中大
6️⃣ 反馈与自我修正模块(ReAct / Reflection) 自省、自我调整执行步骤 ⚠️ 高阶 Agent 特性 🟨 中等
7️⃣ 多模态交互(可选) 图文语音输入输出 非核心但能增强体验 ❌ 可选 🟩 中等或小

# 01.Agent 任务链路管理器(核心)

  • 功能:
    • 接收用户任务 → 意图识别 → 任务分解(task decomposition)
    • 执行链路控制(执行中状态跟踪、分支判断、失败重试)
  • 技术实现:
    • LLM prompt + 模块化逻辑控制(如流程图、行为树、FSM、或 planner + executor)
    • 支持中间步骤显式存储(如使用 Memory 或临时 DB)
  • ✅ 建议重点开发! 这是把 LLM 从“回答问题”变成“完成任务”的根基

# 0、技术栈一览

组件 技术选型推荐 说明
意图识别 / 任务分解 OpenAI GPT / Claude / ChatGLM + Prompt Engineering 核心语言理解能力
任务执行流控制 Python + LangGraph / 自研 FSM / Airflow-like DAG 控制流引擎
中间状态存储 Redis / SQLite / JSON 文件 / 内存字典 状态管理,临时数据
调度框架 FastAPI / Celery / LangChain Runnable / 自定义调度器 用于异步调度
工具注册与封装 LangChain Tool / OpenAI Function / 自定义函数注册器 支持 action 绑定

# 1、能力拆解

# 1)用户任务识别(意图理解)

  • 目标:从自然语言中识别出任务类型及意图参数。

  • 基于 LLM 的 Prompt Template,如“你是一个任务调度器,请识别用户意图,并输出任务类型及参数”

  • 示例输出:

    {
      "intent": "生成日报",
      "parameters": {
        "日期": "2024-06-01",
        "部门": "销售部"
      }
    }
    
    1
    2
    3
    4
    5
    6
    7

# 2)任务规划(Task Decomposition)

  • 目标:把一个复杂目标任务分解为若干步骤(子任务)

  • 实现方式:

    • 基于 LLM 的 Chain-of-Thought 推理 / ReAct 框架
    • 也可以使用“Planner + Executor”模型(LangGraph / AutoGen 的常见模式)
  • 示例(用户意图:生成销售日报):

    [
      { "step": "查询销售数据", "action": "query_db", "inputs": {...} },
      { "step": "生成图表", "action": "generate_chart", "inputs": {...} },
      { "step": "撰写日报", "action": "call_llm", "inputs": {...} },
      { "step": "发送邮件", "action": "send_email", "inputs": {...} }
    ]
    
    1
    2
    3
    4
    5
    6

# 3)执行链路控制(流程控制器)

  • 目标:按照顺序或依赖关系执行任务步骤,支持失败重试、分支跳转。

  • 常见策略:

    • 行为树(Behavior Tree)
    • 状态机(FSM)
    • DAG 执行图(类似 Airflow)或 LangGraph 状态流图
  • 控制逻辑例子:

    for step in task_chain:
        result = run_step(step)
        if result.failed:
            retry_or_exit(step)
    
    1
    2
    3
    4

# 4)状态跟踪(Memory / 中间状态管理)

  • 目标:存储中间执行结果,方便上下文引用,支持多步 reasoning。

  • 实现方式:

    • 使用内存对象,如 MemoryDict / Redis / 状态DB
    • 将中间结果回写,供下一步使用
  • 示例状态结构:

    {
      "task_id": "abc123",
      "current_step": "2/4",
      "results": {
        "step1": "销售数据已获取",
        "step2": "图表已生成"
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8

# 5)回调与反馈机制(可选)

  • 目标:支持用户或系统打断 / 重试 / 指令修改 / 反馈学习
  • 实现方式:
    • 每个任务步骤暴露事件监听点
    • 用户/外部系统可通过 API 或 UI 控制流转

# 2、知识报告自动生成 Agent

用户输入:“帮我生成 2024 年 5 月销售部的总结报告,并发给领导邮箱”

  • Step 1:意图识别

    • {
        "intent": "生成销售总结报告",
        "params": {
          "时间": "2024年5月",
          "部门": "销售部"
        }
      }
      
      1
      2
      3
      4
      5
      6
      7
  • Step 2:任务链构建

    • [
        { "step": "提取数据", "action": "query_sales_db", "params": {...} },
        { "step": "生成图表", "action": "generate_bar_chart", "params": {...} },
        { "step": "写报告", "action": "llm_write_report", "params": {...} },
        { "step": "发邮件", "action": "send_email", "params": {"to": "boss@corp.com"} }
      ]
      
      1
      2
      3
      4
      5
      6
  • Step 3:链路控制器执行 + 状态记录

    • 控制器按顺序执行各 step

    • 失败时记录状态、支持回滚或 retry

    • 最终状态示例:

    • {
        "task_id": "task-8923",
        "status": "DONE",
        "results": {
          "step1": "数据获取成功",
          "step2": "图表生成成功",
          "step3": "报告已生成",
          "step4": "邮件已发送"
        }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10

# 02.知识库与行业知识封装模块

  • 功能:
    • 把领域数据(PDF、表格、数据库、手册)转为“可调用知识”
    • 把业务接口/API/知识调用能力抽象为“可使用工具”
  • 技术实现:
    • 结构化 + 向量化混合知识管理(支持 SQL + RAG 混合模式)
    • 工具接口(OpenAPI、LangGraph、Function Calling)
  • ✅ 建议重点开发! 你需要让 LLM 能理解并用好你行业的“知识 + 数据”

# 0、技术栈一览

模块 工具推荐 说明
文档解析 unstructured, pdfplumber, pymupdf, trafilatura 高质量提取文档结构
表格 / 数据 pandas, duckdb, openpyxl 表格结构清洗与抽取
向量化 text2vec, OpenAI Embedding, BGE, MiniLM 根据场景选择中英文兼容模型
向量库 FAISS, Qdrant, Weaviate 支持 metadata filtering 的优先
API 封装 FastAPI, LangChain Tool, OpenAI Function 封装成 schema 化的工具调用接口
Tool Router LangGraph, LangChain Agent, AutoGen 支持工具调度路由
检索框架 LangChain Retriever, Haystack, LlamaIndex
  • 示例:智能报表 Agent 的 Memory 使用

任务:“帮我生成4月的报表” → “再加上5月的” → “导出为Excel” Agent Memory 要处理的内容:

能力 内容 存储形式
用户信息 user_id, 常用格式=Excel PG / Redis
报表请求状态 当前月份:4月(+5月) 维度:城市、渠道 FSM + Redis
上一轮对话 报表维度确认 BufferMemory
长期知识 过去生成的报表内容(用于比对) Qdrant

# 1、行业知识转为“可调用知识”

# 1)多源行业数据解析

  • ⬅ 输入:PDF 报告、表格、数据库、网页、文档等

  • ➡ 输出:统一结构化 / 分块内容,支持向量化或结构查询

  • 技术实现:

    • 类型 技术 / 工具 说明
      PDF / Word / PPT unstructured, pdfplumber, PyMuPDF 文档内容解析为段落、结构、表格
      表格 / Excel pandas, openpyxl 表格结构提取成键值对、列表结构
      网页 / 知识库站点 BeautifulSoup, Scrapy 网页抓取与正文提取
      数据库 SQLAlchemy, psycopg2, pymysql 可直接支持结构化查询
  • 示例输出结构(知识块):

    • {
        "source": "销售手册.pdf",
        "title": "退货政策",
        "content": "客户可在7天内无条件退货,须提供原始发票。",
        "metadata": { "部门": "客服", "更新日期": "2024-01-01" }
      }
      
      1
      2
      3
      4
      5
      6

# 2)知识向量化与索引(RAG支持)

  • 将知识块转为向量 → 构建语义检索系统

  • 支持混合查询(向量 + metadata / keyword / embedding rerank)

  • 技术实现:

    • 技术组件 推荐工具 说明
      向量生成 OpenAI Embedding, BGE, MiniLM, Cohere, text2vec 结合语义压缩能力选择
      向量库 FAISS, Qdrant, Weaviate, Milvus, Chroma 支持 metadata / filter 的优先
      检索逻辑 LangChain Retriever, Haystack Retriever 支持多通道、filter、rerank 机制
  • 示例调用:

    • retriever.similarity_search(query="退货需要发票吗?", k=3)
      
      1

# 2、行业系统/API 封装为可调用“工具”

  • 业务接口工具化封装(Tool Registry)

  • 把企业内部系统(CRM、ERP、SQL、工单系统、流程引擎等)的接口变成可调用的“工具”,供 LLM 使用。

  • 技术实现:

    • 类型 推荐方案 说明
      API 封装 FastAPI + OpenAPI Schema / LangChain Tool / OpenAI Function 标准结构描述函数调用
      Tool 注册 LangChain, LangGraph, AutoGen tool schema 管理和注册可用工具
      Agent 连接 支持通过 Function Calling / JSON schema 传参调用工具
  • 例1:工单创建 API 封装如下

    • {
        "name": "create_ticket",
        "description": "创建工单,包含客户信息与问题描述",
        "parameters": {
          "type": "object",
          "properties": {
            "customer_name": { "type": "string" },
            "issue": { "type": "string" }
          },
          "required": ["customer_name", "issue"]
        }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
  • 例2:LLM 识别并生成调用指令

    • {
        "tool_call": {
          "name": "create_ticket",
          "arguments": {
            "customer_name": "张三",
            "issue": "账户无法登录"
          }
        }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9

# 3、知识使用融合策略

  • 处理场景:

    • A类知识:可通过 SQL 查到(如价格、客户信息、库存等)
    • B类知识:只能通过语义检索得到(如政策、规范、经验)
  • 技术实现:

    • 多通道 Retriever:

      • 向量通道:知识块语义匹配
      • 结构化通道:SQL/GraphQL 查询、RuleMatch
    • 聚合器(Retriever Fusion / Semantic Rerank)进行结果统一

# 03.Agent Memory(任务上下文/长期记忆)

  • 功能:
    • 让 Agent 能 “记住上下文、理解历史、延续任务”,不仅仅是“当前这一轮的问答”
    • 支持多轮任务延续(如“刚才那个报表再加上5月的”)
  • ✅ 建议开发到位! 否则 Agent 永远只能是“单轮问答机器人”

# 0、技术栈一览

能力 推荐工具 / 技术 用途说明
短期会话记忆 LangChain BufferMemory, RedisMemory 追踪当前对话上下文
LLM压缩记忆 LLM-Summarizer + ConversationSummaryMemory 降低 token 消耗
长期语义记忆 Qdrant, FAISS, Chroma 模糊回忆历史内容、经验片段
结构状态记忆 PostgreSQL, Redis, MongoDB 任务参数、状态、用户身份
混合记忆 LangGraph, MemoryRouter, AutoGen ToolMemory 支持 Memory 分级和共享
状态管理 FSM, LangChain PlanAndExecute, AgentContextManager 跟踪任务生命周期与阶段

# 1、短期记忆

  • ⬅ 输入:当前会话中前几轮对话(用户提问 + Agent 回复)

  • ➡ 输出:当前轮 LLM 的 prompt context(拼接或压缩)

  • 示例

    • from langchain.memory import ConversationSummaryMemory
      memory = ConversationSummaryMemory(llm=ChatOpenAI(), memory_key="chat_history")
      
      1
      2
  • 示例输出内容

    • 用户:我想生成一个4月份的销售报表  
      Agent:好的,请问需要哪些维度?  
      用户:按城市和渠道分开  
      ...
      [当前轮]  
      用户:再加上5月的  
      
      1
      2
      3
      4
      5
      6

# 2、长期记忆

  • 记住用户身份、偏好、过去的项目 / 查询历史

  • 多轮之间共享记忆(甚至跨天/跨月)

  • 技术实现:

    • 类型 技术 / 工具 说明
      向量记忆 FAISS, Qdrant, Weaviate, Milvus 适合模糊查找“类似内容”
      结构化记忆 PostgreSQL, RedisJSON, MongoDB 用户信息、任务状态等结构数据
      Hybrid Memory LangGraph memory, Agent Protocol Memory
  • 示例存储内容

    • {
        "user_id": "u_001",
        "user_name": "张三",
        "task_history": [
          { "task_type": "报表生成", "params": { "月份": "4月", "维度": ["城市", "渠道"] } }
        ],
        "preferences": {
          "默认报表格式": "Excel",
          "常用城市": ["北京", "上海"]
        }
      }
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11

# 3、状态追踪能力(任务状态机)

  • 当前任务阶段与参数管理

  • Agent 可通过 Memory 知道任务正处于哪个阶段(如“参数收集中”、“已提交、等待反馈”)

  • 技术实现:

    方式 技术 / 工具 说明
    显式状态追踪 FSM(有限状态机)或 Memory + Plan 存储 记录当前任务节点、已填参数
    Plan + Execution Context LangGraph, Autogen, ReAct-style Agent Agent 随任务更新状态上下文
    状态存储 Redis, PG, TinyDB 持久化任务上下文状态

# 04.RAG 检索增强生成模块

  • 功能:让 Agent 能从行业知识中找答案或支持判断
  • 让 LLM 能在不训练模型的前提下,利用外部知识完成准确回答或任务执行
  • 结合 LLM 强大的生成能力,输出有知识支撑的结果

# 0、技术栈一览

模块 工具 / 技术 功能
文档解析 pdfplumber, unstructured, pymupdf, pandas 支持结构化文档解析
Chunk + Metadata LangChain TextSplitter, 自定义清洗脚本 切分、加标签
向量生成 OpenAI, BGE, M3E, Cohere 生成语义向量
向量库 Qdrant, FAISS, Weaviate, Milvus 支持快速 TopK 检索
检索框架 LangChain, LlamaIndex, Haystack 快速实现 RAG Pipeline
排序优化 bge-reranker, Cohere-Rerank, ColBERT 提升召回相关性
RAG增强 LangGraph, ReAct, Agent + Tool-RAG 支持复杂推理链条

# 1、文档预处理

# 1)多源文档解析与切分

  • ⬅ 输入:PDF、Word、Excel、网页、数据库、API结果等

  • ➡ 输出:按语义片段化(Chunk)后的文本 + 元数据(metadata)

  • 技术实现:

    • 步骤 技术 / 工具 说明
      文件解析 pdfplumber, unstructured, pymupdf, pandas 支持提取段落、表格、图片等
      文本清洗 正则清洗 + HTML去噪 + NLP清洗 去除冗余文本、页眉页脚
      Chunking LangChain TextSplitter, RecursiveCharacterTextSplitter 支持按 token / 段落智能切分
      元数据标注 文档来源、页码、段号、标签等 用于后续精准召回
  • 示例(Chunk):

    • {
        "text": "4月份销售额较3月提升20%,主要来自华东地区渠道增长。",
        "source": "报表2024Q2.pdf",
        "page": 12,
        "tags": ["销售", "华东", "增长"]
      }
      
      1
      2
      3
      4
      5
      6

# 2)向量化(Embedding)

  • 文本语义向量转换(Embedding)

  • ⬅ 输入:Chunk 文本(分块文本)

  • ➡ 输出:语义向量(embedding)用于检索

  • 技术实现:

    • 技术 模型 / 工具 优势
      OpenAI text-embedding-3-small/large 精度高,兼容 Function Calling
      BGE bge-large-zh, bge-reranker 中文效果强,免费开源
      Cohere embed-v3 多语言支持
      自部署 FlagEmbedding, M3E, Jina, MiniLM 私有部署可控、合规
  • 推荐实践:

    • 中文行业建议使用 bge-m3 或 bge-reranker(+精排)

    • 对于多模态内容(图文),可考虑 CLIP 或 MMEmbedding(非RAG核心)

# 3)高效存储与检索(Vector Store)

  • 向量存储与检索优化

  • 支持高并发、高维向量下的快速 Top-K 检索

  • 支持 metadata 过滤(如只查某类文档)

  • 技术实现:

    • 技术 特点
      FAISS 轻量内嵌部署,适合小型项目
      Qdrant 支持 payload 过滤 + 高性能嵌入 API
      Weaviate 向量 + 结构化混合检索(Hybrid Search)
      Milvus 支持亿级别向量,适合大型企业部署
      Pinecone SaaS 化高可用方案,易接入
  • 示例检索 Query:

    • results = qdrant.query(
        vector=embed("4月销售趋势"),
        filter={"source": "报表2024Q2.pdf"},
        top_k=5
      )
      
      1
      2
      3
      4
      5

# 4)检索增强生成(RAG)

  • 将召回内容注入 LLM Prompt,实现“带知识”的响应

  • 支持:Base RAG(拼接 context)、Retrieval QA、ReAct-RAG、Tool-RAG、Multi-hop RAG

  • 技术实现:

    • 模式 特点 技术工具
      Base RAG Top-K 文本拼接至 Prompt LangChain RetrievalQA
      Multi-doc QA 多来源汇总 + 生成 LangChain MultiRetrievalQA
      ReAct-RAG 检索 + 推理 + 分步调用 LangGraph, AutoGen
      Tool-RAG 文档 + 工具结合 LangChain + ToolRouter
  • 示例 Prompt(Inject retrieved docs)

    • 你是行业知识专家,请根据以下资料回答:
      [文档1内容]:...  
      [文档2内容]:...  
      问题:我4月份的渠道销售主要增长来自哪?
      
      1
      2
      3
      4

# 05.Tool 调用与 Function 执行

  • 功能:
    • 让 Agent 不只是“说”,还能“做”
    • 如查账、生成报告、调用API、触发自动化流程等
  • ✅ 必须开发! 否则 Agent 只能“说得对”但“做不到”

# 0、技术栈一览

  • 让 LLM 智能体具备“调用工具”的能力,从说得对 → 做得到

    • 比如用户说:「帮我查一下5月销售数据,并生成 Excel 报表」

    • LLM 要能:

      • 理解意图:需要调用两个功能:查数据、生成报表

      • 找准工具:有哪些功能可调用?参数格式如何?

    • 构造调用:组装参数发给后端

      • 拿到结果后组织语言回复:不仅要对,还要通顺、有逻辑
  • 结构化分层架构

    • 层级 名称 说明
      L1 工具注册层(Tool Registry) 定义工具的名称、描述、参数结构
      L2 工具选择与参数构建(Tool Planner) LLM 判断是否要调用哪个工具,并构造调用参数
      L3 工具执行器(Tool Executor) 执行函数 / API / DB 操作,返回结果
      L4 响应生成器(Output Synthesizer) 将调用结果翻译成人类可读内容(可含结构+语义)
  • 涉及技术组件

    • 组件 说明 工具推荐
      Function Schema 定义工具接口 OpenAI Function Calling / JSON Schema
      Tool 路由器 智能选择工具 LangChain Agent / LangGraph ToolNode
      后端执行器 实际执行逻辑 Flask/FastAPI/数据库/sqlalchemy/pandas
      任务链调度器 多步骤任务编排 ReAct / Plan-and-Execute / LangGraph
      日志与异常处理 审计、失败重试 Sentry / logstash / LangSmith

# 1、查销售数据并生成报表

  • 用户输入:“请帮我查一下 2024 年 5 月的销售额,并生成一份 Excel 报表”

# 1)LLM 判断意图 & 工具调用

模型自动推理出需要调用两个工具:

  • 查询销售数据 → get_sales_summary(start_date, end_date)
  • 生成报表 → generate_sales_report(data)

# 2)工具定义(Function Schema)

[
  {
    "name": "get_sales_summary",
    "description": "根据起止时间返回销售汇总数据",
    "parameters": {
      "type": "object",
      "properties": {
        "start_date": {"type": "string", "format": "date"},
        "end_date": {"type": "string", "format": "date"}
      },
      "required": ["start_date", "end_date"]
    }
  },
  {
    "name": "generate_sales_report",
    "description": "根据销售数据生成 Excel 报表并返回下载链接",
    "parameters": {
      "type": "object",
      "properties": {
        "data": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "region": {"type": "string"},
              "sales_amount": {"type": "number"}
            },
            "required": ["region", "sales_amount"]
          }
        }
      },
      "required": ["data"]
    }
  }
]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

# 3)模型构造 Tool 调用参数

{
  "tool_calls": [
    {
      "name": "get_sales_summary",
      "arguments": {
        "start_date": "2024-05-01",
        "end_date": "2024-05-31"
      }
    }
  ]
}
1
2
3
4
5
6
7
8
9
10
11

# 4)后端工具执行

  • A. 查询销售汇总
def get_sales_summary(start_date, end_date):
    result = db.query(
        f"""
        SELECT region, SUM(amount) as sales_amount
        FROM sales
        WHERE date BETWEEN '{start_date}' AND '{end_date}'
        GROUP BY region
        """
    )
    return result  # 如:[{"region": "华东", "sales_amount": 123.4}, {"region": "华南", "sales_amount": 98.7}]
1
2
3
4
5
6
7
8
9
10
  • B. 生成报表
def generate_sales_report(data):
    df = pd.DataFrame(data)
    path = f"/tmp/sales_{uuid4().hex}.xlsx"
    df.to_excel(path, index=False)
    return {"download_url": f"https://yourdomain.com/reports/{path}"}
1
2
3
4
5

# 5)模型继续调用第二个工具

{
  "tool_calls": [
    {
      "name": "generate_sales_report",
      "arguments": {
        "data": [
          {"region": "华东", "sales_amount": 123.4},
          {"region": "华南", "sales_amount": 98.7}
        ]
      }
    }
  ]
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 6)最终模型输出响应

2024年5月的销售数据如下:
- 华东:123.4 万元
- 华南:98.7 万元

我已为您生成 Excel 报表,您可以通过以下链接下载:
👉 [点击下载报表](https://yourdomain.com/reports/sales_xxx.xlsx)
1
2
3
4
5
6
05.快递Agent智能体
105.Agent智能体梳理

← 05.快递Agent智能体 105.Agent智能体梳理→

最近更新
01
05.快递Agent智能体
06-04
02
200.AI Agent核心概念
06-04
03
105.Agent智能体梳理
06-04
更多文章>
Theme by Vdoing | Copyright © 2019-2025 逍遥子 技术博客 京ICP备2021005373号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式