Guardrails 安全护栏

Guardrails概述Guardrails字面意义是“护栏”,表示规则、限制、保护措施。LangChain中Guardrails(安全护栏)是构建生产级 AI Agent 时不可或缺的一层防御机制,它的核心职责是在 Agent 执行的关键节点上对内容进行验证和过滤,确保 Agent 的行为始终处于可控范围内。 在实际业务中,Guardrails 最常见的应用场景包括: 防止敏感信息(PII)泄露 检测并阻断提示注入攻击 拦截不当或有害内容 强制执行业务规则与合规要求 验证输出质量与准确性 LangChain 的 Guardrails 并非一个独立的模块,而是通过 Middlewar...

人机协同-Human-in-the-loop

Human-in-the-loop 介绍Human-in-the-loop(HITL,人工参与循环/人机协同/人工审批/人工介入/人工审查)是一种在 AI Agent 执行关键操作时引入人工监督的机制。其核心理念很简单:有些操作不应该由 AI 独立完成。当模型提议执行涉及敏感数据的操作时——比如删除数据库记录、发送对外通知、执行资金交易——HITL 中间件可以暂停 Agent 的执行,等待真人做出决策后再继续。 HITL在LangChain中是通过Middleware(中间件)和LangGraph的 Persistence(持久化) 两层机制配合实...

LoopLoop Engineering 案例

Loop Engineering 案例一案例业务这是一个合同质量的自动迭代打磨系统。不是简单的”审一下→通过/驳回”,而是让两个AI Agent(Editor和Reviewer)像律师团队一样循环协作:一个负责改,一个负责审,改完再审,审完再改,直到合同质量达标。 业务逻辑 四大审查维度(定义在 skills/contract-improver/SKILL.md): 维度 检查内容 示例 A.完整性 必备要素是否齐全? 双方信息、金额(大小写)、付款方式、交付时间、违约金、保密、知识产权、签署信息 B.明确性 有没有模糊表述? “尽快”→”6...

Agent Loop五大构建块和记忆层

Addy Osmani将 Loop 的设计方法论提炼为五大构建块(Five Primitives)+ 记忆层。这六个组件构成了Loop Engineering的工程骨架——它们不是抽象概念,每一个都对应 Loop 系统中一项具体的职责。六大组件在真实Loop中的协作关系如下: 自动化/调度自动化是Loop的触发器,它决定了系统”什么时候开始工作”。没有自动化,Agent必须等人手动调用agent.invoke()。 自动化有三种触发模式:定时触发、事件触发、目标驱动。 定时触发 按固定时间间隔唤醒系统,适合周期性巡检——每天早上生成运营日报、每 10 分钟扫描待处理队列、...

Agent Loop和Loop Engineering概述

Agent Loop 介绍Agent Loop(智能体循环)是AI Agent的核心工作机制。它让大语言模型(LLM)从”只会聊天”变成”能干活”的关键——通过一个”观察->思考->行动->反馈”的循环,Agent 能够自主调用工具、获取信息、根据结果调整策略,持续迭代直到完成任务。 一句话理解:Agent Loop=把LLM的推理能力放进一个while循环里,让它可以反复思考和行动。 graph TD %% 定义组件样式 classDef startEnd fill:#e1f5fe,stroke:#01579b,stroke-width:2p...

Flink Table和SQL优化

在Flink中除了DataStream API之外,还有Table和SQL API ,Table API 和 SQL 是高效优化过的,它集成了许多查询优化和算子优化,但并不是所有的优化都是默认开启的,因此对于某些工作负载,可以通过打开某些选项来提高性能。在实际工作场景中我们使用FlinkSQL居多,本小节根据Flink SQL使用来介绍Table和SQL中的一些优化内容。 12.7.1 对状态设置TTL在Flink编程中如果涉及到的状态较大并且业务允许清空状态,可以设置ttl参数,指定状态超过一定时间后自动清空,来达到减少状态效果。 Flink Table和SQL中可以通过TableEn...

