阅读视图

发现新文章,点击刷新页面。

9 Quick Tips for Apple Notes on a Mac

Apple Notes has been a standalone app in macOS since 2012. It's easy to take for granted, but over the years, it has grown and added some useful and powerful features. From ways to improve your note-taking to tools for better organization, here's how to get more from the Notes app.

AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法!


免费用Grok 3来生成吉卜力风格的照片(Ghibli)

这两天,朋友圈和X(推特)上都被吉卜力风格的照片刷屏了,就连伊隆·马斯克也特意发帖推荐了 ChatGPT-4o 的这项新功能。仿佛一夜之间,AI 就能取代绝大多数设计师的工作。

elon-musk-doge-coin-ghibli-style AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

Musk又借此推了一把狗狗币Dogecoin,真是会营销

cz-and-he-yi-ghibli AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

币安CZ和他的生活伴侣何一/币圈一姐的吉卜力风格照片

这个 AI 生成图片的功能(严格来说是图生图)仅限 ChatGPT-4o 的付费用户使用,每月订阅费用为 20 美元。我曾在两年前订阅过半年 ChatGPT Plus/Pro,但后来账号因支付问题被封——当时我使用的是 OneKey 的美元加密货币卡。

不过,我们其实可以 免费 利用 Grok-3 生成吉卜力风格的照片。只需将图片拖入 Grok-3 的对话框,并输入以下提示词:

图生图,生成吉卜力风格的照片的提示词/Prompt

  • 中文:“可以把这张照片生成吉卜力风格吗?尽量保持图片原有的元素。”
  • 英文:“Generate a Ghibli image based on this, keep as much detail as possible.”
my-little-girl AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

媳妇几年前的美照拿来试试Grok3的图生图功能(吉卜力风格)

grok3-ghibli-1 AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

感觉生成的图还是缺点意思,和ChatGPT 4o相比差了点,可惜我现在没有付费ChatGPT

想起当年有个人做了测试:把油管视频下载下来再上传,再下载,再上传,然后最后面就得到很糊的一个视频。不知道如果我们一直让AI基于生成的图片再生成图片,效果是会收敛、变好、还是会变得不可预测?

grok3-ghibli-2 AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

又迭代了一个版本,感觉差不多,如果一直迭代下去不知道是不是会收敛还是说会变差?

变开心很容易,但是要特别特别开心真的就要付费了:试用美图秀秀的AI绘画功能: 快乐是免费的-特别快乐可能就要花一些钱了

generate-more-images-with-premium-grok-ghibli AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯

X推上现在是可以免费使用Grok 3但是并不会一直免费,对于这个图生图的功能也有使用限制。

ChatGPT 可以拿来做什么?

ChatGPT 通用人工智能

Grok 3

图片/照片 小技巧

英文:AI Transforms Photos into Ghibli Style? ChatGPT-4o Costs Money, But Here’s a Free Method!

本文一共 740 个汉字, 你数一下对不对.
AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法!. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! AIGC-图片 Grok (X.AI) 人工智能 (AI) 媳妇 小技巧 有意思的 照片 资讯
The post AI爆改吉卜力风格照片? ChatGPT-4o要收费, 但这里有免费方法! first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 力扣刷题获得一件衣服奖励(Leetcode DCC Winner) 我每天都在力扣上刷题。力扣有国服和美服,我两边都会打卡。每天打卡可以获得积分,而积分可以兑换各种礼物,比如T恤、卫衣、水壶,甚至可以用来抵扣一个月的会员费用。 我从2018年8月开始刷题找工作(当时去伦敦面试亚马逊),从那时起每年都会续费会员,费用是159美元,相当于每月13.25美元。我觉得这是对自己最值得的投资。买了力扣会员,就会有动力刷题、思考,通过不断练习让自己熟能生巧,保持一定的竞争力。 到目前为止,我已经用积分兑换了7-8件力扣的衣服,其中有2-3件是卫衣。国内的礼物我都寄到姐姐家。 前不久,我收到了力扣的邮件,说我获得了DCC奖励。我也不知道为什么会获得这个奖,随手回了邮件。没多久,就收到了一件新版的力扣衬衫。 英文:Leetcode DCC Winner T-shirt 本文一共 291 个汉字, 你数一下对不对. 力扣刷题获得一件衣服奖励(Leetcode DCC Winner)....
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 你要找什么样的老婆? 找媳妇的标准 昨天和网友在剑桥面基, 网友奔现, 他从爱尔兰过来, 小我12岁, 就聊到了找对象的标准. TLDR; 找老婆不要(只)看颜值, 而要注重性格, 为人处事和顾家等更重要的品质, 当然性和谐也很重要. 在当今社会, 人们对于找伴侣的标准有所不同. 有些人认为颜值是最重要的, 因为外貌吸引力可以让人在日常生活中感到愉悦, 这是人的本性,...
  4. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  5. 送值400 英镑的Google Adwords广告代金券 很久之前, 我用过 Google AdWords, 当时也是拿着免费送的 Credit, 但由于某些原因, 就没继续再用下去. 这次谷歌又发邮件送了400英镑的广告点券/代金券, 如果您想要获得 400 英镑的 Google AdWords 信用额度试用这个Google...
  6. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  7. ChatGPT-4 使用 Math Wolfram 插件解决数学脑筋急转弯问题 这篇文章, 我们看一个简单的数学问题(脑筋急转弯), 并用 Python 解决它. 我们看一下LLM(大型语言模型): ChatGPT3.5和ChatGPT4. 通过 ChatGPT-Plus 订阅(目前每月 20 美元 + VAT增值税), 我们可以启用...
  8. 特朗普2.0: 乌克兰的命运由美俄决定, 欧洲被卖了 2025年1月,美国总统唐纳德·特朗普第二次入主白宫,上任没多久就兑现了一个竞选承诺:结束俄乌战争。不过,这场停战的达成方式,恐怕让不少人大跌眼镜——谈判桌上只有美国和俄罗斯,乌克兰这个直接当事国没份儿,欧洲那些出了力气的盟友也没捞到一张椅子。结果呢?俄美两国一拍即合,停战协议新鲜出炉:土地归俄罗斯,乌克兰的5000亿矿场开发权打包送给美国,债务甩给欧洲,至于荣耀嘛,留给乌克兰自己慢慢品味。 这协议一公布,乌克兰总统泽连斯基的脸估计比冬天还冷。他对外抱怨说,美国其实只给了670亿美元援助,压根不到之前吹嘘的1500亿。可协议上白纸黑字,5000亿矿场开发权已经划给了美国。他试图争取点什么,比如让乌克兰上桌谈条件,至少要求美国保障乌克兰的安全,再不济也给欧洲分一杯羹——毕竟欧洲这些年没少支援战争。可特朗普的回应简单粗暴:签,或者不签,协议一个字都别想改。泽连斯基还想退一步谈谈,特朗普直接笑他是个“小丑”,说当年演喜剧的水平不错,现在支持率却跌到4%,再不同意就赶紧大选,换个听话的上台。 这事儿说白了就是“弱国无外交”的教科书案例。乌克兰夹在俄美之间,既没实力还牌面,又被盟友卖了个干净。欧洲这边也好不到哪儿去,一盘散沙的他们只能眼睁睁看着美国独吞好处,自己还得背上债务的锅。特朗普上台后更是摆明了态度:拜登那摊子事儿(民主党?左派政策?)他不管,他只关心自己的利益。甚至还放话让乌克兰赶紧还钱,不然“你的国家可能就不存在了”。 这场停战,看似结束了炮火,实则暴露了大国博弈的冷酷逻辑。俄罗斯拿回了土地,美国吃下了资源,欧洲当了冤大头,乌克兰则成了最大的输家。泽连斯基或许还想挣扎,但现实已经给了答案——在强国面前,弱国的声音,连上桌的资格都没有。 懂王骂泽连斯基 想想看,一个只是勉强算得上成功的喜剧演员——弗拉基米尔·泽连斯基,竟然让美国花费了 3500 亿美元,卷入了一场不可能赢得的战争——一场本不该开始的战争,而这场战争,如果没有美国和“特朗普”,他永远无法解决。 美国比欧洲多花了 2000 亿美元,而欧洲的钱是有保障的,而美国却什么都拿不回来。为什么“瞌睡乔”拜登不要求公平呢?这场战争对欧洲来说比对我们重要得多——我们之间隔着一片广阔美丽的海洋。 除此之外,泽连斯基还承认,我们送给他的一半钱“不翼而飞”。他拒绝举行选举,在乌克兰的民调支持率极低,他唯一擅长的事情就是把拜登“耍得团团转”。 一个没有选举的独裁者,泽连斯基最好快点行动,否则他很快就不会再有国家可言。与此同时,我们正在成功地谈判结束与俄罗斯的战争,所有人都承认,只有“特朗普”和特朗普政府能做到这一点。拜登从未尝试过,欧洲也未能带来和平,而泽连斯基可能只是想让“提款机”继续运转。 我热爱乌克兰,但泽连斯基做得一团糟,他的国家满目疮痍,数百万人不必要地死去——一切仍在继续…… 打了三年的俄战争终于要结束了...

GTC 2025 见闻

参加了 NVidia GTC (GPU Technology Conference),由于英伟达的地位,这会也已经成了 AI 开发者最大的交流会,很多公司和业内人士都会过来分享、交流,大概写下会议中相关见闻感受。

Keynote

老黄没提词器洋洋洒洒讲了两个多小时,出了小状况还会开个小玩笑,大佬范很足,也满满的理工男既视感,非常多的数字和未经包装的细节,不过感觉会讲得有些啰嗦。

总的来说,核心论证的是世界对 GPU 诉求会越来越大,而 NVidia 在 GPU 这个领域会持续遥遥领先

GPU诉求

计算机的核心从 CPU 转向 GPU,上个时代依靠程序员写代码指挥 CPU 执行指令解决问题,构成了现在庞大的 IT 产业,程序员是中心。现在的时代逐渐转变,GPU 生产的 token 逐渐能解决越来越多的问题,能思考,能生成代码指挥 CPU 去执行解决问题,计算的核心一定会转向 GPU,世界对 GPU 的需求只会越来越高。

给 AI 分了四个阶段,Perception AI → Generative AI → Agentic AI → Physical AI,不是很认同,Agentic 和 Physical 都是 Generative AI 的延续,不过无所谓,可以看到 Agentic 这个概念实在是火爆。

Scaling Law 没有停止,Agentic AI 需要深度思考,深度思考有新的 Test-time Scaling Law,越多的 token 输出效果越好需,要多轮理解和工具调用对 token 的消耗更是指数级上涨。

Physical AI 要更好地理解现实世界,声音/视觉/触感,都会比纯文本思考对 token 消耗的诉求更高,像 2G 时代看文字新闻,3G 4G 图片,5G 视频一样。

这两个发展中的领域对 GPU 的需求只会越来越高,Deepseek 做的优化也不足以影响这个需求的增长,这个市场不容质疑。

NVidia 优势

GPU 需求量是高,但未来大家一定会买 NVidia 卡吗?当然。NVidia 这一代 blackwell 算力是 hopper 的 68 倍,下一代计划明年推出的 Rubin 算力是 hopper 的900 倍,一年一迭代,远比摩尔定律快的速度,还做了大量的大规模部署的优化,省电、稳定,号称买越多,省越多,赚越多,竞对看起来会很难追上。这些论述还是挺能让人 buyin 的。

Agentic AI

Agent 的相关 session 有接近 200 个,Agent 集合了几个元素:

  1. 概念火,一些涉及 Workflow/RAG 什么的 AI 应用都统一称为 Agent 了,GenAI 在各行业的落地都可以冠以 Agent 的名义,跟以前 H5 那样,不纠结于具体定义,只要有一个统一称呼。
  2. 人群广,Agent 目前主要是在上层的工程架构上,大量的工程师都能理解、参与讨论、建设,不像基础模型训练,多数人难以参与。
  3. 应用广,非研发也能大概听得懂,涵盖了 AI 在各行业的应用这个课题,各行业都会有兴趣了解 Agent 是什么,自己业务上能怎么用。

所以 Agent 相关的 session 大部分都很热门。听完一些的感受:

  1. 多数做企业服务、云的公司都在卷 Agent 的基建和解决方案,像基础设施公司 Fireworks AI、Nebius,数据库公司 Couchbase、datastax,企业服务公司 serviceNow、Dropbox,新兴公司 huggingface、langchain、langflow 等,都来分享推广在 Agent 这事上能提供的能力和服务。
  2. Agent 相关的建设都在刚起步,基本都是在分享概念、工程问题的优化和应用方案,没看到有涉及模型训练去优化 Agent 效果上限的相关分享。Agent 的一些关键课题上一篇文章有提到,基本差不太多。
  3. 也没有讨论 Agent 在工程和模型上的界限,后续端到端的模型进步,能吃掉多少 Agent 能做的事?这两天 4o 的图生成出来后,预计后面才会有更多的讨论。

NVidia AI 基础服务

NVidia 作为领头羊,是希望自己能覆盖 AI 全链路基础设施的,大力在 AI 的每一层都提供了相关框架、服务、能力,这次会议上也有非常多的分享和推广。

其中跟 AI 应用 / Agent 相关的几个基建:

  1. BluePrint:应用蓝图。给了很多 AI 应用场景的 example 工作流(也称为 Agent),例如 PDF 转博客、数字人应用等,提供工作流架构、数据集、源码,可定制,供开发者快速参考和部署。
  2. NIM(NVIDIA Inference Microservices**)**:模型推理。把模型推理封装在 Docker 容器里,可以直接快速部署,对外提供标准化API。也封装了模型在不同 GPU 型号下的优化,提升性能效率。
  3. NeMo(Neural Modules):模型训练。提供了相关工具用于构建、定制、训练 AI 模型,训练后的模型可以通过 NIM 部署。
  4. AgentIQ:开源 Agent 开发套件,支持组合链接不同框架创建的 Agent,提供性能 profiler、评估、UI 界面等工具。

这些基建的声量比较低,国内没怎么见到,不确定海外使用情况怎样。

