前端转大模型:从团队协作视角展开

提示工程架构师视角:团队敏捷实践中如何评估prompt工程师的绩效? 在AI驱动的敏捷团队中,Prompt工程师是连接业务需求与大模型能力的“翻译官”。然而,传统绩效评估体系(如KPI)难以适配其“输出非代码、价值隐性化”的工作特性。本文从Prompt工程架构师的视角出发,结合敏捷实践的核心原则(迭代、反馈、客户价值),提出5个可量化的绩效评估维度(提示质量、迭代效率、业务价值、团队协作、创新能力),并通过案例、代码示例与流程图,解答“如何科学评估Prompt工程师绩效”的核心问题。无论是团队管理者还是Prompt工程师本身,都能从中获得可落地的评估框架与成长指引。 阅读详情

聊《前端转大模型实战,第一道门槛可能不是算法》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。

摘要

去年我带一个前端同学做 AI 文档助手,他第一个 PRD 写得比我还细,交互设计、流式输出、多模态图片上传全考虑到了。Demo 跑通那天,他发朋友圈说"前端转大模型原来这么简单"。

两周后项目上线,第一周崩了三次。

不是模型的问题,不是代码的问题,是权限越权、日志缺失、请求链路不可追溯。后来我问他现在还觉得简单吗,他说"原来 Demo 和能干活之间,差的是工程化"。

今天这篇就是复盘这个项目的踩坑过程,以及我从中学到的几个判断标准。

---

目录

  • 前端的转型优势,别只盯着 UI
  • AI 应用交互模式,和传统 Web 不一样
  • 流式输出,我踩过一个坑
  • 权限问题,上线第一天就翻车
  • 日志和可观测性,我为什么现在才重视
  • 多模态体验,前端有天然优势
  • 作品集方向,别只放 Demo
  • 适用边界
  • 总结

前端的转型优势,别只盯着 UI

文章插图 1

很多前端同学转型时第一反应是"我能不能写后端",这个思路走偏了。

前端做 AI 应用最大的优势其实是用户侧的感知能力,而不是写代码的能力。

一个 AI 产品工程师需要回答的问题:

  • 用户什么时候需要流式输出?什么时候可以等完整响应?
  • 多模态输入怎么设计交互?图片上传是拖拽还是粘贴?
  • 错误状态下给用户什么反馈?模型超时、权限拒绝、内容过滤,每种情况的提示文案不一样

这些是后端工程师和算法工程师不擅长、但前端天然敏感的领域。

我那个前端同学后来在简历上写"负责 AI 产品交互设计",比写"会调 LangChain"有说服力得多。

---

AI 应用交互模式,和传统 Web 不一样

文章插图 2

传统 Web 是请求-响应模式,你点按钮,等接口返回,渲染结果。

AI 应用是流式+状态机模式,同一个请求可能持续几十秒,中间会有 thinking 状态、工具调用状态、多步输出。

我见过一个很典型的错误设计:

用户提问 → 显示 loading → 等模型返回 → 一次性渲染

这种设计在 Demo 里没问题,但真实场景下用户等 15 秒没任何反馈,体验极差。

正确的做法是流式输出,Token 级渲染,同时展示中间状态。

---

流式输出,我踩过一个坑

最初我们实现流式输出是这样的:

async function streamResponse(prompt) {
  const response = await fetch('/api/chat', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ prompt })
  });

  const reader = response.body.getReader();
  const decoder = new TextDecoder();

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;

    const chunk = decoder.decode(value);
    // 直接渲染到 DOM
    appendToOutput(chunk);
  }
}

Demo 跑通了,但上线后发现问题:用户刷新页面,对话历史丢失。

排查过程:

1. 现象:用户中途刷新,对话内容没了
2. 验证:检查后端是否保存了 session,发现只存了最后一条消息
3. 根因:流式输出只负责渲染,不负责持久化,前端没有把中间状态同步到后端

修复方案:

async function streamResponse(prompt, sessionId) {
  const response = await fetch('/api/chat', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ prompt, sessionId })
  });

  const reader = response.body.getReader();
  const decoder = new TextDecoder();
  let fullResponse = '';

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;

    const chunk = decoder.decode(value);
    fullResponse += chunk;
    appendToOutput(chunk);

    // 每收到 5 个 token,同步一次到后端
    if (fullResponse.length % 5 === 0) {
      await syncToBackend(sessionId, fullResponse);
    }
  }

  // 最后保存完整对话
  await saveConversation(sessionId, prompt, fullResponse);
}

代码解释:

  • 输入:prompt 是用户问题,sessionId 是当前会话 ID
  • 核心逻辑:流式读取响应,每收到 5 个 token 就调用 syncToBackend 同步中间状态,避免用户刷新时丢失内容
  • 输出:逐 token 渲染到 DOM,最终保存完整对话
  • 异常处理:这里还缺一个关键逻辑——如果 syncToBackend 失败,需要重试或标记状态,否则会出现"显示已保存但实际没存"的假象

---

权限问题,上线第一天就翻车

这个项目翻车的最主要原因是权限。

Demo 阶段我们用的是本地测试账号,所有功能都能访问。上线后接入企业 SSO,问题暴露了:

现象:用户 A 通过分享链接访问了用户 B 的对话记录

排查过程:

1. 检查后端接口是否验证了 sessionId 的归属
2. 发现接口只校验了 sessionId 是否存在,没有校验当前用户是否有权访问这个 session
3. 根因:前端传 sessionId 时没有带上用户身份,后端也没有从 token 中提取用户信息做权限校验

修复:


# 后端接口伪代码
@app.post("/api/chat")
async def chat(request: ChatRequest, current_user: User = Depends(get_current_user)):
    # 验证当前用户是否有权访问这个 session
    session = await db.get_session(request.session_id)
    if session.owner_id != current_user.id:
        raise HTTPException(status_code=403, detail="无权访问")

    # 业务逻辑...

这个坑告诉我们:Demo 阶段不要假设"只有我自己用",权限校验要从第一天就写。

---

日志和可观测性,我为什么现在才重视

早期我们没做日志,出问题只能靠用户反馈才知道。

后来接入了结构化日志,每个请求都记录:

{
  "request_id": "abc-123",
  "user_id": "u_001",
  "session_id": "s_456",
  "model": "gpt-4",
  "prompt_tokens": 120,
  "completion_tokens": 340,
  "latency_ms": 2300,
  "status": "success",
  "error": null
}

有了日志后,排查效率提升了 10 倍。现在每次用户反馈问题,我能直接通过 request_id 定位到完整链路。

---

多模态体验,前端有天然优势

AI 应用越来越支持图片、语音输入。这部分交互设计是前端的强项:

  • 图片上传:拖拽、粘贴、点击三种方式都要支持
  • 加载状态:图片上传后显示缩略图,同时显示上传进度
  • 错误处理:图片格式不对、大小超限,给出明确提示

我见过一个很好的设计:用户粘贴截图后,AI 自动识别图片内容并给出分析,同时显示"正在分析图片..."的中间状态。

---

作品集方向,别只放 Demo

前端转大模型,作品集比简历重要。

我建议做两个项目:

1. 一个完整的 AI 应用:包含权限、日志、流式输出、错误处理,部署上线
2. 一个技术深度项目:比如实现一个简易的 RAG 系统,展示你对向量数据库、 embedding、检索策略的理解

第一个项目证明你能做产品,第二个项目证明你懂技术。

---

适用边界

这篇文章复盘的经验,有它的适用边界,不是所有场景都照搬。

适用场景:

  • 企业内部工具、知识助手、文档问答类应用
  • 用户量在百人到万人级别,需要权限隔离和审计
  • 团队有前后端分工,前端需要负责完整的产品交付

限制条件:

  • 如果是 C 端高并发产品(日活十万以上),权限模型要换成更细粒度的 RBAC 或 ABAC,不能只靠 sessionId 归属校验
  • 如果模型调用延迟敏感(比如实时翻译),流式输出的同步策略要调整,5 个 token 同步一次可能太频繁
  • 如果团队没有后端资源,前端单独扛可观测性,结构化日志的接入成本会很高

