微信扫码
添加专属顾问
概述:本文基于langchain和Cyber Security Breaches数据集构建Agent,并基于该Agent实现了数据分析、趋势图输出、预测攻击态势三个功能,最后给出Agent在安全领域应用的三点启示。
数据集的选择是根据我们想要做的事情定的,基于我们的目标事件,去HG上寻找是否有相关数据集。这里笔者想要分析网络安全漏洞影响,所以选择了“Cyber Security Breaches”数据集。
&&网络安全漏洞库Cyber Security Breaches
Cyber Security Breaches数据集,该数据集包含了各种有关网络安全漏洞的信息,如受影响组织的名称、国家、受影响人数、数据泄露类型等。用户可以通过该页面查看数据集的详细信息,并使用Hugging Face库进行数据集的访问和处理。页面提供了数据集的统计信息、示例数据和数据集字段的详细描述,帮助用户更好地了解数据集内容。
数据集地址:https://huggingface.co/datasets/schooly/Cyber-Security-Breaches/viewer
上传数据集:下载好Cyber Security Breaches到本地计算机后运行上传代码,并打印前面10行进行有原数据进行比对并确认无错误。
from google.colab import filesdef load_csv_file():#"""Loads a CSV file into a Pandas dataframe."""uploaded_file = files.upload()file_path = next(iter(uploaded_file))document = pd.read_csv(file_path)return documentif __name__ == "__main__":document = load_csv_file()#print(document)
二、基于langchian搭建agent
通常来说,基于langchain搭建agent主要包含定义代理类型、配置工具和语言模型,并根据需要将代理部署在应用程序中等步骤:以下是一个基于 LangChain 搭建基本 `agent` 的示例流程:
确保安装了 `LangChain` 和其他必要的依赖。
```python!pip install langchain!pip install openai```
2.2、导入模块
导入 `LangChain` 的核心模块,包括代理、工具和语言模型。
```pythonfrom langchain.agents import initialize_agent, Toolfrom langchain.llms import OpenAIfrom langchain.agents.agent_types import AgentType```
2.3、定义语言模型
设置 OpenAI 的语言模型,比如 `ChatOpenAI` 或 `OpenAI`,并调整温度等参数来控制模型响应的创造性。
```pythonllm = OpenAI(api_key="your_openai_api_key", temperature=0)```
2.4、配置工具
定义代理将使用的工具(Tool),这些工具可以包括搜索、数据库查询、文件读取等操作。
```pythontools = [Tool(name="search_tool",func=lambda query: "Search result for: " + query,# 假设一个简单的搜索工具description="这个工具用于从搜索引擎中获取信息。")]```
langchain常见工具举例,本文将使用到PandasDataFrame工具进行数据分析。
函数名称
|
说明
|
使用场景举例
|
|
一个简单的搜索工具,允许通过查询访问网络信息。
|
用户询问最新的科技新闻,代理使用搜索工具提供最新的信息。
|
|
从维基百科提取信息的工具,可以用于快速获取知识性内容。
|
用户询问某个历史事件,代理调用维基百科工具提供相关信息。
|
|
处理和分析 Pandas DataFrame 的工具,支持数据操作。
|
用户请求对某数据集进行统计分析,代理使用 Pandas 工具执行操作。
|
|
基本计算器工具,用于执行数学计算。
|
用户询问复杂的数学问题,如积分或代数,代理调用计算器工具进行计算。
|
|
网页抓取工具,用于从网页中提取数据。
|
用户希望获取某个电商网站的产品价格信息,代理使用网页抓取工具提取数据。
|
|
读取文件内容的工具,如文本文件或 CSV 文件。
|
用户上传文件并请求数据分析,代理使用文件读取工具加载数据。
|
|
处理对话的工具,用于与用户进行交互。
|
用户与代理进行问答,代理调用对话工具生成自然语言响应。
|
|
调用 OpenAI API 的工具,进行自然语言处理和生成。
|
用户请求生成一篇文章,代理调用 OpenAI 函数生成文本内容。 |
2.5、 初始化代理
使用 `initialize_agent` 函数创建代理,指定类型、工具和语言模型。
```pythonagent = initialize_agent(tools=tools,llm=llm,agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,# 设置代理类型verbose=True# 启用详细模式以跟踪代理执行过程)```
2.6、使用代理
一旦代理配置完成,便可以用自然语言向代理发送请求,并获取相应的响应。
```pythonquery = "What are the latest trends in cybersecurity?"response = agent.run(query)print(response)```
常用代理类型
- **Zero-Shot React**:适用于直接响应的代理,主要用于简单的 Q&A。
- **Self-Ask with Search**:将复杂问题分解成简单问题,并使用搜索工具查找答案。
- **React Docstore**:适合访问和查询文档库数据的代理类型。扩展功能
你可以根据需求添加更多工具,或使用特定的代理类型来处理特定任务,比如 `Structured Chat` 用于多输入工具或复杂聊天对话。代理的应用场景
可以将构建的代理用于各种应用场景,包括智能客服、数据分析助手、文档检索工具等。https://carta.blog.csdn.net/article/details/143366461?spm=1001.2014.3001.5502
三、 智能体应用
基于langchain框架导入模块并创建数据框agent,通过 create_pandas_dataframe_agent 函数,创建了一个 Pandas 数据框代理 sm_ds_OAI。该代理会与 OpenAI 的模型结合,能够接受自然语言的指令来分析和查询 document 中的数据,实现智能的数据处理和分析
# 导入模块from langchain.agents.agent_types import AgentType#导入 AgentType 枚举,用于指定代理类型。from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent#从实验模块中导入 create_pandas_dataframe_agent 函数,这个函数允许我们创建一个 Pandas DataFrame 的智能代理。from langchain_openai import ChatOpenAIfrom langchain_openai import OpenAI#创建数据框代理sm_ds_OAI = create_pandas_dataframe_agent(OpenAI(temperature=0),document,verbose=True)
使用sm_ds_OAI.invok()进行数据分析,invok是Langchain中向智能体发送自然语言指令的方法,它允许agent根据这些指令执行相关任务并返回结果,具体功能包括任务调度、自然语言执行、支持多种工具调用和生成响应。
sm_ds_OAI.invoke("请分析此数据,并用大约 100 字的中文简要说明。请将分析过程的标记,如'Thought'和'Action'替换为'思考'和'执行'")在 LangChain 中,有多个方法可以用于执行不同任务。下面是一些常见的方法,包括说明、使用场景和 Python 调用示例:
函数名称
|
说明
|
使用场景举例
|
函数调用示例
|
|
发送指令到代理,自动匹配工具或模型执行任务,并返回结果。
|
进行数据分析、生成报告、回答问题等任务
|
|
|
类似于
|
用户请求快速问题回答,如“今天的天气如何?”
|
|
|
动态添加工具到代理中,使代理在调用时可以使用新工具。
|
用户希望添加一个新的搜索工具,以增强代理的能力
|
|
|
获取当前代理中的所有可用工具,便于了解代理的能力范围。
|
用户希望查看代理具备哪些工具来完成特定任务
|
|
|
设置代理的详细模式,显示执行过程的详细信息,有助于调试。
|
在调试过程中查看代理调用的每个步骤和输出细节
|
|
|
清除代理的临时记忆,适用于多轮对话中重置上下文的情况。
|
用户在会话中想从头开始交谈,以避免前面内容的干扰
|
|
|
初始化代理,配置语言模型、工具等资源,用于设置代理环境。
|
初始化代理的配置,如加载数据处理工具和模型
|
|
运行上面的语言后,Agent开始运行,可以看到经过九步思考与执行后,agent给出了最终的分析结论。
> Finished chain.{'input': "请分析此数据,并用大约 100 字的中文简要说明。请将分析过程的标记,如'Thought'和'Action'替换为'思考'和'执行'",'output': '根据对该数据的分析,可以发现该数据集包含1055条记录,涉及到不同州的医疗机构发生的违规事件。其中,受影响人数最多的州是加利福尼亚州,受影响人数最少的州是阿拉斯加州。同时,通过散点图可以发现,随着年份的增加,受影响人数也呈现增加的趋势。此外,还发现数据中存在大量缺失值,需要进一步处理。'}
备注:因为Observation数据较多,为节省空间,前面几步的内容不再文章内呈现。
此处想到这个画面应该不过分吧
图片来源:https://www.youtube.com/watch?v=zt9Oh_RZ5KU
在讲langchain中的invoke方法时有提到,run方法通常用于快速执行单步指令,适合简单任务。实践二基于run()实现趋势图的绘制。
sm_ds_OAI.run("画一条体现整体安全的趋势图")
3.4、实践三:预测攻击态势
运行:
sm_ds_OAI.invoke("""选择一个预测模型来预测攻击态势。使用这种类型的模型来预测在加利福尼亚州未来3年的平均攻击次数和受影响的人数。output输出的内容翻译为中文。""")输出结果:'加利福尼亚州未来3年的平均攻击次数为536.27次,受影响的人数为41345.94人。'
四、安全应用启示
一、安全领域应用:将 Cyber Security Breaches数据集替换为用户的网络安全攻击日志,那么基于智能体开展态势分析、威胁狩猎、攻击溯源、态势预测、数据统计等工作均成为可能。
二、 数据安全:SOTA大模型效果虽然相对好,但是调用API方式存在数据安全的问题,国内政府、金融、能源等行业难以落地,本地部署安全领域垂直模型是一种可行路径。
三、价格昂贵:即使能接受数据外传,调用API方式的花费依然是个天文数字,笔者大概观测了下,上文实践一运行一次0.2元,实践三运行一次0.3元,而且是基于gpt-3.5-turbo,如果换位GPT4-O,实时流量检测场景下,一个用户平均一天1亿条HTTP日志,一条HTTP按照1000Token计算,每天的费用上亿美元,如此看来实时检测通过调用SOTA大模型API是天方夜谭,不过在安全分析场景(如态势分析)可以考虑。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2026-06-26
拆解Agent Harness的11大核心组件与工程实践(附下载)
2026-06-05
让 Agent 快速上生产:基于 OceanBase 和 LangChain 打造的智能体系统解决方案发布
2026-05-19
90% 的 Agent 失败,不是框架不行,而是卡在 5 个工程问题
2026-05-14
用两行代码将 AgentRun 集成到你的应用
2026-05-06
LangChain 深度智能体(Deep Agents)入门
2026-04-19
万字讲透Agent Harness的十二大模块
2026-04-08
同一个模型,换个Harness排名跳了25位:智能体基础设施完全解剖
2026-03-28
LangChain的DeepAgents子代理实战:复杂任务为什么一定要交给 SubAgent
2026-04-19
2026-04-08
2026-05-06
2026-05-19
2026-05-14
2026-06-05
2026-06-26
2026-03-26
2025-11-03
2025-10-29
2025-07-14
2025-07-13
2025-07-05
2025-06-26
2025-06-13
欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。
在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。
一、 定义
本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。
会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。
知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。
二、 账号注册与登录
登录方式:本网站支持以下登录方式,您可根据实际情况选择:
微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。
手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。
账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。
实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。
未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。
三、 服务内容与规范
知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。
服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。
禁止行为:您在使用服务时不得实施以下行为:
利用技术手段批量爬取、下载、转存知识库内容;
将知识库内容用于商业目的或未经授权地向第三方传播;
干扰本网站正常运行或侵犯其他用户合法权益;
发布违法违规信息或从事违反公序良俗的活动。
四、 知识产权声明
权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。
有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。
侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。
五、 个人信息保护
我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。
您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。
您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。
六、 免责声明
内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。
不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。
第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。
七、 违约责任
如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。
如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。
八、 法律适用与争议解决
本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。
因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。
九、 其他
本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。
本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。
我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。