多个 session 都在推广 NVidia 的 Video Search and Summarization Agent,串联从视频的获取→分割→VLM识别、CV物体识别和跟踪→数据处理存储和RAG召回→用户对话 整个流程,做到可以对视频提供实时分析和报警,也可以自然语言交互查询视频内容,边缘部署,适合用于监控,算是用 NVidia 技术栈做 AI 应用的一个标杆范例。

AIGC

关注了下视频 AIGC 相关的几个 Session

  1. 在好莱坞干了几十年的视觉效果的 Ed Ulbrich 开了个公司 Metaphysic,以前的电影特效制作成本巨大,对人的处理还很难跨过恐怖谷,而基于 AI 技术做特效,用完全不同的技术栈,效果好成本低,是一种颠覆。metaphysic 给娱乐行业提供人脸替换、数字人的服务,看起来是用的 GAN,在人物换脸技术上,GAN 还是更能做到稳定和实时,特别是实时这个点,基于 diffusion 很难做到。基于市场需求,利用已有的不同技术(甚至是上一代技术)深入解决问题,是有空间的。
  2. PixVerse Co-Founder 在一次对话中聊到,视频实时生成的能力差不多要 ready 了,目前 5 秒的视频可以做到5-10秒推理完成,可能会解锁新的人跟视频的交互方式。不确定质量怎样,质量达到一个阈值,以前设想的很多类似 自定义剧情走向 的新玩法新交互有很大空间。
  3. Adobe 和 OpenSora 都来分享了视频生成模型的训练和推理的方案和优化,鉴于已经不是SOTA模型,可参考性不高。TCL 分享了AI电影制作,很惊讶这公司竟然在做这个,更多的是在做链路串联,而不是端到端的视频模型。

其他

  1. OpenAI 只来了两个人给 blackwell 架构站站台,Anthropic 一个人也没来,从这上看,这行业最领先的技术还是很 close,毕竟是核心竞争力,而且很容易被复刻,不像上个时代,大规模并发架构等技术,更重的是实践中解决具体问题,大方案分享了问题不大。(所以 DeepSeek 开源最领先的技术带来的冲击才会那么大。)
  2. DeepSeek 就是 Reasoning Model 的代名词,开源模型的顶流,出镜率极高,老黄的 keynote、各种演讲里都有它的身影,而 llama 通常是作为上一代开源模型与它做对比,只要是提供开源模型部署服务的公司(HuggingFace/Fireworks等),分享里都会对 DeepSeek 极度推崇。
  3. 遇到不少学生来参加,有的来找方向,看看业界前沿在做什么,做学术交流,找合作机会,这个会是挺合适的。清华、中科大、SJSU。最大的问题是实验室没有足够的卡,这领域是必须校企合作,实验室才进行得下去了。
  4. 使用 Nvidia Jetson 做边缘计算也是预期后续空间比较大的方向,设备端部署模型,可以提升实时性和隐私性,多数分享是用在具身智能上,还有一个分享的场景是在货架上实时分析用户行为,更精准推送广告。
  5. 机器人、自动驾驶的 session 也很多,数字孪生是提得比较多的(用 AI 生成仿真环境,用于机器人训练),但现场没看到什么能震惊人的机器人,包括老黄演讲时演示的类 wall-e 机器人,惊艳不够,这一行感觉还早。

总体感受,眼花缭乱,人潮纷杂,在开拓视野以外,大会更多是一个社交场所,推广产品/技术/服务,促进合作,这类大会需要的是多创造一些面对面交流的机会。

花絮

  1. 现场有限量的原价 5080、5090,知道时已经不可能排队买到。
  2. 跟七年前参加 WWDC 在同一个地方,估计一直还是同一个承办公司,午餐还是那么难吃。
  3. 参观 NVidia 工区,老黄作为华裔也是信风水的,新办公楼会模拟依山傍水的设计,风水好。NVidia 搞渲染出身,渲染里三角形是最基本单元,所以办公楼都是三角形元素。办公环境很宽敞,但没啥人,总部居家办公没有限制,很多都不来公司。

是时候在我这里聊一下人工智能了

疯狂的热度也该过了吧。

也是时候冷静的看待这个问题了。

screenshot-downloaded-image

这篇文章写得特别长。懒了,没有拆成多篇文章。


目录


一、个人初接触AI技术

1. waifu2x

我第一次开始接触并使用 AI 技术,应该是 waifu2x 这个图像缩放工具。

确切的说 waifu2x 并不是人工智能技术,只是使用了和目前人工智能技术相同的 「卷积神经网络」

这东西其实不用多介绍了。

这东西实用性能满足日常需求,而且本地部署也只需要不到50MB的空间,方便又整洁。

screenshot_on_b85m_by_flameshot_at_2025-03-18_22-57-18

论清晰度其实 waifu2x 已经很不错了,尤其是平时出的原图的时候不符合各种破视频网站分辨率最低要求的时候,用 waifu2x 糊弄一个高分辨率图,然后再被这些破网站压缩成 320×180 的小图。

唯一想说的就是当时这个技术可是被小鬼滥用到极致,最火爆的期间各种互联网古董图片都被这些小鬼用waifu2x放大之后发到网上,然后大叫“我找到XXX的高清原图了!”。不明真相的人要是跟他讲这是“放大的”,他还会继续跟你解释“这是高清原图!”

你永远叫不醒一个装醒的人。

2. style2paints

接触到的第二个 AI 工具应该是 style2paints 。这是一个线稿上色工具。

最初接触这个软件的时候还是V3版本。

screenshot_EHDsLiyVAAAhjDF

网上的AI线稿上色功能基本已经烂了,但是完成度也是稀烂,可以说根本没法用。

Screenshot_2025-03-18_at_23-06-03

最早那一阵子还因为随便上色了一个线稿,画师直接就把我拉黑了。

screenshot_snap2888-starbreaker

screenshot_snap2930

style2paints 出 V4 的时候我写过这么一篇文章:https://blog.catscarlet.com/202002203604.html

202002203604_play_s2pv4/1046.png

screenshot__ERL3IRbUwAADPz-

后来 style2paints 出完 V4.5 之后,说要出 V5,而且放出了不少预览图,效果很棒,但是再也没有过下文。开发者在 GitHub 上还是活跃状态的,只不过全部都是私有提交了。

网上也再没出现过独立的开源上色工具。各个大厂虽然有各种所谓的线上AI图像处理工具,却基本上没有免费的线稿上色功能。收费的倒是一大堆,但是AI出图的效果本身就稀烂,谁知道输出一次期望中的结果之前得花多少冤枉钱。

3. rife

这算是第三个我使用的AI工具。功能是:补帧

最开始的时候这个项目还是叫做 arXiv2020-RIFE ,后来才改成 ECCV2022-RIFE 的。

但是实际上这玩意放在个人手里意义不是很大。最多就是把互联网早期的GIF表情包改得流畅一点,但是很多情况下 AI 对于补帧和人脑还是两回事。

bilibili:整了个支持Alpha图层GIF动画的放大加补帧转VP9的脚本

在有遮挡性的图像变动的时候,补帧出来的图像就会出错。4.22版本。

screenshot_00000054

(我本地是有更新的模型版本的,但是执行的时候就会出现主机断电的状况。能确定不是电源供电不足,但具体是什么愿意无从得知)

现在这个技术也被滥用了。

  • 网上有一堆原生30fps被补到60fps的动画资源,看着特别的果冻。也有电影,甚至 YouTuBe 上有 60fps 版本的 复仇者联盟1 看着就像游戏过场动画一样。
  • 很多电视台的代理(IPTV)和电视盒上游,会把 30fps 的视频补到 60fps,看着十分的诡异。
  • 最烂的当然还是显卡厂家,直接搞出 DLSS 这种帧生成的恶心玩意。

我自己看这种全局的恶意补帧视频时觉得就挺恶心的,头晕得很快。但是后来发现大多数人都是瞎子,别说补帧了,帧错误亮度错误对比度错误在他们眼珠子里都没有区别的,盯着一个坏掉的显示器看上几个小时愣没察觉到自己显示器是坏的旁边显示器是好的,瞎。

4. 其他

其他的基本上就没有接触过了。最多就是个 rembg 去背景工具,我也用不上。

再往前还有 AlphaGo,谷歌在打完围棋之后跑去打星际争霸,然后难产了好一阵子。最后不了了之,在网上搜谷歌AI打星际的视频,只能搜到一个播放列表,是 ArtosisTV 解说的 AlphaStar vs Serral,但是解说内容是基于非星际争霸玩家的,AI的每个行为以及星际争霸的每个兵种和技能都要解说一遍,中间夹杂着各种暂停和战术解释,节奏超级慢,12分钟的游戏解说了半个多小时,根本看不下去。这其间谷歌的AI就彻底凉了。

那几年 AI 爆火的时候 Python 从个只是底层干活的脚本语言一跃成为 不学 python 你就落伍了 这种骗术主流。我是懒得去学,这玩意个人学了也是屁用没有。AI 这种技术注定要被大厂捏得死死的。


二、爆火的 DeepSeek 把国际 AI 大厂的股票打废了

国产的 DeepSeek 把以 Nvidia 为首的国际AI大厂打废了,这是事实。但理由并不像国内鬣狗自媒体和阿Q人一样,因为鬣狗阿Q的思路就是成功啦崛起啦疯狂嗷嗷叫,谁叫得声音大谁有理。

Nvidia和其他大厂之所以市值蒸发,是因为他们一直声称的 需要更多硬件更多算力扯蛋

确切的说, Nvidia 摆烂也不是有 AI 才开始的。先是在挖矿潮期间摆烂,后又开搞各种与游戏算力不相关的各种糊弄人的技术。其他各厂基本上也是一样,微软在那搞的 onnx 的也是稀烂(之前我参与修复的 rembg 不能正确使用硬件加速的 bug 就是 微软 onnxruntime 和 Nvidia-CUDA 联手造成的,可见其代码是有多烂)。

而一个名不见经传的 DeepSeek 却用了很普通的过时硬件做出来一个捅了行业技术天花板的产品,这直接戳破了 英伟、微软、英特尔 这么多年来一直给市值吹肥皂的核心理念。 算力不是最重要的 不需要什么大厂技术也能做 一直吹牛逼的玩意其实屁都不是 ,这乐子直接打得 Nvidia 的50系显卡一点都不香,微软的 Win12 不知道该怎么塞烂功能,英特尔的 Ultra 系列定位完全翻车。 活该!

至于 DeepSeek 究竟怎么样?看着那个推理过程好似挺有趣的,但其实推理流程过于营销号,复杂一点的问题就开始胡说,网上难搜到的东西就开始瞎编,就和其他 AI 一样。

screenshot_on_b85m_by_flameshot_at_2025-03-19_00-42-48

screenshot_on_b85m_by_flameshot_at_2025-03-19_00-43-22

screenshot_on_b85m_by_flameshot_at_2025-03-19_00-43-43

screenshot_on_b85m_by_flameshot_at_2025-03-19_00-43-48

screenshot_on_b85m_by_flameshot_at_2025-03-19_01-06-00

screenshot_on_b85m_by_flameshot_at_2025-03-19_01-06-10

screenshot_on_b85m_by_flameshot_at_2025-03-19_01-06-17

screenshot_on_b85m_by_flameshot_at_2025-03-19_01-06-28

(部分错误引用和内容均用红框标注)

这表现实在是太像一个初中没毕业结了婚有了娃,娃娃问你一些客观存在但你完全不知道的知识时,就在那瞎引用瞎推理瞎解释,着实一个爹味浓厚的鬣狗阿Q,着实让本来就生活在这种恶劣环境的人反胃。


三、目前的 AI 到底能做些什么?

首先这个得分场景考虑,也就是,AI 这项技术在谁的手里时才有什么用。

1. 大型IT企业

首先一个前提得讲清楚:

目前的 AI 技术就是 给一个算法喂数据养模型,当相应的数据是 由人类创作的 情况下就十分有争议,说难听点就是 抄袭 。编程AI抄代码,绘图AI抄绘画,医疗AI抄病例,这也是目前相当多一部分人反AI的核心理由。

我的个人观点是:

  • 以一定的目的使用特定的数据训练AI并以此谋私利,那就是 抄袭
  • 将整个互联网数据全部用来训练AI,并公开数据模型,供所有人无偿使用,那不叫抄袭,那叫 人类的知识库

很可惜 人类的知识库 在目前的商业环境下实现不了。想使用 将整个互联网数据 的就只有大型IT企业,而目前的这些企业都是清一色的自私自利行业毒瘤,他们的存在多数都是对行业弊大于利,唯一的那点利也知识为了保住他们的自身地位罢了。(举例的话就是微软英特尔之流目前在开源界贡献的代码排在首位,但是他们贡献的全他妈的是他们自家用的驱动代码和调用代码,对整体行业有个屁用啊)

2. 中小型IT行业企业

首先中小型企业很少能有能力自己研究算法,在有限的资金和精力之下无法对行业技术作出突破性的贡献。你也不能怪罪他们,很多公司本身为了能正常运营就已经很努力了。

这才是行业真实现状。他们的产出才是老百姓真正能接触到和获益的。

目前据我能看到的,超市电子秤 可以说是一个不错的例子:传统的大型商超的果蔬摊位基本上都是要有个 负责称重的功能,有些是有专人上秤打标签,有些则是自主称重。现在很多超市都是AI电子秤,把果蔬放上去之后,能直接识别到品名(可能会识别到多种,再人工选择),这个工作量要比纯手选低多了(一个果蔬商超一般都有几十种甚至上百种标签)。当然,具体是如何实现的,我不知道,可能是电子秤公司自己训练模型,也可能傻屌公司每次都得调用一次大厂的云服务进行图像识别。

当然了!

也可能反过来,因为这些企业的领导人可能就不是IT行业出身的,很可能就是个投机人。

那么,答案只有一个了:《Employment for computer programmers in the U.S. has plummeted to its lowest level since 1980—years before the internet existed》

你甚至可以尝试阅读这篇文章的中文AI总结:《财富》:程序员就业降 – 豆包