Flink 数据倾斜处理

在 Apache Flink 中,数据倾斜是指在分布式数据处理过程中发生的数据分布不均衡现象。数据倾斜表现为某些节点或分区处理的数据量远多于其他节点,导致数据反压、频繁GC甚至OOM一系列问题,从而影响整个系统的性能和效率。本小节主要讲解如何对Flink中的数据倾斜进行优化。 12.6.1 数据倾斜的影响在Flink中出现数据倾斜时会带来如下影响: 数据反压严重:往往产生数据倾斜时,导致某个subtask处理数据量非常大,从而会产生反压问题。 GC频繁问题:某个subtask处理数据量特别大,可能会使JVM的内存资源短缺,导致频繁的GC,甚至出现TaskManager OOM问题,最终...

Flink 网络内存优化

12.4.1 Flink数据传输机制Flink架构中涉及JobManger、TaskManger角色,TaskManager中可以运行Task处理数据,为了更好的理解Flink Task之间的数据交换,我们需要先了解如下概念。 JobManager Flink Master节点,负责任务分配、协调、故障恢复。在JobManager中保存着Flink Job执行的逻辑拓扑图(ExecutionGraph)。 TaskManager Flink Worker节点,通过多线程执行task任务。每个TaskManager中包含一个CommunicationManager(负责通信,多个t...

Flink Checkpoint和大状态优化

Flink的checkpoint是一种实现容错和状态恢复的机制。Checkpoint会定期将Flink程序的状态保存到持久化存储系统中,通常是分布式文件系统,当Flink程序发生故障时,可以重新启动应用程序并从之前的状态中恢复,使得Flink程序能够回到故障发生前的一致状态。因此Flink中的checkpoint非常重要,本小节主要讲解Flink Checkpoint和大状态相关优化内容点。 Checkpoint的监控在Flink WebUI界面中提供了Flink Job的checkpoint监控信息。当Job结束后,这些信息仍然可用。如下图所示,有四个不同的选项卡(概览、历史记录、摘...

Flink 内存优化

Flink内存分布Flink1.10版本后为了满足更细粒度以及灵活的内存管理,升级了内存模型,对内存组成进行了比较大的调整,由于在Flink中计算主要存在于TaskManager节点,这里说的Flink内存模型也就是TaskManager的内存模型,JobManager的内存模型与TaskManager的内存模型类似。 上图是Flink内存模型,从图中可以看出Flink 进程总内存(Total Process Memory)包含了Flink总内存(Total Flink Memory)和JVM特定内存。Flink总内存又包括JVM堆内存(JVM Heap)、托管内存(Managed M...

Flink 资源和代码优化

Slot资源配置Flink中有TaskSlot概念,每个taskSlot都有固定的资源,假设一个TaskManager有三个TaskSlots,那么每个TaskSlot会将TaskMananger中的内存均分,即每个任务槽的内存是总内存的1/3,分配资源意味着subtask不会与其他作业的subtask竞争内存,taskslot的作用就是分离任务的托管内存,不会发生cpu隔离。 用户无论是基于Standalone或者Yarn提交Flink任务时,都可以通过配置$FLINK_HOME/conf/flink-conf.yaml文件中的“taskmanager.n...

Flink 反压优化

Flink反压优化在Flink中,反压是指当一个任务(task)生成数据的速率超过下游任务消费数据的速率时触发的警告。以一个简单的Source -> Sink任务链为例,如果Source生成数据的速率高于Sink消费数据的速率,就会发生反压警告。这表示数据流向下游,但由于下游处理速度较慢,系统发出警告以通知上游任务,反压信息沿着相反的方向传播,向上游传递,帮助系统调整任务链以维持平衡,防止性能问题。 Flink任务中出现反压会有如下影响: Flink任务处理性能下降:反压会导致任务链中某些任务被迫减缓数据生成速率,以适应下游任务的处理速度,从而影响整体性能。如:Flink消费Ka...