取舍:

我们当时选择了"每 5 个 token 同步一次"而不是"每次请求结束同步",是因为 Demo 阶段用户刷新率很高,丢失体验比后端多写几次数据库更致命。但如果你的场景是长文本生成(比如写文章),这种策略会导致数据库压力激增,应该改成"每 50 个 token 或每 30 秒同步一次"。

什么时候不应照搬:

  • 如果你的 AI 应用是纯前端实现(比如用 WebLLM 跑本地模型),没有后端 session 管理,那权限和日志的踩坑路径完全不同
  • 如果你的产品是开源工具而非商业应用,权限模型可以简化,重点放在错误处理和用户反馈收集上
  • 如果你的团队只有 1-2 个人,先把核心功能跑通,日志和权限可以后续补,不要一开始就过度设计

这些边界说清楚,是因为我见过太多人把"工程化"理解成"把所有检查项都加上",结果 Demo 还没跑起来,权限系统已经写了两周。

---

摘要

去年我带一个前端同学做 AI 文档助手,他第一个 PRD 写得比我还细,交互设计、流式输出、多模态图片上传全考虑到了。Demo 跑通那天,他发朋友圈说"前端转大模型原来这么简单"。

两周后项目上线,第一周崩了三次。

不是模型的问题,不是代码的问题,是权限越权、日志缺失、请求链路不可追溯。后来我问他现在还觉得简单吗,他说"原来 Demo 和能干活之间,差的是工程化"。

今天这篇就是复盘这个项目的踩坑过程,以及我从中学到的几个判断标准。

---

目录

  • 前端的转型优势,别只盯着 UI
  • AI 应用交互模式,和传统 Web 不一样
  • 流式输出,我踩过一个坑
  • 权限问题,上线第一天就翻车
  • 日志和可观测性,我为什么现在才重视
  • 多模态体验,前端有天然优势
  • 作品集方向,别只放 Demo
  • 适用边界
  • 总结

优快云资料领取方式

前端的转型优势,别只盯着 UI

很多前端同学转型时第一反应是"我能不能写后端",这个思路走偏了。

前端做 AI 应用最大的优势其实是用户侧的感知能力,而不是写代码的能力。

一个 AI 产品工程师需要回答的问题:

  • 用户什么时候需要流式输出?什么时候可以等完整响应?
  • 多模态输入怎么设计交互?图片上传是拖拽还是粘贴?
  • 错误状态下给用户什么反馈?模型超时、权限拒绝、内容过滤,每种情况的提示文案不一样

这些是后端工程师和算法工程师不擅长、但前端天然敏感的领域。

我那个前端同学后来在简历上写"负责 AI 产品交互设计",比写"会调 LangChain"有说服力得多。

---

AI 应用交互模式,和传统 Web 不一样

传统 Web 是请求-响应模式,你点按钮,等接口返回,渲染结果。

AI 应用是流式+状态机模式,同一个请求可能持续几十秒,中间会有 thinking 状态、工具调用状态、多步输出。

我见过一个很典型的错误设计:

用户提问 → 显示 loading → 等模型返回 → 一次性渲染

这种设计在 Demo 里没问题,但真实场景下用户等 15 秒没任何反馈,体验极差。

正确的做法是流式输出,Token 级渲染,同时展示中间状态。

---

流式输出,我踩过一个坑

最初我们实现流式输出是这样的:

async function streamResponse(prompt) {
  const response = await fetch('/api/chat', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ prompt })
  });

  const reader = response.body.getReader();
  const decoder = new TextDecoder();

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;

    const chunk = decoder.decode(value);
    // 直接渲染到 DOM
    appendToOutput(chunk);
  }
}

Demo 跑通了,但上线后发现问题:用户刷新页面,对话历史丢失。

排查过程:

1. 现象:用户中途刷新,对话内容没了
2. 验证:检查后端是否保存了 session,发现只存了最后一条消息
3. 根因:流式输出只负责渲染,不负责持久化,前端没有把中间状态同步到后端

