别卷模型智商:AI 测试的护城河是权限控制与全链路可观测

「文智助手」全场景办公AI助理AI+OPC全流程实践方案(大赛作品) 阅读详情

聊《测试转大模型,真正值钱的为什么不是会调 API?》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。

摘要

先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做,以及从哪里动手。

很多测试同学最近都在焦虑,大模型来了,我的手工点点点是不是彻底失业了?

我看过太多简历上写着“精通 Prompt 工程”、“熟悉 LangChain 架构”的同行,面试一问深层次的真正跑起来就露怯。他们以为掌握了模型调用就是掌握了未来,但在实际项目中,能稳定跑通的 Demo 和能扛住生产流量的系统之间,隔着一条巨大的鸿沟。 这条鸿沟的名字叫:权限、日志与可观测性。

今天我不聊怎么写出花哨的 Prompt,我们聊聊为什么你的 AI 测试工具在团队里推不动,以及作为测试工程师,如何从“用例执行者”转型为“质量守门员”。

目录

  • 测试岗位的静默重构:从“找 Bug”到“定义边界”
  • AI 辅助测试:别只盯着准确率,要看“幻觉成本”
  • 自动化用例生成:从“脚本录制”到“意图映射”
  • Agent 测试框架:解决“权限黑洞”与“状态丢失”
  • 质量评估:从“单点指标”到“全链路可观测”
  • 总结:测试工程师的“反脆弱”能力

测试岗位的静默重构:从“找 Bug”到“定义边界”

文章插图 1

传统的软件测试,核心逻辑是确定性。输入 A,期望得到 B,如果不一致,那就是 Bug。这种线性思维在处理传统业务逻辑时非常高效。

但大模型(LLM)引入后,世界变成了概率性的。同一个问题,模型可能给出三种不同的答案,而且这三个答案在语义上都可能是正确的。这时候,传统的“预期结果比对”失效了。

我在复盘之前参与的一个金融风控 Agent 测试项目时发现,团队最大的痛点不是模型不够聪明,而是模型“越权”了。

> 真实场景:
> 在一个自动审批 Agent 中,模型成功识别了用户意图,但在调用下游数据库查询接口时,没有经过严格的权限校验中间件,直接拼接了用户 ID。虽然业务逻辑对了,但如果用户尝试注入 SQL 或访问其他用户数据,Agent 会因为缺乏细粒度的权限拦截而导致严重的安全事故。

这就是第一个认知跃迁:AI 测试不再仅仅是验证功能正确性,更要验证行为的安全性(Security)和边界合规性(Compliance)。

如果你还停留在“模型回答得对不对”这个层面,很快就会被淘汰。你需要关注的是:模型在做什么?它有权做这件事吗?它做的过程中留下了什么痕迹?

AI 辅助测试:别只盯着准确率,要看“幻觉成本”

文章插图 2

现在很多工具号称能自动生成测试用例。确实,基于 RAG(检索增强生成)可以一键生成几百条用例。但作为测试负责人,你必须问自己一个问题:这些用例的价值密度是多少?

我发现一个常见的误区:过度追求 LLM 输出的准确率(Accuracy),而忽略了可解释性。

举个例子,模型生成了一个测试脚本,通过了运行。但你怎么知道它是因为逻辑正确通过,还是因为撞大运蒙对的?在传统测试中,我们有断言(Assertion),有日志,有堆栈。在 AI 测试中,我们需要给模型加上“反思机制”和“证据链”。

建议的学习路径:
1. 短期(1-3个月): 掌握基于规则的评价体系(Rule-based Evaluator)。不要完全依赖另一个大模型来打分,先用正则、关键词匹配、简单的逻辑断言来过滤掉明显的错误。
2. 中期(3-6个月): 引入结构化输出。强制模型以 JSON 格式返回测试结果,包含 reasoning(推理过程)、evidence(证据片段)和 confidence_score(置信度)。这样即使结果错了,你也能看到它是哪一步推理崩塌的。

优快云资料领取方式

