---
id: "g_NgCLTibiM"
title: "用图工程让 AI 智能体更可预测｜Zachary Blumenfeld，Neo4j"
channel: "AI Engineer"
host: []
guests: ["Zachary Blumenfeld"]
date: "2026-11-03"
updated: "2026-11-04"
duration: "20:35"
duration_seconds: 1235
source_type: "youtube"
youtube: "https://www.youtube.com/watch?v=g_NgCLTibiM"
canonical: "https://pod-exp.pages.dev/g_NgCLTibiM/"
transcript_jsonl: "https://pod-exp.pages.dev/g_NgCLTibiM/transcript.jsonl"
language: "zh-CN"
translation: true
translated_from: "en"
timestamp_precision: "block"
topics: ["AI 智能体","AI 基础设施","人工智能"]
series: ["AI 与软件","AI 基础设施"]
---

# 用图工程让 AI 智能体更可预测｜Zachary Blumenfeld，Neo4j

> 中文译文，由英文原音字幕翻译整理，不是官方逐字稿；引用原话请核对英文原视频。说话人标签由整理者依上下文标注，带「未确认 / 未标注 / 不确定」等字样的标签不可靠。时间戳一般为块级（所在时间块的起点），不是逐句时间；正文自带 [hh:mm:ss] 的段落除外。

**内容提要：** Zachary Blumenfeld 将图工程概括为把智能体工作设计成明确的图：节点执行任务，边传递状态。他区分执行图、上下文图和程序性图，并从可预测性、治理和可移植性说明图结构的价值。演讲介绍 Neo4j 的知识层和智能体记忆方案，展示如何将技能文档或历史决策轨迹编译为图形化、可追溯的技能，再以贷款审批智能体演示政策硬规则、模型判断、人工升级与报告校验的编排。图化流程还可观察执行分支、保存运行记录，并通过把路由逻辑写入程序减少模型耗时与成本。

## [0:13] 什么是图工程？

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-01> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=13s>

**Zachary Blumenfeld：** 今天我们要聊图工程。现场有多少人听说过“图工程”这个说法？好，知道的人还不少。那我也想了解一下：有多少人熟悉 Neo4j、用过 Neo4j？好，看来有几位，这样我就知道今天该跟大家讲到什么程度了。

**Zachary Blumenfeld：** 先说说这个说法的来历。今年夏天前后，Peter Steinberger 发过一条推文，谈到图工程。大家当时有点像是在问：这是不是一种新兴的学科，是从提示工程、上下文工程演化出来的？围绕它确实有不少炒作。

**Zachary Blumenfeld：** 这个名字是新的，但背后的机制并不新。计算机科学早就有状态机、工作流图、知识图谱等等。真正变化的是我们如何把这些东西用到智能体上。

**Zachary Blumenfeld：** 今天我想分享我们对图工程的看法，也提供一个新角度。要给图工程下个定义，我觉得可以说：它就是把智能体的工作设计成一张明确的图。节点负责执行任务，边则负责在节点之间传递状态。我通常会把它分成三类图。

## [1:44] 三类图

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-02> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=104s>

**Zachary Blumenfeld：** 第一类是通用的执行图，大家应该很熟悉。也就是工作流图：路由器和智能体本身都是节点，运行在智能体框架里。

**Zachary Blumenfeld：** 图工程还有其他相互交叠的形态。比如上下文图，它记录决策轨迹、发生过的具体实例，以及这些内容如何与领域里的其他数据相连。

**Zachary Blumenfeld：** 还有一类我称为程序性图。可以把技能或程序性知识表示成一张图。图里的步骤未必是智能体，也可能是完成某件事的具体步骤：调用不同工具、让决策模型判断、调用不同智能体、决定是否升级处理、执行验证等等。

**Zachary Blumenfeld：** 我会重点讲后两类，因为我们谈得还不够多。理解它们，也能看清第一类执行图想实现什么，而且能用一种更便于迁移、更高效的方式做到。图工程让智能体能够承担规模更大、复杂度更高的工作，这正是我们关注它的原因。

## [3:05] 可预测、可治理、可移植

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-03> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=185s>