修复方案:

async function streamResponse(prompt, sessionId) {
  const response = await fetch('/api/chat', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ prompt, sessionId })
  });

  const reader = response.body.getReader();
  const decoder = new TextDecoder();
  let fullResponse = '';

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;

    const chunk = decoder.decode(value);
    fullResponse += chunk;
    appendToOutput(chunk);

    // 每收到 5 个 token,同步一次到后端
    if (fullResponse.length % 5 === 0) {
      await syncToBackend(sessionId, fullResponse);
    }
  }

  // 最后保存完整对话
  await saveConversation(sessionId, prompt, fullResponse);
}

代码解释:

  • 输入:prompt 是用户问题,sessionId 是当前会话 ID
  • 核心逻辑:流式读取响应,每收到 5 个 token 就调用 syncToBackend 同步中间状态,避免用户刷新时丢失内容
  • 输出:逐 token 渲染到 DOM,最终保存完整对话
  • 异常处理:这里还缺一个关键逻辑——如果 syncToBackend 失败,需要重试或标记状态,否则会出现"显示已保存但实际没存"的假象

---

权限问题,上线第一天就翻车

这个项目翻车的最主要原因是权限。

Demo 阶段我们用的是本地测试账号,所有功能都能访问。上线后接入企业 SSO,问题暴露了:

现象:用户 A 通过分享链接访问了用户 B 的对话记录

排查过程:

1. 检查后端接口是否验证了 sessionId 的归属
2. 发现接口只校验了 sessionId 是否存在,没有校验当前用户是否有权访问这个 session
3. 根因:前端传 sessionId 时没有带上用户身份,后端也没有从 token 中提取用户信息做权限校验

修复:


# 后端接口伪代码
@app.post("/api/chat")
async def chat(request: ChatRequest, current_user: User = Depends(get_current_user)):
    # 验证当前用户是否有权访问这个 session
    session = await db.get_session(request.session_id)
    if session.owner_id != current_user.id:
        raise HTTPException(status_code=403, detail="无权访问")

    # 业务逻辑...

这个坑告诉我们:Demo 阶段不要假设"只有我自己用",权限校验要从第一天就写。

---

日志和可观测性,我为什么现在才重视

早期我们没做日志,出问题只能靠用户反馈才知道。

后来接入了结构化日志,每个请求都记录:

{
  "request_id": "abc-123",
  "user_id": "u_001",
  "session_id": "s_456",
  "model": "gpt-4",
  "prompt_tokens": 120,
  "completion_tokens": 340,
  "latency_ms": 2300,
  "status": "success",
  "error": null
}

有了日志后,排查效率提升了 10 倍。现在每次用户反馈问题,我能直接通过 request_id 定位到完整链路。

---

多模态体验,前端有天然优势

AI 应用越来越支持图片、语音输入。这部分交互设计是前端的强项:

  • 图片上传:拖拽、粘贴、点击三种方式都要支持
  • 加载状态:图片上传后显示缩略图,同时显示上传进度
  • 错误处理:图片格式不对、大小超限,给出明确提示

我见过一个很好的设计:用户粘贴截图后,AI 自动识别图片内容并给出分析,同时显示"正在分析图片..."的中间状态。

---

作品集方向,别只放 Demo

前端转大模型,作品集比简历重要。

我建议做两个项目:

1. 一个完整的 AI 应用:包含权限、日志、流式输出、错误处理,部署上线
2. 一个技术深度项目:比如实现一个简易的 RAG 系统,展示你对向量数据库、 embedding、检索策略的理解

第一个项目证明你能做产品,第二个项目证明你懂技术。

---

适用边界

这篇文章复盘的经验,有它的适用边界,不是所有场景都照搬。

适用场景:

  • 企业内部工具、知识助手、文档问答类应用
  • 用户量在百人到万人级别,需要权限隔离和审计
  • 团队有前后端分工,前端需要负责完整的产品交付