自动化用例生成:从“脚本录制”到“意图映射”

传统的 UI 自动化测试(如 Selenium/Playwright)是录制-回放模式。而 AI 时代的自动化,应该是意图-执行模式。

这里有一个关键的取舍:不要试图让大模型直接操作 DOM。 这是很多初级 AI 测试项目的死穴。模型对 HTML 结构的理解是不稳定的,微调 CSS Selector 的成本远高于维护一套标准的 API 契约测试。

更稳健的做法是分层处理:

  • 高层(Intent Layer): 由 LLM 理解用户自然语言需求,拆解为业务动作序列。
  • 中层(Control Layer): 由传统脚本或轻量级 Agent 执行具体的 UI 点击或 API 调用。
  • 底层(Verification Layer): 由代码断言验证状态变化。

代码示例:一个简单的意图拆解与校验框架

import json
from typing import List, Dict
import openai # 假设已配置

class IntentTestGenerator:
    def __init__(self, model="gpt-4o-mini"):
        self.client = openai.OpenAI()
        self.model = model

    def generate_test_plan(self, user_story: str) -> Dict:
        """
        将用户故事拆解为可执行的测试步骤,并附带校验点
        """
        prompt = f"""
        你是一个资深测试工程师。请将以下用户故事拆解为测试计划。
        要求:
        1. 每个步骤必须明确操作对象和预期结果。
        2. 必须包含权限校验检查点(例如:非管理员用户是否被拦截)。
        3. 输出严格的 JSON 格式,不要包含 markdown 标记。

        用户故事:{user_story}
        """

        response = self.client.chat.completions.create(
            model=self.model,
            messages=[{"role": "user", "content": prompt}],
            temperature=0.2
        )

        try:
            return json.loads(response.choices[0].message.content)
        except json.JSONDecodeError:
            raise ValueError("模型未返回有效 JSON,请检查 Prompt 或模型响应")

    def validate_step(self, step: Dict, actual_result: str) -> bool:
        """
        简单的规则校验层,替代纯 LLM 打分,提高稳定性
        """
        expected_keyword = step.get("expected_result", "")
        # 这里可以扩展为更复杂的语义相似度计算或正则匹配
        return expected_keyword.lower() in actual_result.lower()

这段代码看似简单,但它体现了工程化的核心:LLM 负责“想”,代码负责“算”和“判”。 分离这两者,才能降低系统的整体熵值。

Agent 测试框架:解决“权限黑洞”与“状态丢失”

当你开始构建自主 Agent(Autonomous Agent)进行探索性测试时,你会遇到两个最头疼的问题:

1. 权限黑洞: Agent 在探索过程中,可能会意外触发敏感操作(如删除数据、修改配置)。如果没有前置的沙箱环境和后置的审计日志,一次失败的测试可能导致生产事故。
2. 状态丢失: 多轮对话中,上下文窗口有限,Agent 可能“忘记”之前的操作结果,导致重复尝试或逻辑循环。

实战建议:

  • 建立“护栏”(Guardrails): 在所有 Agent 行动之前,插入一个策略层(Policy Layer)。例如,使用 OPA(Open Policy Agent)或自定义的规则引擎,检查 Agent 拟执行的 Action 是否在白名单内。
  • 持久化记忆: 不要依赖模型的短期记忆。使用向量数据库存储测试历史,并使用图数据库记录状态流转。这样,即使 Agent 重启,也能从最近的快照继续测试。

质量评估:从“单点指标”到“全链路可观测”

这是目前大多数团队缺失的一环。我们习惯了看 Pass/Fail 比率,但在 AI 系统中,这远远不够。

你需要构建一个新的监控面板,关注以下指标:

  • Token 消耗与成本: 每次测试调用了多少 Token?是否存在冗余请求?
  • 延迟分布(Latency P95/P99): AI 推理往往不稳定,长尾延迟会影响用户体验。
  • 幻觉率(Hallucination Rate): 通过抽样人工复核或引入独立的裁判模型,统计模型编造事实的比例。
  • 权限违规次数: 统计被 Guardrail 拦截的请求比例。如果拦截率过高,说明 Agent 的设计存在缺陷,或者权限策略过于保守。

