纯享笔记:20/Langchain与Langgraph及安全领域应用"

admin 2026-10-20 23:08:55 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

纯享笔记:20/%20Langchain与Langgraph及安全领域应用

原创

heyong
heyong

AI安全圈

2026年1月3日%2011:53
安徽

在小说阅读器读本章

去阅读

★

计划花费20~30篇幅,来做一套人工智能笔记,纯享版。内容涉及的产品细节不一定是最新的,但忠于实验记录,方便网络安全或其他行业的同学快速地了解AI技术,起到短、平、快的作用。

Langchain与Langgraph及安全领域应用 摘要

Langchain是当前大语言模型(LLM)应用开发领域最核心的开源工程框架之一,通过模块化封装实现了模型调用、数据检索、上下文管理、工具集成等核心能力,显著降低了AI应用的开发复杂度。其分层架构支持跨模型、跨工具的灵活扩展,而嵌入式表达式语言(LCE)则提供了简洁的模块串联方式。Langgraph作为Langchain生态的核心扩展,基于有向图(支持循环)实现了复杂工作流的可视化编排,特别适用于高级智能体(Agent)的迭代式开发。

一、Langchain项目核心概述 1.1%20项目定位与价值

Langchain并非大语言模型本身,而是一套面向LLM应用开发的\"胶水框架\"——通过封装主流大模型(开源/闭源)、数据处理工具、向量数据库等组件,提供统一的API接口,让开发者无需关注底层集成细节,专注于业务逻辑实现。其核心价值体现在:

  • 跨模型兼容:支持OpenAI、Anthropic、通义千问(Qwen3系列)、智谱清言、字节豆包等国内外主流LLM,以及Llama%204、Mistral、Qwen3等开源模型的本地化部署调用;
  • 工具生态丰富:内置超过150种第三方工具集成(搜索、文件处理、数据库操作、代码执行等),且支持自定义工具扩展;
  • 工程化特性完备:提供上下文记忆(Memory)、回调监控(Callback)、结果解析(Output%20Parser)等工程化能力,满足生产级应用需求。
1.2%20最新架构更新

Langchain%201.0稳定版进一步精简架构,保持三大核心模块的同时,强化了模块间的兼容性与稳定性,承诺至2.0版本前无破坏性更新:

模块 核心作用 代表组件
Langchain-Core 核心抽象层(必装):定义框架基础接口(Runnable协议、提示词模板、输出解析器等),1.0版本统一了各组件接口规范 PromptTemplate、BaseLLM、OutputParser、Memory
Langchain-Community 社区组件层(按需安装):第三方模型、工具、向量数据库的集成实现,2025年新增大量国产模型与安全工具集成 OpenAI、Milvus、SerpAPI(搜索工具)、PyPDFLoader(PDF解析)、ChatTongyi、Doubao
Langchain-Ecosystem 生态扩展层:高级应用框架(Agent、Langgraph、RAG流水线),新增deepagents子模块支持长周期自主智能体开发 AgentExecutor、StateGraph、RetrievalPipeline、deepagents

LangSmith已升级为LangSmith%20Suite,包含Deployment(部署)与Studio(开发)两大子产品,新增无代码Agent构建器(私有预览版)、多轮评估(Multi-turn%20Evals)等功能,支持Okta%20SCIM+SSO企业级身份认证集成,同时推出自托管(Self-Hosted)v0.12版本,满足隐私敏感场景需求。

二、Langchain核心组件详解 2.1%20六大核心功能模块

Langchain的功能围绕\"数据输入→处理→模型调用→结果输出\"的全流程展开,核心分为六大模块:

(1)模型(Models)
  • 核心类型:

  • 大语言模型(LLMs):文本补全类模型(如GPT-4o、Qwen3-235B-A22B);

  • 聊天模型(ChatModels):基于消息列表的对话式模型(如GPT-4o、通义千问Chat、字节豆包),支持System/Human/AI角色定义,2025年新增消息自动格式转换功能,支持字符串直接输入自动转为HumanMessage;
  • 嵌入模型(EmbeddingModels):将文本转换为向量(如text-embedding-3-large、Qwen3-Embedding);
(2)索引(Indexes)

用于处理非结构化数据(文档、图片、音频等),为检索增强生成(RAG)提供数据支撑:

  • 文档加载器(DocumentLoaders):支持PDF、Word、PPT、HTML、图片(OCR)、音频(语音转文字)等15+格式,2025年新增多模态文档统一加载接口;
  • 文档转换器(DocumentTransformers):新增敏感信息自动脱敏功能,适配企业级数据处理需求;
  • 文本分割器(TextSplitters):新增语义相关性分割优化算法,支持长文本(128K上下文)的智能分割,适配Qwen3等长上下文模型。
