
LangGraph 实战(四):控制流
4.1. 顺序结构 4.1.1. add_edge add_edge 用于在两个节点之间添加一条有向边。边是图结构中最基本的元素之一,节点之间的执行顺序、分支跳转以及循环控制,最终都依赖节点和边共同表达。 因此,在 LangGraph 中,基础的控制流结构都可以通过 add_edge 进行构建。 示例如下: from langgraph.graph import StateGraph, START, END from typing im…

4.1. 顺序结构 4.1.1. add_edge add_edge 用于在两个节点之间添加一条有向边。边是图结构中最基本的元素之一,节点之间的执行顺序、分支跳转以及循环控制,最终都依赖节点和边共同表达。 因此,在 LangGraph 中,基础的控制流结构都可以通过 add_edge 进行构建。 示例如下: from langgraph.graph import StateGraph, START, END from typing im…

3.1. 状态定义 状态的定义实际上是在声明状态的Schema,后者是状态字段的完整描述。 官方推荐了三种定义Schema的方式:TypedDict、dataclass、Pydantic 3.1.1. TypedDict from langgraph.graph import StateGraph, START, END from typing import TypedDict, Annotated from operator impo…

本节将从一个基础案例入手,掌握图的基本创建、调用和可视化方法。 图的构建与运行分为三个阶段:定义状态图、编译状态图、调用状态图 2.1. 定义状态图 状态图的定义可以分为以下几个步骤: 1. 定义全局状态 定义整个运行图共享的全局状态(实际上,除了全局状态,LangGraph还支持其它类型的状态,下文详述) 2. 创建状态图 创建 StateGraph实例,将状态和状态图绑定 3. 定义图结构 定义节点和边并添加到状态图中 2.1.1.…

LangGraph 运行时底层基于自研的 Pregel 运行时,其核心思想借鉴了 Google Pregel 计算模型,用于组织和执行复杂的图计算流程。 1.0. LangGraph和LangChain的版本迭代及定位 LangChain 1.x 的定位发生了明显变化:旧式 Chain、Retriever、Memory 等组件被迁移至 langchain-classic;LCEL 保留为 langchain-core 的底层组合机制,但…

从零开始,一步一步完成本课程所需的所有环境配置。 1. 安装 Miniconda Conda 是一个包管理和环境管理工具。Miniconda 是 Conda 的精简版,只包含最基本的组件,体积小、安装快,推荐使用。 1.1 下载 Miniconda 打开 Miniconda 官方下载页面: https://docs.anaconda.com/miniconda/ 根据操作系统选择对应版本: 操作系统 推荐安装包 Windows Mini…

本系列共 9 篇,从空目录搭到可部署的 Python RAG 知识库。这是最后一篇。 问答、Agent 都能跑了,但“能演示”和“能上线”之间还差一段:模型调用要记账,租户要限额度,出问题要能查,服务要能部署。这一篇把这些收尾工作做完。 图:用量统计按场景拆分调用次数、失败与 token,失败调用同样计费。 一、AI 流水:失败也要记 每次调用模型都写一条 kb_ai_invoke_log:场景、模型、token 数、耗时、成功/失败、…

本系列共 9 篇,从空目录搭到可部署的 Python RAG 知识库。这是第 8 篇。 单轮问答是“检索一次,再回答”。但有些问题需要先查一遍、发现不够、换个关键词再查,甚至要读某个切片的完整正文。这一篇用 LangGraph 做一个能自己决定检索几次的 Agent,并让它记住同一个会话的历史。 图:首页功能位,知识问答与深度推理均已启用,Agent 多跳推理是独立入口。 一、什么时候需要 Agent 单轮 RAGAgent 检索次数固…

本系列共 9 篇,从空目录搭到可部署的 Python RAG 知识库。这是第 7 篇。 检索能返回相关片段了,这一篇把它们变成答案。完成后:同步接口能返回带 [1][2] 出处的回答,SSE 接口能逐字输出,刷新会话还能看到历史消息和引用。 图:知识问答,答案逐条标注 [n],引用可点开定位原文。 一、问答的完整顺序 一次问答不是“检索 + 调模型”这么简单,顺序很重要: 检查对话模型是否可用; 先扣配额(拦住再干活,别让用户等十几秒才…

本系列共 9 篇,从空目录搭到可部署的 Python RAG 知识库。这是第 6 篇。 向量有了,现在回答关键问题:用户提问时,怎么在几秒内从成千上万张切片里找到最相关的几段?这一篇讲两条召回路线、RRF 融合,以及为什么召回之后还要回表复核。 图:知识库参数,检索返回条数与相似度阈值是混合检索的两个旋钮。 一、为什么不能只靠向量 向量擅长“意思相近”:用户问“怎么报销”,能找到写着“费用核销流程”的段落。但它对专有名词、错误码、型号不…

本系列共 9 篇,从空目录搭到可部署的 Python RAG 知识库。这是第 5 篇。 切片有了,但还只是一堆文本。这一篇把每张切片变成一串 1024 个数字的向量,存进 PostgreSQL 的 pgvector,并处理失败重试、状态回写和卡死任务。 图:切片管理,每条切片显示字符数、token 估算与向量化状态。 一、Embedding:把“意思”变成数字 调用的是 OpenAI 兼容的 /v1/embeddings 接口,本机 O…
最新评论
干货满满!
江苏省 南京市 · IP 49.91.145.*
我要看文章
重庆市 · IP 116.168.9.*
这个内容实在是太精彩啦
重庆市 · IP 123.147.232.*