可观测性代码结构示例:

class ObservabilityTracker:
    def __init__(self):
        self.logs = []

    def log_action(self, agent_id, action, params, cost_ms, is_safe):
        entry = {
            "timestamp": datetime.now().isoformat(),
            "agent_id": agent_id,
            "action": action,
            "params_hash": hash(json.dumps(params, sort_keys=True)), # 隐私脱敏
            "cost_ms": cost_ms,
            "is_safe": is_safe,
            "trace_id": uuid.uuid4().hex
        }
        self.logs.append(entry)
        # 此处应写入 ELK 或 Prometheus

通过追踪 trace_id,你可以复原整个 Agent 的思考与执行路径。当测试失败时,你不是在看一堆乱码,而是在看一条清晰的因果链。

总结:测试工程师的“反脆弱”能力

回到最初的问题:测试转大模型,真正值钱的不是会调 API,也不是会写复杂的 Prompt。

真正值钱的是工程化思维在不确定性环境下的迁移能力。

  • 传统测试靠预防(左移),AI 测试靠防御(右移的护栏与日志)。
  • 传统测试追求确定,AI 测试管理概率。
  • 传统测试关注功能,AI 测试关注安全与合规。

你的学习路线应该是:
1. 补齐工程短板: 深入学习 API 设计、日志规范、监控体系。这些是 Java 后端出身的测试人员的天然优势。
2. 理解模型边界: 搞清楚 LLM 擅长什么(生成、分类、提取),不擅长什么(精确数学、长期记忆、严格约束)。
3. 构建韧性系统: 学会设计能在模型出错时优雅降级、快速恢复的测试架构。

别去卷那些昙花一现的 Demo 技巧。去啃那些枯燥的日志分析、权限设计和可观测性搭建。当你能在模型“发疯”的时候,依然能通过日志追溯到源头,并通过权限控制阻止灾难发生,那时候,你才真正完成了从“点点点”到“质量架构师”的跃迁。

这条路不好走,但风景很好。

资料展示

下面是我整理的AI大模型学习资料和工具包预览,适合收藏后按主题逐步学习。

AI大模型资料展示 1

AI大模型资料展示 2

AI大模型资料展示 3

AI大模型资料展示 4

如果你想看完整资料目录,可以在评论区留言「资料」;也欢迎告诉我你更关注AI大模型里的哪类内容。

优快云官方大礼包

船载 OpenHarmony AIS 航海工作台:告警与防碰撞预警系统 船载OpenHarmony AIS航海工作台的告警与防碰撞系统,集成十余类告警(超速、偏航、会遇、SOS等),通过网格空间索引实现高效邻近判定,保障实时性。告警管理器统一调度规则、去重、通知与日志,支持悬浮球、语音、跑马灯、弹窗多渠道触达,确保航行安全。SOS紧急通道独立运行,避免干扰。系统设计强调性能优化与多场景适配,为航海安全提供核心支撑。 阅读详情

相关推荐

【OpenCV】复杂场景下的高精度圆检测实战(附完整代码)

本文针对OpenCV霍夫圆检测在复杂场景下易失效的问题,提出了一套基于轮廓分析的高精度圆检测实战方案。通过图像预处理、轮廓发现及多轮几何筛选(面积、周长、椭圆拟合、多边形逼近),有效排除噪声和类圆干扰物,显著提升复杂场景下的检测鲁棒性,并附完整可调参的Python代码实现。

weixin_29095587的博客 201

别卷 Prompt 技巧了,生产环境里“权限与日志”才是 AI 测试的护城河

先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做,以及从哪里动手。摘要:很多转行做 AI 测试的同行觉得,只要会写复杂的 Prompt 或者精通 LangChain/LangGraph 就是大神。但在实际面试和项目复盘中,我发现真正拉开差距的,不是模型有多聪明,而是你能否证明这个 Agent 在“失控”时是可控的。本文结合从 Demo 到生产环境的真实转化经验,拆解如何通过权限隔离、全链路日志追踪和可观测性建设,构建具备高可用性的 AI 测试方案。