(3)向量存储器(VectorStores)
  • 支持主流向量数据库:Milvus、Zilliz%20Cloud、Chroma、Pinecone、FAISS等,2025年新增Oracle、MySQL向量存储适配模块;
  • 核心能力:将分割后的文本块通过Embedding模型转换为向量并存储,支持相似度检索(余弦相似度、欧氏距离);强化多模态向量存储(文本+图片+音频)支持,新增向量数据生命周期管理与增量更新优化。
(4)检索器(Retrievers)
  • 定位:向量数据库的\"查询接口\",输入查询文本→生成向量→匹配最相关的文本块;
  • 高级特性:2025年新增检索结果智能重排(Reranking)优化,结合大模型语义理解提升检索精准度,支持基于权限的检索过滤。
(5)记忆(Memory)

用于保存对话历史或Agent运行状态,解决LLM\"无状态\"问题,核心类型及适用场景:

记忆类型 核心原理 适用场景
ConversationBufferMemory 完整保存所有对话历史 短对话、需要完整上下文的场景
ConversationWindowMemory 仅保存最近k条消息(窗口大小可配置) 长对话、减少Token消耗
ConversationSummaryMemory 用LLM总结对话历史并存储,2025年新增多轮总结压缩优化,降低Token消耗 超长篇对话、节省API成本
KnowledgeGraphMemory 构建实体关系图谱,基于图谱存储对话关键信息 需要实体关联的场景(如客服)
EntityMemory 提取对话中的实体(人物、事件、数值)并存储 实体追溯、信息校验
VectorStoreMemory 将对话历史存储到向量数据库,支持相似性检索 历史对话快速查询、多轮问答

生产环境中可结合Redis等缓存数据库实现Memory持久化,2025年Langchain-Community新增Memory与数据库的无缝同步接口,避免服务重启后状态丢失。