事实上国内中小型IT行业企业的产品质量也已经进一步滑坡了,你可以看一下这个 用户端验证时间 的神奇逻辑:《海航888元的随心飞偷跑了!》,基本就是什么人要写个需要验证时间的代码结果直接丢给AI就复制粘贴了,人脑里连产品设计的逻辑基础都没有。

screenshot_on_b85m_by_flameshot_at_2025-03-19_19-59-14

3. 非 IT 行业的企业

首先摆烂的一定不会是普通老百姓。

screenshot_on_b85m_by_flameshot_at_2025-03-12_14-22

https://weibo.com/2645861077/Pi3jJBv1w

普通老百姓摆烂都抢不到热乎的。

更别说还有人人喊打的 AI 客服了。


四、目前的 AI 在个人手中到底能做些什么?

1. 作为问答式搜索引擎

因为目前的AI就是一个特速算法的搜索引擎,所以当搜索引擎用是最基本的功能。尤其是在如今搜索引擎(不论中外)的搜索结果质量都暴跌,很多人都期望能在AI上得到好一些的结果。

只不过AI也是从搜索引擎拿结果的……

screenshot_on_b85m_by_flameshot_at_2025-03-16_20-38-25

啊不是,我要是自己愿意自己逐像素框选的话那我还问你干球?

screenshot_on_b85m_by_flameshot_at_2025-03-17_21-49-05

这是怎么把一个街机游戏识别成 999 和 11eyes 的?还把俩游戏标题合并到一起了?

screenshot_on_b85m_by_flameshot_at_2025-03-21_23-29-24

Jay Smith 的 Bad Romance 与 Lady Gaga 的 Bad Romance 是什么关系?你这 DeepSeek 这是要往哪里推啊?

screenshot_on_b85m_by_flameshot_at_2025-02-25_20-44_1

我已经无语了。

不得不说很多问题有时候答案是烂得不行。

2. 写垃圾文案

简直是官僚主义形式主义的辉煌!废话文学的巅峰!狗屁不通高考满分作文上树!

screenshot_on_b85m_by_flameshot_at_2025-03-22_00-03-52

当然我也找到了点正经有点用的功能,那就是语法检测。

screenshot_on_b85m_by_flameshot_at_2025-03-22_00-20-26

这玩意对于非母语用户还行,就是也很喜欢在有得没得的地方反复胡扯。没有中文版是个遗憾。国内的产品会拿你的文档做训练,所以千万别用。

3. 编程

・项目

作为一个差不多快被社会淘汰的程序员,说实话,我到现在 IDE 还是在用 Pulsar (原 GitHub 被微软收购后被抛弃的 Atom 的社区派生版本)。什么AI插件我都没安装。

我对于 AI 编程不是很了解,我也不知道这玩意现在到底能干啥。反正大家都吹得天花乱坠的。于是找了某之名 AI 编程 IDE ,cursor,在本地试了一下。

我这手里有一些对我来说解决起来很麻烦的问题,就是不是我自己写的旧代码不兼容新环境的问题,工程量太大,业务逻辑完全不知道,我也不想去研究这些项目的具体实现。

我就想着,AI工具既然可以导入项目,那可不可以直接让AI把代码过一遍,然后针对新环境的版本把旧代码中不兼容的地方全找出来改掉。

想得美!现在的AI编程工具和搜索引擎一样,还是问答式的。

试着导入了一个项目,然后 cursor 一直不停的有得没得一直在废话一些毫不相关的东西,对于因新环境和新框架不兼容的问题一个都没发现。

screenshot_on_b85m_by_flameshot_at_2025-03-05_20-14

不得不说,很多人活得非常的 人机

・功能片段

那既然,AI编程这玩意仍然是问答式的,那就干脆继续当搜索引擎用就罢了,根本不需要什么编程插件或IDE编辑器,更不需要什么按量付费编程接口。

事实上,AI在问答式编程输出的结果还挺不错,尤其是在很多 理论上可行且应该有人实现过,但周围所有认识的人都没接触过对应技术 的场景下极为有效,而作为一个腐朽的程序员,我没事就会遇到这种 技术上应该能实现但是我不知道对应技术的入口在哪,而身边完全更是没一个比我更了解响应技术领域的人 ,这时要是在像文中 《我是救兵请来的猴子》 提到过的环境下,至少身边人都会想办法帮你找对应的资源,但是事实上现在国内大部分公司,同事人人自危根本顾不上你,甚至有人巴不得你翻车然后下次被优化的就是你,领导更是觉得「员工遇上瓶颈」乃是天大的 职场PUA 机会,绝对不会放过。

比如 《从豆包下载无水印图片》 这个用户脚本的核心理念是 跨域下载并重命名图片 。本身下载并重命名图片是 HTML5 协议中<a>的的一部分,但是掺合上跨域后就报废了。理论上这是个安全无风险的功能,但是实际上就是做不到,封死了。绕路办法,如果在网上搜,大部分资源都是告诉你使用 <canvas> 对图片进行跨域下载,但实际上却有更好更干净的办法。这个的确在AI中可以搜到,而在传统搜索引擎搜索的时候,搜索结果却会被 <canvas> 的结果淹没。

・繁琐复杂又没技术含量的代码

在编程开发这一块中,有很大一块工作内容都是 繁琐复杂又没技术含量的代码,尤其是前端开发,经常要计算渲染后图像的位置,或者单个元素的样式。这一块基本没人愿意写,但是很多时候不写不行。

这种工作交给 AI 却是非常的巴适。

screenshot_on_b85m_by_flameshot_at_2025-03-22_00-41-37

screenshot_on_b85m_by_flameshot_at_2025-03-15_20-49-15

有些时候国内AI编程的确会给出点惊艳的地方,比如需要临时文件或文件夹的时候知道 mktemp 。微软这种背靠 GitHub 的 Copilot 甚至都只会原地拉屎。

screenshot_on_b85m_by_flameshot_at_2025-03-06_14-18

但是却并不 100% 可靠。

screenshot_on_b85m_by_flameshot_at_2025-03-26_01-36-48

screenshot_on_b85m_by_flameshot_at_2025-03-26_01-38-28

・复杂逻辑的编程

上一点复杂逻辑,AI编程就很容易挖坑。

比如AI会犯最经典 初级程序员错误 ,第二次循环时忘记把标志位重置。

screenshot_on_b85m_by_flameshot_at_2025-03-06_14-23

(原链接找不到了只剩下文件了)

以及基础命令经常想当然,上下文对应不上。

screenshot_on_b85m_by_flameshot_at_2025-03-17_06-36-16

红框位置的 type -f 对应的是 文件 ,但是上下文里写得清清楚楚的是在处理 软链接,应该改使用的是 type -l 才对。

只要上一点逻辑,那出错的情况就特别多。而且由于这代码不是你亲自写的,所以你要重新读一遍所有代码才能理清其逻辑,之后才能找到 Bug 所在。

经典的 编程即是10%的时间写代码,90%的时间找bug,那 10% 才是编程的真正乐趣。而大范围引入AI进行编程后,编程是1%的时间写代码,99%的时间找bug

把编程唯一的快乐送给AI,把屎留给自己吃。

4. 绘画

这一块既是最有争议的一块,亦是我用到的最多的一块。

说来也挺可乐的,程序员在AI领域用到最多的功能不是AI编程……但话又说回来,我自己会编程我为什么还要找一个不靠谱的AI给我添麻烦?没上过班没被同事坑过还是怎么回事?

其实2022年那阵我就接触过 dalle-mini ,然而当时AI绘图基本上只能到这个程度:

screenshot_on_b85m_by_flameshot_at_2022-06-08_15-24-18

screenshot_on_b85m_by_flameshot_at_2022-06-08_14-22-06

screenshot_on_b85m_by_flameshot_at_2022-06-08_14-08-33

screenshot_on_b85m_by_flameshot_at_2022-06-08_14-04-19

怎么说呢,有些输出的确是带着灵魂的,但是整体上一塌糊涂。你可以看到每个输出中都或多或少带着核心细节。

现在AI出图已经今非昔比了。

screenshot-生成特定风格图片-2136008435344130-20250322221645

screenshot-生成特定风格图片-2134056610409986-20250322215006

・尝试本地化

首先当然是尝试在本地部署这玩意。在网上搜了下,基本都在说 comfyui 。这玩意我看了一下,支持 Docker ,那就毫不犹豫部署了。

screenshot_on_b85m_by_flameshot_at_2025-02-19_17-50-18

然而实际使用效果不太乐观。

comfyui 的默认模型出图基本是这样的:

screenshot_on_b85m_by_flameshot_at_2025-02-19_19-56-15

离实际能使用差太多了。

而目前可以在线上无限次数使用的AI生成图像工具,我找到了两个:豆包和百度,他们的出图效果是这样的。

豆包:

screenshot_on_b85m_by_flameshot_at_2025-02-19_20-07-18

百度:

screenshot_on_b85m_by_flameshot_at_2025-02-19_20-06-59

百度英文解析:

screenshot_on_b85m_by_flameshot_at_2025-02-19_20-07-33

(豆包不支持纯英文解析)

百度的出图效果要比豆包差一些,但是在关键字很少的情况下精度比豆包要高,但但是关键字超过一个限度之后百度的精度就急转直下彻底崩了。

我检查了一下,comfyui 应该是需要手动添加模型。但是我尝试了几个例子看起来很不错的模型,在执行到 VAE Decode 时,主机就会直接断电重启。

screenshot_on_b85m_by_flameshot_at_2025-03-12_01-14

我个人认为应该不是电源供电不足的问题,因为在 KSampler 阶段,显卡就已经跑满 200w 了。同样的问题也在 rife 上出现过(前文也提到了),使用 4.22 模型就正常,使用 4.25 模型就会断电重启。虽然我也怀疑是显存不够的问题,但是 comfyui 比较小的模型只有 2G 多就会导致我断电重启,而 rife 4.25 模型与 4.22 模型都只有不足 20M ,这就不太像是显存不够的情况。而且我的显卡是 GTX1080 8G 版本的,实测最多也只用掉 6G 多一点。

只能怀疑是驱动问题了,毕竟 GTX1080 这个老显卡是诞生得比挖矿潮还早。但没有办法了,我之前把系统升级后(从 Linux Mint 20.3升级到 Linux Mint 22.1,基于Ubuntu20.04到Ubuntu24.04),驱动版本还是550,CUDA也只是从12.2升级到了12.4而已,而最新版本貌似是12.8。我也不清楚到底是 GTX1080 只能装这么高,还是有什么其他限制。Nvidia 官网倒是有一个 575版本,Linux Mint官方没说正式支持,我也不想试。毕竟即使跑 comfyui 的默认模型,显卡的噪音都超大,温度直达 70 度以上(风扇57%转速,再提高那噪音就真的难以忍受了),而仍然要等很久才能出一张图。

本地化部署这事只能暂时放弃,等有新电脑新显卡再说吧。

・放大图片工具

出图只能用线上工具,那顺带看看线上工具都有哪些功能,结果发现百度放大图片的功能效果竟比我本地的 waifu2x 要好。

screenshot_on_b85m_by_flameshot_at_2025-02-22_20-26-52

(左图:百度放大。右图:本地 waifu2x 放大)

这我可接受不了。立刻把本地的图片放大工具换成 Real-ESRGAN ,测试一下。

把图片缩小,然后再用 Real-ESRGAN 放大,然后离谱的就来了。

screenshot_on_b85m_by_flameshot_at_2025-02-23_00-11-47

(左图:Real-ESRGAN animevideov3 模型。右图:原图)

animevideov3 不知道为何图片变得有点鲜艳了?

screenshot_on_b85m_by_flameshot_at_2025-02-23_00-12-01

(左图:Real-ESRGAN x4plus 模型。右图:原图)

x4plus 放大后竟然比原图还清晰!太离谱了。

这让我想起了网上传闻的「断崖上未融化的雪块被相机AI补全成坠崖的白色尸体」的乐子了。

・去背景工具

本地化了 rembg ,因为命令行真的太好用了,比起线上工具实在太方便。然而 rembg 的代码质量稀烂,依赖的环境(onnxruntime,cuda-cudnn)更是烂到彻底。为此做了不少工作。我根本就不是个写 Python 的。

反正最后调通了,而且把模型更新到了 birefnet ,效果比默认的 u2net 好非常多。

screenshot_on_b85m_by_flameshot_at_2025-02-20_15-32-10

(左图:u2net 模型。右图:birefnet 模型)

screenshot_on_b85m_by_flameshot_at_2025-02-20_15-32-20

(左图:u2net 模型。右图:birefnet 模型)

・线上出图工具

前文也讲了,我找到的可以在线上无限次数使用的AI生成图像工具有两个:豆包和百度。豆包出图效果比百度强一点。

只不过除了模型比较强大以外,豆包仍然有着所有AI图像生成工具都有的毛病:不听话

screenshot_on_b85m_by_flameshot_at_2025-03-03_11-27

screenshot_on_b85m_by_flameshot_at_2025-03-03_11-28

这完全不日系赛璐璐芳文社好吧,这都给干到韩国去了。

screenshot_on_b85m_by_flameshot_at_2025-03-10_17-12

特别喜欢给妹子穿过膝袜。裤袜搞错就已经很烦了,裤子都给你忽略了。

screenshot-生成动漫风格图片-1804857296308738-20250310150611_realesrgan2x-1

我之前想搞一个倒霉OL妹子的插画想做个有连续剧情的系列,比如妹子加班后下班下大雨,顶着雨去地铁站,结果豆包不会画折叠雨伞,我总不能让妹子淋雨吧?这个就算是情节也实在太不礼貌了,结果发现豆包也不会画「湿衣服」,可乐。

百度却非常的会画「湿衣服」,不仅如此,貌似百度画出来的衣服全都是湿的。

screenshot_on_b85m_by_flameshot_at_2025-03-10_19-00

screenshot_on_b85m_by_flameshot_at_2025-03-12_01-15

发觉百度的输出都特别的色情……

然后是如果遇到AI完全不能理解的内容,出图就特别的诡异。

screenshot_on_b85m_by_flameshot_at_2025-03-09_22-43

screenshot_on_b85m_by_flameshot_at_2025-03-09_20-50