限制条件:

  • 如果是 C 端高并发产品(日活十万以上),权限模型要换成更细粒度的 RBAC 或 ABAC,不能只靠 sessionId 归属校验
  • 如果模型调用延迟敏感(比如实时翻译),流式输出的同步策略要调整,5 个 token 同步一次可能太频繁
  • 如果团队没有后端资源,前端单独扛可观测性,结构化日志的接入成本会很高

取舍:

我们当时选择了"每 5 个 token 同步一次"而不是"每次请求结束同步",是因为 Demo 阶段用户刷新率很高,丢失体验比后端多写几次数据库更致命。但如果你的场景是长文本生成(比如写文章),这种策略会导致数据库压力激增,应该改成"每 50 个 token 或每 30 秒同步一次"。

什么时候不应照搬:

  • 如果你的 AI 应用是纯前端实现(比如用 WebLLM 跑本地模型),没有后端 session 管理,那权限和日志的踩坑路径完全不同
  • 如果你的产品是开源工具而非商业应用,权限模型可以简化,重点放在错误处理和用户反馈收集上
  • 如果你的团队只有 1-2 个人,先把核心功能跑通,日志和权限可以后续补,不要一开始就过度设计

这些边界说清楚,是因为我见过太多人把"工程化"理解成"把所有检查项都加上",结果 Demo 还没跑起来,权限系统已经写了两周。

---

总结

前端转大模型,第一道门槛不是算法,是工程化。

权限、日志、可观测性,这些在 Demo 阶段看起来不重要,但上线第一天就会暴露。我那个前端同学后来跟我说:"原来写 AI 应用,30% 的精力在调模型,70% 的精力在工程化。"

如果你现在想转型,我的建议是:

1. 先做一个完整的 AI 应用,把权限、日志、流式输出都实现
2. 部署上线,真实用户会用真实问题测试你
3. 在作品集里展示你如何解决这些问题,比展示 Demo 截图有说服力得多

Demo 能跑只是起点,能稳定交付才是终点。

资料展示

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

AI大模型资料展示 1

AI大模型资料展示 2

AI大模型资料展示 3

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

优快云官方大礼包

【实战教程】从零实现DeepSeek AI多专家协作系统 - Spring Boot+React打造AI专家团队协作平台 本文详细讲解基于DeepSeek API打造多智能体协作系统的完整实现过程,超越传统单一AI助手模式,模拟六位专业领域专家(架构师、Java专家、前端开发等)共同解决复杂技术问题。完整源码包含Spring Boot后端和React前端实现,涵盖专家角色定义、智能分配算法、三阶段协作流程和实时交互界面。文中展示从架构设计到代码实现的全过程,以及丰富的演示效果。无论你是AI应用开发者、全栈工程师还是技术架构师,都能从这个项目中获取大模型应用开发的前沿实践经验。附完整源码,拿来即用,快速搭建你的AI专家团队! 阅读详情

相关推荐

Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?

当检测到TCP/UDP混合攻击时,应触发预设的熔断策略:优先保障游戏大厅服务的UDP 27015端口,临时限制匹配系统的TCP连接数。针对Steam游戏服务器特有的UDP 4380端口,需配置协议合规性检查规则:限制数据包长度不超过128字节,强制校验请求来源IP的真实性。Steam游戏服务器的防护需要平衡安全性与玩家体验,通过协议深度解析、智能流量调度和服务端加固的三维防御体系,可构建游戏行业专属的抗DDoS护城河。答:采用弹性防护方案,基础防护带宽保持50Gbps,遭遇攻击时自动扩展至T级清洗能力。

2501_91486804的博客 1456

前端转大模型:团队协作中的使用边界

这篇面向想进入 AI 应用方向的前端开发者,但不会把“前端转大模型:团队协作中的使用边界”写成概念清单。我会按产品化视角的实战教程的思路,把它放到真实开发、学习路线和求职准备里看,顺便讲几个容易忽略的取舍。这次我会从“从一次真实项目复盘切入,重点写取舍和踩坑”展开,换一组场景和例子来讲。回到“前端转大模型:团队协作中的使用边界”这个主题,最重要的不是把名词背全,而是知道它该放在什么场景里用。能跑起来的小项目、说得清楚的技术取舍、能展示的结果,比泛泛而谈更有说服力。

