公司动态
大语言模型智能体在欺诈短信检测中的基准测试与实战应用
1. 项目概述当大语言模型化身“欺诈短信猎人”最近在安全研究圈里一个名为“FraudSMSWalker”的项目引起了我的注意。这个名字听起来有点酷直译过来是“欺诈短信行者”但它的内核远比名字更酷——它试图回答一个我们每天都在面对却又深感无力的问题面对海量、花样翻新的欺诈短信我们能否训练一个足够聪明的“AI特工”让它不仅能读懂短信里的陷阱还能像真人一样顺着短信里的链接点进去把整个欺诈网页的套路给扒个底朝天简单来说FraudSMSWalker是一个基准测试框架。它的核心任务不是直接去抓骗子而是去评估和比较那些号称能“自主行动”的大语言模型Agentic LLMs在“短信到网页欺诈检测”这个具体任务上的真实战斗力。这就像给一群顶尖的“AI侦探”出了一套标准化的高难度考卷题目是给你一条可疑短信你需要自己决定是否要点击其中的链接然后模拟浏览器访问那个网页分析网页内容最终综合判断这是不是一个骗局并给出你的推理过程。为什么这件事如此重要因为当前的欺诈检测尤其是针对“短信引流-网页诈骗”这种组合拳正面临巨大挑战。传统的规则引擎或静态分类模型很难应对快速变化的诈骗话术和网页伪装技术。而大语言模型展现出的强大语义理解和上下文推理能力让我们看到了新的希望。但希望归希望具体哪个模型、哪种“智能体”架构Agentic Architecture在这个任务上更胜一筹是让模型自己一步步思考决策Agentic RAG方向还是结合进化算法自我优化类似ReEvo的思路或是融合其他模态信息缺乏一个公平、全面、贴近实战的“擂台”大家只能各说各话。FraudSMSWalker就是要搭建这个擂台。它不仅仅关注模型最终“判断对错”的准确率更关注整个智能体工作流的可靠性模型决定点击链接的决策是否合理它模拟浏览网页时能否提取到关键欺诈证据如虚假的银行LOGO、紧迫的威胁话术、伪造的政府公文它的最终推理是否基于事实链这对于评估一个AI系统能否真正安全、可控地应用于对抗性极强的网络安全领域至关重要。接下来我将结合对这个领域的理解拆解这个基准测试的设计思路、核心挑战以及我们如何从中汲取经验构建更可靠的AI反欺诈防线。2. 基准测试的核心设计思路与挑战构建一个评估AI智能体欺诈检测能力的基准远非收集一批短信和网页那么简单。它需要精心设计一套规则既能反映真实世界的复杂性又能保证评估的科学性和可重复性。FraudSMSWalker的设计思路我认为核心围绕三个层面展开环境仿真、任务定义与智能体交互、评估指标体系。2.1 构建高保真的“欺诈沙盒”环境第一个大挑战是如何创建一个既安全又真实的测试环境。你不能让AI智能体真的去点击互联网上的恶意链接那会引入不可控的风险。因此一个本地的、仿真的“网页沙盒”是必须的。2.1.1 短信数据集的构建与标注基准测试的起点是一批高质量的短信数据。这些数据需要覆盖常见的诈骗类型假冒银行账户异常、冒充快递包裹问题、虚假中奖信息、伪装成熟人的借款诈骗、色情引流等。每条短信都需要包含一个URL或看起来像URL的文本。数据集的构建难点在于真实性需要从公开的举报平台、经过脱敏的安全厂商数据或模拟生成但需高度拟真中获取。平衡性正样本欺诈短信和负样本正常营销短信、验证码、服务通知等需要保持一定比例避免模型简单偏向于将含链接的短信都判为欺诈。细粒度标签除了“欺诈/非欺诈”的二元标签还应标注诈骗类型、短信中使用的社会工程学手法如制造紧迫感、利用权威、利诱等以及URL对应的网页快照的欺诈特征。这为后续分析模型能力提供了多维度的依据。2.1.2 网页内容的静态快照与动态仿真这是整个基准测试最复杂的部分。对于每条短信中的URL需要预先获取其网页内容。但这里有两种策略静态快照提前使用无头浏览器如Puppeteer, Playwright访问URL将渲染后的HTML、截图、网络请求记录等保存下来。这种方式安全、稳定可重复性强。但缺点是失去了网页可能存在的动态交互如需要输入验证码才能看到欺诈内容且无法测试智能体应对实时变化的能力。轻量级动态仿真在沙盒中运行一个受限的浏览器环境智能体可以发出有限的交互指令如点击、滚动。这更真实但复杂度和管理成本呈指数级上升。注意在实际研究或自建测试环境中强烈建议采用静态快照方案。动态仿真涉及环境隔离、资源消耗和安全边界等诸多难题非大型研究机构难以维护。静态快照足以评估模型对网页内容的理解与分析能力这是当前阶段的核心。2.1.3 工具调用Tool-Use的模拟智能体的“行动”体现在调用工具上。在这个任务中核心工具是“访问网页并获取内容”。在基准框架中这通常被抽象为一个API调用。当智能体决定点击某个链接时框架会接收这个指令然后从预存的静态快照库中返回对应的网页文本经过清洗和格式化、或关键元素的描述给智能体。这模拟了真实浏览行为但屏蔽了网络请求的底层细节和潜在风险。2.2 定义智能体的任务流与决策空间测试不是让模型看一眼就给出答案而是评估一个完整的、多步骤的智能体工作流。典型的任务流被设计如下接收短信智能体获得一条短信文本。初步分析与决策智能体需要分析短信内容判断其可疑程度并决定是否要执行“点击链接并浏览”的动作。这一步至关重要它测试了模型的谨慎性和决策逻辑。一个鲁莽的智能体会点击所有链接而一个过于保守的则会错过需要进一步网页证据才能判定的欺诈。执行调查如需要如果智能体决定点击则调用“访问网页”工具获取网页内容。综合研判结合短信内容和网页内容如果获取了进行最终推理判断是否为欺诈并给出欺诈类型和关键证据。生成报告输出结构化的判断结果和推理链。这个流程赋予了智能体相当大的决策空间它可以选择不点击链接仅凭短信判断可能误判也可以选择点击后综合判断。基准测试需要记录智能体在每一步的选择从而评估其决策质量。2.3 多维度的评估指标体系单一的准确率Accuracy不足以衡量智能体的优劣。FraudSMSWalker这类基准通常会采用一套组合指标检测性能指标精确率Precision、召回率Recall、F1分数。这衡量最终判断的对错。决策质量指标点击率Click-Through Rate, CTR智能体对多少比例的短信选择了点击链接。需要与一个“理想点击策略”对比。必要点击率在最终判断正确的欺诈案例中有多少是必须通过点击网页才能做出正确判断的。智能体在这些案例上是否点击了无效点击率点击了链接但对最终判断没有提供新证据或点击了正常短信的链接这反映了智能体决策的冗余或冒进。推理质量指标通过人工或强模型如GPT-4评估智能体生成的推理链Chain-of-Thought是否逻辑清晰、证据引用是否准确、是否基于事实而非臆测。效率指标平均处理一条短信所需的耗时或总Token消耗量这直接关联成本。这套指标体系能让我们清楚地看到一个智能体是“胆大心细的侦探”还是“莽撞的菜鸟”或者是“过度谨慎的守门员”。3. 核心细节智能体架构与模型能力解析在FraudSMSWalker的擂台上不同的“选手”智能体架构会展现出截然不同的风格和性能。理解这些架构的差异是解读基准测试结果的关键。我们可以从两个维度来看一是智能体的“大脑”LLM本身的能力二是驱动大脑工作的“思维模式”推理框架。3.1 大语言模型本体的选择与微调策略“大脑”的素质是基础。参与测试的LLM大致分为几类通用巨模型如GPT-4、Claude-3、Gemini Ultra。它们拥有最强的通识理解、推理和指令跟随能力在零样本或少样本Few-shot设定下可能就有不错表现。但成本高昂且可能在某些本土化诈骗话术上识别不足。专用微调模型在高质量欺诈检测数据上微调过的中型模型如微调后的Llama 3、Qwen系列。它们对欺诈相关的模式和关键词更敏感响应速度快成本低。但泛化能力可能受训练数据分布影响对于新型诈骗变种反应可能滞后。多模态模型考虑到诈骗网页大量使用图片进行伪装如伪造的银行登录界面截图、虚假的红头文件能否理解图片内容至关重要。因此像GPT-4V、Gemini Pro Vision这类多模态模型也是重要的测试对象。它们可以处理网页截图识别其中的视觉欺诈元素。实操心得在资源有限的情况下一个实用的策略是分层处理。先用一个轻量级、高效率的微调模型做初筛对高置信度的正常短信快速放行只将可疑短信提交给更强大也更昂贵的通用巨模型进行深度分析和网页调查。这能在效果和成本间取得良好平衡。3.2 Agentic 推理框架的对比这是当前研究的热点也是FraudSMSWalker基准最能体现价值的地方。不同的框架决定了智能体如何“思考”任务。3.2.1 基于ReActReasoning Acting的经典智能体这是目前最常见的范式。模型被提示要遵循“思考Thought- 行动Action- 观察Observation”的循环。在欺诈检测中的表现模型会先思考“这条短信声称我的包裹有问题并提供了一个查询链接。这可能是常见的快递诈骗套路。我应该访问这个链接以确认网站的真伪。”然后执行动作visit_website(url)观察返回的网页内容后继续思考“该网站域名与官方快递公司不符且要求输入身份证号和支付小额‘清关费’这是典型的欺诈特征。”最终给出判断。优势推理过程透明可解释性强符合人类直觉。挑战容易陷入“思维循环”或执行无关动作需要精心设计提示词Prompt来约束其行为。3.2.2 Agentic RAG检索增强生成智能体这是将RAG技术智能体化的方向。智能体不仅拥有LLM和工具还连接着一个庞大的知识库如已知的诈骗模式库、黑名单域名库、安全知识文档。在欺诈检测中的表现收到短信后智能体可以首先从知识库中检索相似案例“检索”动作。例如检索“包裹支付清关费”相关的历史诈骗报告。然后将检索到的证据与当前短信一并分析再决定是否点击链接。在分析网页时也可以检索该域名的信誉信息。优势决策基于更丰富的、实时可更新的外部知识而不仅仅是模型的内参数知识。对于已知诈骗变种响应更快、更准确。挑战知识库的质量和检索的准确性至关重要。如果检索到不相关或过时的信息反而会干扰判断。3.2.3 基于规划Planning与反思Reflection的复杂智能体这类智能体更高级它们会先制定一个调查计划然后执行并根据结果反思和调整计划。这类似于ReEvoReflective Evolution等研究中提到的“反思进化”思想。在欺诈检测中的表现智能体可能制定如下计划“步骤1分析短信语言特征和URL域名。步骤2如果域名可疑访问网页但不提交任何信息。步骤3分析网页标题、表单字段和联系方式。步骤4与已知官方渠道信息进行交叉验证。” 如果在步骤3发现网页是静态的、没有表单它可能会反思“原计划中的表单分析不适用需要调整为重点分析网页中的恐吓性文字和假冒标识。”优势更加系统化能处理更复杂的调查路径适应性更强。挑战对LLM的规划能力要求极高流程更长出错环节更多且耗时和成本显著增加。3.2.4 多智能体协作Multi-Agent Collaboration模拟一个调查小组由不同角色的智能体分工合作。例如分析员Agent专精文本情绪和话术分析。侦查员Agent负责调用工具访问和初步解析网页。鉴定员Agent拥有丰富的诈骗模式知识进行最终裁决。协调员Agent管理对话流汇总各方意见。在欺诈检测中的表现各司其职可能通过辩论达成一致。这能降低单个模型的负担并整合不同专长。优势模块化设计易于维护和升级单个组件通过辩论可能产生更稳健的结论。挑战系统复杂度剧增智能体间通信开销大且需要解决可能出现的意见冲突。在FraudSMSWalker的测试中我们很可能会看到对于简单明显的诈骗轻量级的ReAct智能体可能就足够了但对于精心设计、需要多步骤验证的复杂诈骗具备规划和反思能力的智能体或多智能体系统可能会展现出更高的鲁棒性和准确率。4. 实操模拟构建一个简易的欺诈检测智能体理解了原理和架构我们不妨动手设计一个简化版的欺诈检测智能体看看如何将上述思路落地。这里我们采用ReAct 静态快照的方案使用OpenAI的GPT系列模型作为“大脑”因为它能很好地理解并遵循ReAct格式的指令。4.1 环境与数据准备首先我们需要一个最小化的测试环境。准备数据创建一个包含少量样本的JSON文件sms_samples.json。[ { id: 1, sms_text: 【XX银行】尊敬的客户您的账户存在异常登录为确保资金安全请立即点击链接验证身份http://fake-bank-verify.com, url: http://fake-bank-verify.com, webpage_snapshot: 这是一个仿冒XX银行的登录页面。标题为‘XX银行安全中心’。页面中央有一个登录表单要求输入银行卡号、密码和手机验证码。页面底部有一行小字‘本网站与XX银行无任何关系’。, label: phishing, fraud_type: 假冒银行 }, { id: 2, sms_text: 【菜鸟驿站】您有包裹已到达地址不详无法派送请确认信息https://legit-delivery-site.com/check, url: https://legit-delivery-site.com/check, webpage_snapshot: 这是菜鸟驿站的官方包裹查询页面。页面设计正规仅要求输入运单号进行查询。无任何索要密码或支付费用的信息。, label: legitimate, fraud_type: null } ]webpage_snapshot字段是我们预先准备好的网页文本摘要模拟了工具调用的返回结果。工具函数模拟我们编写一个简单的工具函数它并不真正访问网络而是根据URL从我们的数据中返回预存的快照。def visit_website(url): 模拟访问网页的工具函数。 # 在实际框架中这里会有一个URL到快照的映射数据库。 # 此处我们简单地从样本数据中查找。 import json with open(sms_samples.json, r) as f: samples json.load(f) for sample in samples: if sample[url] url: return sample[webpage_snapshot] return Error: Webpage snapshot not found for this URL.4.2 设计智能体提示词Prompt提示词是引导智能体行为的关键。我们需要清晰地定义角色、任务、工具和输出格式。system_prompt 你是一个专业的网络安全欺诈检测AI助手。你的任务是分析收到的短信判断其是否为欺诈信息。 你可以使用以下工具 - visit_website(url): 访问短信中包含的URL并返回该网页内容的文本描述。 你必须严格按照以下格式进行思考和行动 Thought: 你在这里思考当前情况分析短信内容决定下一步该做什么。 Action: 你要执行的动作必须是 visit_website 或 final_answer。 Action Input: 动作的输入例如要访问的URL。 Observation: 执行动作后得到的结果。 当你拥有足够的信息做出最终判断时使用 final_answer 动作。 最终答案必须是一个JSON格式包含以下字段 - is_fraud: (布尔值true/false) - confidence: (0-1之间的浮点数表示置信度) - fraud_type: (如果is_fraud为true填写如“假冒银行”、“虚假中奖”等否则为null) - reasoning: (你的推理过程总结) - evidence_from_sms: (短信中的可疑点) - evidence_from_web: (从网页中发现的证据如果访问了的话) 现在开始处理第一条短信。 4.3 实现智能体交互循环接下来我们实现一个简单的循环让LLM根据提示词和观察结果逐步推理。import openai import json import re def run_agent(sms_text, sms_url): messages [{role: system, content: system_prompt}] user_input fSMS to analyze: {sms_text}\nURL in SMS: {sms_url} messages.append({role: user, content: user_input}) max_steps 5 # 防止无限循环 for step in range(max_steps): # 调用LLM此处以OpenAI API为例 response openai.ChatCompletion.create( modelgpt-4, # 或 gpt-3.5-turbo messagesmessages, temperature0.1, # 低温度保证输出稳定 ) assistant_reply response.choices[0].message.content messages.append({role: assistant, content: assistant_reply}) # 解析回复提取 Thought, Action, Action Input thought_match re.search(rThought:\s*(.*?)(?\nAction:|$), assistant_reply, re.DOTALL) action_match re.search(rAction:\s*(\w), assistant_reply) input_match re.search(rAction Input:\s*(.*?)(?\nObservation:|$), assistant_reply, re.DOTALL) thought thought_match.group(1).strip() if thought_match else action action_match.group(1) if action_match else action_input input_match.group(1).strip().strip() if input_match else print(f\n--- Step {step1} ---) print(fThought: {thought}) print(fAction: {action}) print(fAction Input: {action_input}) if action final_answer: # 尝试从回复中提取JSON格式的最终答案 try: # 查找JSON块 json_match re.search(r\{.*\}, assistant_reply, re.DOTALL) if json_match: final_output json.loads(json_match.group()) return final_output else: return {error: Failed to parse final answer JSON.} except json.JSONDecodeError as e: return {error: fInvalid JSON in final answer: {e}} elif action visit_website: observation visit_website(action_input) print(fObservation: {observation[:200]}...) # 打印部分观察 messages.append({role: user, content: fObservation: {observation}}) else: # 无效动作给予提示 observation Error: Invalid action. You can only use visit_website or final_answer. messages.append({role: user, content: fObservation: {observation}}) return {error: Max steps reached without final answer.} # 测试运行 sample json.load(open(sms_samples.json))[0] # 取第一个欺诈样本 result run_agent(sample[sms_text], sample[url]) print(\n Final Result ) print(json.dumps(result, indent2, ensure_asciiFalse))4.4 预期输出与解析对于第一个欺诈样本一个运行良好的智能体输出可能如下--- Step 1 --- Thought: 这条短信自称来自XX银行声称账户有异常登录并提供了验证链接。这是一种常见的网络钓鱼phishing开场白旨在制造恐慌。域名“fake-bank-verify.com”看起来可疑不像官方银行域名。为了确认我需要访问这个链接查看网页内容。 Action: visit_website Action Input: http://fake-bank-verify.com Observation: 这是一个仿冒XX银行的登录页面。标题为‘XX银行安全中心’。页面中央有一个登录表单要求输入银行卡号、密码和手机验证码。页面底部有一行小字‘本网站与XX银行无任何关系’。 --- Step 2 --- Thought: 观察结果证实了我的怀疑。网页虽然模仿了银行风格但底部小字承认与XX银行无关这是欺诈网站的明显特征。正规银行不会在安全验证页面索要完整的密码和验证码。我已经掌握了足够证据。 Action: final_answer Action Input: ... Final Result { is_fraud: true, confidence: 0.98, fraud_type: 假冒银行, reasoning: 短信利用银行名义制造安全恐慌诱导点击。访问链接后网页为高仿登录页但底部有免责声明承认非官方且索要敏感信息符合网络钓鱼特征。, evidence_from_sms: 声称‘XX银行’‘账户异常’‘立即点击链接验证’制造紧迫感。, evidence_from_web: 网页为仿冒登录页底部小字‘本网站与XX银行无任何关系’表单索要银行卡号、密码、验证码。 }这个简单的例子展示了智能体如何通过“思考-行动-观察”的循环主动获取证据并完成推理。在实际的FraudSMSWalker基准中会对成百上千条这样的测试样本进行自动化跑分从而量化比较不同模型和架构的性能。5. 挑战、陷阱与优化方向即便有了清晰的框架和强大的模型构建一个可靠的欺诈检测智能体仍然充满挑战。在实际研究和尝试复现类似基准的过程中我遇到了不少坑也看到了一些关键的优化方向。5.1 主要挑战与常见陷阱1. 幻觉Hallucination与过度推理这是LLM的顽疾。在欺诈检测场景下表现为捏造证据智能体可能声称在网页快照中看到了并不存在的“请输入支付密码”字段。过度解读将正常的营销话术如“限时优惠”强行解读为欺诈性诱导。对策在提示词中严格要求“基于观察到的确切事实进行推理”并让其在输出证据时引用原文。使用具有更强事实性factuality的模型或进行后期事实核查RAG检索对比也有帮助。2. 对抗性样本与泛化能力诈骗分子会刻意构造文本绕过AI检测例如字符混淆使用形似字母的数字或符号如0代替ovv代替w。上下文缺失短信极其简短如“看看这个[链接]”缺乏可供分析的语义内容。网页动态对抗检测到自动化访问时返回正常内容真人访问时才展示欺诈页面。对策基准测试必须包含这类对抗性样本。对于智能体需要结合多模态信息如链接本身的域名信誉、URL路径特征和外部知识库已知黑名单、域名Whois信息进行综合判断减少对纯文本分析的依赖。3. 决策阈值的模糊性“点击还是不点击”这是一个没有绝对正确答案的决策。一条来自未知号码的促销短信可能是诈骗也可能是合法的但陌生的商家。智能体需要有一个内在的“风险阈值”。陷阱阈值设得太低导致对大量正常短信进行不必要的网页访问效率低下且可能触发安全告警。阈值设得太高则会漏掉高明的、仅凭短信难以判断的欺诈。对策在基准测试中这体现为对“点击决策”的单独评估。在实践中可以引入一个置信度分数并设置不同置信度区间对应的动作高置信度正常则直接放过高置信度欺诈则直接拦截中等置信度则进入“点击调查”流程或转人工复核。4. 评估成本与可扩展性使用GPT-4等顶级模型运行完整的智能体循环成本非常高昂。构建一个包含数千样本的基准进行一次全面测试就可能花费数百甚至上千美元。对策分层评估先用成本低的模型如微调后的中小模型跑完全集筛选出有争议的、或不同模型判断不一致的“困难样本”再用顶级模型对这些样本进行精细评估。分布式与异步执行设计高效的测试框架并行化处理大量样本并妥善管理API调用频率和错误重试。5.2 前沿优化方向探索基于FraudSMSWalker所代表的基准测试理念未来的优化可以从以下几个方向深入1. 引入更细粒度的网页表征当前的网页快照多是纯文本摘要丢失了大量布局、视觉风格和交互逻辑信息。可以探索结构化数据提取使用工具自动提取网页中的表单字段、按钮文字、电话号码、公司标识等并将其以结构化JSON格式提供给LLM便于分析。视觉特征编码对网页截图使用视觉编码器如CLIP生成特征向量与文本描述一同输入给多模态LLM或用于训练一个专门判断“页面伪装程度”的视觉模型。2. 模拟更复杂的用户交互流高级诈骗往往需要多步交互才能露出马脚。基准测试可以设计更复杂的场景多轮对话模拟智能体不仅可以“点击链接”还可以在网页上模拟“输入虚假信息”如一个生成的测试手机号、“点击提交按钮”并观察后续页面的反应是跳转到错误页面还是继续索要更多信息。时序行为分析记录智能体在整个交互过程中的耗时、鼠标移动模拟、输入内容等行为序列这些行为模式本身也可能是判断依据如正常用户和自动化脚本的行为差异。3. 融合外部实时情报将智能体与动态威胁情报Threat Intelligence源连接。在决策过程中智能体可以调用工具查询域名/IP信誉该URL是否在公开的恶意域名列表中注册时间是否非常新证书信息网站使用的SSL证书是否有效、是否匹配声称的机构网络空间测绘数据同一IP或服务器上是否托管了其他已知的恶意网站 这相当于给智能体配备了一个实时更新的“黑名单数据库”极大提升了对已知威胁的检测效率。4. 探索轻量级本地化部署方案对于企业级应用数据隐私和响应延迟是关键。研究方向可以转向蒸馏与压缩将大型、复杂智能体的“知识”和“行为模式”蒸馏到更小的、可本地部署的模型中。专用模型芯片探索在端侧或网关门设备上运行高效的欺诈检测模型实现毫秒级响应。构建FraudSMSWalker这样的基准其最终目的不仅仅是给模型排名更是为了暴露问题、指引方向。每一次测试跑分都在告诉我们当前AI智能体在对抗真实世界欺诈时的能力边界在哪里以及我们应该朝哪个方向努力去突破它。这个过程本身就是推动AI安全能力向前发展的核心动力。对于一名安全从业者或AI研究者而言深入理解这个基准的每一个设计细节和挑战远比单纯关注排行榜上的分数更有价值。