screenshot_on_b85m_by_flameshot_at_2025-03-09_20-50_1

(开车很困难)

有时候干脆就是精神污染……

screenshot_on_b85m_by_flameshot_at_2025-03-12_23-52

不仅如此,线上工具还有敏感词屏蔽词和谐词汇,而且理由也过于欧亨利了。

screenshot_on_b85m_by_flameshot_at_2025-03-12_22-06

screenshot_on_b85m_by_flameshot_at_2025-03-23_23-29-39

这是有多怕有人用AI生成「铁链女」的照片啊?

你就只能靠中国人的聪明才智绕过屏蔽词。

screenshot_on_b85m_by_flameshot_at_2025-03-12_22-08

另一大问题就是让图像上拥有超过1个的关键性事物。

screenshot_on_b85m_by_flameshot_at_2025-03-13_01-39

screenshot_on_b85m_by_flameshot_at_2025-03-13_11-35

一个人拿着一个有特性的事物,或者两个人,就会出错。

貌似这个问题是AI的通病,AI不听话乃是日常,因为人类一句话能讲讲明白一件事情哪个关键词轻哪个关键词重是主观的,两个人能顺利交流那是电波对上了,不能顺利交流那至少一个人看另一个人是傻逼。AI 不一样,AI 没得交流,现在的 AI 只是「训练」出来的。

网上传闻 FLUX 就要靠谱很多,但是本地部署的要求则高得更加离谱。本来在研究这玩意期间发现需要研究的内容就不仅仅是 ComfyUI,还有 LoRA、ControlNet、IP-Adapter 这一堆看着就乱七八糟的玩意就烦了,我又不是专门画图的画师,专门画图的画师也不会用这种完全是另一个领域的工具坑自己。烦了烦了,不研究了。

・线上改图工具

这算是出图工具的子集。

screenshot-赛璐璐风格少女绘制-1843589592669954-20250312154607

screenshot_on_b85m_by_flameshot_at_2025-03-12_15-32

百度的出图效果就巨烂,改图效果更是差劲。事实上百度的那个AI图像编辑废柴得不行。

而豆包则超可笑的只要看到特朗普就生成失败。

最后单独生成了个图片然后用 rembg 去掉背景后再用 GIMP P上去。

screenshot-生成动漫风格图片-1845130723445762-20250312162334

screenshot_-Part-GTY-2202534763-1-1-1_realesrgan2x-1


五、目前我的态度

1. 对个人

我目前个人认为,AI 在个人手里最多只是个大玩具。

讲了这么多工具类的产品,没有多少是能在生产生活中切实获益的。或许像抠背景这种工具在艺术照或者COS照方面能有点用途,或者黑白老照片上色(但是能本地化的上色工具我又没找到)。

可能做创作时可以用 AI 做一些单页插画。但是做漫画就很困难,因为内容的连续性基本无法维持,很容易崩坏。

编程方面,虽然有牛逼吹说有人完全靠AI开发了APP,我觉得那是真吹牛逼。仅是编程环境搭建这一块在任何人面前都是令人生畏的第一座大山,大部分人根本走不到 Hello World 这一步就早早崩溃了。

剩下的就只能用来做坏事了。

2. 对各个企业

・国际

英伟达微软英特尔,仨破玩意早崩早开心。就是不清楚先被 DeepSeek 揭开丑陋真面目后又被川普背后捅刀子的股票崩溃后,到底能对这仨死玩意有多大伤害。

其实我觉得 英伟达 内心是害怕的。当年挖矿潮,捅他刀子的并不是显卡商,而是 ASIC 。我觉得再过一段时间他就得挨真刀子,所以他得把 CUDA 这一块跟 微软 绑得死死的。

screenshot_on_b85m_by_flameshot_at_2025-03-25_23-05-41

screenshot_on_b85m_by_flameshot_at_2025-03-15_20-16-44

screenshot_on_b85m_by_flameshot_at_2025-03-15_20-17-04

screenshot_on_b85m_by_flameshot_at_2025-03-15_20-18-12

(至今我们仍然不知道 ASIC 将如何跨过 AI运行环境 这个门槛)

就是不知道其他大厂到底和英伟达是不是一条心。

screenshot-生成特定风格图片-1932475492982018-20250315210448

而微软的 onnx 烂得曾让我想干脆把看到的 AI 小项目都改写成 腾讯 ncnn 的。这玩意如果要做对比的话:

  • onnxruntime 和 cuda 组合起来的运行环境一般需要 2GB 到 几十GB 的硬盘空间(不包含模型文件),启动速度超级慢,安装各种依赖包很可能搞崩溃你的系统。跨平台安装有完全不同的安装依赖。在日常主机上安装高风险高困难,只有使用 Docker 这种容器才能安全的保证主机不被污染。
  • 腾讯的 ncnn 则完全不需要用户安装任何依赖包,只要操作系统的驱动正确就可以了,整套环境是基于 Vulkan API 实现的,。整个运行环境大概在 几十MB 左右(不包含模型文件),非常的轻量。跨平台只要预编译对应的二进制文件即可。纯绿色。

然而一个巨大的门槛挡住了我,ncnn需要的编程语言基础是C系,对我来说完全是另一个领域,搞不定。

・国内

百度风投 和 DeepSeek 一栋楼。

腾讯有着最好的 ncnn 但是学习门槛略高,而且很明显国际老流氓们都提防着这个山寨王。

阿里?谁他妈的为了个问答系统还要专门安装一个浏览器,甚至产品主页都没适配PC端的桌面浏览器。烧钱疯狂投广告搞得各个平台都跟得了癣病似的。能滚多远滚多远。

screenshot_on_b85m_by_flameshot_at_2025-03-24_00-35-27

国家超算互联网中心?我跟你讲要不是因为秋风于渭水写的这一篇DeepSeek R1 可免费/白嫖网页版一览,我都不知道这玩意存在。这玩意是来搞笑的吧,自己建了一个 DeepSeek 服务但是这鸡巴什么玩意?

screenshot_on_b85m_by_flameshot_at_2025-03-24_00-56-25

screenshot_on_b85m_by_flameshot_at_2025-03-24_00-57-46

互联网的里程碑在这破玩意嘴里被贬成了 在国际上的影响力相对较小


六、结论

个人观点,仅供参考。

这篇文章写到中途的时候发觉内容太多太长。想过从中间拆开,分成多篇文章发布,但想了半天,去他妈的。

The post 是时候在我这里聊一下人工智能了 first appeared on 石樱灯笼博客.

LangChain 作者聊 AI Agent 的几个相关课题

参加 NVIDIA GTC 会,其中一场听了 LangChain 的作者 Harrison Chase的分享《AI Agents in Production Insights and Future Direct》,聊了 Agent 当前遇到的一些问题和他的想法,包括 Planing,UX,Memory,Reliability,Deployment,Multi-Agent,也结合我的理解说说这几个课题。

Planing

任务规划是 Agent 的核心,这个课题是进展比较多的,业界解决得相对比较好,核心是 o1/r1 推理模型的出现和不断增强,让规划能力上了一个台阶,这也是 agent 能起来的基础。

但模型本身目前解决不了所有问题,还需要工程上的一些策略和串联做优化。例如 Tree of Thought 让任务不是以线性一步步执行的形式,而是生成解决问题的多个节点,多角度思考问题,形成树结构的任务,评估节点的价值,在里面寻找最优解。 Reflexion 会有 Evaluator 对各种反馈(工具调用结果/模型输出/用户指令)进行反思,梳理改进方向,也会把反思结果作为知识库经验,指导后续的任务。

这些策略链路是需要有一个工程流程把他们串起来的,这个工程链路的构建也是 Agent 在 Planing 能不能做好的关键因素,langgraph 和众多 Agent 框架服务都持续在做这个事。

UX

Agent 的交互应该是怎样的?

Devin 多窗口,有聊天框发送指令、又能实时看到 Agent 在怎样用浏览器、命令行、编辑器,是不错的交互。

大部分 Agent 会是后台异步运行的模式,可以让它直接跑在后台,在需要人类给出反馈处理的,用类似邮件 inbox 的方式交互,Agent 发邮件给你等待指示,你回复邮件给输入。

相较于交互界面形态,交互的策略可能更关键。Agent 在执行任务过程中,

  1. 用户是否应该能随时中断并提出新的指示?
  2. Agent 应该在什么时候暂停任务等待用户反馈再进行下一步?
  3. 用户指示应该用表单一次性收集,还是一步步收集?

如果做每一步都要用户反馈做指示,那是非常枯燥不好用的,如果完全不需要用户反馈,那做出来的东西可能不符合用户预期的概率高很多。模型应该能做好这里的交互策略,但目前还没看到有特别好的实践。

Memory

长时记忆是个有意思的话题,杨立昆在对话中也有提到,记忆这个课题是值得研究的方向,现在是缺乏突破和讨论的。

现在的 Agent,普遍都只有知识库 RAG 而没有记忆,记忆不是知识库,或者说知识库只是记忆的一种。

记忆应该跟人类一样,模型能记住和学习交互过程中用户给到的信息和偏好,在每次推理过程中发挥作用。

它跟 UX 相关,如果模型能理解记住用户偏好,用户的反馈交互就可以减少。

它也跟 System Prompt 的优化相关,System Prompt 是激活了模型按某个方向去做推理预测,记忆也应该是在模型推理的过程中发挥作用。

简单做的话记忆可以作为 System Prompt 的一部分去影响模型,更彻底的可能应该是能持续内化到模型内,或者以新的模型架构去做这事。

现在的应用场景还没到记忆是必选项的程度,但要做 AGI 或者要 Agent 好用这块必不可少。

Reliability

主要是指 Agent 能不能稳定地解决同一个(或同一类)问题。

Agent 跟之前的软件工程不同,受限于模型输出的不稳定,整个系统的可靠性是远不如传统工程的,用户输入同样的或差不多的需求,agent 不一定每次都能解决问题。

模型输出的,一是会受用户对任务描述的影响,可能描述不准确,可能会有歧义。二是受模型本身不够聪明的影响,近期模型能力越来越好,解决了部分问题,但仍是不稳定。

保持 Agent 输出的稳定性,是一个非常需要持续迭代优化的工程,搭一个 demo 容易,持续优化难。

Agent 节点多,需要能看清每个任务节点的详细情况,有问题时知道问题出在哪里,需要有效果评估的测试能力,也需要框架有能力比较方便地在过程中对模型的输出进行评估实时纠错,提升稳定性,这些配套 langchain 相关生态都提供了,NVidia 这次开源的 AgentIQ 框架也基本涵盖了,还有很多框架服务也在做。

Deployment

Agent 要在线上跑,相关部署基建现在也还没有很完善,它跟传统工程链路还是有一些区别,主要是链路长、耗时长、成本高。提供 Agent 部署的服务应该针对这几个特性做好相关基础设施。

  1. 稳定性:整个 agent 链路很长,每一个环节调用如果成功率是 99%,平均要调用十次接口的 agent 成功率就只有90%,而大模型的接口往往也不稳定,如何保证成功率? 重试策略、排队机制等,这些都是 agent 工程基建应该做的事。
  2. 性能:当前 agent 处于效果大于耗时的阶段,只要效果好,五分钟输出还是十分钟输出都可以接受,但真正规模化应用起来时,性能问题肯定也是重点,整个链路耗时太长,可优化空间会比较大,NVidia 对 agent 的分享也提到了,很多任务不一定要串行做,可以并行化节省整体耗时。
  3. 监控: Agent 线上跑的效果怎样,准确率多高,有没有安全风险,应该有直接可用的相应配套。
  4. 成本:如果 Agent 全程用最好的模型,跑一次十几分钟的任务可能要几美元的成本,前期问题不大,效果优先,粗放式探索,后续真能规模化上线应用,成本这里的优化空间会比较大,用不同的专家小模型处理不同的任务、做好模型 – GPU 卡适配优化推理(NVidia NIM 提供了相关能力),都是可优化的方向。

Multi-Agent

预期后续会有非常多的 Agent 出现,Agent 跟 Agent 之间如果能相互联系,能形成新的智能体,但 Agent 之间 应该怎样通信?

这里的通信不止是把 Agent 当成一个黑盒,给指令 – 输出结果,而是能深入 Agent 内部的通信,上下文共享、中间步骤共享、过程中的协作、用户操作插入等。

目前没有一个标准,各项目都是自己的一套,业界可能需要这样一个标准,能实现把使用不同框架、不同服务上部署的 agent 连接起来。

MCP 是近期在快速发展的标准协议,很有前景,但它只是把工具工具调用标准化了,对 Agent 和 Agent 相关的协作是没有定义的,可能需要另外的协议。

上一篇文章刚好探讨了这个内容,用 Agent as Tool 的方式,把 Agent 当成工具的一种,基于 MCP 去做,好处是架构简单,Agent 可复用性高。

但它只把 Agent 当成黑盒 Tool 去使用,给指令 → 输出结果,Agent 之间更深入的联系是没有的。我们也在尝试,给这个 MCP 子 Agent 输入主 Agent 的上下文,同时这个子 Agent 也可以流式把每步处理过程上下文输出给主 Agent,这样就可以实现 Agent 之间的上下文共享。同时也可以继续做更深入的交互定义,比如子 Agent 与用户反馈交互的流程协议。

目前这些协议都需要自定义,但以 MCP 、 以 Agent as Tool 去定义标准的 Agent 间交互协议,也是可行的,MCP 可以把这套交互协议也定了,可能是 Anthoropic 很好的机会。


上述这些基本是工程上的事情,这次 GTC 很少有人讨论到 Agent 在数据收集/模型调优上的实践,基本是直接使用基础通用模型,但要提升 Agent 的上限,应该是需要专有模型并能支持端到端训练的形态,待探索。

浏览器新标签页书签插件

newtabBookmarks

不想让 360 霸占浏览器首页,于是很久以前参考木木同学的导航页,自己用 php 写了一个页面,挂在了 dh.muxer.cn 页面下,然后设置为了自己浏览器的首页。因为不怎么更新,当时做完后添加了多少链接,现在还是多少链接,再加上办公室浏览器和家里浏览器首页链接不一样,用的是 127.0.0.1,所以其实没怎么用。

