纯享笔记: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执行流程
- 用户输入请求(如\"查询2025年网络安全漏洞情况,并生成分析报告\");
- Agent接收请求,结合System%20Prompt和工具描述列表,调用LLM分析需求,通过模型路由选择适配模型;
- LLM生成工具调用指令(如调用搜索工具查询产业规模数据);
- Agent执行工具调用,获取外部数据(如搜索结果);
- Agent将工具返回结果回传给LLM,LLM生成最终响应(如分析报告);
- 结果通过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\")
(2)人机交互(Human-in-the-Loop)
在工作流中插入人工干预节点,中断执行等待用户输入,1.0版本支持批量人工确认与状态回滚:
from langgraph.graph import interrupt_before
# 在\"tool_node\"节点前插入中断,等待人工输入
graph_builder.add_interrupt(interrupt_before=\"tool_node\")
# 运行图结构
graph = graph_builder.compile()
result = graph.invoke(
{\"messages\": [HumanMessage(content=\"查询最新的OWASP Top 10 2025漏洞列表\")]},
# 人工输入回调函数
human_input=lambda state: input(\"是否继续执行工具调用?(y/n)\")
)
四、示例:漏洞扫描工作流
基于Langgraph 1.0构建漏洞扫描工作流,结合最新安全工具与OWASP Top 10标准,包含节点:
- 需求解析节点:调用Qwen3模型解析用户扫描需求(如\"扫描192.168.1.0/24网段的Web漏洞\");
- 扫描配置节点:生成扫描参数(目标IP、端口、漏洞类型,适配OWASP Top 10 风险点);
- 漏洞扫描节点:调用Nessus/OpenVAS工具执行扫描,集成CRAKEN框架的知识提示注入功能;
- 结果分析节点:解析扫描报告,提取高危漏洞,生成合规性评估(适配OWASP Top 10 防护要求);
- 修复建议节点:调用LLM生成漏洞修复方案,关联最新安全补丁信息;
- 条件节点:判断是否需要二次扫描(如修复后验证);
- 审计节点:记录扫描全流程日志,同步至安全审计平台。
通过图结构可视化扫描流程,支持循环扫描(修复后二次验证)、人工干预(确认扫描目标),新增审计节点满足等保合规要求,可扩展性强。
五、总结与最新趋势
Langchain 1.0与Langgraph 1.0的发布,标志着LLM应用开发框架进入生产级稳定阶段,其核心优势在于\"模块化\"与\"可扩展性\"。开发者可像搭积木一样组合组件,快速构建从简单问答到复杂Agent的各类AI应用。
对于网络安全领域开发者而言,Langchain+Langgraph可广泛应用于漏洞应急响应、安全审计、威胁情报分析、安全培训等场景——通过工具集成(漏洞扫描器、威胁情报平台)和流程编排,实现安全工作的自动化与智能化。未来,随着框架与安全领域的深度融合,以及多模型协作能力的持续优化,LLM与安全工具的融合将更加深入,成为网络安全领域的核心生产力工具。
★
以上均为实验匆匆记录,然后AI整理和修订,错误之处,请在文末留言,谢谢! 深入交流请加知识星球【AI安全圈】或者【AI自动化】
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论