2.2%20提示词模板与结果解析 (1)提示词模板(PromptTemplates)
  • 核心类型:

  • 普通模板(PromptTemplate):支持变量替换(如\"请解释{concept}的定义\");

  • 聊天模板(ChatPromptTemplate):绑定角色(System/Human/AI),适合ChatModels;
  • 消息模板(MessagePromptTemplate):动态生成单条消息;

  • 高级特性:支持模板验证(变量必填校验)、模板继承(复用基础模板)、多语言模板、团队协作场景。

(2)结果解析(Output%20Parsers)

将LLM的自然语言输出转换为结构化数据,常用解析器:

  • JsonOutputParser:解析为JSON格式(需在提示词中指定JSON%20schema);
  • PydanticOutputParser:基于Pydantic模型解析,支持数据类型校验(如整数/字符串/列表);
  • StructuredOutputParser:自定义结构化格式(如CSV、XML);
2.3%20回调(Callback)

用于监控LLM调用过程、记录日志或自定义事件处理,核心回调场景:

  • 日志记录:记录提示词、响应结果、API耗时、Token消耗,2025年支持与LangSmith%20Insights%20Agent联动,自动分析日志模式;
  • 结果监控:实时监控响应内容,触发告警(如出现敏感信息);
  • 自定义处理:如调用成功后自动保存结果到数据库,调用失败后自动重试。
示例代码:自定义回调函数监控LLM调用
from langchain_core.callbacks import BaseCallbackHandler
from langchain_community.chat_models import ChatTongyi

class LoggingCallback(BaseCallbackHandler):
 %20  def on_chain_start(self,%20serialized,%20inputs,%20**kwargs):
 %20 %20 %20 %20print(f\"开始执行:{serialized['name']}\")
 %20 %20 %20 %20print(f\"输入:{inputs}\")

 %20  def on_chain_end(self,%20outputs,%20**kwargs):
 %20 %20 %20 %20print(f\"执行结束,输出:{outputs}\")

#%20使用回调调用通义千问2025最新版模型
llm%20=%20ChatTongyi(model=\"qwen-turbo-2025-04-28\")
llm.invoke(\"解释图计算的定义\",%20callbacks=[LoggingCallback()])
2.4%20Agent设计与实现

Langchain%201.0版本显著强化了Agent的工程化能力,2025年Agent开发已从\"可行性验证\"进入\"可靠性交付\"阶段,核心聚焦结果质量与响应延迟的平衡优化。最新更新如下:

(1)Agent核心类型
Agent类型 核心原理 适用场景
ReactAgent 基于React思维链(思考→行动→观察),支持多轮工具调用 复杂推理任务(如数据分析)
StructuredToolAgent 支持结构化工具(带参数校验),适合需要精确参数的场景 API调用、数据库查询
JSONChatAgent 基于JSON格式进行工具调用,稳定性更高 生产级应用、高可靠性需求
AutoGPTAgent 自动设定子目标,无需人工干预,支持长周期任务,依托deepagents模块实现 自动化办公、复杂项目管理
CRAKENAgent 基于CRAKEN框架的安全领域专用Agent,支持任务关键信息分解与知识提示注入 漏洞应急响应、安全审计
(2)工具(Tools)
  • 内置工具:新增安全领域专用工具集(漏洞库查询、端口扫描、日志分析),适配网络安全场景;
  • 自定义工具:通过@tool装饰器快速定义,支持参数描述、类型校验(基于Pydantic);
  • 工具集(Toolkits):将相关工具打包(如SQLDatabaseToolkit包含查询、插入、删除等工具)。
(3)Agent执行流程
  1. 用户输入请求(如\"查询2025年网络安全漏洞情况,并生成分析报告\");
  2. Agent接收请求,结合System%20Prompt和工具描述列表,调用LLM分析需求,通过模型路由选择适配模型;
  3. LLM生成工具调用指令(如调用搜索工具查询产业规模数据);
  4. Agent执行工具调用,获取外部数据(如搜索结果);
  5. Agent将工具返回结果回传给LLM,LLM生成最终响应(如分析报告);
  6. 结果通过Output%20Parser解析后返回给用户,同时日志自动同步至LangSmith进行全链路追踪。
应用示例:

基于CRAKEN框架构建漏洞应急响应Agent,集成NVD漏洞库查询工具、Nessus扫描工具、修复方案推荐工具,通过迭代式自我反思机制提升漏洞分析精准度,实现\"漏洞预警→扫描验证→修复建议→效果评估\"全流程自动化。

三、Langgraph:图结构工作流开发 3.1%20项目定位与核心优势

Langgraph是Langchain生态于2024年1月推出的图结构工作流框架,2025年10月发布1.0正式版,成为首个生产级稳定的智能体工作流框架。其基于有向图(Directed%20Graph)实现复杂流程编排,核心解决传统线性工作流无法满足的迭代式场景(如Agent多轮推理、循环任务处理)。其核心优势:

  • 循环支持:突破传统DAG(有向无环图)限制,支持节点间循环跳转(如\"工具调用→结果分析→再次调用工具\");
  • 状态管理:通过全局State对象维护工作流上下文,所有节点共享并更新状态,1.0版本新增状态持久化与断点续跑功能;
  • 人机交互(Human-in-the-Loop):支持在工作流中插入人工干预节点,中断执行等待人工输入;
  • 可视化调试:支持将图结构导出为PNG/SVG格式,直观查看流程走向,2025年新增实时流程监控面板,集成LangSmith%20Studio;
  • 多语言支持:推出Langgraph4j版本,支持Java生态开发,新增MySQL、Oracle状态保存模块。
3.2%20核心概念:State%20Graph

State%20Graph是Langgraph的基础,通过\"状态(State)+%20节点(Node)+%20边(Edge)\"定义工作流,1.0版本统一了状态管理接口:

(1)状态(State)
  • 本质:工作流的全局上下文,所有节点共享并更新,可理解为\"动态字典\";
  • 定义方式:基于Python%20TypedDict或Pydantic模型,明确状态字段类型(如对话历史、工具结果、任务状态等);
  • 更新规则:每个节点执行后返回的结果会自动合并到State中(支持部分更新、覆盖更新),1.0版本支持状态增量同步与版本控制。
(2)节点(Node)
  • 作用:工作流中的具体操作单元,每个节点对应一个函数或Runnable对象;
  • 类型:

  • 功能节点:执行具体业务逻辑(如调用LLM、调用工具、数据处理);

  • 条件节点:判断流程走向(如根据工具结果决定继续调用还是结束);
  • 结束节点:标记工作流终止(使用langgraph.graph.END);

  • 定义方式:通过add_node(name,%20func)添加,func为普通函数或Runnable对象。

(3)边(Edge)
  • 作用:定义节点间的流转关系,分为三种类型:

  • 普通边:固定流转(如\"LLM节点→工具节点\");

  • 条件边:根据条件函数返回值决定流转方向(如\"条件节点返回'success'则指向结束节点,否则指向工具节点\");
  • 开始边:指定工作流入口节点(通过set_entry_point(node_name)设置);
3.3%20关键功能与实战 (1)图结构可视化

通过get_graph().draw()方法将图结构导出为图片,需安装依赖:

pip%20install%20matplotlib%20graphviz

示例代码:

#%20编译图结构
graph%20=%20graph_builder.compile()
#%20导出为PNG图片,2025新增支持导出高清矢量图
graph.get_graph().draw(\"agent_workflow.png\", format=\"png\", resolution=300)
# 同步至LangSmith Studio可视化
graph.sync_to_langsmith(project_name=\"security_agent\")