既然都是单机玩,又不想给 dh.muxer.cn 搞个用户系统区分不同使用环境不同链接,就想着要不搞个插件吧。

deepseek 刚火起来的时候,我就问了它弄这样的插件难不难,没想到刷刷刷的就给我丢出来了一大堆代码,一测试还真能用,就直接折腾上了。

其实真搞起来的时候,deepseek 用的很少,主要那段时间问超过 3 句,就来个“服务器繁忙,请稍后再试”,搞不下去。后面大部分时候用的都是 vscode 的通义灵码插件。最终取名 浏览器新建页面自定义网页书签导航插件/newtabBookmarks,结果如下:

newtabBookmarks
newtabBookmarks

主要功能

  1. 自定义链接分类
  2. 支持手动添加网站信息
  3. 支持网站页面点击插件图标自动获取网站信息,需要自己添加分类
  4. 编辑模式支持拖拽分类重新排序
  5. 编辑模式支持拖拽书签链接重新排序
  6. 编辑模式支持编辑、删除已有书签链接
  7. 编辑模式支持导入和导出书签导航 JSON 数据
  8. 支持设置自定义页面标题、背景颜色、背景图片
  9. 支持设置 bing 每日一图为背景图片
  10. 支持设置本地图片为背景图片
  11. 支持设置背景颜色透明度
  12. 支持搜索已添加的书签链接
  13. 默认 bing 搜索引擎
  14. 显示每日诗词诗句