2601_96189255的博客 189

ANSYS Fluent DPM实战:从单点到锥形注入的粒子模拟全流程解析

本文深度解析了ANSYS Fluent中离散相模型(DPM)的粒子注入(Injection)设置全流程。从单点注入到锥形喷雾,详细阐述了不同注入类型的物理本质、参数逻辑与适用场景,并提供了粒径分布、湍流扩散等高级参数设置技巧与实战避坑指南,帮助工程师精准模拟喷雾、粉尘等粒子运动行为。

weixin_29276847的博客 657

前端转大模型:真实项目中的关键步骤

这篇面向想进入 AI 应用方向的前端开发者,但不会把“前端转大模型:真实项目中的关键步骤”写成概念清单。我会按产品化视角的实战教程的思路,把它放到真实开发、学习路线和求职准备里看,顺便讲几个容易忽略的取舍。这次我会从“从团队落地角度切入,重点写协作、日志和可维护性”展开,换一组场景和例子来讲。回到“前端转大模型:真实项目中的关键步骤”这个主题,最重要的不是把名词背全,而是知道它该放在什么场景里用。能跑起来的小项目、说得清楚的技术取舍、能展示的结果,比泛泛而谈更有说服力。

2601_96120158的博客 192

云计算系统等保测评对象和指标选取

参考GBT22239-2019《基本要求》附录D 云计算应用场景说明。简要理解下图,主要是云计算系统安全保护责任分担原则和云服务模式适用性原则,指导后续的测评对象和指标选取。

ryanzzzzz的博客 4682

力软敏捷开发框架源码7.0.6旗舰版 JNPF开发平台3.4.5 企业版 旗舰版

JNPF作为作为一款深受用户喜爱的低代码产品,凭借雄厚的科研技术力量、丰富的软件开发项目经验、严谨的项目开发流程和高质量的售后服务,已成功帮助千家企业完成数字化项目,建立了覆盖不同行业客户和不同发展阶段的软件产品服务体系。

huoooos0的博客 1841

大模型团队的组成与职责分工:构建高效协作的核心力量

接下来是数据准备,高质量的数据如同优质木材之于乐器制作,是模型性能的根基。今天,我将以资深 IT 技术顾问的视角,为大家剖析大模型团队的组成与职责分工。首先是人才稀缺问题,大模型领域的专业人才供不应求,尤其是具备丰富实战经验的架构师和工程师。企业应合理规划项目阶段,采用云服务的弹性计费模式,优化模型架构以降低计算复杂度,同时探索内部资源的高效共享模式。技术迭代快也是不容忽视的挑战。大模型领域日新月异,企业需建立持续学习机制,鼓励团队成员参加技术培训和行业会议,及时跟踪前沿技术并评估其对现有项目的影响。

charles666666的博客 2614

【Claude】Claude Code 子代理(Subagents)完全指南:多 AI 编排与并行任务管理

子代理是在独立上下文窗口特性主代理子代理上下文窗口与你对话的主上下文完全独立的上下文工具权限拥有所有工具可自定义限制生命周期整个会话完成任务后结束通信方式直接对话结果返回给主代理模型继承主会话设置可指定不同模型你可以创建专属子代理,指定模型、工具权限和系统提示。在对话中,Claude 会根据任务自动选择合适的子代理。

博客 5538

前端转全栈——AI大模型辅助诊断系统(已上线)

本文介绍了一个基于AI大模型的辅助诊断系统全栈开发项目。项目采用uni-app(Vue3)和FastAPI分别构建前后端,整合了通义千问AI模型实现智能诊断功能。前端使用Vite、Pinia等技术栈,后端采用Python异步框架,通过SQLite存储数据。作者详细记录了3天开发过程,包括项目结构、技术选型和开发注意事项,特别强调了可部署性、安全性和可维护性的优化点。该项目为全栈开发提供了实践参考,展示了AI模型与前后端技术的融合应用。