2601_96120158的博客 156

oracle合并行---解决listagg 拼接字段返回过长 (Ora-01489 result of String concatenation is too long)

oracle合并行---解决listagg 拼接字段返回过长 (Ora-01489 result of String concatenation is too long)

清影的博客 6285

拒绝 Demo 幻觉:大模型工程师的护城河是权限与可观测

先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做,以及从哪里动手。很多 Java 同学转做大模型开发时,最容易犯的一个错误就是“太爱秀”。拿着 LangChain 或 LLM 的官方 Quick Start,两三天就能搭出一个能聊天、能搜库、甚至能调 API 的 Agent。大家在朋友圈晒图,在技术群里发视频,觉得这就是掌握了核心技术。但当你真正去面试,或者真正接手一个企业级项目时,你会发现面试官问的问题和你 demo 里的东西完全是两个维度。

老男孩的架构路 344

k-shape时间序列聚类实战:从理论到tslearn实现

本文深入探讨了k-shape时间序列聚类算法,从核心原理到tslearn库的实战应用。k-shape通过标准化互相关系数衡量序列形状相似性,专注于识别波动模式而非绝对数值。文章详细介绍了算法流程、Python环境搭建、数据预处理、最佳K值确定方法,并通过完整代码示例展示了模型训练与结果可视化,帮助读者掌握这一强大的“形状捕手”工具。

weixin_29061465的博客 175

AltiumDesigner 高效封装库管理 -- samacsys插件实战指南

本文详细介绍了如何利用samacsys插件高效管理AltiumDesigner封装库。通过实战指南,指导用户完成插件安装、云端元件搜索与放置,并分享将海量资源整合为个人标准库的管理策略,从而大幅提升PCB设计效率与可靠性,杜绝封装错误。

weixin_28285943的博客 125

2026 年求职:模型智商是入场券,权限日志才是 Offer 的生死线

摘要:2026 年大模型应用从“跑通 Demo”转向“生产可用”,企业更看重工程化落地能力。本文结合一次联调失败案例,复盘权限、日志与可观测性在真实项目中的关键作用,给出实用建议:别只卷模型智商,先搞定权限边界与日志可追踪性,才能拿到高质量 Offer。---大模型就业的门槛正在提高。过去靠“模型跑分高”就能拿 Offer 的时代结束了。企业现在更关心:你能不能把 AI 能力安全、稳定、可追踪地嵌入现有系统?

2601_96120158的博客 296

ESP-SPARKBOT AI 智能机器人:v1.2 全流程复刻指南

本文介绍 ESP-SPARKBOT AI 智能机器人 v1.2 版本的全流程复刻,包含 PCB 、3D 打印、固件烧录、常见问题解决、参考资料等

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 9259

别只盯着 Prompt 调优:2026 年 AI 测试工程师的“权限与日志”硬仗

最近面试了几个转大模型方向的测试同学,简历上清一色写着“精通 LangChain”、“熟悉 RAG 架构”、“能写复杂的 System Prompt”。看着挺唬人,但一问落地细节就露馅了。大家有个误区,觉得做 AI 测试就是去测模型准不准,或者把 Demo 跑通就行。但在 2026 年的今天,这种认知已经过时了。现在的企业级应用,从 Demo 到生产环境的最大鸿沟,不是模型的智商,而是权限控制、日志追踪和可观测性。

资料免费分享,点击名片 214

基于STM32的家庭环境监测毕业设计(全部资料)

本文设计并实现了一套基于STM32的家庭环境监测系统,具备温湿度、烟雾浓度和PM2.5检测功能,通过OLED屏实时显示数据,并能自动或手动控制风扇、加湿器等设备。系统采用分层架构设计,包含数据采集、处理、显示和控制执行模块,经测试性能稳定可靠。研究结果表明,该系统能有效提升家庭环境监测与控制的智能化水平,但仍存在传感器精度和智能化程度不足等问题,未来可进一步优化硬件配置并引入AI算法提升性能。