**Zachary Blumenfeld：** 图在这个场景下能给智能体带来什么好处？我会分成三点。第一是可预测性：约束智能体走什么路径，确保它执行任务时给出的答案基本准确。

**Zachary Blumenfeld：** 第二是治理能力：我们可以控制、引导智能体的行为，并对它进行审计，弄清它做了什么，从而下次做得更好。

**Zachary Blumenfeld：** 第三是可移植性，这一点很有意思。我们不必只把图看成运行时里发生的东西，也可以把它存起来，在不同运行时之间迁移，并放进知识层。这样互操作性更强，技术栈也能更简单。

**Zachary Blumenfeld：** 在运行时里，图通常是一种编排方式。我们很多人可能都熟悉 LangGraph、ADK 以及其他智能体框架。某种程度上，Anthropic 的多智能体研究系统和一些其他系统，也可以归入图工程。

**Zachary Blumenfeld：** 今天我想讲的是：把这类图放到数据旁边，作为上下文图，以及我们刚才提到的其他东西，会发生什么。这样做会增加一个可移植层，让这些知识基本上能适配任何类型的运行时。这就是我今天要介绍的内容，也是 Neo4j 正在做的事：定义这样一个知识层。

## [4:43] Neo4j 的知识层

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-04> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=283s>

**Zachary Blumenfeld：** 这个知识层位于通常用来检索数据的记录系统与智能体之间。数据可以来自 DataStax、BigQuery、Snowflake 这类地方，也可以来自文档、Obsidian 或 Markdown 文件。我们能不能在这一层建立标准协议和标准产物，再用图工程流程把它们提供给任何运行时、任何智能体？

**Zachary Blumenfeld：** 简单介绍一下 Neo4j 的产品：我们有核心数据库，也在上面构建了很多 AI 能力，包括数据库和分析层。今天我会展示其中一些，但重点会放在更上层的智能体大脑或记忆工具上，它们围绕数据库运行。

**Zachary Blumenfeld：** 接下来你们会看到数据从多个来源加载到数据库里，构成我们的知识层。我展示的一些工具扩展和实验性功能，则属于图 AI，它会连接到这个知识层，把数据加载进去，也从中取出数据。那我们在 Neo4j 做的事情……

## [6:04] 上下文图与智能体记忆

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-05> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=364s>

**Zachary Blumenfeld：** Neo4j 现在的思路，是从上下文图这个概念出发。它包含不同类型的记忆：短期记忆，比如对话历史；长期记忆，比如从对话或数据里提取出的实体；以及其中的推理过程或决策树。

**Zachary Blumenfeld：** 我们研究中一个有意思的方向，最初其实并非从整个图入手，而是从单个技能开始。今年早些时候，我们写了一篇论文并在一个研讨会上发表，当时想问的是：能不能把程序性知识——无论来自过去的决策，还是像这里这样的技能——编译成图？

## [6:53] 把技能编译成图

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-06> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=413s>

**Zachary Blumenfeld：** 我们设计了一套流程，把书面材料——通常是 `SKILL.md` 文件，以及脚本、参考资料和资源——转换成真正的图结构，也就是你们在另一边看到的内容。

**Zachary Blumenfeld：** 把这种图结构交给智能体使用后，图里的不同节点就可以代表技能中的决策、路由点，以及必须执行的脚本。把这些步骤整理并编译成确定性的脚本后，再要求智能体按这张图运行，我们看到任务奖励和表现都有提升。

**Zachary Blumenfeld：** 这项结果是之前做的。我还在把实验更新到最新模型上。起初我记得用的是 Sonnet，现在实际上已经换到 Haiku。即使面对很有挑战性的任务，涉及物理学、计算机科学、安全、体能训练等多个领域，我们仍然看到任务奖励和整体表现有所提升。

## [8:08] 从记忆图中提炼技能

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-07> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=488s>

**Zachary Blumenfeld：** 之后我们把这个想法继续往前推进。我们实验室团队的产品经理 Will Lein 想到：既然能对技能这么做，也许也能对记忆图这么做。我们可以从刚才展示的上下文图里提炼出一个技能，同时让它继续在同一张图里连接到过去的决策轨迹和数据。