欧阳的技术博客 778

2018安徽省青少年信息学奥林匹克(AHOI)初中组

12 种合法的排列分别为:1, 3, 2, 4, 2, 3, 1, 4, 3, 1, 4, 2, 3, 2, 4, 1, 1, 3, 4, 2, 2, 3,4,1,1,4,2,3, 2,4,1,3, 4,1,3,2, 4,2,3,1, 1,4,3,2, 2,4,3,1。分为 2 组,一组的队员实力值是{4, 5, 2, 3},一组是{-4, -3, -5},其中最小的组人数为 3,可以发现没有比 3 更优的分法了。[0, 1, 1, 2]同样不是合法的分组方案,因为出现了两个实力值为 1 的选手。

weixin_42358969的博客 1143

2025华为杯第二十二届中国研究生数学建模竞赛E题:高速列车轴承智能故障诊断问题 - 完整解题分析+完整MATLAB源码!

🎓 本文收录于 《滚雪球学数学建模》专栏,本专栏专注于从零基础出发,带你循序渐进掌握数学建模的核心方法与思维路径。通过“滚雪球式”学习法,从最简单的生活化案例到经典建模工具,再到省赛、国赛真题实战演练,逐步积累知识与技能,帮助你搭建完整的建模体系。无论你是刚接触建模的新生,还是希望提升科研与竞赛能力的学者与工程师,本专栏都将为你提供一条清晰、高效、可实操的建模成长路线,助力你快速进阶,突破难点,迈向数学建模竞赛与实际应用的更高峰 🚀!

**My Coding Family** 1994

前端离职转agent开发,半年终于拿到Offer了,明天正式上班

这是我后来面试时被反复印证的一个判断。Agent 的最后一百米,几乎全是前端的活。模型再强,用户看到的永远是一个界面。你在前端做的事在 Agent 里叫它什么加载态 / 骨架屏 / 进度反馈流式输出的打字机效果、工具调用中状态请求超时、失败重试、错误兜底模型超时、工具调用失败、降级话术复杂表单的多状态管理多轮会话状态、中断与恢复把接口数据渲染成人能看懂的样子把"模型在想什么"讲清楚(引用来源、思考过程)埋点、性能监控、用户行为分析。

jennycisp的博客 188

YOLOv改进 | YOLOv11添加WTConv小波卷积,能够更有效地捕捉局部和全局特征

在计算机视觉目标检测领域,YOLO(You Only Look Once)系列算法凭借“单阶段检测”的高效性(一次前向传播同时完成目标定位与分类),已成为工业界与学术界的主流选择。从YOLOv1到YOLOv11,算法持续迭代优化,在速度与精度之间寻求平衡,广泛应用于自动驾驶、智能安防、工业质检等场景。为解决上述问题,本文提出一种基于,将输入特征图分解为不同频率的子带(低频全局信息与高频局部细节),并分别通过卷积操作提取局部与全局特征,最后融合多尺度特征,从而更有效地捕捉目标的局部细节与全局结构。

走向CTO的路上... 1249

手搓多Agent协同系统,解锁大模型团队协作的底层逻辑

本文探讨了单智能体AI工具的局限性,并提出了多智能体协同解决方案。文章指出,单智能体在简单任务中表现良好,但在复杂场景下(如企业决策、风险评估等)会因思维单一而产生片面结论。 核心观点: 多智能体协同通过分工互补、相互校验,可输出更全面、精准的结果 介绍了四种关键编排模式: 串行编排:分步递进优化(适合流程化任务) 并发编排:多维度同步分析(适合风险评估) 辩论编排:正反方观点碰撞(适合复杂决策) 投票编排:多视角综合判断(适合方案评选) 文章结合DialecticEngine设计思想,提供了可复用的代码实

小程故事多的博客 313

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

从API密钥管理视角看Taotoken如何提升团队协作与安全审计效率