使用方法

  1. 下载项目到本地并解压得到 newTabBookmarks 文件夹
  2. 打开 chrome 浏览器,进入扩展程序页面(chrome://extensions/)
  3. 打开开发者模式
  4. 点击“加载已解压的扩展程序”,选择 newTabBookmarks 文件夹
  5. 点击插件“详情”,选择“固定到工具栏”
  6. 浏览器点击选择“设置”-“起始页面”-“打开新标签页”
  7. 打开浏览器或新建新标签页,即可看到自定义的网页导航书签

注意事项

  1. 本插件支持 chrome、edge、360 浏览器
  2. 本插件需要浏览器数据存储和读取页面信息权限
  3. 清空浏览器数据可能会导致书签数据清空,请及时导出备份
  4. 删除插件会清空书签数据。

Github 仓库地址

https://github.com/happyet/newTabBookmarks

我在跟谁聊天?

最近身边出现了一些鼓吹AI代替部分思考,成为思考重要环节的人。

是怎么被发现的呢?是因为这几天跟朋友聊天,说起了我手上正在处理的「离婚案子」。因为对方也是一个去年离婚的男性,所以聊了聊离婚期的「戒断反应」。

他完全不关心案例本身,只是一味地用「过来人」的身份,对我提出了一些对对方的「蔑视」。我只能不停强调他们作为两个独立的个体,首先是遇到的问题不一样,其次是两人的性格成因也不相同。我不得不迫使他先停下来,聊聊「案子」本身。

我大概描述了一下案子本身,想从他作为一个经历过离婚的人来聊聊戒断反应持续的时间和形式。他很快就回复了我,用非常官方的说辞,为我列出了好几条「解决方案」。每一个解决方案看上去都是一个「方法」,但是还是在规避一个重要的事情——「这个案主到底是一个怎样的人,是什么原因导致了他现在的情绪」。

我问了这位朋友一句:「你是用AI来回答我的吗?」

他:「内容有点多,我让AI帮我总结一下。」

我:「结论呢?」

他:「我结合AI提出啊,我觉得它说得蛮好。」

离婚的事儿倒不是大事儿,这位朋友跟AI的配合让我来了兴趣。


我并不是一个极端AI反对者,不会觉得AI最终会毁灭人类,这件事反而是值得在小说这样的载体去进行思考的。我的生活也有很多是需要AI的,比如宠物出现了一些行为反应,我会第一时间询问ChatGPT。但我也会有意地限制它代替思考这件事。

我问这位朋友:「AI得出的结论,你有想过它背后的逻辑吗?比如为什么会建议当事人出去旅游散散心?」

他:「建议就是建议,当事人是否采纳就跟我们没啥关系了。我觉得它说得挺对的,与其沉浸在痛苦之中,不如从里面抽身去做点别的事情来分分心。」

我继续追问:「如果我是询问你的人,如果你告诉我可以出去旅游散心,但是你没办法告诉我原因,我也很难说服自己去执行,因为情绪先于行为存在。」

他:「那我的建议就是,爱信不信,我既然给的是解决方案,就不是要你去接受或者不接受的。至于原因,一是需要创造物理和心理的空间,二是需要重塑自我的身份认同,三是需要情绪疗愈和自我对话,四是需要增强掌控和自信心,五是要为自己提供反思与成长的契机。」

我:「这还是AI的答案吧。」

他:「我觉得它说得很有道理啊。」

我终于问出了我最关心的问题:「你难道都不会先自己思考一下吗?」

他:「我觉得AI很好地整理了逻辑,我看了之后认同它的答案,我不觉得我没有参与思考,因为我在看结果的过程中,它也帮我整合了我的思路。」


这位朋友很有趣,他平时很爱看那种一步一步求解数学答案的直播。以前我还跟他聊过这件事,想弄清楚「成瘾机制」到底在哪里。他每次给我形容解题直播时,都会用到「爽」这个词,他觉得数学公式本身代表了一种秩序层面的爽。当解题人一步步将各自零散的公式,一层一层套入解题过程时,他会不断地产生多巴胺带来的正反馈刺激。

我因为实在不能理解这种「爽」,所以也好奇地看过几次——毕竟自己是个学渣,现在能看懂解题过程中的完全平方公式就已经不错了。

我问他,他是否有把自己的这个喜好,问过AI吗,到底是什么原因导致的。

他觉得有趣,立马去问了AI,得出的结论是:

解谜的快感:智力的审美感受:情绪上的放松与疗愈:替代性成就感:求知欲的满足:社交归属感:

我:「是这样吗?」

他:「我觉得它说得蛮对的。」

我:「你在看这些直播的时候,你心理都在想什么?」

我不知道,是不是这个问题AI没办法代替他的思考,他过了好一阵才回答我。「我会觉得自己还有别的思路吧,有时候看他解题也会莫名愤怒,因为明明有更好的方法……」(后面我省略了一堆我听不懂的高数内容的举例)

我:「你数学成绩最好是什么时候?」

他:「高中吧,能考140以上。」

我:「后来呢?」

他:「偏科啊,大学没进喜欢的科目,高数也不是主修科目,但还是会上课。」


后来,我们聊了聊他如何热爱数学,将数学作为逃避学业压力的方式,才导致了高中时期严重偏科。聊了一阵,我又建议他把他跟我聊天时讲述他自己关于如何热爱数学的内容,喂给AI看看AI会不会进一步得出「原因」。

AI给他的结论是:「用擅长的领域建立自我价值、获得潜在逃避现实的安全感、潜意识中对现实的对抗心理、社群归属感。」

我再一次追问:「这说的是你吗?」

「好吧,有点不太像,我好像没有用它逃避现实,我就是吃饭的时候看看而已,我现在也没有从事这个行业,你要说价值感感觉也没有太大必要,社群归属更没有,我在这种直播都是不互动的……」

我从聊天记录里翻了好久,引用了最开始跟他聊起的那句话:「现在还觉得AI得出的结论,有其背后的逻辑吗?」

他:「但你不能否认,它确实给出了一些能够理清思路的方向吧。」

我:「不,我是说代替逻辑思考这个部分。」

他:「哎呀,只是说借用一下,没有说完全相信AI的思考。」

我:「那你是怎么做的?」

他:「对于AI的结论先找到自己认同或不认同的观点,然后用自己的故事去印证观点的可行性,对AI结果保持质疑、反驳的态度,重新用自己的语言习惯进行表达,加入自己的观点和修饰。」

我:「等一下,这是你还是AI?」

他:「好吧,是AI。」

我:「那我到底在跟谁聊天?」


他说自己真的已经习惯了这样的思考方式,他不觉得有太大的问题。甚至是他写报告、文章都会先用AI来梳理框架,对于一些需要罗列呈现的内容,也会用AI总结成小标题+段落的方式,然后再变成自己的语言。

我:「那我怎么知道你和我聊天、你写的东西、你给的建议是你本人,还是AI提供的内容?」

他:「我觉得没区别啊,因为AI确实帮我总结了我脑子里面觉得正确的东西。」

我:「不是啊,是你脑子里先有了这些答案,看到了AI给出了跟自己观念一样的答案?还是说你看到AI结果之后,觉得我好像也能想到这个答案?这是两件事,后者更具迷惑性。」

他:「我觉得是AI在补充我的视角。」

我:「补充的占比是多少?」

他:「能开拓我的视野就行了呗。」

我:「补充的占比是多少?」

他:「这很重要?」

我:「当然,这件事决定了你到底有没有思考。」

他:「跟这有什么关系?」

我:「因为这是主动思考和被动思考的本质区别。」

过了一阵,他回到了我:「但是这都是思考,一个是结合自己的经历从无到有,一个是从困惑到清晰的创造过程。」

我:「我又在跟AI聊天了吗?」

他:「你怎么知道?」

我:「我在每一次问你问题之前,都让AI回答了,也就是说我在跟你聊天的同时也在跟AI聊天。」

他:「你真可怕。」


我不太确定他什么时候是以「人」的状态在跟我聊天,所以我决定让他停留在「人」的状态,保留情感的部分跟我聊天。

我:「我们又来聊聊你为什么喜欢看数学直播吧。」

他:「用AI吗?」

我:「不是,你离婚之后是不是孩子分给了前妻?」

他:「嗯,一个儿子。」

我:「多大啊?」

他:「9岁,小学三年级」

我:「以前他的数学作业是你辅导的吗?」

他:「是啊。」

我:「好了,这就是你爱看数学直播的可能性之一。」

似乎我们的话题在这里终止了,过了好久,他才问我:「是AI回答的吗?」

我:「不,是我跟你都是人的情况下得出的答案。」

他:「好吧。」

聊聊 Agent 架构 – Single Agent / MCP / Multi-Agent

近期在业务中尝试落地 Agent,有一个架构设计问题,应该用单 Agent 架构,还是多 Agent 架构?

Single Agent

先来看看单 Agent 架构,在之前的文章里,OpenHands 这里的架构是典型的单 Agent 架构,依赖一个模型,组织多个工具调用,做好 ReAct 和上下文管理,整个过程很简单。

  1. Tools 是一个个函数,定义和调用都是在当前程序里进行。Tools的函数定义会作为 System Prompt 的一部分让 LLM 理解当前可用工具
  2. Memory 分两部分:
    1. 当前 Session 数据流,包括每一步执行了什么,结果是什么,在当前 Session 内存中保存,随时全量输入 LLM,让 LLM 判断下一步应该做什么。
    2. 用户的长期数据、知识库,例如用户在平台的偏好数据、领域内容、多轮对话上下文等,这些内容会从向量数据库召回。
  3. Router 中心化程序调度整个过程,拿用户 Prompt / System Prompt / Memory 输入 LLM,LLM 进行深度思考和给出具体执行的任务,Router 去调用对应的 Action 函数。

这是简单通用的单 Agent 架构,实现 Agent 中 Thought – Plan – Action – Reflection(Thought) 的循环,一个模型负责所有事情。

MCP

上述架构里,Tools 模块有一些小问题:工具函数可维护性和可扩展性不太好,多了后难管理,要加函数得更新主程序,另外得自己定义一个 Function call 规范,对外部的一些会用到的工具服务都需要自己封装一遍。

对这些小问题,这个架构可以有一个优化:Tool 模块从 Agent 剥离出来,用 MCP 协议统一管理和实现。

附:MCP是什么?

MCP 是 Anthropic 24年11月推出的协议,近期 Cursor / windsurf / cline 等一众 AI Coding 产品支持了 MCP 后出圈,众多开源框架也开始支持 MCP,大有统一的趋势。

MCP 的概念很简单,就是统一了工具调用的接口规范,这几张图可以帮助理解:

  1. MCP 统一了各工具能力接入的接口调用定义,原先一个服务(例如slack)要对接多个用户端产品(例如cursor)定义的 Function call 格式,现在服务和客户端统一对接同一种格式就行,两边都只需要实现一次。
  1. MCP Server 独立运行在任意服务器上,也可以有自己独立的数据库信息/资源,不与 Agent 服务器绑定,可复用、易于插拔。

把原先 Tool 几个工具函数调用用 MCP Server 封装,架构变成这样:

跟原先纯 Function call 的区别在于架构上更灵活,包括:

  1. 聚类,对零散的一个个函数可以统一放到一个服务,便于管理。
  2. 解耦调用实际发生在各自 MCP 服务端,而不是 Agent 服务直接去调用,部署扩展工具与 Agent 工程上解耦。
  3. 内聚:MCP Server 本身可以内聚做一些事,包括独立的资源管理、独立上下文等。
  4. 复用:通用协议,Tool 能力便于在多个 Agent 间接入复用,外部生态有较多现成 MCP Server 可直接接入。
  5. 统一:客户端、云端的工具调用,都可以用统一的 MCP 协议去实现。

这个架构似乎已经可以满足大部分场景下对 Agent 的诉求,为什么还需要考虑 Multi-Agent?

Multi-Agent

考虑 Multi-Agent 最主要的问题是上下文过长

如果一个 Agent 能力足够强,它应该能完成需要非常多轮调用完成各种任务,这些任务的制定和执行结果全部塞在一个上下文里,可能会超出当前模型能理解和处理的范围

这时候,计算机工程的典型解决思路就是:分治模块化。把整体 Agent 能力拆分成解决一个个独立复杂任务的子 Agent,让这些 Agent 在它的范围内能有自主思考和自主行动能力。

从 Agent 的组成来说,必不可少的部分包括:

  1. 模型:独立的处理模型,可以跟其他 Agent 不同,称为专家模型。也可以相同,看需要。
  2. 上下文:独立的多轮 ReAct Loop 上下文管理,完成自己特定的任务
  3. System Prompt:对应任务制定特定的 System Prompt

而 Tools 可以不是 Agent 专用的,这个 Agent 需要什么 Tools,就注册什么 Tools。长时记忆/知识库也可以是多个 Agent 共用的。

架构会变成这样:

这样 Plan Agent 只专门制定计划,它需要知道的上下文是其他几个 Agent 能完成什么大的任务,至于他们调了什么工具怎么完成不用管,只需管它要结果,整个任务的上下文就被分出多个部分,每个 Agent 的上下文对另一个 Agent 可以是黑盒。每个 Agent 也可以有自己对应的模型,做独立的训练和 Prompt 调优。

这样是不是一个更优的架构?

  1. 它的好处是解决了上下文过长,模型处理不好的问题。
  2. 坏处也是很明显:整个架构是复杂化了,而效果也不一定好。多个 Agent 需要协同,Plan Agent 能获取的上下文信息变少了,它没有了更细粒度统筹规划整个任务的能力,变成一个偏项目管理的角色协调各方的工作,多人协作带来信息熵增大,组织效率低。

AI 的范式,可能不应该这样分治,可能大模型在对上下文的支持、细节信息的理解上会越来越好,能统筹把握好各项细节,把一个复杂任务完成,而不是像人类社会一样分工协作。这样对大模型来说,有足够的信息量能做规划/决策/反思,也更便于端到端的模型训练。

从号称泄漏的 Manus Prompt 来看,Manus 也没有 Multi Agent,所有能力包括工具函数都在一个上下文中定义,看起来目前也能跑得起足够复杂的任务。

所以如果项目在早期,没有遇到很明显的瓶颈,并不需要用 Multi-Agent 架构,用 Single Agent 简单的架构足够能做好。工程架构越简单,后续基础模型升级带来的增益越大。

基于 MCP 的(伪)Multi-Agent

再探讨下,如果在应用过程中已经发现上下文处理不过来的问题,或者某个任务的内部实现细节对整个任务无影响,或者三方都实现好了,那采用另一种伪 Multi-Agent 架构,也是可以考虑的方案:

例如对接 browser-base 实现更深度的 research 能力,需要多轮打开不同网页、判断资料收集是否完成、整理资料,有自己的 loop 、上下文和模型。但这个完全可以封装在一个 MCP 服务上,自行闭环完成多网页搜索和整理,不需要与原 Agent 流程上有更深入的交互。

跟上面的 Multi-Agent 架构的区别在于,并没有改变原来单 Agent 架构,不会增加架构复杂度。Agent 不需要感知 MCP 调用背后是 Agent 还是一个普通的函数调用,没有区别。

MCP 协议本身也是 SSE 流式输出,对这个背后是 Agent 的 MCP 调用,要输出多少上下文信息给原 Agent,也是可以非常方便地调控。

以上是近期的一些想法,Agent 是新东西,后续实践有认知的更新再分享。

[原创漫画] 《生命,科技,灵魂,死亡》,以及制作感想

该内容仅供娱乐,请勿过分解读。
这是一篇使用AI工具辅助创作的作品。
内容包含以下已知问题:

  • 人物形象连贯性错误
  • 作画细节错误
  • 大量的暗示
  • 大量无用的细节描绘

该内容可能会引起部分人引人不适,请谨慎选择观看 。
本作品不适合儿童以及心理承受力较弱者。

screenshot_1808684507679234-20250310161733

B站视频链接:《生命,科技,灵魂,死亡》

我是期望能有人点到B站然后在底下留评论。现在各个平台都已经被算法掌控了,有互动帐号才能活。没互动那就是死。

WordPress这坨狗屎现在乱改用户的HTML嵌入代码,然后B站的自动播放又没法在代码里禁用掉,所以我这里就不嵌入播放器代码了。


结论

假如你觉得这个漫画非常的「抽象」,那就对了。

制作感想

可以说年后就一直都在搞这个作品。

期间甚至把整个操作系统都从 Linux Mint 20.3 升级到了 Linux Mint 22.1 (跳过了1个大版本4个小版本,或者说2个大版本3个小版本?),写了一堆 nemo actions,写了一堆脚本,更新了本地的各种应用工具,测试了一堆AI相关的工具,写了一个 userscript,甚至还把 danielgatis/rembg 常年都修不好的GPU加速给了,还做了 DOCKER GPU 加速版本,你说我也不会 Python 啊竟然还做出了这种事,想想真是疯狂。

前几年挖的各种大坑不仅没填,新大坑开得一个接一个……这些玩意要是能赚钱我早就成暴发户了。

关于AI的感想本篇文章先不讲。我个人是没什么兴趣凑这个烂热度的,整个互联网这几年就跟鬣狗一般,什么热就食什么,不论腥臭。当年韩国人的常压室温超导体,各种人“复现成功”;现在AI也一样,各种狂热,但是实际应用或相关创作基本没有,疯癫的自媒体,遍地的海乙那(这玩意竟然15年前有人写过了!)。


创作契机

最初阶段

契机这玩意很简单。就是随便在网上看看有哪个大厂公开免费支持用户用AI工具乱搞。毕竟如果没有对应工具或者能力的话,什么都是胡扯。

其实我对 线上工具 尤其是 大厂线上工具 非常反感的。这些大厂现在基本没有什么良心,自己的服务功能乱改,而且随时跑路,不仅给你玩个 免费是最贵 , 还要玩得你对工具有依赖性之后 杀自己的产品诛用户的心

所以我在本地部署了缩放工具和去背景工具。图片生成工具其实我也部署了 ComfyUI,但是只要模型大一点,我这个 8G 版的 GTX1080 在 VAE Decode 阶段就直接黑屏重启。绝对不是供电不足的问题,因为KSamper阶段的时候显卡就已经跑满 200w 了。

screenshot_on_b85m_by_flameshot_at_2025-03-12_01-14

扯远了。关于AI相关的内容下篇再讲。

总之是选定了一个线上的AI图像生成工具。

内容构思

这玩意你要是能看懂那大概猜得出来我是怎么想的。

如果你看不懂我也懒得管。

我这个人非常讨厌目前互联网平台的各种解说视频。这是怎么回事? 观众是没有脑子吗?看个作品还要旁边有个人解说才看得懂?


制作过程

AI出图这玩意我就不说了。主要讲讲其他的。

图片序列

首先是把所有图片都整理到一起,然后根据剧情大纲分成多个目录。

png_screenshot_on_b85m_by_flameshot_at_2025-03-13_23-55

再把图片一个一个放入 NLE 的时间轴中。

这时候第一个痛点就来了,图片太多的时候,记不住哪个图片用过哪个图片没用过。又不能移动图片(移动了NLE不就找不到图片了么)。

这时就想到了 Linux Mint 文件管理器的原生功能:打标记。

然而这货……不支持文件多选。半拉喀叽。

最后只好写俩个 nemo_actions 来处理这事情。

screenshot_on_b85m_by_flameshot_at_2025-03-14_00-05

然后就发现这玩意 Bug 真多。

首先这玩意在用 nemo_actions 设置后图标文件管理器不会刷新,需要手动刷新,很烦。触发文件管理器刷新的方式是修改文件,网上给出来的方法都是 直接touch,但是那不就更改了文件修改时间了吗?最后解决办法也很逗乐:

touch $inputfile -r $inputfile

设置文件的修改时间为文件自己的修改时间……

然后写文章的时候才发现这玩意还有另一个Bug,就是媒体文件在默认图标大小时不能正常显示标记……

png_screenshot_on_b85m_by_flameshot_at_2025-03-14_00-05_1

批量调整图像

为了省事,我在导入图片的时候用的是原图大小,1024×576的。图片太小了,但是全部放大太浪费资源,很多图片只是整理出来了,并没有被采用。整理出来的图片如果再手动复制粘贴到相同结构的目录里也很费劲。

于是用 bash shell 将所有引用的图片从 mlt 文件中输出出来,再写个脚本打水印和放大。

png_screenshot_on_b85m_by_flameshot_at_2025-03-14_00-15

有经验的用户应该能看出这段代码很大一部分是AI生成的。

然后只要批量更改 mlt 文件的图片引用路径,所有引用的图片就都处理完毕了。

BGM

首先是背景音乐这一块。首先我就不想用大家都听过的。很多BGM都用烂了,一听就恶心,但又很神奇的是国内这些视频网站用户貌似对吃屎免疫……但是后来仔细观察发现,大多数用户脑电波是直的,只有对着他们放对应的BGM才有对应的反应。

vlcsnap-2025-03-13-23h51m23s547

vlcsnap-2025-03-13-23h51m40s373

反正他们也不看我的视频,不管他们。

专门去 DOVA-SYNDROME 找了些 BGM,收获蛮多。

用了四首曲子把整个视频分成了四段。

结果很诡异的是传到B站后第二段结尾和第三段开头不知为何混到一起了,本地原本没这个问题。

改图

原本生成的图片里是没有任何文字内容的。

我也不想加任何字幕和对话。

我期望是根据角色的神态和动作,让用户自己感觉,画中的角色「在想什么」,「想说什么」,「想做什么」,「在做什么」。一千个哈姆雷特是假的,但要多少是多呢,有一个算一个吧。

但是最后还是加了点内容上去,因为我觉得很多内容还是太过于晦涩和抽象了。

但是加了之后又觉得有点后悔。

我本来期望,是想让用户在前半段根本看不懂女主究竟是在干什么,是怎么回事。加了内容之后再结合标题就跟直接破案了一般,无趣了。

(果然还是由于没有相关创作经验而带来的错失)

剧本

我是本着传统的叙事结构:「起承转合」,其变体「起承转合暗」而考虑的剧本。

第三段,在结尾处,专门设计了完全没有声音的一段。

第四段则做得特别短。专门让故事结束得十分突然。然后把一张啥都没有的背景图连带BGM扔给观众。

最后的结尾图却是我做完大部分视频内容后突来的灵感。

最后加工

最后再重新开一个视频项目,做一段声明,然后用 FFmpeg 无损把俩视频贴在一起就完事了。

png_screenshot_on_b85m_by_flameshot_at_2025-03-11_12-07

本来还想做个英文版来着,但是想到改图好麻烦,懒了,以后再说。


总结

总之算是一件事情了了。

screenshot_20250303005229

奖励自己摆烂一阵子。

The post [原创漫画] 《生命,科技,灵魂,死亡》,以及制作感想 first appeared on 石樱灯笼博客.

尝试AI受挫

某单位跟风上了deepseek,但接入应用后员工发现根本无法使用,还不如官方网页版好用,更别提按行业特性的定制 […]

9 Reasons to Create Your Own Custom GPTs in ChatGPT

What if you could have an AI assistant tailored specifically to your needs? Imagine a version of ChatGPT that always remembers your specific preferences, knows everything about your favorite hobbies, or can adopt a unique personality for specific interactions? That's exactly what custom GPTs allow you to do.

Jevons悖论: Deepseek崛起为何最终推动Nvidia股价回升?


2025年2月,Deepseek——一家来自中国杭州的人工智能实验室——开源了一个能够比肩ChatGPT的AI模型,而其训练成本远低于当前行业标准。这一突破引发了市场震动,尤其是对GPU需求的预期发生了剧烈变化。投资者一度认为,随着AI训练成本的下降,对高性能GPU的需求可能会减少,从而导致Nvidia的股价暴跌。然而,仅仅几周后,Nvidia的股价就强势反弹,重新回到高点。

nvidia-microsoft-apple-amazon-google-stock-2025-jan-feb Jevons悖论: Deepseek崛起为何最终推动Nvidia股价回升? DeepSeek Nvidia 英伟达 人工智能 (AI) 经济学

美股:英伟达、微软、苹果、亚马逊、谷歌股价2025一二月

这种市场反应看似矛盾,实则可以用Jevons悖论(Jevons Paradox)来解释。

什么是Jevons悖论?

Jevons悖论由19世纪英国经济学家William Stanley Jevons提出,最早是针对煤炭消耗的观察:当蒸汽机技术进步提高了燃煤效率后,人们原以为煤炭消耗会减少,结果却适得其反——因为更高的效率让煤炭的使用成本下降,从而促进了更多行业和领域采用蒸汽机,最终煤炭消耗总量大幅增长。

同样的逻辑适用于AI和GPU市场:

训练成本下降 → AI更易普及

Deepseek的成功证明了AI训练可以以更低的成本完成,这意味着更多企业、创业公司甚至个人研究者可以负担得起大规模AI模型的训练和部署。

AI需求激增 → GPU需求扩大

低成本AI的普及不会减少GPU的需求,反而会催生更多的AI应用场景。例如,更多企业可能会投入人工智能/AI研发,个人开发者也可能利用更廉价的算力进行实验,从而推动GPU(计算机图形加速卡)需求增长。

推理需求大增 → 继续依赖高端GPU

除了模型训练,模型推理(Inference)仍然需要大量算力,尤其是面对全球范围内激增的AI应用需求,云计算平台、企业数据中心等仍然需要大量高端GPU支持高效推理。

Nvidia股价为何回升?

市场最初的恐慌源于对GPU需求减少的误判,但随着Deepseek的开源,人们很快意识到AI生态的整体扩张才是核心趋势:

  • AI变得更便宜 → 更多公司加入AI赛道 → 算力需求总量上升
  • AI的推理需求飙升,尤其是企业级和消费级市场扩展 → 高端GPU仍是核心基础设施
  • Nvidia继续保持AI硬件和CUDA软件生态的领先地位 → 仍是赢家

因此,Jevons悖论的作用下,Deepseek降低了AI训练成本,反而进一步刺激了AI行业的发展,最终推高了对GPU的需求,使Nvidia的股价重新回升。

结语:TLDR; Jevons悖论

Deepseek的开源AI让人们看到了一个低成本、高效率的AI未来,但Jevons悖论告诉我们,技术进步往往不会减少需求,反而会创造出更庞大的市场。对于Nvidia来说,AI的普及意味着更多企业和开发者将涌入这个领域,而这最终仍然需要强大的计算硬件支持。因此,短期的市场波动只是情绪化反应,而长期来看,AI的发展只会让算力需求持续攀升,Nvidia依旧是AI革命中的最大受益者之一。

经济学

本文一共 876 个汉字, 你数一下对不对.
Jevons悖论: Deepseek崛起为何最终推动Nvidia股价回升?. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c Jevons悖论: Deepseek崛起为何最终推动Nvidia股价回升? DeepSeek Nvidia 英伟达 人工智能 (AI) 经济学
The post Jevons悖论: Deepseek崛起为何最终推动Nvidia股价回升? first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  2. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  3. 在英国给孩子换学校的经历: 孩子离开了村里的小学 由于搬了家, 孩子上学得提前半小时出门了, 因为早上堵, 也得开车半小时才能到. 之前在 Fen Drayton 村庄上小学, 早上8:45学校门开, 9点敲钟孩子排队依次进入教室, 我们由于在村里, 只需要提前5分钟出门和孩子一起走路就可以了. 现在一下子早上变得很匆忙, 得叫孩子起床, 做早饭,...
  4. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  5. 公司请的专业摄影师 公司来了新的CEO管理之后,很多事情都不一样了, 特别是一些公司对外形象的事情就特别的在意, 比如公司网站用上SSL.现在公司还有空闲的位置,请速来(钱多人不傻). 一月份出差回LUTON,刚好公司请来摄影师给高层管理照像放网站上的,于是我也凑了凑热闹(但是却还不够资格被放在公司网站上),不过没关系,放这里也差不多. 人到中年, 沧桑感强了些. 更新更新: 同事用他NB的单反给谢菲尔得办公室的人也拍了一组这样的照片.看起来很不错, 很专业,灯光,道具应有尽有.我已经用在了LINKEDIN页面上,立马高大上. 本文一共 230 个汉字, 你数一下对不对. 公司请的专业摄影师. (AMP...
  6. 面向猫猫编程 Cat Oriented Programming (Chessly/Pyro这一生持续更新) 家里有两只猫 Chessly/Pyro,想着找个地方记录它们的生活,最后决定还是写在这里的博客。猫的一生很短,差不多也就二十年。 Chessly(黑白猫)是我加入微软剑桥研究院MSRC第一个月带回家的,过了两三个月,又把Pyro(橘猫)也接回了家。两只猫的名字是孩子们取的:Chessly因为黑白的像棋盘,加上“ly”听起来像个女孩的名字;而Pyro的意思是一团火(烟火),充满活力。 刚开始的时候,Chessly特别喜欢待在我的工作区域。她有时候趴在键盘上或旁边,有时候藏在显示器后面。偶尔还会绕到我身边“咕咕”地撒娇,等着我去摸她。有时更干脆跑到我腿上,舒舒服服地躺着。 不过,现在它们俩的体型都大了很多,躺在桌上就会挡住屏幕,真是“面向猫猫编程”(Cat Oriented Programming)的极致体验。 记录生活的点滴,也是一种珍惜,毕竟这二十年,我们会一起走过。 2024年 2025年 Ring视频:两猫日常就是打闹,Chessly追上Pyro想舔他,在猫的世界里,地位高的才能舔地位低的。 我家猫现在越来越胖,很喜欢在我工作的时候躺在显示器钱,很影响我的工作,不过这时候我就是会休息一下摸摸她,就当放松一下了。 Pyro在窗边喝水,这是个小的煮饭锅,现在不用了,就给猫当喝水的碗。Pyro很胆小,经常看到我就跑。没法跑就咕咕叫。 Chessly很喜欢陪我工作,然后她很好厅的盯着屏幕上的鼠标光标,真怕她把屏幕抓坏了。 哥哥弹琴,弟弟唱歌,Chessly午睡,真是幸福啊,下辈子做只猫吧。...
  7. 力扣 Leetcode 的刷题利器: 在线调试器和自动代码提示完成 力扣代码调试器 Debugger 最近 leetcode 刷题网站出了一个在线调试器. 个人感觉非常好用. 因为我平时是用 IPAD+蓝牙键盘来刷题, 而在 ipad 上是没有集成的IDE的, 对于调试来说, 只能很原始的让函数退出一个值, 然后尝试不同的输入来发现问题. leetcode在线调试器的好处...
  8. 优化设计 个人主页 并且 PageSpeed Insights 双项 100分 坛子的个人主页 www.tanzhijun.com 不错 很适合个人主页的模板. 而且是手机友好. 于是我照着把 我的主页改了改. https://steakovercooked.com 并且做了几点修改: 0. 使用 google mod_pagespeed 把 JS,...

细看 Claude 3.7 两个重要的 Benchmark:SWE-Bench & TAU-Bench

Claude 3.7 Sonnet 在万众期待中推出了,为什么期待,因为从 Claude 3.5 Sonnet 发布后,一直是AI Coding Agent 领域最好的模型,综合效果没有对手,后面陆续推出的 o1/o3/DeepSeek 都没能撼动,更让人期待 Claude 3.7 Sonnet 在 AI Coding 领域能不能有进一步提升。

Claude 3.7 放出来的 Benchmark 里,有两个是跟 AI Coding Agent 表现强相关的:

  1. Agentic coding,SWE-bench,衡量解决实际软件工程编码问题的能力。
  2. Agentic tool use,TAU-bench,衡量理解用户意图调用工具执行命令的能力。

可以看到 SWE-bench 有显著的提升,问题解决率 49% 提升到最高 70%,TAU-bench 也有不错的绝对值10个点的提升,确实重点提升了 AI Coding Agent 相关能力。

接下来详细看看这两个 Benchmark 究竟测了什么,可以大致知道,目前模型的能力上限大概是怎样。

SWE-bench

SWE-bench 是由普林斯顿大学 NLP 团队开发的项目,23年10月就开始提出,主要是想找到一种方式可以评估大模型解决实际软件工程问题的能力,而不是像之前只衡量算法题的解决能力。当时还是 Claude 2 和 GPT4 的时代,随着 AI Coding 的逐渐火爆,OpenAI 也加入对这个 benchmark 的完善,这个项目也逐渐成为主流。

数据构造

分三步:

  1. 选靠谱的库:选了 12 个流行的 Python 开源库,选择的标准是,热门库,长期维护,有比较多的 Pull Request 修复相关 issue,PR 的管理也很规范,有很好的测试覆盖率。这些库修复 issue 的 PR 就是我们要获取的测试 case,但会对这些 PR 进行一些过滤。
  2. 特性过滤:1)明确 PR 是解决了某个特定问题。2) PR里包含了测试 case,可以很容易从测试 case 上判断代码修改是否有效。这些在运行前就能过滤出来。
  3. 运行时过滤:这些 PR 应用前后,测试用例中要有明确的从不通过到通过的变化,程序跑起来也不会有错误,便于评估结果。