**Zachary Blumenfeld：** 这样既能获得性能上的好处，也能保留每一步的来源记录。整个过程有版本、有跟踪，随着时间推移还能进行治理：评估漂移，查清某些工具调用从何而来、历史是什么。人也可以在 NAMS（Neo4j Agent Memory Service，Neo4j 智能体记忆服务）里实际查看。这是我们为此提供的参考架构。屏幕上有一个二维码，最后还会再出现一个；你可以借此了解它究竟怎么运作、编辑和修改它，还能做很多事。

**Zachary Blumenfeld：** 所以我们现在谈的是可以迁移的产物。这个东西会生成一个技能；任何能接收该技能的智能体框架，都可以运行这些图并执行其中的逻辑。我们也有一些客户……

## [9:24] 客户案例

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-08> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=564s>

**Zachary Blumenfeld：** 有些客户用 Neo4j 来处理图工程类任务。我会讲快一点，因为时间快不够了。即使他们用的未必正是我们实验室的项目，也有咨询公司在帮其他资产管理机构解决棘手的合规问题。

**Zachary Blumenfeld：** 比如要撰写审计报告，数据可能来自多个来源。怎样才能自动化处理，同时确保过程受治理、值得信任？你可能有合规文档，也可能在不同数据库里看到同一实体对应不同股票代码和名称，这些都需要对齐。把表达所需处理逻辑的图与数据放在一起交给智能体，就能以可信的方式自动完成这些工作。

**Zachary Blumenfeld：** 还有 Uber 这样的公司会用配置图。可以想象，他们在全国各地都有司机；不同地区的合规要求和法规差异很大，相关信息散落在一大片微服务中，需要从中调取数据，才能判断每个地区、每个汽车部件分别适用什么规则。把这些逻辑明确表达出来并放在数据旁边，也有助于他们把相关工作有效地投入实际运营。

## [10:47] 演示：贷款审批智能体

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-09> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=647s>

**Zachary Blumenfeld：** 现在我来演示一下。先提醒大家，内容会比较多，我会讲得快一些，但很有意思。我想展示的是如何用刚才提到的 AIP 库来编译技能，把一个治理不到位、运行耗时很长的任务，成本降低大约 100%，同时大幅加快运行速度。当然这只是个演示，不是正式的研究提案；大家可以去看代码，整个过程都很透明。

**Zachary Blumenfeld：** 这个例子是贷款审批。审批贷款要遵循很多政策。我不是金融专家，不过在场有不少人是。通常会有政策文档、一套必须严格遵守的步骤；智能体还得清楚地解释这些步骤，尽量像人工审核那样给出正确答案。

**Zachary Blumenfeld：** 我大概没时间现场从头跑一遍，而且网络会比较慢，好在我已经预先加载好了。要回答的问题是：“这笔给 Rosa's Bakery 这家企业的新贷款该不该批？”这里有一份上传的 PDF 商业计划书。图里橙色的部分就是商业计划书。它还连着从 Databricks 拉来的历史交易数据、贷款政策数据，以及过去真正做出的决策。智能体可以遍历这些信息，发现申请人以前可能贷过款，或者之前发生过某个错误或其他事情，随后生成审计记录并很快给出方案。

**Zachary Blumenfeld：** 这是个很好的起点。通过这种方式可以解决数据对齐问题、遵循政策，也能理解不同事物之间的关联。

**Zachary Blumenfeld：** 但它有一个问题。我可以给大家看这张图——这是我多次运行这些政策的例子。放大后能看到一段对话，以及图里的推理轨迹。每一步都有时间戳，也记录了工具调用。看起来这里有两条决策链，长度不一样：其中一条更长，因为它找到了先例，也就是过去发生过类似的事。

**Zachary Blumenfeld：** 问题在于，如果一遍又一遍地运行，并没有东西真正强制智能体遵循完全相同的路径。你可以写个技能告诉它该做哪些事，但决策环节还有别的问题：有的步骤只是批准或拒绝，有的则是批准或转交人工审核；这些步骤还会给出置信度分数，或者依据对某件事有多大把握作决定，但这些判断并没有校准好。

**Zachary Blumenfeld：** 所以，我们或许可以把其中一些内容交给类似 TypeSafe 或“Jev”一类的模型，来处理这类判断。

## [14:30] 把运行记录编译成图形化技能

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-10> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=870s>