3254968421的博客 462

OceanSim: 基于Isaac Sim GPU 加速水下机器人感知仿真框架

OceanSim 采用先进的基于物理的渲染技术,对水下视觉和声学传感器进行精确建模。与其他模拟引擎相比,OceanSim 的渲染速度要快得多。作为 NVIDIA Issac Sim 的扩展,OceanSim 采用了多功能设计。通过融入快速发展的 NVIDIA Omniverse 生态系统,我们的模拟器自然而然地在机器人学习和水下机器人技术之间架起了一座桥梁,从而促进了水下应用中体现型人工智能技术的开发和部署。OceanSim 将以开放源码的方式提供,使研究界能够以合作的模式作出贡献。

机器人控制与仿真应用 2055

Demo 跑得顺滑,上线却崩了?权限与日志才是大模型工程师的护城河

先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做,以及从哪里动手。最近面试了不少转行做 AI 应用的 Java 和 Python 后端同学。大家简历上的项目千篇一律:LangChain 搭个 RAG,或者用 ReAct 框架写个 Agent,跑起来确实能对话、能查数据,甚至还能画图。但一旦问到“如果模型幻觉导致用户误删了生产库数据,怎么兜底?”或者“如何追踪一个复杂多步 Agent 的决策路径?”时,大多数人眼神就飘忽了。

2601_96120158的博客 196

Python遥感图像处理应用篇(二十三):Python+GDAL 批量拼接图像

遥感影像拼接分多种不同的情况,比如比较常用的是两幅影像拼接或者多个图像合并为一个图像。GDAL中实现影像拼接的方式也有多种,比如常用可以通过numpy读取影像数组,并计算各个图像的numpy数组范围,合并多个numpy数组为一个最终的结果,并将其重新输出为一幅新的图像,即可实现图像的拼接。另外比较方便的一种方法便是使用GDAL.warp()函数方法。这个函数的功能很多,可以实现多种不同的目的,比如用于坐标系转换、投影变换、图像合并与镶嵌、地理范围裁剪、更改分辨率、矢量裁剪等多种功能。这些功能可以通过设置Op

soderayer的博客 4643

别卷Prompt调优了,你的Agent在权限黑洞里死得很难看

先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做,以及从哪里动手。前两周复盘几个跳槽者的简历,发现一个挺讽刺的现象:大家的项目经历越来越“漂亮”,RAG 架构画得花里胡哨,Agent 工作流写得跟流程图艺术展一样,但一问生产环境的事,全部哑火。很多人以为转大模型开发,就是学学 LangChain,调调 Prompt,把向量数据库配好就能上岗。这是典型的 Demo 思维。

老男孩的架构路 164

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

程序员就业:把方案拆到可执行

摘要:2026 年的程序员就业市场,AI 编程工具(如 Codex、Claude Code)已从个人提效神器演变为团队协作的基础设施。但很多求职者沉迷于展示复杂的 Agent 工作流和炫酷的 Prompt 调优,却在面试中因缺乏对“权限边界”和“全链路日志”的工程化思考而被刷掉。本文复盘一次真实的招聘筛选过程,揭示为什么小团队更看重可观测性与安全兜底,而非模型的智商。给出从 Demo 到生产的技能取舍建议,以及如何在简历中通过代码片段证明你的工程素养。---

老男孩的架构路 192

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 300

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

ChatGPT、Perplexity、Gemini 与 AI Overviews 引用对比:谁的引用更可信

AI 引擎的引用机制差异很大:ChatGPT 以行内引用加 Sources 列表呈现来源,Perplexity 几乎逐句可溯源,Gemini 在回答中内嵌相关来源链接,AI Overviews 则把多源聚合答案与来源列表一起放在搜索结果顶部。本文从引用透明度、来源偏好、可干预性 3 个维度对比这 4 个引擎,并给出 GEO 的 3 点启示,帮企业在多引擎环境下提升被引用的概率。