基于上述规则从 github 热门项目上抽取相关的数据,这些数据还可以持续更新,避免模型因为看到过这些数据而“作弊”。

这是抽取的几个流行的 python 库,以及数据集数量:

经过上述步骤抽取构造数据后,得到 SWE-Bench 数据集,后来 OpenAI 对这个数据集再进行人工过滤筛选掉了一些不太好的 case,比如 issue 问题描述不准确、开发环境难搭建难测试等,也对每个挑选的 case 做了精心人工验证,一共500个样本,组成 SWE-bench_Verified 数据集,现在一般测的是这个数据集。

来看看这个数据集具体都由哪些部分组成:

instance_id: 实例ID,通常格式为 repo_owner__name-PR-number

//代码基本信息
repo: 仓库名
base_commit: PR 提交之前的代码 commit id,定位代码基线
version: 用于运行的版本号
environment_setup_commit: commit id,安装运行环境的代码基线
created_at: PR 创建时间

//PR基本信息
problem_statement: PR 对应的 issue 内容,也就是要解决的问题
test_patch: 这个 PR 提交的测试 case patch 代码
FAIL_TO_PASS: 应用修复的 PR 后会通过的测试 case
PASS_TO_PASS: 应用 PR 前和应用后,都应该通过的测试 case
patch: 这个 PR 修复的 patch 代码,相当于标准答案
hints_text: PR 提交之前,github 上对这个 issue 的讨论 comment。可选,如果要上榜单,禁止使用这个数据。

代码信息、问题描述、测试用例,重点是这几个,剩下的都是用于把程序跑起来、验证修复结果用。

测试执行

大体流程见下面这张图,输入 issue 描述和代码库,模型根据输入,输出要修改的代码,最后有个环境运行模型生成修改的代码,跑测试用例,把应用代码之前没跑通的单元测试跑通,这个任务就完成了。

这个过程一个最大的问题是:代码上下文怎么给模型?这几个热门项目代码库平均 43w 行,不可能直接给,需要有个检索的能力。

项目论文中给了两个方法:

  1. 作弊:上述构造数据时,我们有拿到人类修复这个 issue 提交的 PR 对应的 patch,而这个 patch 里修改到的代码文件,就是最重要的代码上下文,可以直接作为代码上下文给到模型。这个接近于标准答案,除了一些需要更多文件上下文才可以解的问题外。这个只用于做实验,或去检测其他的检索方式命中率如何。
  2. 稀疏检索:用 BM25 算法做检索,基于 issue 的描述搜索相关代码,限制长度在1.3万行-5万行。实验看起来,检索长度在2.7w行时,这种检索方法只有 40% 会命中上述 PR 对应的代码文件。

上述两个检索代码的方法,只是论文中做实验的参考,实际在测试 SWE-Bench 时,各模型会有自己的方法,因为检索代码的准确性对成功率影响也很大,所以榜单上很多是 Agent + 模型 的测试结果,而不是单大模型的。

Claude 3.7 跑分的说明里提到:

SWE-bench Verified: Claude 3.7 Sonnet scores 62.3% out of 500 problems using pass@1 with bash/editor tools plus a "thinking tool" for single-attempt patches — no additional test-time compute used. 70.3% score uses internal scoring and custom scaffold on a reduced subset of problems. Scaffold Deepseek R1 results use the "Agentless" framework. OpenAI results from o3-mini system card cover a different subset of problems with a custom compute.

Claude 没有具体说明怎么做检索代码的,官方blog附录里提到在运行环境上是用了极简的方案,只提供了命令和编辑文件的能力,看起来是只把代码仓库目录扔给 LLM,让它自行去做文件搜索。另外有提到 Deepseek 的跑分是基于 Agentless 框架跑的,Agentless 专门介绍说明了如何跑 SWE-Bench,以及具体是怎么做代码检索的。见 Agentless/README_swebench.md

可以看到 SWE-Bench 测试集其实是比较局限,这里面全是 Python 代码,也基本是纯逻辑代码,不涉及 UI 渲染相关,也不涉及其他语言,很多实际的软件工程场景没有覆盖到,所以即使 benchmark 到 100%,也不代表能解决绝大多数工程问题。

不过这事是一步步推进的,SWE-Bench 刚出来时解决率是个位数,这一年多一步步提上来,Claude 3.7 干到了 70%,解决了这个 Bench,还会有更多的更高难度的 Benchmark 等着,SWE-bench Multimodal 就是其中之一,包含了一些 JS UI 渲染相关的 issue 修复 case,Claude 3.5 也只有 12% 左右的解决率,还有很长路要走。

TAU-bench

TAU-bench 又叫 τ-bench,是 Sierra 团队(OpenAI 董事会主席 Bret Taylor 和谷歌前高管 Clay Bavor 联合创立的 AI 初创公司,主要开发 AI Agent 为企业服务)推出的用于评估 AI Agent 在现实世界场景中性能和可靠性的基准测试。

TAU-bench 设计了两个领域场景

  1. Airline(航空场景),模拟用户在航空业务场景下进行航班查询、预订、改签、退票、机场服务等操作,测试大模型利用工具理解用户需求、提供准确信息、遵循业务规则流程、准确进行业务操作的能力。
  2. Retail(零售场景)模拟在零售场景中进行购物咨询、商品推荐、订单修改、退货换货等操作,同样测试在这个场景下用户需求理解能力、准确处理用户订单等相关问题的能力。

这两个场景都包含了多个复杂任务 case,涉及代理与用户的多轮对话,以及代理使用工具获取信息的能力,这些任务可以综合地评估一个 Agent 所需要的 推理、规则遵循、长期记忆、工具调用等能力。为此 TAU-bench 项目也实现了一个完整的 Agent 框架,以执行这个流程。

数据构造

以零售为例,用于测试准备的数据包含以下几个部分:

  1. 数据库:json 格式,模拟电商零售领域一些订单信息、商品属性。
  2. Tools:操作上述数据库的工具函数,包括获取订单/商品信息、修改订单、修改收货地址等。这些 Tools 信息描述会在一开始给 LLM,让 LLM 知道当前有哪些工具可调用,过程中会 LLM 会根据用户意图调用相应工具修改数据库。
  3. 策略:system prompt,写明了模拟的零售场景下一些背景,包括订单状态说明/退换规则/支付方式规则、工具调用规则等。
  4. Tasks:预先设计好的测试数据集,每个测试 case 包含 instruction 和 actions,instruction 写明了这个测试 case 里用户的诉求,actions 里包含基于这个诉求下,应该调用什么工具方法改写数据库达到目的,相当于标准答案,actions 只用于最后的验证,不会在每轮测试中作为输入。

航空领域也是同样的这几类数据,只是处理的内容变成航班、订单、用户信息管理。

测试执行

具体测试 case 执行的流程:用户 instruction + 领域策略 System Prompt + Tool 描述,一起输入 LLM,LLM 循环逐步输出用户对话、助理回复、工具调用,整个流程就是一个通用的 Agent 交互流程,跟上次说到的 OpenHands 的流程差不多,只是这里用户输入也是 LLM 根据 instruction 模拟生成的。

整个多轮对话结束后,模型在这过程中会调用工具修改数据库,同时再跑一遍测试 case 里预定的 action,看对数据库的修改跟模型在这过程中调工具的修改结果是否一致,一致则测试 case 通过,不正确就不通过。

来看一个具体的例子,这是一条测试case,包含对用户诉求描述的 instruction 和标准答案 actions:

{
    "annotator": 0,
    "user_id": "omar_rossi_1241",
    "instruction": "Your user id is omar_rossi_1241. For your upcoming trip from New York to Chicago, you want to change the passenger to yourself, upgrade it to economy class, and have 3 checked bags. You prefer gift card payment. Your birthday is in your user profile so you do not prefer to provide it. You are reactive to the agent and will not say anything that is not asked.",
    "actions": [
        {
            "name": "update_reservation_flights",
            "arguments": {
                "reservation_id": "FQ8APE",
                "cabin": "economy",
                "flights": [
                    {
                        "flight_number": "HAT056",
                        "date": "2024-05-25",
                    },
                    {
                        "flight_number": "HAT138",
                        "date": "2024-05-25",
                    },
                ],
                "payment_id": "gift_card_8190333",
            },
        },
        {
            "name": "update_reservation_passengers",
            "arguments": {
                "reservation_id": "FQ8APE",
                "passengers": [
                    {
                        "first_name": "Omar",
                        "last_name": "Rossi",
                        "dob": "1970-06-06",
                    }
                ],
            },
        },
        {
            "name": "update_reservation_baggages",
            "arguments": {
                "reservation_id": "FQ8APE",
                "total_baggages": 3,
                "nonfree_baggages": 0,
                "payment_id": "gift_card_8190333",
            },
        },
    ],
},

转化后这个case实际跟大模型交互的过程:

{"traj": [
      {
        "role": "system",
        "content": "# Airline Agent Policy\n\nThe current time is 2024-05-15 15:00:00 EST.\n\nAs an airline agent, you can help users book, modify, or cancel flight reservations.\n\n- Before taking any actions that update the booking database (booking, modifying flights, editing baggage, upgrading cabin class, or updating passenger information), you must list the action details and obtain explicit user confirmation (yes) to proceed.\n\n- You should not provide any information, knowledge, or procedures not provided by the user or available tools, or give subjective recommendations or comments.\n\n- You should only make one tool call at a time, and if you make a tool call, you should not respond to the user simultaneously. If you respond to the user, you should not make a tool call at the same time.\n\n- You should deny user requests that are against this policy.\n\n- You should transfer the user to a human agent if and only if the request cannot be handled within the scope of your actions.\n\n## Domain Basic\n\n- Each user has a profile containing user id, email, addresses, date of birth, payment methods, reservation numbers, and membership tier.\n\n- Each reservation has an reservation id, user id, trip type (one way, round trip), flights, passengers, payment methods, created time, baggages, and travel insurance information.\n\n- Each flight has a flight number, an origin, destination, scheduled departure and arrival time (local time), and for each date:\n  - If the status is "available", the flight has not taken off, available seats and prices are listed.\n  - If the status is "delayed" or "on time", the flight has not taken off, cannot be booked.\n  - If the status is "flying", the flight has taken off but not landed, cannot be booked.\n\n## Book flight\n\n- The agent must first obtain the user id, then ask for the trip type, origin, destination.\n\n- Passengers: Each reservation can have at most five passengers. The agent needs to collect the first name, last name, and date of birth for each passenger. All passengers must fly the same flights in the same cabin.\n\n- Payment: each reservation can use at most one travel certificate, at most one credit card, and at most three gift cards. The remaining amount of a travel certificate is not refundable. All payment methods must already be in user profile for safety reasons.\n\n- Checked bag allowance: If the booking user is a regular member, 0 free checked bag for each basic economy passenger, 1 free checked bag for each economy passenger, and 2 free checked bags for each business passenger. If the booking user is a silver member, 1 free checked bag for each basic economy passenger, 2 free checked bag for each economy passenger, and 3 free checked bags for each business passenger. If the booking user is a gold member, 2 free checked bag for each basic economy passenger, 3 free checked bag for each economy passenger, and 3 free checked bags for each business passenger. Each extra baggage is 50 dollars.\n\n- Travel insurance: the agent should ask if the user wants to buy the travel insurance, which is 30 dollars per passenger and enables full refund if the user needs to cancel the flight given health or weather reasons.\n\n## Modify flight\n\n- The agent must first obtain the user id and the reservation id.\n\n- Change flights: Basic economy flights cannot be modified. Other reservations can be modified without changing the origin, destination, and trip type. Some flight segments can be kept, but their prices will not be updated based on the current price. The API does not check these for the agent, so the agent must make sure the rules apply before calling the API!\n\n- Change cabin: all reservations, including basic economy, can change cabin without changing the flights. Cabin changes require the user to pay for the difference between their current cabin and the new cabin class. Cabin class must be the same across all the flights in the same reservation; changing cabin for just one flight segment is not possible.\n\n- Change baggage and insurance: The user can add but not remove checked bags. The user cannot add insurance after initial booking.\n\n- Change passengers: The user can modify passengers but cannot modify the number of passengers. This is something that even a human agent cannot assist with.\n\n- Payment: If the flights are changed, the user needs to provide one gift card or credit card for payment or refund method. The agent should ask for the payment or refund method instead.\n\n## Cancel flight\n\n- The agent must first obtain the user id, the reservation id, and the reason for cancellation (change of plan, airline cancelled flight, or other reasons)\n\n- All reservations can be cancelled within 24 hours of booking, or if the airline cancelled the flight. Otherwise, basic economy or economy flights can be cancelled only if travel insurance is bought and the condition is met, and business flights can always be cancelled. The rules are strict regardless of the membership status. The API does not check these for the agent, so the agent must make sure the rules apply before calling the API!\n\n- The agent can only cancel the whole trip that is not flown. If any of the segments are already used, the agent cannot help and transfer is needed.\n\n- The refund will go to original payment methods in 5 to 7 business days.\n\n## Refund\n\n- If the user is silver/gold member or has travel insurance or flies business, and complains about cancelled flights in a reservation, the agent can offer a certificate as a gesture after confirming the facts, with the amount being $100 times the number of passengers.\n\n- If the user is silver/gold member or has travel insurance or flies business, and complains about delayed flights in a reservation and wants to change or cancel the reservation, the agent can offer a certificate as a gesture after confirming the facts and changing or cancelling the reservation, with the amount being $50 times the number of passengers.\n\n- Do not proactively offer these unless the user complains about the situation and explicitly asks for some compensation. Do not compensate if the user is regular member and has no travel insurance and flies (basic) economy.\n"
      },
      {
        "role": "user",
        "content": "Hi! I'd like to make a few changes to my trip from New York to Chicago. Can you help me with that?"
      },
      {
        "role": "assistant",
        "content": "Of course! I can help you modify your trip. Could you please provide your user ID and the reservation ID for the trip you want to change?",
      },
      {
        "role": "user",
        "content": "Sure! My user ID is omar_rossi_1241. But I'm not sure about the reservation ID at the moment."
      },
      {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "function": {
              "arguments": "{"user_id":"omar_rossi_1241"}",
              "name": "get_user_details"
            },
            "id": "call_FXi5dyufwOlkHksVgNwVhhVB",
            "type": "function"
          }
        ]
      },
      {
        "role": "assistant",
        "content": "I found your reservations. Could you please confirm which reservation ID you'd like to modify for your trip from New York to Chicago? Here are your reservation IDs:\n\n- UM3OG5\n- 5RJ7UH\n- FQ8APE\n- QKRY03\n\nLet me know which one you'd like to modify!",
      },
      {
        "role": "user",
        "content": "I'm not entirely certain, but I believe it might be the first one, UM3OG5."
      },
      {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "function": {
              "arguments": "{"reservation_id":"UM3OG5"}",
              "name": "get_reservation_details"
            },
            "id": "call_FApEDaUHdL2hx8FNbu5UCMb8",
            "type": "function"
          }
        ]
      },
      {
        "role": "assistant",
        "content": "The reservation ID "UM3OG5" is for a round trip from Seattle (SEA) to Dallas/Fort Worth (DFW), not from New York to Chicago. \n\nCould you please check if any of the other reservation IDs match your trip from New York to Chicago? Here are the remaining reservation IDs:\n\n- 5RJ7UH\n- FQ8APE\n- QKRY03\n\nLet me know which one you'd like to modify!",
      },
      {
        "role": "user",
        "content": "In that case, I think it might be FQ8APE. Can you check that for me?"
      },
      {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "function": {
              "arguments": "{"reservation_id":"FQ8APE"}",
              "name": "get_reservation_details"
            },
            "id": "call_W507pQxieFVdAxvqONuYWvN2",
            "type": "function"
          }
        ]
      },
      {
        "content": "The reservation ID "FQ8APE" is for a one-way trip from Newark (EWR) to Chicago (ORD) with a stop in Houston (IAH). Since this reservation is in basic economy, please note that the flights cannot be modified. However, I can assist with other changes like cabin upgrades or baggage additions.\n\nPlease let me know what specific changes you would like to make to this reservation!",
        "role": "assistant"
      },
      {
        "role": "user",
        "content": "Great! I'd like to add three checked bags, change the passenger to myself, and upgrade to economy class, please."
      },
      {
        "role": "assistant",
        "content": "Here are the changes you want to make to your reservation:\n\n1. **Add three checked bags**: \n   - Since you are a gold member and upgrading to economy class, you will have 3 free checked bags, so no additional charges for the bags.\n\n2. **Change the passenger to yourself**:\n   - Current passenger: Ivan Garcia\n   - New passenger: Omar Rossi (DOB: 1970-06-06)\n\n3. **Upgrade to economy class**:\n   - Upgrade from basic economy to economy class.\n\nPlease confirm if you would like to proceed with these changes.",
      },
      {
        "role": "user",
        "content": "Yes, I'd like to proceed with those changes. And please use a gift card for any payment needed."
      },
      {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "function": {
              "arguments": "{"reservation_id": "FQ8APE", "passengers": [{"first_name": "Omar", "last_name": "Rossi", "dob": "1970-06-06"}]}",
              "name": "update_reservation_passengers"
            },
            "id": "call_jK7xz4ERk3csc9jBfroPobGs",
            "type": "function"
          }
        ]
      },
      {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "function": {
              "arguments": "{"reservation_id":"FQ8APE","cabin":"economy","flights":[{"origin":"EWR","destination":"IAH","flight_number":"HAT056","date":"2024-05-25"},{"origin":"IAH","destination":"ORD","flight_number":"HAT138","date":"2024-05-25"}],"payment_id":"gift_card_8190333"}",
              "name": "update_reservation_flights"
            },
            "id": "call_zeyT5c2EYzRvfY42X7YOKOng",
            "type": "function"
          }
        ]
      },
      {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "function": {
              "arguments": "{"reservation_id":"FQ8APE","total_baggages":3,"nonfree_baggages":0,"payment_id":"gift_card_8190333"}",
              "name": "update_reservation_baggages"
            },
            "id": "call_PA1XaKLPX8egjewaxIArCkRc",
            "type": "function"
          }
        ]
      },
      {
        "role": "assistant",
        "content": "Your reservation has been successfully updated with the following changes:\n\n1. **Passenger Change**: The passenger is now Omar Rossi.\n2. **Cabin Upgrade**: Upgraded to economy class.\n3. **Checked Baggage**: Added three checked bags, all free due to your gold membership.\n\nThe payment for the cabin upgrade was processed using your gift card. If you have any more questions or need further assistance, feel free to ask!",
        
      },
      {
        "role": "user",
        "content": "Thank you for helping with the changes! That's all for now. ###STOP###"
      }
    ],
}

在跑的过程中,可以看到大模型可以一步步理解好用户意图,调用get_reservation_details 工具获取信息,最后依次调用 update_reservation_flights、update_reservation_passengers、update_reservation_baggages,修改数据库。

执行完后,会重新加载初始状态的数据库,把 Task 里的 actions 依次执行一遍,对比最终数据库的状态是否一致,一致则说明模型这轮跑下来,调用的工具和修改的数据跟我们预期的一致,测试通过。

这里可以看到每条测试的过程和结果,可以从 Reward=1/0 看这条 case 是否通过,Claude 3.7 在零售领域问题解决率高达81%,但航空领域只有58%,细看下航空领域一些 case 涉及非常多的查询匹配航班信息、金额计算、行李/支付/退换多步操作,难度还是很大的。

Pass^k

这个测试集还定义了另一个指标:多次稳定通过的概率。因为 Agent 真正使用时,比如让它去订机票、处理退换货,如果执行失败会让人有很大的挫败感,所以它的成功率稳定性很重要,这个 benchmark 定义了pass^k 的指标,也就是对一个测试 case 连续执行 k 次,每次都成功,才能算任务成功

可以看到每个模型的稳定性都不是很好,航空领域下,Claude Sonnet 3.5 从 46% 通过率下降到pass^4 的 22.5%,也就是只对 22.5% 的问题,连续测4遍都能成功。

这跟我们目前体感也一致,Agent 还没那么可靠,并不能期望它在复杂的场景、多轮交互中很稳定地理解意图做出正确的行动。Claude 3.7 没有 pass^k 相关的指标,不确定稳定性是否有提升。

最后

上述两个 Benchmark 都是尽量在模拟真实世界的问题场景,算是模拟得比较好的了,但跟真正现实的使用方式和多样性还是有很大差距,分数只能是个参考,能大致知道模型在哪些方面表现还不好,实际在某个场景下好不好用,还得真正上手测试,实际体验上据了解 Claude 3.7 远好于 3.5,这两个 benchmark 的分数提升还不足以反应优化的程度。

[userscript] 从豆包下载无水印图片

心血来潮,做了个 从豆包下载无水印图片 的 userscript 。

没啥技术含量。

截图

snap-1

snap2-1

 

安装及使用

具体的安装和使用方式见Greasyfork脚本安装地址或Github源码仓库。

 

脚本安装地址

Greasyfork :<https://greasyfork.org/scripts/527890>,点击页面上的  安装此脚本  即可。

 

源码

Github:<https://github.com/catscarlet/Download-Origin-Image-from-Doubao-without-Watermark>

 

废话

这个算是今年第一篇文章。

其实一直没闲着,搞了一堆屁事,或者说被一堆屁事搞。

文章又积压了,压了一堆,没精力写。

 

The post [userscript] 从豆包下载无水印图片 first appeared on 石樱灯笼博客.
❌