从API密钥管理视角看Taotoken如何提升团队协作与安全审计效率 在团队开发与使用大模型API的实践中,API密钥的管理往往是一个容易被忽视却至关重要的环节。分散的密钥、模糊的权限边界以及难以追溯的调用记录,都可能成为项目安全与协作效率的隐患。本文将结合一个典型开发团队的日常场景,展示如何通过Taotoken平台的控制台功能,系统化地管理API密钥、分配权限并进行安全审计,从而让团队协作更顺畅,安全治理更清晰。 1. 团队密钥管理的常见挑战 在一个由多名工程师、测试人员甚至产品经理组成的项目团队中,直接

weixin_42471823的博客 313

深度学习工具包 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")

Web开发新纪元:AI赋能期末项目设计与协作

开发AI智能应用,就下载InsCode AI IDE,一键接入DeepSeek-R1满血版大模型! 标题:Web开发新纪元:AI赋能期末项目设计与协作 随着人工智能技术的飞速发展,智能化工具正在深刻改变我们的工作方式和生活体验。对于开发者而言,这不仅是一次技术革新,更是一个全新的创作时代。本文将从一个大学生的视角出发,探讨如何利用AI大模型和智能开发工具完成Web期末项目的高效设计与实现,并引导读...

RubyLion56的博客 826

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

AI转型实战:从提示词工程到大模型API调用构建自动化应用

人工智能技术正在加速渗透到软件开发全流程,很多开发者担心被AI替代,但真正的机会在于掌握如何利用AI放大自身能力。理解大语言模型的基本原理,是高效使用提示词工程和API调用的基础。通过结构化提示词定义角色、任务、上下文与输出格式,开发者能让模型稳定产出高质量的代码和结构化数据。而大模型API则提供了将AI能力集成到业务系统的标准路径,从环境配置到通用调用函数,可快速搭建可运行的自动化应用。实际场景中,AI Agent可以结合工具调用自动完成需求转代码、Git提交记录总结等重复性工作,显著提升开发效率。本文以

weixin_42534103的博客 251

AI大模型从入门到精通:14个核心概念详解,一篇教程全掌握!

本文系统性地梳理了构成现代AI大模型技术栈的一系列核心基础概念。从奠定基础的Transformer架构,到数据处理的Token与Embedding;从模型生命周期的预训练与微调,到追求效率与容量的MoE;从突破知识边界的RAG,到迈向通用智能的Agent;再到确保AI有益于人类的提示工程与对齐,以及必须正视的幻觉挑战。这些概念相互关联、层层递进,共同描绘了当前大模型技术发展的全景图。理解这些基础概念,不仅是深入研究和应用大模型的必要前提,也是我们思考人工智能未来发展方向、机遇与挑战的重要基石。

2401_85375298的博客 1028

探索Taotoken审计日志功能在团队协作中的权限管理价值

探索Taotoken审计日志功能在团队协作中的权限管理价值 对于团队管理员而言,管理多个成员对大模型API的访问权限是一项兼具技术性与管理性的挑战。如何清晰地知道谁在何时调用了哪个模型、消耗了多少资源,以及如何快速定位异常行为,是保障团队资源安全、控制成本的关键。Taotoken平台提供的API Key访问控制与审计日志功能,正是为应对此类场景而设计。本文将从团队管理员的视角,展示启用这些功能后,如何实现对团队调用行为的有效观测与管理。 1. 权限管理的起点:API Key的精细化控制 在团队协作中,将所有

weixin_35950531的博客 128

Web 版翻译者资料库

本项目是桌面版《翻译者资料库》的 Web 移植版,基于 Spring Boot 3.3、Thymeleaf、Bootstrap 5.3 与 MySQL 8.0 构建。它面向翻译写作提供资料、词汇、句库、文本工具、对照制作、查找、备份恢复及旧库迁移等功能,完整继承桌面版核心业务规则,支持一键启动与离线访问。

howard2005的专栏 150
上一篇: Hermes接入团队协作后,我推翻了三个效率假设
下一篇: LangGraph工作流:权限、日志缺失时,Agent上线第一天就崩
Java技术那些事儿
博客等级 码龄5年 2306粉丝 2584原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值