淡然一笑 的专栏 142

AI Agent之核心框架

A: 显式 Thought 有三类价值:可解释性(便于人类审计)、可调试性(定位哪一步选错工具)、学习信号(可做监督微调或评估中间步骤质量)。ReAct 把推理与 可执行行动 绑定,每一步行动后都有 真实 Observation 反馈,从而用工具结果约束生成,降低闭卷幻觉。做完不等于结束——还要 评估做得好不好,把 教训 记下来,下次 带着教训重试,反思作为 记忆,影响后续尝试的策略。工作流程:Action → Evaluation → Reflection → Retry。A: 普通 CoT 只在。

剑雨巍巍的博客 236

【从零理解 Spring AI · 12】MCP 的两种角色:做客户端还是做服务端

上一篇讲了 MCP 的概念:标准协议、三大角色、M+N 替代 M×N。

nice_lcj520的博客 536

AI 应用开发工程师技术实践:大模型接入、通用组件封装与性能优化

本文提出AI应用从PoC到生产的核心挑战:模型调用的持续可用、可控与可优化。通过构建统一LLM网关实现多供应商路由与故障转移,封装对话、工具调用与RAG组件以解耦业务逻辑,结合前缀缓存、批处理与流式背压治理等性能优化手段,形成“接通→接稳→接快”的工程路径,最终以工程化能力决定AI应用的生产可用性。

2301_79189962的博客 591

终端 AI 审计与 “龙虾” 类智能体风险治理:从可见性到闭环溯源

生成式 AI 办公普及之后,数据泄露风险逐步下沉到终端。员工将合同、源代码、客户资料粘贴至公有大模型,以及龙虾(OpenClaw)这类本地开源 AI 智能体的滥用,成为企业安全新挑战。传统网络边界防护存在审计盲区,本文从风险链路拆解、核心能力模型、分级治理策略、落地踩坑点以及技术局限性多角度,分享终端侧 AI 安全治理的实践思路。

2401_86491085的博客 668

抽象主义人工智能和生命体AI的内在联系

彭军辉提出“抽象主义人工智能”作为第四大AI范式,批判符号主义、连接主义、行为主义剥离生命本体的误区,确立“智能是现象,生命是本体”的核心公理。主张原生智能必须依附具备存续诉求的生命本体,提出“生命体AI理论”,构建七层演化阶梯与自闭环工程框架,强调智能不可跳过底层存续机制直接模拟语言。该体系为生成式AI提供科学边界,推动从“仿真表象”向“原生智能”的范式跃迁,开辟硅基人工生命新赛道。

抽象主义人工智能和生命体AI 133

OpenClaw 深度调查:把 AI 助手做成你自己的控制平面

对 openclaw/openclaw 的完整技术尽调:Gateway 架构、Agent 运行时、工具与沙箱、30 个消息通道、181 个插件、安全信任边界、工程代价与采用建议。17 章 / 10 张图,全部数字标注口径,数据截至 2026-10-31。

厚积薄发 259

企业微信iPad协议详解:接口接入、实时消息同步与语音转码实践

深入解析企业微信iPad协议的技术架构与开发思路,涵盖API接口接入、长连接通信、实时消息同步、Silk语音转码、异常重连及高并发优化,帮助开发者了解企业微信自动化系统的设计与实现。

欢迎来到祖安! 356

AI作图软件技术选型:从4个技术维度出发的实测对比

AI作图软件技术选型:从4个技术维度出发的实测对比

Vbaoke的博客 234

【AI Agent面试系列】AI Agent可观测、评测、安全相关的知识点

之前的文章介绍了和,本文主要介绍AI Agent的测评、可观测等知识。

298
上一篇: Codex 接入踩坑记:当 AI 开始改生产代码,权限与日志成了最大拦路虎
下一篇: 从数仓到 LLM:为什么你的 RAG 系统在 Demo 阶段完美,一上生产就因权限…
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值