**Zachary Blumenfeld：** 我们可以把这些运行记录提取出来，编译成图形化技能，这就是我们在这里做的。这个技能图可能看不清细节，没关系。重点是我们把几次成功运行中的信息编译到一起，尽管这些运行之间存在一些不一致，然后放进这个技能的图形 YAML 结构里。

**Zachary Blumenfeld：** 这个技能里有脚本、资源，有时还会有其他参考材料；这次没有。它也包含贷款政策的源文档。里面有很多用于追溯的信息，同时也告诉智能体怎样运行这项技能。技能一旦采用这种 YAML 格式，就能移植到各种工具里，包括其他图系统，因为它是一种确定性的格式。

**Zachary Blumenfeld：** 放到图里大概就是眼前这个样子。让我再运行一次。你能看到这些步骤。我刚才给它套了一个小型 CLI，这样智能体只要说“运行这个技能”，路由步骤就会由程序执行，而不是让智能体自己逐一决定。我们把很多政策逻辑下沉到执行脚本里。

**Zachary Blumenfeld：** 概括一下：执行流程会先检查是否满足政策中的硬性规则。如果根据这些规则不能自动批准或拒绝，就会转给决策模型，比如“Jave”或 TypeSafe。模型会拿到风险等级、是否存在重大风险敞口，以及批准还是拒绝等选项。之后流程会继续生成报告；路由器还会判断是否要升级到人工审核。如果不用升级，智能体就生成报告，并通过一个循环检查、校验报告。

**Zachary Blumenfeld：** 这套模型和流程跑起来之后，我们就有了一个可以直接运行的 CLI。我再试着运行一遍，看看它能不能识别并使用 AIP 技能。整个过程大约需要两分钟。即使智能体能很快运行它，我们也可以追踪每次运行。比如查看单次运行，把运行过程持久化到图里。这个例子展示了一次运行及其执行的各个步骤；之后可以持续保存这些记录，检查效果。

**Zachary Blumenfeld：** 从治理角度看，我很快搭了一个小型检查器，可以查看所有运行的状态，也可以查看某次具体运行是怎么执行的、过程中批准了什么、拒绝了什么，以及走过哪些分支。

## [18:20] 观察图中的执行分支

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-11> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=1100s>

**Zachary Blumenfeld：** 有了图之后，还能做一些很有意思的可观测性分析，比如问：哪些分支走过，哪些没走？从治理角度看，这很有价值。图里还保存了其他各种信息，都在你的数据旁边。

**Zachary Blumenfeld：** 这里我们并没有在智能体内部创建循环，只是给它一个 CLI，让它运行一项程序化技能。这项技能是从文档编译出来的，或者像这个例子一样，从记忆图中编译出来的。

**Zachary Blumenfeld：** 运行可能会花些时间，主要是网络原因。我们试过几次，单独用 Fable 在图上运行，几乎每次都能答对，但要花 2.7 分钟。加入这套流程后，仅使用 AIP 就几乎把时间减半。因为有了程序化流程，我们还能改用 Haiku 这类更简单的模型，进一步缩短模型耗时，成本当然也会大幅下降。原本由模型承担的路由判断和其他工作，现在放进了执行脚本、Java 模型等组件里，整体效率就高得多。

**Zachary Blumenfeld：** 这一轮要跑起来会太久，主要还是网络问题。你们可以看到，平均墙钟时间大约在半分钟到两分钟之间，原来大概是七分半。总之，我就讲到这里……

## [20:01] 资源

<https://pod-exp.pages.dev/g_NgCLTibiM/#chapter-12> · YouTube <https://www.youtube.com/watch?v=g_NgCLTibiM&t=1201s>

**Zachary Blumenfeld：** 最后给大家一些可以了解的资源。如果你对这类内容感兴趣，可以看看 Aura，这是我们的云服务，你可以在上面使用我刚才展示的数据库，并获得 100 美元的免费额度。我们还有即将举办的活动，应该是面向演讲者的活动；另外还有一个创业公司计划。

**Zachary Blumenfeld：** 我刚才提到的其他项目，以及用于连接智能体记忆的代码，都可以在下面找到。我把页面留一会儿，直到有人把我请下台为止。今天就先到这里。
