普通视图

发现新文章,点击刷新页面。
昨天以前首页

字节Trae:小白也可以轻松上手AI编程了。

2025年4月18日 16:58

前言:AI时代,人人都能成为创造者

十年前,“编程"还是少数人的专利,如今字节跳动推出的 Trae 正在打破这一规则。这个国产 AI 工具让普通人用自然语言就能开发软件、处理数据甚至搭建网站。无论你是程序员、运营人员还是内容创作者,Trae 就像一位 24 小时待命的超级助手,把"想法变现实"的门槛降到了史无前例的低点。本文将带您全面了解 Trae 在不同场景下的应用案例。

Trae
Trae

Trae的八大应用场景与典型网站

  1. 无代码开发平台(trae.com.cn) :作为国内首个 AI 原生 IDE,这里最适合技术小白。只需像聊天一样描述需求,比如"做个图片压缩工具",Trae就能自动生成完整代码。实测中,用户仅用自然语言指令就开发出了支持本地处理、实时预览的图片压缩工具,压缩效果堪比专业软件(原图 1MB → 64KB 画质无损)。该版本搭载 DeepSeek R1 模型,中文理解能力极强。

  2. 编程学习社区(trae.ai):国际版网站汇聚了全球开发者案例,支持 Claude 3.7 和 GPT-4o 双模型。这里不仅能生成代码片段,还能通过" Chat 模式"获得编程指导。例如用户开发贪吃蛇游戏时,Trae 不仅生成代码,还解释了碰撞检测的实现原理。特别适合想进阶学习的开发者。

  3. 爆款内容创作工场 :某写作达人通过 trae.bytedance.com,结合 Claude 3.7 模型,5分钟将语音草稿改写成 VP 点赞的文章。秘诀在于建立风格模板(如卡兹克轻松文体/李尚龙情感文体),Trae 能自动匹配语气词、调整段落节奏。该站点日均产出 3000+ 篇 SEO 优化内容。

  4. 数据处理中心 :面对 612 万行的CSV文件,普通Excel直接卡死。但在 trae.ai的国际版中,用户用自然语言指令:"删除到期日期>2024年的记录,保留指定字段",Trae自动生成Python清洗代码,20分钟完成5G数据清洗。支持Pandas、Numpy等库的智能调用。

  5. 个人博客系统 :通过"搭建支持 Markdown 的响应式博客"指令,Trae 生成 Vue+ElementUI 的网站框架,并与Cloudflare 无缝对接实现免费托管。开发者@掘墓人的小铲子用它搭建了包含满减计算器、红包入口的薅羊毛网站,从开发到上线仅2天。

  6. 企业级应用开发 :国内某电商团队用Builder模式开发了包含商品管理、订单追踪的 ERP 系统。Trae自动处理了JWT鉴权、数据库连接等复杂功能,并生成API文档。该案例证明Trae已具备中大型项目开发能力。

  7. 跨学科研究助手 :科研人员通过"计算资金加权净值"指令,Trae不仅生成Python代码,还自动绘制TW-MW回报率对比图表,并添加了Matplotlib交互控件。这种"需求→代码→可视化"的一站式服务,正在改变传统研究模式。

  8. 教育实践基地 :编程教师利用 trae.com.cn 生成教学案例,比如待办清单应用的代码对比(原始 vs 优化版本)。学生通过修改 Trae 生成的注释完善代码,学习效率提升 3 倍。平台已收录 2000+ 个教学项目。

为什么选择Trae?三大核心优势

  1. 零门槛创造:从图片压缩工具到个人博客,用户全程无需接触代码。Builder模式像"需求翻译器",把自然语言转化为可执行方案。

  2. 全场景覆盖 :支持Web开发、数据处理、内容创作等8大领域,既有面向企业的API开发,也有适合个人的小红书爆文生成。

  3. 国产化优势 :国内版深度优化中文语境,在指令理解上比国外工具准确率提升37%。所有数据处理默认本地运行,杜绝隐私泄露风险。

总结:让创造回归本质

Trae正在重塑技术边界——程序员用它 10 分钟开发复杂应用,作家靠它日更万字长文,学生借助AI理解编程逻辑。这种"想法驱动开发"的模式,让每个人都能专注于创意本身。正如开发者@李海所说:"我们终于不用被困在代码语法里,而是成为真正的问题解决者。"

下载地址

国内版和海外版的界面一致,但在大模型的选择上有所不同。国内版使用字节自己的模型和DeepSeek的版本,而海外版使用ChatGPT和Claude的版本。

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

2025年3月3日 04:31

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,...

在 DeepSeek 的帮助下,我又给 WPJAM Basic 增加了几个函数!

2025年2月26日 23:21

对于程序员来说,写代码其实不难,反而最难的是给函数命名,这是困扰程序员最大的问题,很多程序员开玩笑说:编程5分钟,命名2小时。😂

比如之前网上就有一张图,反应了程序员编程的时候,具体在干嘛:

让 DeepSeek 给函数命名

首先我们先明确一下:什么样的函数名是一个好的名字呢?

好的函数命名应当简洁、清晰且易于理解,能够在不查看具体实现的情况下直观地反映出其功能和用途。

但实际上找到这样的命名并不容易,需要充分考虑变量、函数和类的功能、用途以及上下文环境,因此程序员需要花费大量时间思考如何为代码中的各个元素命名,以提高代码的可读性和可维护性。

那么如果我们让 DeepSeek 在我们给函数命名的时候,给我我们一些建议,是不是可以解决我们这个困扰呢? 或者说打开我们的思路呢?我们说干就干,首先是提示词,经过调试,下面是我的函数命名的提示词是:

我将发给你一段程序代码,你根据这段代码帮我提炼出函数的名称,函数名称的风格为下划线风格,然后函数应用于 WordPress,需要参考 WordPress 函数命名风格,并简单解释下为什么这么命名,如果可以请提供多一些选项以供选择,谢谢。

正好最近在发布 #WPJAM Basic# 新版的时候,为了方便,又增加了几个函数,比如下面,判断变量是不是闭包函数:

return $object instanceof Closure;

再来一个,如果变量回调函数,那就调用回调函数,否则就还是返回变量本生:

return $value && is_callable($value) ? $value(...$args) : $value;

如果自己也有想法,可以再在和他沟通一下:😄

WPJAM Basic 新增函数

所最后在 DeepSeek 的帮助下,WPJAM Basic 新版增加下面几个函数:

1. maybe_callback

如果变量是回调函数,则调用回调函数,否则返回变量本身:

if(!function_exists('maybe_callback')){
	function maybe_callback($value, ...$args){
		return $value && is_callable($value) ? $value(...$args) : $value;
	}
}

2. maybe_closure

类似于 maybe_callback,但是它判断是闭包函数才调用,其他一样:

if(!function_exists('maybe_closure')){
	function maybe_closure($value, ...$args){
		return $value && is_closure($value) ? $value(...$args) : $value;
	}
}

3. is_closure

怎么判断闭包函数呢?就有这个函数了:

if(!function_exists('is_closure')){
	function is_closure($object){
		return $object instanceof Closure;
	}
}

4. wpjam_pick

从对象或者数组中,根据 $keys 获取一个关联数组,类似 JS 工具库 underscore 或者 loadsh 的 _.pick 函数,如果是从数组中获取,其实和 WordPress 内置的 wp_array_slice_assoc 一样,只是命名这个更加简洁。

function wpjam_pick($arr, $keys){
	return is_object($arr) ? wpjam_array($keys, fn($i, $k)=> isset($arr->$k) ? [$k, $arr->$k] : null) : wp_array_slice_assoc($arr, $keys);
}

等我发布新版,就可以使用了!

硅谷娇妻是怎么样的? 让四个大语言模型AI来告诉你

2025年2月25日 04:22

这几天微信视频号上刷到一个在美国美女UP主(程序媛)的视频,很搞笑,于是好奇的查了一下啥是硅谷娇妻。

silicon-valley-beauty 硅谷娇妻是怎么样的? 让四个大语言模型AI来告诉你 AIGC-图片 ChatGPT (OpenAI) Claude DeepSeek Google Gemini Grok (X.AI) 人工智能 (AI)

这个美女UP主/程序媛开辟了一条新赛道

听说,在硅谷,竞争激烈。华人之间比的是谁的Offer更高,谁的级别更高,谁的妻子更年轻(“娇妻”一词也常被提及)。而女性则比的是老公的职级、收入,甚至家庭的整体实力。这种内卷不仅体现在职场,还延伸到生活的方方面面。从学区房的选择到孩子的教育资源,再到投资理财,甚至是社交圈层,硅谷的华人圈总是充满着无形的较量。这种竞争有时让人充满动力,但有时也让人不堪重负,仿佛一刻松懈就会被时代的浪潮甩在身后。

“硅谷娇妻”是一个带有调侃或刻板印象的标签,通常指向在硅谷科技行业高薪人士(如程序员、高管等)的配偶或伴侣。


只要你够努力,你的老婆还在高考。
Share on X


硅谷娇妻:让四个大语言模型AI来告诉你

我这次问了四大语言模型LLM(Large Language Model):包括 ChatGPT、Google Gemini、Anthropic Claude、还有Grok 3。感觉Claude AI生成的抽像图最好,让人眼睛一亮。我还试了DeepSeek,只不过它没法直接生成图。

我还听说,硅谷的竞争异常激烈,以至于男程序员们很难在当地找到对象。许多人选择在国内找媳妇,然后迅速结婚、办理签证,将妻子接到国外。婚后,男方往往希望女方尽快怀孕、生子,成为家庭主妇,否则可能面临被更优秀的男性“拐走”的风险。毕竟,在硅谷,女性的“溢价”更高,选择更多,这一点真假难辨,但确实是一个广为流传的现象。

与此同时,也有不少女性在硅谷站稳脚跟,依靠自身能力进入科技行业,甚至反向选择伴侣。相比国内的传统婚姻模式,硅谷的婚恋市场充满了变量,既有精打细算的现实考量,也有跨文化的碰撞和融合。

ChatGPT眼中的硅谷娇妻

chatgpt-silicon-valley-young-wives 硅谷娇妻是怎么样的? 让四个大语言模型AI来告诉你 AIGC-图片 ChatGPT (OpenAI) Claude DeepSeek Google Gemini Grok (X.AI) 人工智能 (AI)

ChatGPT画的硅谷娇妻图一眼假,就是AI图

Google Gemini眼中的硅谷娇妻

gemini-silicon-valley-young-wives 硅谷娇妻是怎么样的? 让四个大语言模型AI来告诉你 AIGC-图片 ChatGPT (OpenAI) Claude DeepSeek Google Gemini Grok (X.AI) 人工智能 (AI)

Google Gemini的也还不错,但是“几张” = 一张。

Grok 3眼中的硅谷娇妻

Elon Musk老马说Grok 3是最聪明/Smartest的AI:

grok3-silicon-valley-young-wives 硅谷娇妻是怎么样的? 让四个大语言模型AI来告诉你 AIGC-图片 ChatGPT (OpenAI) Claude DeepSeek Google Gemini Grok (X.AI) 人工智能 (AI)

Grok 3 画出来的硅谷娇妻图还可以,中规中矩,四张图,很像Mid Jounery的风格,一次给4张。

Claude眼中的硅谷娇妻

Anthropic Claude AI确实与众不同:

claude-explains-young-silicon-valley-wives 硅谷娇妻是怎么样的? 让四个大语言模型AI来告诉你 AIGC-图片 ChatGPT (OpenAI) Claude DeepSeek Google Gemini Grok (X.AI) 人工智能 (AI)

Claude AI 用文字解释硅谷娇妻

silicon-valley-wives-by-claude-ai 硅谷娇妻是怎么样的? 让四个大语言模型AI来告诉你 AIGC-图片 ChatGPT (OpenAI) Claude DeepSeek Google Gemini Grok (X.AI) 人工智能 (AI)

Claude AI画的硅谷娇妻 Silicon Valley Young Wives 的答案最好玩,有点卡通有点抽象。

DeepSeek眼中的硅谷娇妻

Deepseek无法像其它AI模型可以直接画图,这一点有待改进。

硅谷娇妻是怎么样的?画几张人像
好的,用户问的是“硅谷娇妻是怎么样的?画几张人像”。首先,我需要理解“硅谷娇妻”这个词语的具体含义。这可能是指那些居住在硅谷,配偶在科技行业工作的女性,可能带有一定的刻板印象或社会标签。接下来,我要考虑用户的需求是什么,他们可能想通过画像了解这类女性的典型特征或者社会形象。

接下来,我需要分析用户可能的深层需求。用户可能对硅谷的生活方式、社会结构或者性别角色感兴趣,或者他们可能在寻找某种文化评论或讽刺的表现。也有可能用户想创作相关的内容,需要视觉参考。

然后,我需要考虑如何将“硅谷娇妻”转化为视觉形象。这可能包括她们的穿着、职业背景、日常活动、使用的科技产品等元素。例如,她们可能穿着休闲但高端的服装,携带科技产品,出现在咖啡店、科技公司附近等场景。

同时,要注意避免刻板印象,虽然用户可能希望看到典型的形象,但也要注意多样性和尊重。可能需要描绘不同年龄、种族和风格的女性,以展示硅谷的多元文化。

另外,用户提到“画几张人像”,可能需要不同的姿势、场景和风格。例如,一个可能在咖啡馆用笔记本电脑工作,另一个可能在参加科技会议,第三个可能在家庭环境中平衡工作与家庭。

还要考虑色彩和风格的选用,硅谷常与科技、创新相关,可以使用现代、简洁的设计,颜色可能偏向中性或科技感较强的蓝色、灰色等。

最后,需要确认用户是否需要具体的艺术风格指导,比如卡通、写实、插画风等,或者是否需要强调某些特定元素,如品牌标志、科技设备等。如果用户没有明确说明,可能需要提供多种风格的建议,或者询问更多细节以更好地满足需求。

“硅谷娇妻”是一个带有调侃或刻板印象的标签,通常指向在硅谷科技行业高薪人士(如程序员、高管等)的配偶或伴侣。这一群体的形象常被简化或符号化,以下是对其特点的概括及对应的虚拟人像描述(文字版):

人像1:科技极简风
外形:30岁左右女性,穿着Lululemon瑜伽裤、宽松羊绒衫,背环保帆布包。

场景:站在Palo Alto的Blue Bottle咖啡店外,手持燕麦拿铁,低头刷手机(屏幕显示投资App或名校家长群消息)。

细节:手腕戴Apple Watch,戒指叠戴(婚戒+Tiffany微笑项链),脚踩Allbirds运动鞋,背景是特斯拉Cybertruck。

人像2:精英教育妈妈
外形:亚裔女性,剪裁利落的Theory西装外套,内搭白色T恤,妆容淡雅。

场景:在私立学校门口接孩子,车内仪表盘显示自动驾驶模式开启,副驾放着斯坦福夏令营宣传单。

细节:手机正在Zoom会议(远程公益组织或创业项目),车后窗贴着“My Child is an Honor Student”贴纸。

人像3:跨界投资人
外形:金发白人女性,穿Everlane基础款高领毛衣,搭配珍珠耳钉,发型随意扎成低马尾。

场景:在Atherton豪宅后院,桌上摆着冷压果汁和《原则》《精益创业》书籍,笔记本电脑显示天使投资平台页面。

细节:背景可见太阳能板、特斯拉充电桩,墙角堆着儿童STEM玩具,暗示“兼顾家庭与事业”的人设。

标签化特征总结:
消费符号:健康轻食、环保品牌、科技产品堆叠身份认同。

社交属性:教育内卷、房产投资、隐性阶层竞争。

矛盾性:既标榜“独立女性”,又依赖配偶资源;追求极简生活,却深陷消费主义。

注意:这类形象本质是对某一群体的夸张概括,现实中硅谷家庭结构多元,应避免以偏概全。创作时可加入反讽或解构元素,平衡幽默与批判视角。

画几张硅谷娇妻人像图
好的,用户之前问过关于“硅谷娇妻”的定义和文字描述的人像,现在直接要求画出几张人像图。我需要考虑他们为什么需要图像,可能的用途是什么?可能是用于展示、教学,或者个人兴趣。用户可能没有绘画工具,或者希望得到一些设计上的指导。

用户之前的提问已经得到了详细的文字描述,现在需要视觉呈现。我需要确认用户是否具备绘画能力,或者是否需要推荐工具或方法。但根据问题,用户可能希望得到具体的绘图建议或步骤,或者生成图像的方法。

考虑到用户可能没有专业设计软件,我应该推荐一些易于使用的工具,比如Canva、Procreate,或者AI绘图工具如MidJourney。同时,可能需要提醒用户注意避免刻板印象,保持多样性,毕竟之前提到过避免以偏概全。

另外,用户可能需要一些风格上的建议,比如插画、现代简约风或幽默夸张风格,来更好地表现人物特点。需要详细说明每个形象的关键元素,确保用户能准确传达所需的特征,比如科技极简风中的特斯拉和Apple Watch,精英教育妈妈的斯坦福夏令营传单等。

还要注意版权问题,建议使用原创或免版税的素材。最后,可能需要总结设计时的注意事项,比如平衡幽默与真实,避免刻板印象,突出细节等,帮助用户在创作时保持敏感和尊重。

由于我无法直接生成图像,但我可以提供详细的视觉设计思路和元素参考,帮助你或设计师创作“硅谷娇妻”主题的人像插画。以下是具体分镜和风格建议:

风格选择建议
扁平插画风:用简洁色块、低饱和度配色(莫兰迪色系),突出科技感和中产审美。

幽默夸张元素:放大标志性符号(如巨型特斯拉车标、浮夸的斯坦福贴纸),增加反讽效果。

细节彩蛋:在画面角落隐藏硅谷文化梗(如“996咖啡杯”“IPO倒计时手机壳”)。

人像1:科技极简极繁主义者
关键元素:

服装:Lululemon瑜伽裤 + Patagonia抓绒外套 + Allbirds运动鞋。

道具:左手举着燕麦拿铁,右手滑动iPad(屏幕显示股票K线图)。

背景:Whole Foods超市入口,购物车里有有机蔬菜和一瓶$200小众护肤油。

细节:AirPods耳机半戴,Apple Watch表盘显示“站立时间不足警告”。

人像2:私校妈妈的多线程人生
关键元素:

场景:私立学校停车场,妈妈同时操作三台手机:

手机A:PTA(家长会)群讨论捐款盖新实验室。

手机B:房产中介发来的Atherton豪宅链接。

手机C:微信家长群吐槽“爬藤教练收费$500/小时”。

穿搭:Tory Burch托特包 + 梵克雅宝四叶草项链 + 谷歌园区访客牌。

背景彩蛋:车窗反射出她疲惫翻白眼的瞬间,车尾贴着“Baby on Board & IPO in Progress”。

人像3:生活博主与天使投资人
关键元素:

主画面:在自家智能厨房拍摄Vlog,标题《硅谷主妇的晨间流程:5点健身7点路演》。

道具:料理台上摆着Bulletproof防弹咖啡、代餐Soylent、VC名片(红杉/Andreessen Horowitz)。

隐藏冲突:镜框边缘露出没收拾的儿童玩具和扫地机器人故障提示。

服装:Glossier素颜妆 + Aritzia家居服,戴Oura健康监测戒指。

工具与实现方法
AI绘图提示词(适用于Midjourney/DALL·E):

例:A stylish Asian woman in Lululemon yoga pants, holding a Blue Bottle coffee cup and iPhone with stock app interface, Tesla Cybertruck in background, flat vector illustration, pastel colors –v 5.2

手绘/设计工具:

Procreate/Photoshop:用钢笔工具勾轮廓,叠加纹理纸质感。

Canva:利用“简约人物”模板修改配色和道具。

版权规避:避免直接使用品牌Logo,用抽象化设计(如水果替代Apple标志)。

注意事项
避免刻板印象:通过添加反转细节(如“娇妻” secretly coding),打破单一叙事。

文化敏感性:平衡讽刺与尊重,避免针对特定族裔(如亚裔虎妈标签)。

地域特征:加入硅谷地标(金门大桥彩蛋、101公路堵车场景)。

如果需要更具体的分镜或构图草稿,可以描述某个场景,我会进一步细化设计逻辑! 🎨

阿里的千问/Qwen2.5-Max 眼中的硅谷娇妻

Qwen2.5-Max和DeepSeek一样,无法像其它AI模型可以直接画图,这一点有待改进。

“硅谷娇妻”并不是一个具体的人物,而是一个泛指的概念,通常用来形容生活在硅谷地区、家庭条件优越的女性。这类形象可能带有一定的刻板印象,比如她们可能是科技公司高管的妻子、创业者、或者本身就是成功的职场女性。她们通常被描绘为时尚、独立、有学识、注重生活品质,并且对科技和创新文化有一定了解。

由于我无法直接绘制图像,但我可以用文字描述几种典型的“硅谷娇妻”形象,帮助你更好地理解这个概念。如果你需要画出来,可以参考以下描述:

形象1:科技精英型
外貌特征 :干练短发或优雅的波浪长发,穿着简约但高级的职业装(如剪裁得体的西装外套搭配高跟鞋),佩戴智能手表或最新款的苹果产品。
背景环境 :站在一家高科技公司的玻璃幕墙前,手里拿着一杯星巴克咖啡,旁边是一辆特斯拉Model 3。
表情神态 :自信而专注,似乎正在处理工作邮件或与团队讨论项目。
形象2:创业先锋型
外貌特征 :休闲中带点时尚感,比如穿一件宽松的针织毛衣搭配牛仔裤,脚踩一双运动鞋。背着一款设计师品牌的托特包,里面装着笔记本电脑和平板。
背景环境 :坐在一家充满工业风装修的咖啡馆里,桌上散落着商业计划书和一杯冷萃咖啡。窗外可以看到硅谷标志性的棕榈树。
表情神态 :略显疲惫但眼神坚定,仿佛刚刚结束一场重要的投资人会议。
形象3:家庭主妇型
外貌特征 :精致的妆容,柔顺的长发披肩,穿着轻奢风格的连衣裙,搭配珍珠耳环和名牌手袋。
背景环境 :在一处豪华别墅的花园中,周围是修剪整齐的草坪和盛开的玫瑰花丛。她正微笑着陪伴孩子玩耍,同时用手机查看最新的股市动态。
表情神态 :温柔又从容,展现出一种平衡事业与家庭的生活态度。
形象4:健身达人型
外貌特征 :身材匀称,穿着专业的瑜伽服或跑步装备,头戴棒球帽,手腕上戴着Fitbit或Apple Watch。
背景环境 :在阳光明媚的早晨,沿着硅谷的山间小路慢跑,远处隐约可见旧金山的金门大桥。
表情神态 :健康活力,脸上带着轻松愉悦的笑容。
这些形象只是基于刻板印象的艺术化描述,并不能代表所有硅谷女性的真实生活状态。事实上,硅谷的女性来自不同的背景,拥有各自独特的故事和个性。如果要将这些形象画出来,建议结合现代插画风格,比如扁平化设计、水彩渲染或写实素描,以突出人物的特点和氛围感。

希望这些描述能激发你的创作灵感!如果有其他问题,欢迎随时提问~

画几张图

profile
Qwen2.5-Max
很遗憾,我目前无法直接生成或绘制图像。不过,我可以为你提供一些具体的指导和建议,帮助你自己绘制“硅谷娇妻”的形象,或者通过其他工具(如AI绘图软件、插画程序)来实现你的想法。

如果你希望使用AI绘图工具(例如MidJourney、DALL·E或Stable Diffusion),可以尝试输入以下提示词(prompts)来生成图像:

提示词1:科技精英型
Prompt :
“A confident and stylish woman in her 30s, wearing a tailored blazer and high heels, holding a smartphone with a Tesla car in the background. Modern office setting with glass walls, clean design, professional look, vibrant colors, photorealistic style.”

提示词2:创业先锋型
Prompt :
“A young female entrepreneur in casual chic attire, sitting at a trendy industrial-style coffee shop, working on a laptop, surrounded by business plans and a cup of cold brew coffee. Warm lighting, natural textures, relaxed yet determined expression, cinematic composition.”

提示词3:家庭主妇型
Prompt :
“Elegant woman in her late 30s, dressed in a luxurious dress, wearing pearl earrings, standing in a beautiful garden with roses and green lawns. A luxury mansion in the background, smiling gently while interacting with children, soft pastel tones, realistic painting style.”

提示词4:健身达人型
Prompt :
“Fit and energetic woman in athletic wear, running on a scenic trail in Silicon Valley, wearing a baseball cap and fitness tracker, early morning sunlight casting golden hues, distant view of the Golden Gate Bridge, dynamic pose, vibrant and healthy aesthetic.”

如果你想自己手绘:
构图设计 :先确定人物的姿态和背景环境,比如站立、坐着还是运动中的动态。
服装细节 :根据不同的类型选择合适的服饰,注意体现硅谷的现代感和科技氛围。
色彩搭配 :使用明亮、干净的色调,例如白色、灰色、蓝色等,突出简洁高级的感觉。
表情刻画 :根据不同角色的性格特点,描绘出自信、专注、温柔或活力的表情。
如果你有绘画基础,可以参考上述描述一步步完成作品!如果需要进一步的帮助,请随时告诉我,我会尽力为你提供建议~

ChatGPT 可以拿来做什么?

ChatGPT 通用人工智能

Grok 3

本文一共 4277 个汉字, 你数一下对不对.
硅谷娇妻是怎么样的? 让四个大语言模型AI来告诉你. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 硅谷娇妻是怎么样的? 让四个大语言模型AI来告诉你 AIGC-图片 ChatGPT (OpenAI) Claude DeepSeek Google Gemini Grok (X.AI) 人工智能 (AI)
The post 硅谷娇妻是怎么样的? 让四个大语言模型AI来告诉你 first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  2. 锅中的爱马仕: 法国锅 Le Creuset 今年黑五,媳妇入了三个锅,打折后,一个锅平均200英镑。我第一次才知道法国锅 Le Creuset这个牌子,感觉一个锅搞得这么贵多多少少有点噱头,就和名牌包包一样。 这个锅这么贵,得弄个开光仪式。据说最好不要放在洗碗机里,因为可能把锅的那层保护膜搞坏。 Le Creuset 是一家源自法国的高端厨具品牌,创立于1925年,以其优质的铸铁锅和搪瓷锅闻名于世。品牌的诞生地位于法国北部的小镇 Fresnoy-le-Grand,由两位比利时企业家创立。Le Creuset 的首款产品是一只标志性的橙色圆形法式炖锅,其设计灵感来源于熔融铁的颜色,这种颜色也成为品牌的象征之一。此后,Le Creuset 凭借卓越的工艺和经典设计,逐渐在全球范围内赢得了消费者的喜爱,成为许多厨房的必备之选。 Le Creuset 的产品以其铸铁材质和搪瓷涂层而著称。铸铁锅具备优异的热传导和保温性能,适合长时间炖煮、焖炖等烹饪方式,搪瓷涂层则提供了防粘效果,且易于清洁和保养。除此之外,Le...
  3. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  4. 你要找什么样的老婆? 找媳妇的标准 昨天和网友在剑桥面基, 网友奔现, 他从爱尔兰过来, 小我12岁, 就聊到了找对象的标准. TLDR; 找老婆不要(只)看颜值, 而要注重性格, 为人处事和顾家等更重要的品质, 当然性和谐也很重要. 在当今社会, 人们对于找伴侣的标准有所不同. 有些人认为颜值是最重要的, 因为外貌吸引力可以让人在日常生活中感到愉悦, 这是人的本性,...
  5. 送值400 英镑的Google Adwords广告代金券 很久之前, 我用过 Google AdWords, 当时也是拿着免费送的 Credit, 但由于某些原因, 就没继续再用下去. 这次谷歌又发邮件送了400英镑的广告点券/代金券, 如果您想要获得 400 英镑的 Google AdWords 信用额度试用这个Google...
  6. 密码或IP地址保护 WordPress 博客的 wp-admin 目录(并且允许 admin-ajax.php) wp-admin 文件夹是 wordpress 安装中最重要的文件夹. 它主要包含控制仪表板 Dashboard 等代码. 有一个重要的文件 admin-ajax.php 在正常的博客功能中也需要被用到, 所以单纯的屏蔽整个 wp-admin 也许会损坏一些正常的功能. 最近几天, 我收到了一些邮件警报,...
  7. 单反照片拍出来模糊的几个原因 单反照片拍模糊的原因可能包括以下几种:首先是对焦问题,比如对焦点没有对准主体或使用了错误的对焦模式。其次是快门速度太慢,导致拍摄时手抖或被拍摄对象移动,出现运动模糊。此外,镜头或者传感器可能有污渍,影响画质。最后,如果光圈过大(如F1.4、F1.8),景深太浅也可能导致部分画面失焦。解决这些问题,可以检查对焦设置,合理调整快门速度、光圈大小,并保持镜头和相机的清洁。 经常单反照出来的照片是糊的, 还好现在电子技术很强大 可以照很多张 糊的就删掉就可以, 不会增加照片处理的成本 (不用洗出来 再挑). 一般来说 单反照出来糊的有几个原因: 快门速度过慢 slow shutter speed 单反的安全速度是焦距的倒数,...
  8. ChatGPT-4 使用 Math Wolfram 插件解决数学脑筋急转弯问题 这篇文章, 我们看一个简单的数学问题(脑筋急转弯), 并用 Python 解决它. 我们看一下LLM(大型语言模型): ChatGPT3.5和ChatGPT4. 通过 ChatGPT-Plus 订阅(目前每月 20 美元 + VAT增值税), 我们可以启用...

投机取巧,还是按部就班?

2025年2月24日 11:04

近几年,各种大模型的爆发,导致给人造成了一种错觉,那就是似乎 ai 已经无所不能了什么都能干。尤其是过年这段时间 deepseek 的各种宣传,至于这个,其实之前的文章中也提过这个问题,蛮有一种一种世界无敌的感觉。

周末的时候在家折腾 faceswap,实在不限安装 anaconda 了,这个东西笨重的要命。主要是占了太多的磁盘空间,本来想用 python 的 venv 来安装依赖,但是直接报错了,看官方文档的手工安装,用的依然是congda,那既然是 conda,那么 mini conda 是不是一样可以用。直接扔到 ai 里面去问,对于这种比较基础的安装,基本给出的脚本或者命令不会有太大的问题:

至于在 faceswap 中启动相应的环境,其实 conda 在执行之后会给出一步步的下一步操作指引,这个的确是比较方便。

(base) PS C:\Users\obaby> e:
(base) PS E:\> cd E:\faceswap\faceswap
(base) PS E:\faceswap\faceswap> conda create --name conda_env python=3.10
Channels:
 - defaults
Platform: win-64
Collecting package metadata (repodata.json): done
Solving environment: done

## Package Plan ##

  environment location: C:\Users\obaby\.conda\envs\conda_env

  added / updated specs:
    - python=3.10


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    xz-5.6.4                   |       h4754444_1         280 KB
    ------------------------------------------------------------
                                           Total:         280 KB

The following NEW packages will be INSTALLED:

  bzip2              pkgs/main/win-64::bzip2-1.0.8-h2bbff1b_6
  ca-certificates    pkgs/main/win-64::ca-certificates-2024.12.31-haa95532_0
  libffi             pkgs/main/win-64::libffi-3.4.4-hd77b12b_1
  openssl            pkgs/main/win-64::openssl-3.0.15-h827c3e9_0
  pip                pkgs/main/win-64::pip-25.0-py310haa95532_0
  python             pkgs/main/win-64::python-3.10.16-h4607a30_1
  setuptools         pkgs/main/win-64::setuptools-75.8.0-py310haa95532_0
  sqlite             pkgs/main/win-64::sqlite-3.45.3-h2bbff1b_0
  tk                 pkgs/main/win-64::tk-8.6.14-h0416ee5_0
  tzdata             pkgs/main/noarch::tzdata-2025a-h04d1e81_0
  vc                 pkgs/main/win-64::vc-14.42-haa95532_4
  vs2015_runtime     pkgs/main/win-64::vs2015_runtime-14.42.34433-he0abc0d_4
  wheel              pkgs/main/win-64::wheel-0.45.1-py310haa95532_0
  xz                 pkgs/main/win-64::xz-5.6.4-h4754444_1
  zlib               pkgs/main/win-64::zlib-1.2.13-h8cc25b3_1


Proceed ([y]/n)? y


Downloading and Extracting Packages:

Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate conda_env
#
# To deactivate an active environment, use
#
#     $ conda deactivate

(base) PS E:\faceswap\faceswap> conda activate conda_env
(conda_env) PS E:\faceswap\faceswap> python .\setup.py
E:\faceswap\faceswap\setup.py:18: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  from pkg_resources import parse_requirements
INFO     Running without root/admin privileges
INFO     The tool provides tips for installation and installs required python packages
INFO     Setup in Windows 10
INFO     Installed Python: 3.10.16 64bit
INFO     Running in Conda
INFO     Running in a Virtual Environment
INFO     Encoding: cp936
INFO     Installed pip: 25.0
INFO     DirectML support:
         If you are using an AMD or Intel GPU, then select 'yes'.
         Nvidia users should answer 'no'.
Enable DirectML Support? [y/N] n
Enable  Docker? [y/N] n
INFO     Docker Disabled
Enable  CUDA? [Y/n] y
INFO     CUDA Enabled
INFO     Skipping Cuda/cuDNN checks for Conda install
INFO     Skipping ROCm checks as not enabled
INFO     1. Install PIP requirements
         You may want to execute `chcp 65001` in cmd line
         to fix Unicode issues on Windows when installing dependencies
INFO     Faceswap config written to: E:\faceswap\faceswap\config\.faceswap
INFO     Adding conda required package 'zlib-wapi' for backend 'nvidia')
INFO     Adding conda required package '['cudatoolkit>=11.2,<11.3', 'cudnn>=8.1,<8.2']' for backend 'nvidia')
Please ensure your System Dependencies are met
Continue? [y/N] y
INFO     Installing Required Python Packages. This may take some time...
INFO     Installing pywinpty==2.0.2
   winpty-0.4.3         | 678 KB    | ███████████████████████████████████ | 100%
INFO     Installing Required Conda Packages. This may take some time...██ | 100%
INFO     Installing git
   git-2.45.2           | 91.7 MB   | ███████████████████████████████████ | 100%
INFO     Installing zlib-wapi
   openssl-3.1.0        | 7.1 MB    | ███████████████████████████████████ | 100%
   ucrt-10.0.22621.0    | 547 KB    | ███████████████████████████████████ | 100%
   ca-certificates-2025 | 155 KB    | ███████████████████████████████████ | 100%
   zlib-1.2.13          | 113 KB    | ███████████████████████████████████ | 100%
   libzlib-1.2.13       | 70 KB     | ███████████████████████████████████ | 100%
   libzlib-wapi-1.2.13  | 60 KB     | ███████████████████████████████████ | 100%
   zlib-wapi-1.2.13     | 33 KB     | ███████████████████████████████████ | 100%
INFO     Installing cudatoolkit>=11.2,<11.3 cudnn>=8.1,<8.2
WARNING  Couldn't install ['"cudatoolkit>=11.2,<11.3"', '"cudnn>=8.1,<8.2"'] with Conda. Please install this package manually
INFO     Installing tqdm>=4.65
INFO     tqdm>=4.65 not available in Conda. Installing with pip
INFO     Installing tqdm>=4.65
INFO     Installing psutil>=5.9.0
INFO     psutil>=5.9.0 not available in Conda. Installing with pip
INFO     Installing psutil>=5.9.0
INFO     Installing numexpr>=2.8.7
INFO     numexpr>=2.8.7 not available in Conda. Installing with pip
INFO     Installing numexpr>=2.8.7
   numpy-2.2.3          | 12.9 MB   | ███████████████████████████████████ | 100%
INFO     Installing numpy<2.0.0,>=1.26.0
INFO     numpy<2.0.0,>=1.26.0 not available in Conda. Installing with pip
INFO     Installing numpy<2.0.0,>=1.26.0
   numpy-1.26.4         | 15.8 MB   | ███████████████████████████████████ | 100%
INFO     Installing opencv-python>=4.9.0.0
INFO     opencv-python>=4.9.0.0 not available in Conda. Installing with pip
INFO     Installing opencv-python>=4.9.0.0
   opencv_python-4.11.0.| 39.5 MB   | ███████████████████████████████████ | 100%
INFO     Installing pillow>=9.4.0,<10.0.0
INFO     pillow>=9.4.0,<10.0.0 not available in Conda. Installing with pip
INFO     Installing pillow>=9.4.0,<10.0.0
   Pillow-9.5.0         | 2.5 MB    | ███████████████████████████████████ | 100%
INFO     Installing scikit-learn>=1.3.0
INFO     scikit-learn>=1.3.0 not available in Conda. Installing with pip
INFO     Installing scikit-learn>=1.3.0
   scikit_learn-1.6.1   | 11.1 MB   | ███████████████████████████████████ | 100%
   scipy-1.15.2         | 41.2 MB   | ███████████████████████████████████ | 100%
INFO     Installing fastcluster>=1.2.6
INFO     fastcluster>=1.2.6 not available in Conda. Installing with pip
INFO     Installing fastcluster>=1.2.6
INFO     Installing matplotlib>=3.8.0
INFO     matplotlib>=3.8.0 not available in Conda. Installing with pip
INFO     Installing matplotlib>=3.8.0
   matplotlib-3.10.0    | 8.0 MB    | ███████████████████████████████████ | 100%
   fonttools-4.56.0     | 2.2 MB    | ███████████████████████████████████ | 100%
INFO     Installing imageio>=2.33.1
INFO     imageio>=2.33.1 not available in Conda. Installing with pip
INFO     Installing imageio>=2.33.1
INFO     Installing imageio-ffmpeg>=0.4.9
   imageio_ffmpeg-0.6.0 | 31.2 MB   | ███████████████████████████████████ | 100%
INFO     Installing ffmpy>=0.3.0
INFO     ffmpy>=0.3.0 not available in Conda. Installing with pip
INFO     Installing ffmpy>=0.3.0
INFO     Installing pywin32>=305
INFO     pywin32>=305 not available in Conda. Installing with pip
INFO     Installing pywin32>=305
   pywin32-308          | 6.6 MB    | ███████████████████████████████████ | 100%
INFO     Installing nvidia-ml-py>=12.535,<300
INFO     nvidia-ml-py>=12.535,<300 not available in Conda. Installing with pip
INFO     Installing nvidia-ml-py>=12.535,<300
INFO     Installing tensorflow<2.11.0,>=2.10.0
   tensorflow-2.10.1    | 455.9 MB  | ███████████████████████████████████ | 100%
   grpcio-1.70.0        | 4.3 MB    | ███████████████████████████████████ | 100%
   h5py-3.13.0          | 3.0 MB    | ███████████████████████████████████ | 100%
   keras-2.10.0         | 1.7 MB    | ███████████████████████████████████ | 100%
   libclang-18.1.1      | 26.4 MB   | ███████████████████████████████████ | 100%
   protobuf-3.19.6      | 895.7 kB  | ███████████████████████████████████ | 100%
   tensorboard-2.10.1   | 5.9 MB    | ███████████████████████████████████ | 100%
   tensorflow_io_gcs_fil| 1.5 MB    | ███████████████████████████████████ | 100%
   tensorboard_plugin_wi| 781.3 kB  | ███████████████████████████████████ | 100%
INFO     All python3 dependencies are met.
         You are good to go.

         Enter:  'python faceswap.py -h' to see the options
                 'python faceswap.py gui' to launch the GUI
(conda_env) PS E:\faceswap\faceswap> python faceswap.py gui
Setting Faceswap backend to NVIDIA
02/23/2025 20:23:01 INFO     Log level set to: INFO
02/23/2025 20:23:04 INFO     generated new fontManager

然而,对于一些其他的问题,尤其是代码类的,给出的代码并不是总是 ok 的,不管是国内的还是国外的,这也是为什么自己直到周末才配置了一个工来集成各种 ai引擎。

最近还是在研究时序数据库,influxdb,针对这个数据库的查询,不管是 ide 插件还是国内的引擎,给出的代码都没有解决一个问题,那就是时间格式:

通义千问(通义灵码):

deepseek:

给出的代码,对于时间格式化都是一致的:

|> range(start: {start_time.isoformat()}, stop: {end_time.isoformat()})

那么问题来着,这行代码是错误的,运行汇报下面的错误:

influxdb_client.rest.ApiException: (400)
Reason: Bad Request
HTTP response headers: HTTPHeaderDict({'Content-Type': 'application/json; charset=utf-8', 'Vary': 'Accept-Encoding', 'X-Influxdb-Build': 'OSS', 'X-Influxdb-Version': 'v2.7.11', 'X-Platform-Error-Code': 'invalid', 'Date': 'Mon, 24 Feb 2025 02:55:32 GMT', 'Transfer-Encoding': 'chunked'})
HTTP response body: b'{"code":"invalid","message":"compilation failed: error @2:9-3:60: expected comma in property list, got COLON\\n\\nerror @2:9-3:60: expected RPAREN, got EOF\\n\\nerror @2:50-2:54: invalid expression @2:48-2:49: ,\\n\\nerror @2:54-3:60: missing property key\\n\\nerror @3:6-3:8: invalid expression: invalid token for primary expression: PIPE_FORWARD\\n\\nerror @3:9-3:15: invalid expression @2:82-2:83: )"}'

不管是谁给的代码都是这个错误,这个已经在之前写明了 infulx v2 版本,ai 给的查询代码也是基于 v2 的。

如果说是之前,我可能会先去了解下 infulx 的查询语法,甚至相关的文档,这叫做按部就班的做法。

然而,现在有了个红 ai 引擎之后,我希望 ai 直接给我代码,告诉我这些代码是干嘛的。现在看来,ai 给出的代码,验证陈本还是蛮高的,尤其是自己不懂相关语言的时候。

来看看llama3 给出的代码:

这种 TZ 格式的时间才是正确的时间参数,因为本身数据是市区敏感的。基于上面的时间格式代码是可以正常查询的:

from influxdb_client import InfluxDBClient, Point
from influxdb_client.client.write_api import SYNCHRONOUS

# InfluxDB 2.0 的 URL、令牌和组织
url = "http://localhost:8086"
token = "你的令牌"
org = "你的组织"

# 创建 InfluxDB 客户端
client = InfluxDBClient(url=url, token=token)

# 创建写入 API(这里实际上是为了演示,查询不需要写入 API)
write_api = client.write_api(write_options=SYNCHRONOUS)

# 查询特定 device_id 在某个时间范围内的数据
query_api = client.query_api()

# 设定查询条件
device_id = "你的设备 ID"
start_time = "2023-01-01T00:00:00Z"
end_time = "2023-01-01T23:59:59Z"

# 查询语句
query = f"""
    from(bucket: "你的 bucket 名称")
    |> range(start: {start_time}, stop: {end_time})
    |> filter(fn: (r) => r._field == "temperature" or r._field == "humidity" or r._field == "health_level" or r._field == "device_state" or r._field == "ua")
    |> filter(fn: (r) => r.device_id == "{device_id}")
"""

# 执行查询
result = query_api.query(org=org, query=query)

# 处理结果
results = []
for table in result:
    for record in table.records:
        results.append((record.get_field(), record.get_value()))

# 打印结果
for result in results:
    print(result)

# 关闭客户端
client.close()

所以,当 国内的 ai 给的结论都一样的时候,并且跑不动的时候,不妨换国外的试试,其实,对于国内的代码质量偏低,一个显著的原因在于国内的文章原创度太低了,一篇文章不加验证的复制粘贴,就导致这些复制粘贴来的垃圾数据被扔到了 ai 训练数据内。而国内的 ai 模型,看来训练数据基本差别也不大,尤其是代码类的。

喂的垃圾,自然也难拉出什么好屎。

用 ai 写代码这件事情,可以懒,但是不能真菜!

怎么用好 DeepSeek?这里有 60 多款集成 DeepSeek 的应用!

2025年2月21日 23:38

大家对 DeepSeek 的理解就是对话,问它一个问题,它解答你,然后呢?很多人就没有然后了,其实已经很多第三方应用集成了 DeepSeek,用好这些集成 DeepSeek 第三方,拓展自己使用 AI 场景,提高工作和学习的效率。

为了方便在公众号展示,我在文章中使用图片展示了,下载链接统一在文章末尾展示,你也可以直接拉到末尾复制链接去下载。

使用这些第三方应用,需要用到 DeepSeek 的 API key,登录 DeepSeek 开放平台获取即可,一般充值 10 员就可以用很久。

应用推荐

浏览器插件

即时通讯插件

AI Agent 框架

RAG 框架

编程插件

统一获取地址:https://github.com/deepseek-ai/awesome-deepseek-integration

微信「AI 搜索」的快速回答和深度思考分别用的是什么模型?有什么区别?

2025年2月19日 23:46

前些天,微信搜一搜上线「AI 搜索」功能,并且接入 DeepSeek 模型!这些天基本已经成为了我手机上 AI 工具的首选了,毕竟能在微信上解决问题,又合并要多下载一个 APP 呢?

在使用的时候,大家肯定都发现了,微信的 AI 搜索功能提供了两个模式「快速回答」和「深度思考」:

我一开始以为快速回答是使用腾讯自家的「混元」模型,而深度思考则使用 DeepSeek-R1 模型,事实是这样吗?然后使用他们又有什么不同呢?

我就把这个问题直接扔给微信的「AI 搜索」:

微信搜一搜的Al搜索的快速回答和深度思考,分别用的是什么模型,有什么区别?

先用快速回答看看:

确实比较简单,但是好像没有详细回答到我们的问题,没有我们要的点,那就切换到深度思考模式吧,答案立刻就变得非常长了,首先是它的思考过程:

从微信「AI 搜素」深度思考的回答来看:快速回答和深度思考两种模式均基于DeepSeek-R1模型

然后它从「模型与功能定位」、「技术差异」、「用户体验」和「应用场景」四个方面对两种模式的区别做了详细的介绍:

最后总结是两者共享同一模型(DeepSeek-R1,为啥自家的混元模型不用呢???),他们之间最大的区别:快速回答追求效率,深度思考侧重深度。

最后的最后,你用上了微信的「AI 搜索」功能了吗?我现在是期望桌面客户端也赶快上线,这样我就可以在写代码的时候也可以快速用上了。

微信上线「AI 搜索」功能,并且接入 DeepSeek 模型!

2025年2月19日 23:46

腾讯元宝在接入 DeepSeek-R1 满血版之后,微信也开始接入 AI 大模型了,在搜索界面提供了「AI 搜索」的入口 ,本来微信就是最适合 AI 的场景,本身他就是一个聊天工具,接入一个 AI 助理水到渠成的事情。

不过微信还是比较谨慎,首先该功能还是在灰度测试中,可能部分幸运的用户才能看到,另外微信只在搜索中接入,并且在点击搜索框之后,才出现「AI 搜索」按钮:

点击该按钮进入「AI搜索」界面:

默认是「快速回复」,估计是使用腾讯自研的混元模型,然后可以切换到 DeepSeep 的「深度思考-R1」模型:

我简单问了下:

再多问一句,它也和 DeepSeep 一样,服务繁忙,请稍后再试!😅 看来刚开放,用的人太多了,看看明天上班之后能否恢复过来。😁

DeepSeek 在自然语言处理上的优势能提升微信搜索的精准度,并且结合公众号内容可以提供相比起其他平台更有竞争力的个性化答案,此外 DeepSeek 的开源属性与微信生态契合,期待微信的可以提供一些基于此提供一些开放接口,未来也可拓展智能客服等场景。

腾讯元宝接入 DeepSeek-R1 满血版,并且支持联网搜索!

2025年2月13日 23:03

最近 DeepSeek 老是服务器繁忙,这之前也分享了三个替代方法。现在也有新的方法了,腾讯元宝也接入 DeepSeek-R1 满血版,并且支持联网搜索。

打开腾讯元宝的网页:https://yuanbao.tencent.com/

大模型选择 DeepSeek R1,还可以开启联网搜索,试一下:「国内最强的 WordPress 个人开发者是?」

他引用了 5 篇资料作为参考,我点击了一下,前面三篇公众号文章,其中第一篇是本公众号的文章「给大家装个大的:我做的 WordPress 项目」,看来在自己公众号吹下牛,还是有好处的。

最后他的回复:

看来还是非常准确的,至少我是这样认为的。😁

除了网页版之后,腾讯元宝的 APP 也支持 DeepSeek,在应用搜索搜索「腾讯元宝」即可获取。

为何 DeepSeek 没有别人用得好,因为他们有官方提示库!

2025年2月13日 22:34

最近大家在使用 DeepSeek 的时候,感觉没有自己用起来有点不太对,怎么说呢,网上的人怎么用起来那么好,自己用就感觉没有那么好,是姿势不对,还是缺少点什么?

其实就是没有让 DeepSeek 完全了解到你的需求,就像人和人之间沟通交流一样,首先要理解别人的需求,才能够做出正确的回应,AI 再聪明,首先也得要知道你的需求。

那么如何让 AI 读懂用户的需求呢,这就需要说到提示词,简单的说,提示词就是事先给定 AI 规则和框架,让 DeepSeek 按照指定的逻辑进行推理,然后给出答案。

那么接下来的问题就变成了怎么写 DeepSeek 的提示词呢?其实完全不用担心,DeepSeek 官方提供了一个提示词库,先仔细学习一下,照着写一些,慢慢你就能成为 DeepSeek 使用大师了。

直接来,DeepSeek 官方提示词网址是:

https://api-docs.deepseek.com/zh-cn/prompt-library/

目前官方提示词库一共有 13 个:

非常好,特别前面三个就是代码相关的,特别符合程序员使用。简单点,我们就先看看「代码解释」这个提示词怎么写,点开之后:

其实非常简单,就是一句话「请解释下面这段代码的逻辑,并说明完成了什么功能:」,然后附上代码即可。

那么就来试试,我把 #WPJAM Basic# 里面的 wpjam_compare 函数的代码提供给他,让它解释一下:

这段 PHP 代码定义了一个名为 wpjam_compare 的函数,用于比较两个值 $value 和 $value2,并根据指定的比较运算符 $compare 返回比较结果。函数还支持严格模式($strict),并且在某些情况下可以处理数组和字符串的比较。

代码逻辑解析

  1. 参数处理
    • 函数接受三个参数:$value(要比较的值)、$compare(比较运算符),以及可变参数 $args(用于传递额外的参数)。
    • 如果 $compare 是一个数组,或者 $args 为空,那么函数会将 $compare 赋值给 $value2,并将 $compare 和 $strict 分别设置为空字符串和 false
    • 否则,$value2 会被赋值为 $args[0]$strict 会被赋值为 $args[1](如果存在),否则为 false
  2. 比较运算符处理
    • 如果 $compare 不为空,函数会将其转换为大写,并检查是否存在对应的反义词(如 != 的反义词是 =)。
    • 如果存在反义词,函数会递归调用自身,并使用反义词进行比较,然后返回取反的结果。
  3. 默认比较运算符
    • 如果 $compare 为空,函数会根据 $value2 的类型(数组或非数组)来设置默认的比较运算符 IN 或 =
  4. 特殊比较运算符处理
    • 如果比较运算符是 IN 或 BETWEEN,函数会对 $value2 进行处理:
      • 对于 IN,如果 $value2 是数组且只有一个元素,函数会将 $value2 转换为该元素,并将比较运算符改为 =
      • 对于 BETWEEN$value2 应该是一个包含两个元素的数组,表示范围。
  5. 比较操作
    • 根据 $compare 的值,函数会执行不同的比较操作:
      • =:使用 == 或 ===(取决于 $strict)进行比较。
      • > 和 <:分别使用 > 和 < 进行比较。
      • IN:如果 $value 是数组,函数会检查数组中的所有元素是否都在 $value2 中;否则,检查 $value 是否在 $value2 中。
      • BETWEEN:检查 $value 是否在 $value2 指定的范围内。
  6. 返回值
    • 函数根据比较结果返回 true 或 false

功能总结

wpjam_compare 函数的主要功能是比较两个值 $value 和 $value2,并根据指定的比较运算符 $compare 返回比较结果。函数支持多种比较运算符(如 =><INBETWEEN 等),并且可以处理数组和字符串的比较。此外,函数还支持严格模式($strict),在严格模式下使用 === 进行比较。

这个函数可以用于复杂的条件判断场景,特别是在需要处理多种比较运算符和数组的情况下。

完全没有问题,比我自己讲解得更清楚。😁

非常重要的是,DeepSeek 官方提示库最后一个提示词是「模型提示词生成」,可以指导用户生成自己所需的提示词:

怎么使用,由于 DeepSeek 经常服务器繁忙,今天演示比较困难。😅

之后我再给大家演示怎么生成自己所需要的提示词工具。大家有什么已经生成好的提示词也可以留言分享给大家。最后再说下 DeepSeek 官方提示库的地址:

https://api-docs.deepseek.com/zh-cn/prompt-library/

使用 DeepSeek 写代码也是一把好手,我简单通过两次问答就实现链式调用的支持

2025年2月4日 22:43

今天发现 WPJAM_Field 这个字段处理类中好几个方法都是传递 $value 进去,处理之后再返回 $value,这个感觉上很类似 JavaScript 工具库 underscore 的链式调用,所以打算实现一下链式调用,我自己是试了几次实现感觉都很麻烦,于是直接让 DeepSeek 来帮我实现,为了方便提问,我也把把相关代码省略了一下:

假设我有个这样一个 PHP Class,它的几个方法比如 validate prepare unpackpack 等,都是传入一个 $value,处理之后返回 $value,参考如下,具体处理代码我省略了:

class WPJAM_Field{
	public function validate($value, $for=''){
		// 省略具体的处理代码

		return $value;
	}

	public function pack($value){
		// 省略具体的处理代码

		return $value;
	}

	public function unpack($data){
		// 省略具体的处理代码

		return $value;
	}

	public function prepare($args){
		// 省略具体的处理代码

		return $value;
	}

	// 其他方法
}

现在我不能改动这些方法,因为其他地方已经使用了,但是我想实现链式调用,有没有方法?

我开启了深度思考,DeepSeek 太牛逼了,把各种情况都给考虑了一遍,他首先去理解链式调用的关键点,然后怎么实现,自己尝试想到的每种方法,可能的问题等,最后得出最佳解:

嗯,用户有一个PHP类WPJAM_Field,里面有几个方法比如validate、prepare、unpack和pack,这些方法都接收一个值,处理之后返回。现在用户想实现链式调用,但不能修改现有方法,因为其他地方已经在使用了。这需要找到一个解决方案,既能保持原有方法的兼容性,又能添加链式调用的支持。

首先,链式调用的关键点是每个方法返回对象实例本身,也就是$this。这样每次调用方法后可以继续调用其他方法。但用户现有的方法都是返回处理后的$value,而不是对象实例,所以直接修改这些方法的返回值会破坏现有代码。因此,不能直接在这些方法中添加return $this。

那该怎么办呢?可能需要创建一个新的类,或者使用某种包装器,将原有类的方法进行封装,使得每次调用后返回实例本身,同时保留原有的处理逻辑。或者,是否可以在现有类中添加新的方法,比如链式调用的版本,例如在方法名后面加上Chainable,比如validateChainable,然后在这些新方法中调用原有方法处理值,并将处理后的值存储起来,同时返回$this。

或者,是否可以使用__call魔术方法来拦截方法调用,并在调用原有方法之后返回$this?但这样的话,如何处理$value的传递呢?因为每个方法处理的是传入的$value,并返回处理后的值。如果链式调用需要每个方法处理同一个值,并将处理后的值传递给下一个方法,那么可能需要维护一个中间值,比如在类中添加一个属性,比如$currentValue,然后在每个链式方法中更新这个值。

例如,用户可能需要这样调用:

$field = new WPJAM_Field();

$result = $field->validate('input')->pack()->get();

这时候,每个方法需要处理当前的$currentValue,并将结果保存回$currentValue,然后返回$this。但原有的方法都是接收外部传入的$value,并返回处理后的值。所以,如果要在链式调用中使用这些方法,可能需要将这些方法包装成处理内部保存的值。

那么可能的步骤是:

1. 在WPJAM_Field类中添加一个属性,比如protected $chainableValue,用来保存链式调用过程中处理的值。

2. 创建新的方法,比如validateChain、packChain等,这些方法会使用$this->chainableValue作为输入,调用原有的validate、pack等方法,然后将结果保存回$this->chainableValue,并返回$this以支持链式调用。

3. 添加一个方法,比如getValue(),用于在链式调用结束后获取处理后的值。

但是这样需要用户改变调用方式,使用新的方法名,这可能不太方便,或者需要用户适应新的方法名。或者是否可以使用魔术方法或者某种方式,使得用户仍然可以调用原有的方法名,但自动处理链式调用的逻辑?

另一个思路是创建一个装饰器类,包装原有的WPJAM_Field实例,在装饰器中维护当前处理的值,并将每个方法调用转换为对装饰器内部值的处理,并返回装饰器实例本身。例如:

class WPJAM_FieldChainable {

protected $field;

protected $currentValue;

public function __construct(WPJAM_Field $field, $initialValue) {

$this->field = $field;

$this->currentValue = $initialValue;

}

public function validate($for = '') {

$this->currentValue = $this->field->validate($this->currentValue, $for);

return $this;

}

public function pack() {

$this->currentValue = $this->field->pack($this->currentValue);

return $this;

}

// 其他方法类似...

public function get() {

return $this->currentValue;

}

}

然后用户可以这样使用:

$originalField = new WPJAM_Field();

$chainable = new WPJAM_FieldChainable($originalField, $initialValue);

$result = $chainable->validate()->pack()->get();

这样,用户不需要修改原有的WPJAM_Field类,而是通过装饰器来实现链式调用。不过,这需要用户创建一个新的对象,并且初始值需要传入。这可能是一个可行的办法,但用户可能需要调整他们的代码结构,或者提供一个更便捷的方式来创建链式调用的实例。

或者,是否可以在WPJAM_Field类中添加一个方法,比如chain($value),该方法返回一个链式调用的包装器实例,例如:

class WPJAM_Field {

// 原有方法...

public function chain($value) {

return new WPJAM_FieldChainable($this, $value);

}

}

这样用户就可以这样调用:

$field = new WPJAM_Field();

$result = $field->chain($input)->validate()->pack()->get();

这可能是一个比较方便的方式,用户只需要添加chain方法,并且其他方法不需要改动。而WPJAM_FieldChainable类负责处理链式调用,每次调用方法后返回自身,并更新内部的值。

不过,这样需要在WPJAM_Field类中添加chain方法,而用户可能不希望修改原有类,或者用户可能无法修改该类?如果用户不能修改该类,那么可能需要使用装饰器模式,不修改原有类,而是在外部创建一个包装类。

或者,用户是否可以扩展原有的类,创建一个子类,添加链式调用的方法?例如:

class WPJAM_ChainableField extends WPJAM_Field {

protected $chainValue;

public function chain($value) {

$this->chainValue = $value;

return $this;

}

public function validate($for = '') {

$this->chainValue = parent::validate($this->chainValue, $for);

return $this;

}

public function pack() {

$this->chainValue = parent::pack($this->chainValue);

return $this;

}

// 其他方法重写...

public function get() {

return $this->chainValue;

}

}

但这样需要覆盖原有的方法,将它们的返回值改为$this,这可能会影响原有代码中调用这些方法的方式。例如,原来的代码可能期望调用validate()返回处理后的值,而子类中的validate()返回$this,这会破坏原有功能。所以这可能不可行。

因此,回到最初的思路,用户不能修改原有方法,所以必须找到一种不改变原有方法返回值的方法。可能的解决方案是使用一个包装类,将每个方法的调用转换为对内部值的处理,并维护该值,同时返回实例本身。

因此,最终的解决方案可能是创建一个新的类,例如WPJAM_FieldChain,该类包含一个WPJAM_Field的实例和一个当前值。然后,这个新类有与原有类相同的方法名,但每个方法都接受较少的参数(例如不需要传递$value,因为值保存在内部),处理内部值,并返回$this。用户需要将原有类的实例传递给这个新类的构造函数,或者新类内部创建原有类的实例。

例如:

class WPJAM_FieldChain {

protected $field;

protected $value;

public function __construct(WPJAM_Field $field, $initialValue) {

$this->field = $field;

$this->value = $initialValue;

}

public function validate($for = '') {

$this->value = $this->field->validate($this->value, $for);

return $this;

}

public function pack() {

$this->value = $this->field->pack($this->value);

return $this;

}

public function unpack($data) {

// 注意:原方法可能需要参数,比如unpack的参数是$data,但这里可能不需要,或者如何处理?

// 比如,可能这个方法的链式调用需要不同的处理方式?

// 这里可能需要重新考虑参数的问题。

// 原方法unpack的参数是$data,返回$value。但在链式调用中,可能需要将$data作为初始值?

// 或者unpack可能不适用于链式调用?

// 这可能是一个问题,因为原方法的参数可能不同,比如unpack需要$data,而其他方法需要不同的参数。

// 所以,可能需要处理各个方法的参数差异。

// 例如,对于unpack,可能在链式调用中,用户需要传递参数,比如:

$this->value = $this->field->unpack($data);

return $this;

}

public function prepare($args) {

// 原prepare方法接受$args,并返回$value,这里如何处理?

$this->value = $this->field->prepare($args);

return $this;

}

public function get() {

return $this->value;

}

}

然后用户的使用方式可能如下:

$originalField = new WPJAM_Field();

$chain = new WPJAM_FieldChain($originalField, $initialValue);

$result = $chain->validate()->pack()->get();

但是,这样的问题在于,每个方法可能需要不同的参数。例如,validate方法可能需要$for参数,而prepare需要$args参数。因此,在链式调用的每个方法中,需要允许用户传递这些参数。例如,调用$chain->validate('some_for'),这时候在WPJAM_FieldChain的validate方法中,需要接受$for参数,并将其传递给原field的validate方法。

因此,上面的例子中的validate方法应该接受$for参数,例如:

public function validate($for = '') {

$this->value = $this->field->validate($this->value, $for);

return $this;

}

这样,用户可以在链式调用时传递必要的参数,例如:

$chain->validate('for_something')->pack();

对于其他方法,如unpack,可能需要不同的参数。例如,原unpack方法接收$data参数,但在链式调用中,可能需要将$data作为初始值,或者如何处理?例如,假设原unpack方法是从$data中提取某个值,那么在链式调用中,可能需要调用unpack并将结果保存到当前值中:

public function unpack($data) {

$this->value = $this->field->unpack($data);

return $this;

}

但这样,unpack的参数是外部传入的$data,而不是处理当前的值。这可能与链式调用的预期不同。例如,其他方法如validate和pack都是处理当前的值,而unpack则是处理传入的$data,并替换当前的值。这可能符合用户的需求,但需要明确。

例如,用户可能希望链式调用是这样的:

$chain->unpack($data)->validate()->pack();

这时候,unpack处理传入的$data,得到value,保存到链中的当前值,然后validate处理该值,接着pack处理后的结果。

这可能符合预期,所以在这种情况下,unpack的参数是外部的$data,而其他方法处理当前值。因此,在链式调用中,unpack可能用于设置初始值,或者根据具体情况处理。

同样,prepare方法可能需要参数,例如:

public function prepare($args) {

$this->value = $this->field->prepare($args);

return $this;

}

但原prepare方法接收$args参数,并返回处理后的value。这可能意味着,在链式调用中,prepare的参数是某个$args,处理后的结果成为当前值。例如,用户可能需要:

$chain->prepare(['some' => 'args'])->validate()->pack();

这样,prepare处理传入的$args,并将结果作为当前值,之后继续处理。

这样看来,这个解决方案是可行的。用户需要创建一个新的链式调用包装类,该类接受原始Field实例和初始值,然后每个方法调用将处理当前值(可能需要其他参数),并返回自身,最后通过get方法获取结果。

但用户可能需要不同的初始值传递方式。例如,用户可能不想在构造函数中传入初始值,而是通过某个方法设置初始值。例如:

$chain->setValue($initialValue)->validate()->pack();

但为了简化,可能在构造函数中传入初始值比较方便。

总结解决方案:

1. 创建一个新的包装类,例如WPJAM_FieldChain,内部持有WPJAM_Field的实例和当前处理的值。

2. 该包装类为每个需要链式调用的方法创建对应的方法,这些方法接受相应的参数,调用原始类的方法处理当前值(或传入的参数),然后保存结果到当前值,并返回$this。

3. 添加一个get方法,用于获取最终处理后的值。

这样,用户在不修改原有类的情况下,可以通过这个包装类实现链式调用。例如:

$originalField = new WPJAM_Field();

$chain = new WPJAM_FieldChain($originalField, $initialValue);

$result = $chain->validate('for')->pack()->get();

或者,如果用户希望更简洁,可以在原有类中添加一个方法返回包装类的实例:

class WPJAM_Field {

// 原有方法...

public function chain($value) {

return new WPJAM_FieldChain($this, $value);

}

}

这样用户可以直接:

$result = $field->chain($value)->validate()->pack()->get();

当然,这需要用户能修改原有类,添加chain方法。如果用户不能修改原有类,则需要手动创建包装类的实例。

因此,最终的解决方案是使用装饰器模式或包装类,将原有类的方法包装成链式调用的形式,维护处理过程中的值,并在每个方法调用后返回实例本身,从而支持链式调用。

DeepSeek 给出了答案:

为了实现链式调用而不修改原有的 WPJAM_Field 类,可以采用 装饰器模式 创建一个新的类,该类包装原类的实例并维护处理过程中的值。以下是具体实现步骤:

1. 创建链式调用的装饰器类

class WPJAM_FieldChain {
    protected $field;
    protected $value;

    public function __construct(WPJAM_Field $field, $initialValue) {
        $this->field = $field;
        $this->value = $initialValue;
    }

    public function validate($for = '') {
        $this->value = $this->field->validate($this->value, $for);
        return $this; // 返回自身以支持链式
    }

    public function pack() {
        $this->value = $this->field->pack($this->value);
        return $this;
    }

    public function unpack($data) {
        $this->value = $this->field->unpack($data);
        return $this;
    }

    public function prepare($args) {
        $this->value = $this->field->prepare($args);
        return $this;
    }

    // 其他需要链式的方法...

    public function get() {
        return $this->value; // 获取最终结果
    }
}

2. 使用示例

// 原类实例
$originalField = new WPJAM_Field();

// 创建链式实例,传入初始值
$chain = new WPJAM_FieldChain($originalField, $initialValue);

// 链式调用
$result = $chain->validate('for_something')
               ->pack()
               ->get();

// 或者处理其他逻辑
$processed = $chain->unpack($data)
                  ->prepare(['arg' => 'value'])
                  ->validate()
                  ->get();

3. 可选优化:添加 chain 方法到原类(若允许修改)

如果允许在 WPJAM_Field 中添加方法,可以简化链式对象的创建:

class WPJAM_Field {
    // 原有方法...

    public function chain($value) {
        return new WPJAM_FieldChain($this, $value);
    }
}

// 使用方式
$result = $originalField->chain($input)
                       ->validate()
                       ->pack()
                       ->get();

方案优势

  • 无侵入性:无需修改原类代码,完全兼容已有逻辑。
  • 灵活处理参数:每个链式方法可接受原方法所需参数,透明传递。
  • 维护状态:内部维护 value 状态,链式调用自然传递处理结果。

此方案通过包装类巧妙地将原有方法转换为链式操作,兼顾了兼容性和扩展性。


太牛逼了,完全实现了我的想法,唯一一点缺陷是就是如果我有新方法需要链式调用,那么装饰器类也要新增一次,并且 WPJAM_FieldChain 这个类的名字貌似只是给 WPJAM_Field 使用,缺乏通用性,那就让 DeepSeek 再优化一下:

非常棒,但是还有 2 点小问题,如果 WPJAM_Field 有新方法需要链式调用,那么装饰器类也要新增一次,能否使用 __call 魔术方法?并且 WPJAM_FieldChain 这个类的名字貌似只是给 WPJAM_Field 使用,缺乏通用性。但是这个链式调用应该都通用的,可以改成 WPJAM_Chainable 这个名字是否合适?

和前面一样一定认真阅读它的深度思考过程,相比具体的代码实现,它的思考过程对我们编程能力和解决问题能力提高帮助更大,这里我就不再复制过来,因为太长了,并且还是深深震撼了我,我直接给出他的答案:

解决方案:利用 __call 提升灵活性和通用性

针对原有方案的改进需求,我们可以通过以下方式实现更灵活、更通用的链式调用:

1. 使用 __call 魔术方法自动代理方法调用

通过 __call 方法动态转发调用到原对象,自动处理参数和返回值,无需为每个方法编写重复代码。

class WPJAM_Chainable {
    protected $object;  // 原对象(如 WPJAM_Field)
    protected $value;   // 当前处理的值

    public function __construct($object, $initialValue) {
        $this->object = $object;
        $this->value = $initialValue;
    }

    public function __call($method, $args) {
        if (method_exists($this->object, $method)) {
            // 通过反射检查方法是否需要 $value 作为第一个参数
            $reflectionMethod = new \ReflectionMethod($this->object, $method);
            $parameters = $reflectionMethod->getParameters();

            // 如果方法的第一个参数名为 "value",自动插入当前值
            if (!empty($parameters) && $parameters[0]->getName() === 'value') {
                array_unshift($args, $this->value);
            }

            // 调用原方法并更新值
            $this->value = call_user_func_array([$this->object, $method], $args);
            return $this; // 链式返回
        }

        throw new \BadMethodCallException("Method {$method} does not exist.");
    }

    public function get() {
        return $this->value; // 获取最终结果
    }
}

2. 增强通用性:类名和参数约定

  • 类名优化:将 WPJAM_FieldChain 改为通用的 WPJAM_Chainable,表明它是一个通用的链式调用包装器。
  • 参数约定:约定原对象的方法若需要处理当前值,则其第一个参数必须命名为 $value(如 validate($value, ...)),否则直接透传用户参数(如 unpack($data))。

3. 使用方法

基本调用

$field = new WPJAM_Field();
$chain = new WPJAM_Chainable($field, $initialValue);

$result = $chain->validate('for_something')  // 自动插入 $value 作为第一个参数
               ->pack()                      // 自动插入 $value
               ->unpack($externalData)       // 直接透传 $externalData
               ->get();

可选优化:添加 chain 快捷方法(若允许修改原类)

class WPJAM_Field {
    // 原有方法...

    public function chain($value) {
        return new WPJAM_Chainable($this, $value);
    }
}

// 使用方式
$result = $field->chain($input)
               ->validate('for_something')
               ->pack()
               ->get();

方案优势

  1. 无需手动同步方法
    通过 __call 动态代理,原类新增方法时,只要符合参数约定(如第一个参数为 $value),链式调用自动生效,无需修改 WPJAM_Chainable
  2. 通用性设计
    • 类名 WPJAM_Chainable 表明其通用性,可复用于任何需要链式调用的类。
    • 通过反射和参数约定,灵活适配不同方法签名。
  3. 兼容性保障
    • 完全无需修改原类代码,无侵入式扩展。
    • 对 unpack($data) 等特殊方法,直接透传用户参数,兼容性强。

注意事项

  • 参数命名约定:需确保原类中需要处理当前值的方法,其第一个参数命名为 $value
  • 返回值约定:原方法必须返回处理后的值,以便链式传递。
  • 异常处理:通过 BadMethodCallException 明确提示不存在的方法调用。

此方案通过动态代理和约定优于配置的原则,实现了高度灵活和通用的链式调用,兼顾了代码简洁性和扩展性。


牛逼🐂🍺,厉害厉害,下一版本中,WPJAM Basic 我就加入这个 WPJAM_Chainable 的 class。感觉以后些任何功能都可以让 DeepSeek 来帮忙写了,比自己写的还考虑的周全完善。自己把握一下方向就好了,嘻嘻!大家 DeepSeek 也赶快用起来吧!

如果基于 DeepSeek 开发 WordPress 的插件,它自己会选择什么功能?

2025年1月30日 21:54

今年最火的就是 DeepSeek 了,各种新闻,把英伟达的股票都干没了10 几个点。我也在想做一个基于 DeepSeep 的 WordPress 插件,但是做什么方向的的功能呢?要不这个功能也让 DeepSeek 帮我们也想想?

DeepSeek 的使用和 ChatGPT 之类其他的 AI 工具是有区别,他是基于推理型的大模型,而不是指令型的大模式,所以使用 DeepSeek 根本不需要提示词,直接就好了。

所以我的问题就直接把自己的目的告诉,我想写个 DeepSeek 的插件,需要给些功能灵感:

我想基于 DeepSeek 写个 WordPress 插件,在方向上,基于你对自己理解,你觉得可以做那些功能呢,你可以给我一些灵感吗?

然后我 开启了深度思考模式,DeepSeek 给出了它对这个问题的推理过程:

然后他给出了自己的建议,它还非常贴心的分成几个小标题,一共提供内容生产力、智能交互增强、数据智能分析和效率增强功能四大方向,每个方向还提供了2 个小功能,大家看看这些功能建议如何,并且它还非常贴心的提供技术实现要点,以及如何赚钱,也就是商业化建议

基于 DeepSeek 的能力和 WordPress 生态需求,以下是几个值得探索的插件开发方向,按优先级排序并附具体实现思路:


一、内容生产力工具(核心场景)

  1. AI 文章助手
    • 自动草稿生成:根据用户输入关键词自动生成结构化大纲(支持Markdown)
    • 智能续写/改写:通过浮动工具栏实现选中内容的优化/扩写/简写
    • SEO 增强:实时分析内容并推荐关键词密度、生成meta描述
    • 技术实现:结合Gutenberg编辑器API + 内容缓存机制降低API调用成本
  2. 多模态内容生成
    • 基于文本描述自动生成特色图片(需集成DeepSeek-Visual)
    • 智能生成文章配图说明文字(ALT文本优化)
    • 自动创建信息图描述文本

二、智能交互增强

  1. 对话式知识库
    • 将网站文档/产品目录转化为可对话的知识库
    • 实现路径:定期爬取指定页面内容构建向量数据库
    • 示例场景:客户服务机器人、产品FAQ交互
  2. 实时评论互动
    • 智能回复用户评论(可设置白名单词库限制)
    • 情感分析自动标记高风险评论
    • 支持预设行业话术模板(电商/教育等)

三、数据智能分析

  1. 流量内容洞察
    • 结合GA数据生成自然语言分析报告
    • 自动识别高跳出率页面的内容问题
    • 预测内容生命周期并提供更新建议
  2. 竞品内容监测
    • 定期抓取竞品RSS进行摘要对比
    • 生成差异化创作建议(需配置代理抓取)

四、效率增强功能

  1. 智能翻译工作流
    • 一键生成多语言版本并保持SEO结构
    • 支持术语表维护和翻译风格预设
    • 实现:WPML兼容 + 增量翻译缓存
  2. 自动化运营
    • 定期自动生成节日营销文案
    • 社交媒体帖子自动生成与排期
    • 结合Zapier实现跨平台自动化

技术实现要点

  1. 性能优化
    • 实现内容缓存池(基于文章ID的版本控制)
    • 支持异步队列处理长文本任务
    • 本地语义相似度计算减少API调用
  2. 安全合规
    • 内容审核过滤层(可对接DeepSeek审核API)
    • 用户数据脱敏处理
    • GDPR兼容设计(数据暂存策略)
  3. 扩展架构
    • 提供webhook接入点
    • 开发REST API扩展模块
    • 支持与WooCommerce等流行插件的数据打通

商业化建议

  • 分层定价策略
    • 免费版:基础内容生成(限次/水印)
    • 专业版:高级分析+多语言(订阅制)
    • 企业版:私有化部署+定制模型
  • 流量变现
    • 内置AI写作模版市场
    • 对接第三方云服务返佣
    • 提供A/B测试数据服务

建议初期聚焦内容生成核心场景,采用「AI功能+SEO工具」组合拳切入市场,后续通过用户行为数据分析逐步扩展智能运营功能。可参考Jarvis(Conversion.ai)的增长路径,但需注意WordPress生态的特殊性,强化与经典插件(Yoast SEO、Elementor)的兼容性。


大家觉得如何?希望首先实现哪个方向的插件?可以给我留言,我争取2 月份就先做个简单的插件出来给大家用用。😁

2025年12款免费AI客户端,支持本地部署和API集成

2025年2月14日 17:30

GPT 客户端系统兼容性

软件名称 开源🆓 Web 在线 Windows macOS Linux iOS Android
open-webui
lobe-chat
LibreChat
Cherry Studio
BotGem(原 AMA)
ChatGPT(非官方)
lencx/NoiNoi
ChatHarvest(不支持自定义模型名称)
ChatGPT-Next-Web
page-assist
AI0x0
Chatbox AI

GPT 客户端支持AI服务商

软件名称 open-webui lobe-chat LibreChat Cherry Studio BotGem ChatGPT(非官方) lencx/Noi(Noi) ChatHarvest
API 形式配置
OpenAI ChatGPT
Azure OpenAI
AiHubMix
Anthropic
AWS Amazon Bedrock
DeepSeek
Dashscope
Fireworks
Google Gemini
Github Models
Groq
GraphRAG
OpenRouter
Ollama
ocoolAI
SiliconFlow(硅基流动)
Together
MiniMax
360智脑
阿里云百炼
百川智能
深度求索
通义千问
零一万物
Moonshot(月之暗面)
智谱AI

AI 模型服务文档

AI模型服务 文档 模型
OpenAI ChatGPT Overview - OpenAI API Models - OpenAI API
Azure OpenAI Azure OpenAI Service documentation Azure OpenAI Service models
AiHubMix AiHubMix 文档 模型
Anthropic Claude - Anthropic 文档 Models Anthropic
DeepSeek DeepSeek API Docs DeepSeek模型 & 价格
Dashscope
Fireworks Fireworks 文档 模型
Gemini Gemini API 开发者文档和 API 参考文档 Gemini 模型
Github Models GitHub 模型 Marketplace
Groq Groq 文档 模型
GraphRAG
OpenRouter OpenRouter 文档 模型
Ollama ollama 文档 Ollama 模型
ocoolAI OCOOL文档中心 模型 - OCOOL
SiliconFlow(硅基流动) SiliconFlow 文档 获取用户模型列表
Together Together 文档 模型
MiniMax MiniMax 文档 模型
360智脑 360智脑 文档 模型
阿里云百炼 阿里云百炼 文档 模型
百川智能 百川 文档 模型
豆包(火山引擎) 豆包 文档 模型
阶跃星辰 阶跃星辰 文档 模型
DeepSeek(深度求索) DeepSeek API Docs Models DeepSeek
零一万物 零一万物大模型开放平台 零一万物大模型开放平台
Moonshot(月之暗面) 月之暗面 文档 模型
英伟达 英伟达 文档 模型
智谱AI 智谱AI开放平台 模型

Cherry Studio

Cherry Studio 是一个支持多模型服务的桌面客户端,为专业用户而打造,内置 30 多个行业的智能助手,帮助用户在多种场景下提升工作效率。

Cherry Studio
Cherry Studio

BotGem

BotGem(原 AMA) 是一款智能聊天助手应用程序,它使用先进的自然语言处理技术来理解和回复您的文本信息。您可以使用 BotGem 提问、分享想法、寻求建议,或者只是随便聊聊。

BotGem
BotGem

ChatGPT(非官方)

ChatGPT(非官方)套壳 ChatGPT 官网的桌面程序

ChatGPT(非官方)
ChatGPT(非官方)

Noi

Noi 一款套壳多款 AI 网站的桌面程序

Noi
Noi

ChatGPT-Next-Web

ChatGPT-Next-Web(现名:NextChat) 一键免费部署你的私人 ChatGPT 网页应用,支持 GPT3, GPT4 & Gemini Pro 模型。

Open WebUI

Open WebUI开源地址)是一个可扩展、自托管的人工智能界面,可适应您的工作流程,同时完全脱机运行。

  • 🚀 轻松安装:使用 Docker 或 Kubernetes(kubectl、kustomize 或 helm)进行无缝安装,支持 :ollama:cuda 标记的映像,带来无忧体验。
  • Ollama/OpenAI API 集成:轻松集成与 OpenAI 兼容的 API,以便与 Ollama 模型进行多功能对话。自定义 OpenAI API URL,以便与 LMStudio、GroqCloud、Mistral、OpenRouter 等链接。
  • Pipelines, Open WebUI 插件支持:使用 Pipelines 插件框架,将自定义逻辑和 Python 库无缝集成到 Open WebUI 中。启动您的 Pipelines 实例,将 OpenAI URL 设置为 Pipelines URL,探索无限可能。例子包括函数调用、控制访问的用户速率限制、使用 Langfuse 等工具监控使用情况、使用 LibreTranslate 进行实时翻译以支持多语言、有毒信息过滤等等。
  • 📱 响应式设计:在台式电脑、笔记本电脑和移动设备上享受无缝体验。
  • 📱 适用于移动设备的渐进式网络应用程序(PWA):使用我们的 PWA,在移动设备上享受类似本地应用程序的体验,提供本地主机离线访问和无缝用户界面。
  • ✒️🔢 全面支持 Markdown 和 LaTeX:通过全面的 Markdown 和 LaTeX 功能,提升您的 LLM 体验,丰富互动内容。
  • 🎤📹免提语音/视频通话:通过集成的免提语音和视频通话功能,体验无缝通信,打造更加动态和互动的聊天环境。
  • 🛠️ 模型生成器:通过 Web UI 轻松创建 Ollama 模型。创建和添加自定义角色/代理、自定义聊天元素,并通过开放式 WebUI 社区集成轻松导入模型。
  • 原生 Python 函数调用工具:通过工具工作区中的内置代码编辑器支持来增强 LLMs 的功能。只需添加纯 Python 函数,即可自带函数(BYOF),实现与 LLMs 的无缝集成。
  • 本地 RAG 集成:通过突破性的检索增强一代(RAG)支持,深入了解聊天互动的未来。该功能可将文档交互无缝集成到聊天体验中。您可以将文档直接加载到聊天中,或将文件添加到文档库中,在查询前使用 # 命令即可轻松访问这些文件。
  • 用于 RAG 的网络搜索:使用 SearXNGGoogle PSEBrave SearchserpstackserperSerplyDuckDuckGoTavilySearchSearchApi 等提供商执行网络搜索,并将结果直接注入聊天体验。
  • 网络浏览功能:使用 # 命令将网站无缝集成到您的聊天体验中,并在命令后添加 URL。此功能可让您将网页内容直接整合到对话中,从而增强互动的丰富性和深度。
  • 🎨 图像生成集成:使用 AUTOMATIC1111 API 或 ComfyUI(本地)和 OpenAI 的 DALL-E(外部)等选项无缝集成图像生成功能,通过动态视觉内容丰富您的聊天体验。
  • ⚙️ 多模式对话:轻松地同时与各种模型对话,利用它们的独特优势做出最佳回应。通过并行利用一系列不同的模型来增强您的体验。
  • 基于角色的访问控制(RBAC):通过限制权限来确保安全访问;只有经过授权的人才能访问您的 Ollama,并且为管理员保留专属的模型创建/拉取权限。

LibreChat

LibreChat开源地址) 是一个免费的开源人工智能聊天平台。该 Web UI 提供大量自定义功能,支持众多 AI 提供商、服务和集成。通过熟悉的界面、创新的增强功能,在一个地方为所有人工智能对话提供服务,用户数量不限。

特点:

  • 🖥️ UI 匹配 ChatGPT,包括暗模式、流媒体和最新更新
  • 🤖 AI 模型选择:Anthropic(Claude),AWS Bedrock,OpenAI,Azure OpenAI,BingAI,ChatGPT,Google Vertex AI,插件,助手 API(包括 Azure 助手)
  • ✅ 兼容远程和本地 AI 服务:groq, Ollama, Cohere, Mistral AI, Apple MLX, koboldcpp, OpenRouter, together.ai, Perplexity, ShuttleAI 等等
  • 带有代码工件的生成式 UI:在聊天中创建 React、HTML 代码和 Mermaid 图表
  • 💾 创建、保存和共享自定义预设
  • 🔀 在对话中切换 AI 终端点和预设
  • 🔄 编辑、重新提交并继续消息与会话分支
  • 🌿 复制消息与会话以进行高级上下文控制
  • 💬 多模态聊天:
    • 使用 Claude 3、GPT-4(包括 gpt-4o 和 gpt-4o-mini)以及 Gemini Vision 上传并分析图像 📸
    • 使用自定义终端点、OpenAI、Azure、Anthropic 和 Google 进行文件聊天。 🗃️
    • 具有文件、代码解释器、工具和 API 操作的高级代理 🔦
    • 通过 OpenAI 助手 API 提供 🌤️
    • 非 OpenAI 代理正在积极开发中 🚧
  • 🌎 多语言界面:英语,中文简体 ,德语 ,西班牙语 ,法语 ,意大利语 ,波兰语 ,巴西葡萄牙语,俄罗斯语 ,日本語 ,瑞典语 , 韩国어 , 越南語 , 中文繁體 , 阿拉伯語 , 土耳其語 , 荷兰語 , 希伯来語
  • 🎨 可定制的下拉菜单 & 界面:适应擅长用户和新手用户
  • 📧 验证您的电子邮件以确保安全访问
  • 🗣️ 使用 Speech-to-Text 和 Text-to-Speech 魔术无需操作即可聊天
  • 自动发送并播放音频
  • 支持 OpenAI,Azure OpenAIElevenlabs
  • 导入 LibreChat ChatGPT Chatbot UI 的对话
  • 将对话导出为截图 markdown 文本 json
  • 搜索所有消息/对话
  • 插件 包括网络访问 DALL-E-3 图像生成等等
  • 多用户 安全认证带有管理权力消费工具
  • 配置 Proxy Reverse Proxy Docker 许多部署选项,完全本地或云端部署,完全开源并且公开构建,社区驱动的开发支持反馈

ChatWise

chatwise官网下载地址

  • ChatWise 支持任何 LLM 模型,包括 GPT-4、Claude、Gemini 等。
  • ChatWise 在构建时充分考虑了性能,并针对桌面体验进行了优化。
  • 您的所有数据都存储在本地,永远不会离开您的设备(除了向您的 LLM 提供商发送聊天请求)。
  • ChatWise 设计简单但功能强大,易于使用,且不臃肿。
  • 使用音频、PDF、图像、文本文件等进行聊天。
  • 免费使用 Tavily 搜索网页。

ChatWise
ChatWise

AnythingLLM

AnythingLLMGitHub仓库)是开源免费且支持多模态交互的全栈 AI 客户端。AnythingLLM支持文本、图像和音频等多种输入方式,将任何文档或内容转化为上下文,供各种语言模型(LLM)在对话中使用。AnythingLLM支持本地运行和远程部署,提供多用户管理、工作区隔离、丰富的文档格式支持以及强大的 API 集成。所有数据默认存储在本地,确保隐私安全。AnythingLLM支持多种流行的 LLM 和向量数据库,适合个人用户、开发者和企业使用。

  • 多模态交互:支持文本、图像和音频等多种输入方式,提供更丰富的交互体验。
  • 文档处理与上下文管理:将文档划分为独立的“工作区”,支持多种格式(如PDF、TXT、DOCX等),保持上下文隔离,确保对话的清晰性。
  • 多用户支持与权限管理:Docker版本支持多用户实例,管理员能控制用户权限,适合团队协作。
  • AI代理与工具集成:支持在工作区内运行AI代理,执行网页浏览、代码运行等任务,扩展应用的功能。
  • 本地部署与隐私保护:默认情况下,所有数据(包括模型、文档和聊天记录)存储在本地,确保隐私和数据安全。
  • 强大的API支持:提供完整的开发者API,方便用户进行自定义开发和集成。
  • 云部署就绪:支持多种云平台(如AWS、GCP等),方便用户根据需求进行远程部署。

AI0x0

AI0x0 是一个桌面端的多模态多模型通用型AI生成助手应用,支持在 mac 端和 win 端安装使用。它可以让您在任意桌面软件上使用 AI 能力来查询生成文本、图片、音频和视频等多种模态数据,帮助您更高效地完成工作。

目前 AI 0x0 支持以下几种模型:

名称 联网搜索支持 语言模型 是否免费 多模态 是否需要翻墙
Claude 2 不支持 Claude 100k 免费 支持
Perplexity 支持 未知 免费 不支持
ChatGPT Plus用户支持 GPT-3.5/GPT-4.0 免费/收费 不支持
PoeChat 不支持 GPT-3.5/GPT-4.0/Claude 免费/收费 不支持
NewBing 支持 GPT-4.0 免费 支持
Chat0x0 支持 GPT-3.5 免费/收费 支持
文心一言 不支持 文心一言 免费 支持
讯飞星火 不支持 讯飞星火 免费 不支持
  • 🌀 桌面灵动悬浮球,在任意软件选中文本后随时唤出搜索框 (Mac: ⌥+Q Win: Alt+1)
  • 🎬 AI 实时字幕,可以实时翻译转录系统和麦克风的任意语言的音频
  • 💬 悬浮对话气泡,鼠标放上去查看完整信息,离开查看简要信息
  • ⚙️ 自定义预设,可以自定义你想实现任何功能
  • 📁 收藏对话,将你觉得有价值的对话内容进行收藏,随时翻看
  • 📦 预设包,有官方和社区发布的一整套预设能力,解决各种场景问题
  • ⚡️ 网络加速,开启后直接访问 ChatGPT 等国外 AI 服务
  • 🔍 查询模式,不用离开当前使用的软件就可以使用 AI 查询信息
  • ⌨️ 输入模式,可以在任意软件的任意输入框自动输入 AI 生成内容
  • 🖱️ 鼠标随航,鼠标的一支强大的随航舰队,应对无从下手的任意困难
  • ⏭ 深度定制 ChatGPT Next Web 的 Chat0x0 快捷唤起对话框 (Mac: ⌥+W Win: Alt+2)
  • 📖 支持全格式文库,让 AI 从你的文库读取信息来完成你的需求
  • 🌐 联网搜索,支持联网搜索获取实时内容,并且给出引用连接
  • 🔈 语音播报,可以语音播报查询结果和生成的音频内容
  • 🗣️ 语音识别,在设置里设置了语音语言后可以使用语音识别输入查询文字
  • 🤖️ 语音助手,在设置里设置了语音语言和快捷键后可以通过语音跟 AI 交流
  • 🧩 应用插件,打通不同应用的内容壁垒,比如使用了浏览器插件后可以实现跟浏览器对话
  • 🪆 多模型,支持低成本随时适配市面上任意好用的语言模型
  • 📰 联网图文生成,通过文章主题联网搜索相关信息和图片,自动生成图文并茂的内容
  • 🏞️ 识图能力,发送截图给 Chat0x0 进行对话 (Mac: ⌥+E Win: Alt+3)
  • 🌈 毛玻璃界面,原生应用优雅的体验
  • 👕 多外观,支持多个外观切换,包括显示 live2d 模型的能力(由于版权,暂不支持自定义)
  • 🌓 针对每个语言模型适配亮色和黑色主题
  • 🥳 承诺永久免费开放除 Chat0x0 以外的语言模型 (Chat0x0 填 key 可免费)

Chatbox AI

Chatbox AI 是开源的跨平台AI客户端应用和智能助手,支持 Windows、Mac、Linux、iOS、Android 和网页版,集成多种先进的语言模型(如 ChatGPT、DeepSeek、Claude、Google Gemini Pro 等),支持本地模型(如 Llama2、Mistral 等)。Chatbox AI提供丰富的功能,包括本地数据存储、图像生成(Dall-E-3)、代码高亮、Markdown 和 LaTeX 支持、多语言交互、团队协作等。Chatbox AI基于 GPLv3 开源许可,用户能定制功能、参与社区贡献。

  • 多语言模型支持:兼容多种主流 AI 模型,如 ChatGPT、Claude、Google Gemini Pro、Ollama 等,满足不同场景需求。
  • 本地数据存储:所有聊天记录和数据存储在本地设备上,确保隐私和安全,避免数据泄露风险。
  • 图像生成:集成 Dall-E-3,支持基于文字描述生成图像,将创意转化为视觉作品。
  • 代码辅助:支持代码生成、语法高亮、代码审查、优化等功能,帮助开发者提高编程效率。
  • 文档交互:支持与 PDF、Word、Excel 等文档交互,提取内容并提供智能回复。
  • 联网搜索:实时联网搜索,获取最新信息,支持内容摘要和事实核查。
  • Markdown 和 LaTeX 支持:适合学术写作和技术文档,支持格式化文本和复杂公式。
  • 跨平台使用:支持 Windows、Mac、Linux、iOS、Android 和网页版,随时随地使用。
  • 多语言支持:支持英语、中文、日语、韩语、法语、德语、俄语等多种语言。
  • 团队协作:支持团队共享 API 资源,提升协作效率。

腾讯元宝接入 DeepSeek-R1 满血版,并且支持联网搜索!

2025年2月13日 23:03

最近 DeepSeek 老是服务器繁忙,这之前也分享了三个替代方法。现在也有新的方法了,腾讯元宝也接入 DeepSeek-R1 满血版,并且支持联网搜索。

打开腾讯元宝的网页:https://yuanbao.tencent.com/

大模型选择 DeepSeek R1,还可以开启联网搜索,试一下:「国内最强的 WordPress 个人开发者是?」

他引用了 5 篇资料作为参考,我点击了一下,前面三篇公众号文章,其中第一篇是本公众号的文章「给大家装个大的:我做的 WordPress 项目」,看来在自己公众号吹下牛,还是有好处的。

最后他的回复:

看来还是非常准确的,至少我是这样认为的。😁

除了网页版之后,腾讯元宝的 APP 也支持 DeepSeek,在应用搜索搜索「腾讯元宝」即可获取。

为何 DeepSeek 没有别人用得好,因为他们有官方提示库!

2025年2月13日 22:34

最近大家在使用 DeepSeek 的时候,感觉没有自己用起来有点不太对,怎么说呢,网上的人怎么用起来那么好,自己用就感觉没有那么好,是姿势不对,还是缺少点什么?

其实就是没有让 DeepSeek 完全了解到你的需求,就像人和人之间沟通交流一样,首先要理解别人的需求,才能够做出正确的回应,AI 再聪明,首先也得要知道你的需求。

那么如何让 AI 读懂用户的需求呢,这就需要说到提示词,简单的说,提示词就是事先给定 AI 规则和框架,让 DeepSeek 按照指定的逻辑进行推理,然后给出答案。

那么接下来的问题就变成了怎么写 DeepSeek 的提示词呢?其实完全不用担心,DeepSeek 官方提供了一个提示词库,先仔细学习一下,照着写一些,慢慢你就能成为 DeepSeek 使用大师了。

直接来,DeepSeek 官方提示词网址是:

https://api-docs.deepseek.com/zh-cn/prompt-library/

目前官方提示词库一共有 13 个:

非常好,特别前面三个就是代码相关的,特别符合程序员使用。简单点,我们就先看看「代码解释」这个提示词怎么写,点开之后:

其实非常简单,就是一句话「请解释下面这段代码的逻辑,并说明完成了什么功能:」,然后附上代码即可。

那么就来试试,我把 #WPJAM Basic# 里面的 wpjam_compare 函数的代码提供给他,让它解释一下:

这段 PHP 代码定义了一个名为 wpjam_compare 的函数,用于比较两个值 $value 和 $value2,并根据指定的比较运算符 $compare 返回比较结果。函数还支持严格模式($strict),并且在某些情况下可以处理数组和字符串的比较。

代码逻辑解析

  1. 参数处理
    • 函数接受三个参数:$value(要比较的值)、$compare(比较运算符),以及可变参数 $args(用于传递额外的参数)。
    • 如果 $compare 是一个数组,或者 $args 为空,那么函数会将 $compare 赋值给 $value2,并将 $compare 和 $strict 分别设置为空字符串和 false
    • 否则,$value2 会被赋值为 $args[0]$strict 会被赋值为 $args[1](如果存在),否则为 false
  2. 比较运算符处理
    • 如果 $compare 不为空,函数会将其转换为大写,并检查是否存在对应的反义词(如 != 的反义词是 =)。
    • 如果存在反义词,函数会递归调用自身,并使用反义词进行比较,然后返回取反的结果。
  3. 默认比较运算符
    • 如果 $compare 为空,函数会根据 $value2 的类型(数组或非数组)来设置默认的比较运算符 IN 或 =
  4. 特殊比较运算符处理
    • 如果比较运算符是 IN 或 BETWEEN,函数会对 $value2 进行处理:
      • 对于 IN,如果 $value2 是数组且只有一个元素,函数会将 $value2 转换为该元素,并将比较运算符改为 =
      • 对于 BETWEEN$value2 应该是一个包含两个元素的数组,表示范围。
  5. 比较操作
    • 根据 $compare 的值,函数会执行不同的比较操作:
      • =:使用 == 或 ===(取决于 $strict)进行比较。
      • > 和 <:分别使用 > 和 < 进行比较。
      • IN:如果 $value 是数组,函数会检查数组中的所有元素是否都在 $value2 中;否则,检查 $value 是否在 $value2 中。
      • BETWEEN:检查 $value 是否在 $value2 指定的范围内。
  6. 返回值
    • 函数根据比较结果返回 true 或 false

功能总结

wpjam_compare 函数的主要功能是比较两个值 $value 和 $value2,并根据指定的比较运算符 $compare 返回比较结果。函数支持多种比较运算符(如 =><INBETWEEN 等),并且可以处理数组和字符串的比较。此外,函数还支持严格模式($strict),在严格模式下使用 === 进行比较。

这个函数可以用于复杂的条件判断场景,特别是在需要处理多种比较运算符和数组的情况下。

完全没有问题,比我自己讲解得更清楚。😁

非常重要的是,DeepSeek 官方提示库最后一个提示词是「模型提示词生成」,可以指导用户生成自己所需的提示词:

怎么使用,由于 DeepSeek 经常服务器繁忙,今天演示比较困难。😅

之后我再给大家演示怎么生成自己所需要的提示词工具。大家有什么已经生成好的提示词也可以留言分享给大家。最后再说下 DeepSeek 官方提示库的地址:

https://api-docs.deepseek.com/zh-cn/prompt-library/

元宵节的深度求索

2025年2月12日 21:06

年前年后,有两个话题不断占据热搜,一个是哪吒,另一个是 DeepSeek,直到今天元宵节,哪吒仍在冲击 100 亿,DeepSeek 时不时服务器繁忙,让你稍后再试。

元宵节的深度求索 - 第1张图片

2022 年 12 月初,第一次了解到 ChatGPT 并花了 1.5 元接收短信验证码,注册 OpenAI 账号,当时怀着一种好奇的心情与之对话,问了一些乱七八糟的话题,比如怎么写读书笔记,如何读书和写博客,觉得挺有意思,当天分享给陈仓颉,他因为网络 IP 限制无法使用,一连说了两个放弃,结果第二天问我注册的步骤和细节,也开始玩上了。

不太记得 ChatGPT 是如何一夜爆火,但它就像一株小火苗,点燃了整片草原,自己也逐渐成为熊熊大火。后来随着各种 AI 产品如同雨后春笋般出现,我也尝试了 Claude、Gemini、Perplexity 等服务和应用,借助 ChatGPT 修改了一段代码,并应用到博客上。我一直在想,对于一个普通人来说,AI 可以带来什么,或者说改变什么。

借助沉浸式翻译插件,我常将 AI 用于更加准确、优雅的翻译,甚至翻译外文电子书进行阅读,尽管近一年来还没认真读完一本书;借助套壳工具和 UniAPI,使用 Midjourney 和 DALL-E 给博客文章生成封面配图,2023 年中秋节还借助 Bing Create 生成了几张关于中秋团圆的图片;使用 Perplexity 替代 Google、百度等传统搜索引擎,整合搜索结果,提供高效便捷的搜索服务,唯一美中不足的是在手机上使用 Perplexity 常常出现无法响应的情况,大概是网络问题;现在也安装了 DeepSeek,偶尔使用深度思考,但不多,因为它有时候思考得太久,让我觉得有点婆婆妈妈,但是反过来想,我读书的时候如果能够深度思考,那博客写得会更多,现在思考一遍之后我再追问,它就罢工了……UniAPI 是一家第三方 API 供应商,可以花一份的钱使用多家 AI 服务的 API,目前也支持了满血版 DeepSeek R1。

我对于 AI 的使用还比较浅显,只会使用一些直白的提示词,让它按照我的指令生成或总结相应的内容,还做不到利用 AI 开发任何软件或者服务,当然我在使用的时候先说你好,最后说谢谢,不能压榨咱们的员工。但我觉得这也是普通人使用 AI 的局限,提示词的局限。记得 ChatGPT 刚火起来的时候,就催生了许多提示词玩法,GitHub 上也有不少调教 ChatGPT 的文档,以及 Prompt Engineer 职业的诞生,这些都是值得用户去学习和了解的内容,如何用精准的提示词获取精确的内容,同一个指令用不同的提示词描述,会产生不一样的效果。

这可能就是 AI 带来局限的同时也带来的学习机会。前段时间在和菜头的文章《介绍一种提升写作能力的方法》中了解到这样一段提示词:

现在我希望你是一名资深中文写作教师/小学语文老师/中学语文老师/公文写作培训师,拥有 30 年教育经验,是一名传授写作技巧的专家。请先阅读我提供给你的文章,然后对文章进行分析,然后教我如何提升写作水平。请给出详细的优缺点分析,指出问题所在,并且给出具体的指导和建议。为了方便我能理解,请尽量多举例子而非理论陈述。

于是我在 DeepSeek 开启深度思考,用上这段提示词,并粘贴了上一篇文章《地下车库的便利店》,它思考了 10 秒钟,从结构、语言、细节方面提出了对应的问题以及修改建议,最后还给了两点专项提升建议,比如空间活化训练,让我连续观察三天便利店,记录便利店收银台的声音、关东煮的气味以及随时间变化的光影(地下车库你 tm 哪来的光影?),再比如人物速写公式,特征物品+标志动作+时间印记,凌晨1:15分,陈仓颉用缠着创可贴的拇指撬开泡面碗盖,蒸汽腾起的瞬间,便利店玻璃上的雨痕恰好漫过他工牌上褪色的职位名称。这说明什么?说明陈仓颉是工龄很长的打工人,但更加形象生动,他在凌晨吃泡面的形象跃然纸上,如果加个脱发秃顶的细节可能会更有趣。

随后我便让它根据所生成的建议修改原文——《地下车库的生存驿站》,如果用一句话形容原文和修改之后的内容,前者是打工人在便利店吃关东煮、买东西,后者是可怜的牛马在深夜加班后去便利店填饱肚子,牛马的形象更加清晰,每一个字每一句话都仿佛能让我回忆起每个月雷打不动的加班时光,标题都充满着班味。

让我回到小学课堂,从第一堂写作课开始学起,也很难写出如此细腻的文章。

再回到前面的问题,AI 带来了什么?很多人说带来了危机,职业危机,将会有更多的工作被 AI 代替;生存危机,机器人都上春晚扭秧歌了,不怕以后把人类干掉吗,我懒得去想这些问题。我的看法是,带来更多的学习机会,想起小时候的一个问题,人和电脑谁更聪明,我第一反应是电脑,因为电脑可以做很多事情,查到很多知识和内容,但“电脑是人发明的”,人是不是更聪明呢?

使用 AI,看到自身的不足,以及许多需要学习的内容,并借助 AI 提升自己,深度求索,我觉得这是对于普通人的意义所在,至于 AI 如何影响我们的生活,带来多大的便捷和变化,暂时不在我们可以考虑的范围内,留给更专业的人做专业的事。

路曼曼其修远兮,吾将上下而求索,屈原一定是深度求索第一人。

元宵快乐,写到这里我准备下楼去吃一份最爱的酒槽小汤圆。

元宵节的深度求索》最先出现在印记

创新、内卷与结果主义

2025年2月9日 11:00

DeepSeek采用的是「蒸馏技术」,这一点毋庸置疑,所以在这里就不再探讨它的行为本身。毕竟它现在和黑神话悟空一样,已经与爱国主义捆绑,吸纳足够的个体,形成了可以对抗一切个体和其他群体的乌合之众。

但是蒸馏技术确实导致了我们可以实感的「结果」的发生,这是一个使用低成本芯片制造的AI,从而在中国掀起了狂热的浪潮。从结果而言,它就是成功的,这一点也毋庸置疑。

先说结论,比起质疑结果,最有效的方式是质疑「动机」。


最近给自己放了个假,但是播客并没有断更,本来想做一期「质疑坚持」的话题,但或许显得有些炫耀,这个话题就拿到博客来讨论了。坚持、因为坚持产生的结果、结果被质疑、和反驳质疑。这看上去是一套正确流程,但乐趣就在「结果被质疑」的环节,让一个原本是客观事实的行为,变成了一个需要去迎合主观的自证陷阱

我在大学是认真做笔记的那种学生,不是我好学,而是我真的很喜欢做笔记(因为它是一种强烈操纵感的体现,这个是后话)。所以每到期末考试之前,我的笔记就会被借出去复印成册。但我的笔记得到的负面评价是最多的,因为里面有太多只有我自己能看懂的内部逻辑。

久而久之,借笔记的人就变少了。大学的期末考试和高考还是有本质区别,不会因为你多个0.5分就可以跻身靠前几百名。但真到了司法考试前夕,借笔记就变成了「敏感词」。同学之间会以各种说辞借口,不再愿意互相借笔记,我依旧开放借笔记的通道,迫于无奈,他们像是抓住了救命稻草一样,复印我的笔记,然后骂我的笔记。

从结果来看,我提供了笔记,但从借笔记的同学的角度来看,我提供的笔记毫无价值。


这个「坏习惯」,我保留到了工作领域。到现在,我制作的PPT都是简单到一页只有几个字,以及大量的内部逻辑排列。在职场上面,我可以放心把PPT交给任何人,因为这不是一个拿去就能照本宣科的结果。所有的结果在我的脑子里,只有我站在投影前面才能讲清楚这一页的几个字背后的内容。

因为这件事,我被骂过很多次。特别是交给主管的PPT,他拿到之后还得让我写一份与之对应的「演讲稿」。

如果「结果」能用,那它就是个「好结果」。同时,基于「好结果」创造出「更好的结果」,从结果主义的角度来讲,它当然是「好结果」。

换个场景,如果把笔记借给了同学,高考的时候,他因为你鉅细靡遗的笔记,考出了超过你15分的成绩,你真实的心态是什么?又或者,你制作的方案被同事冒用抄袭,你却拿不出任何证据,同事因此还获得了晋升的机会,你真实的心态又是什么?

这个时候,或许就值得去探讨「基于结果诞生的结果的结果主义」了。


这场游戏里的主体是谁,就直接关系到结果主义与功利主义结合时产生的「怪胎」命名。如果我们是借笔记的,那很有可能这个结果主义是被「创新」命名的;反之,则被称之为「内卷」

这套「双标系统」是对自我的说服,但同时也会成为递给对方的刀柄。

当「创新」被「内卷」质疑的时候,就会形成最开始我提到的「自证陷阱」,因为主体的切换,你无论怎么证明,都无法逃出结果主义的游戏规则。

当然,这个时候,如果真的有通过坚持完成的结果,这样的结果要如何质疑呢?

因为它本身没有依赖任何「结果」,所以很难双标地认定结果本身的价值。

那这个时候就要回到结果的上一层——你的「动机」有问题。

例如,借个笔记怎么了,你是不是害怕我考得比你好啊!

又如,你做的这个PPT是在防谁啊,你这么不信任同事,你自己出去创业啊!


不过,这还有后招,不妨去问问DeepSeek好了。

使用 DeepSeek 写代码也是一把好手,我简单通过两次问答就实现链式调用的支持

2025年2月4日 22:43

今天发现 WPJAM_Field 这个字段处理类中好几个方法都是传递 $value 进去,处理之后再返回 $value,这个感觉上很类似 JavaScript 工具库 underscore 的链式调用,所以打算实现一下链式调用,我自己是试了几次实现感觉都很麻烦,于是直接让 DeepSeek 来帮我实现,为了方便提问,我也把把相关代码省略了一下:

假设我有个这样一个 PHP Class,它的几个方法比如 validate prepare unpackpack 等,都是传入一个 $value,处理之后返回 $value,参考如下,具体处理代码我省略了:

class WPJAM_Field{
	public function validate($value, $for=''){
		// 省略具体的处理代码

		return $value;
	}

	public function pack($value){
		// 省略具体的处理代码

		return $value;
	}

	public function unpack($data){
		// 省略具体的处理代码

		return $value;
	}

	public function prepare($args){
		// 省略具体的处理代码

		return $value;
	}

	// 其他方法
}

现在我不能改动这些方法,因为其他地方已经使用了,但是我想实现链式调用,有没有方法?

我开启了深度思考,DeepSeek 太牛逼了,把各种情况都给考虑了一遍,他首先去理解链式调用的关键点,然后怎么实现,自己尝试想到的每种方法,可能的问题等,最后得出最佳解:

嗯,用户有一个PHP类WPJAM_Field,里面有几个方法比如validate、prepare、unpack和pack,这些方法都接收一个值,处理之后返回。现在用户想实现链式调用,但不能修改现有方法,因为其他地方已经在使用了。这需要找到一个解决方案,既能保持原有方法的兼容性,又能添加链式调用的支持。

首先,链式调用的关键点是每个方法返回对象实例本身,也就是$this。这样每次调用方法后可以继续调用其他方法。但用户现有的方法都是返回处理后的$value,而不是对象实例,所以直接修改这些方法的返回值会破坏现有代码。因此,不能直接在这些方法中添加return $this。

那该怎么办呢?可能需要创建一个新的类,或者使用某种包装器,将原有类的方法进行封装,使得每次调用后返回实例本身,同时保留原有的处理逻辑。或者,是否可以在现有类中添加新的方法,比如链式调用的版本,例如在方法名后面加上Chainable,比如validateChainable,然后在这些新方法中调用原有方法处理值,并将处理后的值存储起来,同时返回$this。

或者,是否可以使用__call魔术方法来拦截方法调用,并在调用原有方法之后返回$this?但这样的话,如何处理$value的传递呢?因为每个方法处理的是传入的$value,并返回处理后的值。如果链式调用需要每个方法处理同一个值,并将处理后的值传递给下一个方法,那么可能需要维护一个中间值,比如在类中添加一个属性,比如$currentValue,然后在每个链式方法中更新这个值。

例如,用户可能需要这样调用:

$field = new WPJAM_Field();

$result = $field->validate('input')->pack()->get();

这时候,每个方法需要处理当前的$currentValue,并将结果保存回$currentValue,然后返回$this。但原有的方法都是接收外部传入的$value,并返回处理后的值。所以,如果要在链式调用中使用这些方法,可能需要将这些方法包装成处理内部保存的值。

那么可能的步骤是:

1. 在WPJAM_Field类中添加一个属性,比如protected $chainableValue,用来保存链式调用过程中处理的值。

2. 创建新的方法,比如validateChain、packChain等,这些方法会使用$this->chainableValue作为输入,调用原有的validate、pack等方法,然后将结果保存回$this->chainableValue,并返回$this以支持链式调用。

3. 添加一个方法,比如getValue(),用于在链式调用结束后获取处理后的值。

但是这样需要用户改变调用方式,使用新的方法名,这可能不太方便,或者需要用户适应新的方法名。或者是否可以使用魔术方法或者某种方式,使得用户仍然可以调用原有的方法名,但自动处理链式调用的逻辑?

另一个思路是创建一个装饰器类,包装原有的WPJAM_Field实例,在装饰器中维护当前处理的值,并将每个方法调用转换为对装饰器内部值的处理,并返回装饰器实例本身。例如:

class WPJAM_FieldChainable {

protected $field;

protected $currentValue;

public function __construct(WPJAM_Field $field, $initialValue) {

$this->field = $field;

$this->currentValue = $initialValue;

}

public function validate($for = '') {

$this->currentValue = $this->field->validate($this->currentValue, $for);

return $this;

}

public function pack() {

$this->currentValue = $this->field->pack($this->currentValue);

return $this;

}

// 其他方法类似...

public function get() {

return $this->currentValue;

}

}

然后用户可以这样使用:

$originalField = new WPJAM_Field();

$chainable = new WPJAM_FieldChainable($originalField, $initialValue);

$result = $chainable->validate()->pack()->get();

这样,用户不需要修改原有的WPJAM_Field类,而是通过装饰器来实现链式调用。不过,这需要用户创建一个新的对象,并且初始值需要传入。这可能是一个可行的办法,但用户可能需要调整他们的代码结构,或者提供一个更便捷的方式来创建链式调用的实例。

或者,是否可以在WPJAM_Field类中添加一个方法,比如chain($value),该方法返回一个链式调用的包装器实例,例如:

class WPJAM_Field {

// 原有方法...

public function chain($value) {

return new WPJAM_FieldChainable($this, $value);

}

}

这样用户就可以这样调用:

$field = new WPJAM_Field();

$result = $field->chain($input)->validate()->pack()->get();

这可能是一个比较方便的方式,用户只需要添加chain方法,并且其他方法不需要改动。而WPJAM_FieldChainable类负责处理链式调用,每次调用方法后返回自身,并更新内部的值。

不过,这样需要在WPJAM_Field类中添加chain方法,而用户可能不希望修改原有类,或者用户可能无法修改该类?如果用户不能修改该类,那么可能需要使用装饰器模式,不修改原有类,而是在外部创建一个包装类。

或者,用户是否可以扩展原有的类,创建一个子类,添加链式调用的方法?例如:

class WPJAM_ChainableField extends WPJAM_Field {

protected $chainValue;

public function chain($value) {

$this->chainValue = $value;

return $this;

}

public function validate($for = '') {

$this->chainValue = parent::validate($this->chainValue, $for);

return $this;

}

public function pack() {

$this->chainValue = parent::pack($this->chainValue);

return $this;

}

// 其他方法重写...

public function get() {

return $this->chainValue;

}

}

但这样需要覆盖原有的方法,将它们的返回值改为$this,这可能会影响原有代码中调用这些方法的方式。例如,原来的代码可能期望调用validate()返回处理后的值,而子类中的validate()返回$this,这会破坏原有功能。所以这可能不可行。

因此,回到最初的思路,用户不能修改原有方法,所以必须找到一种不改变原有方法返回值的方法。可能的解决方案是使用一个包装类,将每个方法的调用转换为对内部值的处理,并维护该值,同时返回实例本身。

因此,最终的解决方案可能是创建一个新的类,例如WPJAM_FieldChain,该类包含一个WPJAM_Field的实例和一个当前值。然后,这个新类有与原有类相同的方法名,但每个方法都接受较少的参数(例如不需要传递$value,因为值保存在内部),处理内部值,并返回$this。用户需要将原有类的实例传递给这个新类的构造函数,或者新类内部创建原有类的实例。

例如:

class WPJAM_FieldChain {

protected $field;

protected $value;

public function __construct(WPJAM_Field $field, $initialValue) {

$this->field = $field;

$this->value = $initialValue;

}

public function validate($for = '') {

$this->value = $this->field->validate($this->value, $for);

return $this;

}

public function pack() {

$this->value = $this->field->pack($this->value);

return $this;

}

public function unpack($data) {

// 注意:原方法可能需要参数,比如unpack的参数是$data,但这里可能不需要,或者如何处理?

// 比如,可能这个方法的链式调用需要不同的处理方式?

// 这里可能需要重新考虑参数的问题。

// 原方法unpack的参数是$data,返回$value。但在链式调用中,可能需要将$data作为初始值?

// 或者unpack可能不适用于链式调用?

// 这可能是一个问题,因为原方法的参数可能不同,比如unpack需要$data,而其他方法需要不同的参数。

// 所以,可能需要处理各个方法的参数差异。

// 例如,对于unpack,可能在链式调用中,用户需要传递参数,比如:

$this->value = $this->field->unpack($data);

return $this;

}

public function prepare($args) {

// 原prepare方法接受$args,并返回$value,这里如何处理?

$this->value = $this->field->prepare($args);

return $this;

}

public function get() {

return $this->value;

}

}

然后用户的使用方式可能如下:

$originalField = new WPJAM_Field();

$chain = new WPJAM_FieldChain($originalField, $initialValue);

$result = $chain->validate()->pack()->get();

但是,这样的问题在于,每个方法可能需要不同的参数。例如,validate方法可能需要$for参数,而prepare需要$args参数。因此,在链式调用的每个方法中,需要允许用户传递这些参数。例如,调用$chain->validate('some_for'),这时候在WPJAM_FieldChain的validate方法中,需要接受$for参数,并将其传递给原field的validate方法。

因此,上面的例子中的validate方法应该接受$for参数,例如:

public function validate($for = '') {

$this->value = $this->field->validate($this->value, $for);

return $this;

}

这样,用户可以在链式调用时传递必要的参数,例如:

$chain->validate('for_something')->pack();

对于其他方法,如unpack,可能需要不同的参数。例如,原unpack方法接收$data参数,但在链式调用中,可能需要将$data作为初始值,或者如何处理?例如,假设原unpack方法是从$data中提取某个值,那么在链式调用中,可能需要调用unpack并将结果保存到当前值中:

public function unpack($data) {

$this->value = $this->field->unpack($data);

return $this;

}

但这样,unpack的参数是外部传入的$data,而不是处理当前的值。这可能与链式调用的预期不同。例如,其他方法如validate和pack都是处理当前的值,而unpack则是处理传入的$data,并替换当前的值。这可能符合用户的需求,但需要明确。

例如,用户可能希望链式调用是这样的:

$chain->unpack($data)->validate()->pack();

这时候,unpack处理传入的$data,得到value,保存到链中的当前值,然后validate处理该值,接着pack处理后的结果。

这可能符合预期,所以在这种情况下,unpack的参数是外部的$data,而其他方法处理当前值。因此,在链式调用中,unpack可能用于设置初始值,或者根据具体情况处理。

同样,prepare方法可能需要参数,例如:

public function prepare($args) {

$this->value = $this->field->prepare($args);

return $this;

}

但原prepare方法接收$args参数,并返回处理后的value。这可能意味着,在链式调用中,prepare的参数是某个$args,处理后的结果成为当前值。例如,用户可能需要:

$chain->prepare(['some' => 'args'])->validate()->pack();

这样,prepare处理传入的$args,并将结果作为当前值,之后继续处理。

这样看来,这个解决方案是可行的。用户需要创建一个新的链式调用包装类,该类接受原始Field实例和初始值,然后每个方法调用将处理当前值(可能需要其他参数),并返回自身,最后通过get方法获取结果。

但用户可能需要不同的初始值传递方式。例如,用户可能不想在构造函数中传入初始值,而是通过某个方法设置初始值。例如:

$chain->setValue($initialValue)->validate()->pack();

但为了简化,可能在构造函数中传入初始值比较方便。

总结解决方案:

1. 创建一个新的包装类,例如WPJAM_FieldChain,内部持有WPJAM_Field的实例和当前处理的值。

2. 该包装类为每个需要链式调用的方法创建对应的方法,这些方法接受相应的参数,调用原始类的方法处理当前值(或传入的参数),然后保存结果到当前值,并返回$this。

3. 添加一个get方法,用于获取最终处理后的值。

这样,用户在不修改原有类的情况下,可以通过这个包装类实现链式调用。例如:

$originalField = new WPJAM_Field();

$chain = new WPJAM_FieldChain($originalField, $initialValue);

$result = $chain->validate('for')->pack()->get();

或者,如果用户希望更简洁,可以在原有类中添加一个方法返回包装类的实例:

class WPJAM_Field {

// 原有方法...

public function chain($value) {

return new WPJAM_FieldChain($this, $value);

}

}

这样用户可以直接:

$result = $field->chain($value)->validate()->pack()->get();

当然,这需要用户能修改原有类,添加chain方法。如果用户不能修改原有类,则需要手动创建包装类的实例。

因此,最终的解决方案是使用装饰器模式或包装类,将原有类的方法包装成链式调用的形式,维护处理过程中的值,并在每个方法调用后返回实例本身,从而支持链式调用。

DeepSeek 给出了答案:

为了实现链式调用而不修改原有的 WPJAM_Field 类,可以采用 装饰器模式 创建一个新的类,该类包装原类的实例并维护处理过程中的值。以下是具体实现步骤:

1. 创建链式调用的装饰器类

class WPJAM_FieldChain {
    protected $field;
    protected $value;

    public function __construct(WPJAM_Field $field, $initialValue) {
        $this->field = $field;
        $this->value = $initialValue;
    }

    public function validate($for = '') {
        $this->value = $this->field->validate($this->value, $for);
        return $this; // 返回自身以支持链式
    }

    public function pack() {
        $this->value = $this->field->pack($this->value);
        return $this;
    }

    public function unpack($data) {
        $this->value = $this->field->unpack($data);
        return $this;
    }

    public function prepare($args) {
        $this->value = $this->field->prepare($args);
        return $this;
    }

    // 其他需要链式的方法...

    public function get() {
        return $this->value; // 获取最终结果
    }
}

2. 使用示例

// 原类实例
$originalField = new WPJAM_Field();

// 创建链式实例,传入初始值
$chain = new WPJAM_FieldChain($originalField, $initialValue);

// 链式调用
$result = $chain->validate('for_something')
               ->pack()
               ->get();

// 或者处理其他逻辑
$processed = $chain->unpack($data)
                  ->prepare(['arg' => 'value'])
                  ->validate()
                  ->get();

3. 可选优化:添加 chain 方法到原类(若允许修改)

如果允许在 WPJAM_Field 中添加方法,可以简化链式对象的创建:

class WPJAM_Field {
    // 原有方法...

    public function chain($value) {
        return new WPJAM_FieldChain($this, $value);
    }
}

// 使用方式
$result = $originalField->chain($input)
                       ->validate()
                       ->pack()
                       ->get();

方案优势

  • 无侵入性:无需修改原类代码,完全兼容已有逻辑。
  • 灵活处理参数:每个链式方法可接受原方法所需参数,透明传递。
  • 维护状态:内部维护 value 状态,链式调用自然传递处理结果。

此方案通过包装类巧妙地将原有方法转换为链式操作,兼顾了兼容性和扩展性。


太牛逼了,完全实现了我的想法,唯一一点缺陷是就是如果我有新方法需要链式调用,那么装饰器类也要新增一次,并且 WPJAM_FieldChain 这个类的名字貌似只是给 WPJAM_Field 使用,缺乏通用性,那就让 DeepSeek 再优化一下:

非常棒,但是还有 2 点小问题,如果 WPJAM_Field 有新方法需要链式调用,那么装饰器类也要新增一次,能否使用 __call 魔术方法?并且 WPJAM_FieldChain 这个类的名字貌似只是给 WPJAM_Field 使用,缺乏通用性。但是这个链式调用应该都通用的,可以改成 WPJAM_Chainable 这个名字是否合适?

和前面一样一定认真阅读它的深度思考过程,相比具体的代码实现,它的思考过程对我们编程能力和解决问题能力提高帮助更大,这里我就不再复制过来,因为太长了,并且还是深深震撼了我,我直接给出他的答案:

解决方案:利用 __call 提升灵活性和通用性

针对原有方案的改进需求,我们可以通过以下方式实现更灵活、更通用的链式调用:

1. 使用 __call 魔术方法自动代理方法调用

通过 __call 方法动态转发调用到原对象,自动处理参数和返回值,无需为每个方法编写重复代码。

class WPJAM_Chainable {
    protected $object;  // 原对象(如 WPJAM_Field)
    protected $value;   // 当前处理的值

    public function __construct($object, $initialValue) {
        $this->object = $object;
        $this->value = $initialValue;
    }

    public function __call($method, $args) {
        if (method_exists($this->object, $method)) {
            // 通过反射检查方法是否需要 $value 作为第一个参数
            $reflectionMethod = new \ReflectionMethod($this->object, $method);
            $parameters = $reflectionMethod->getParameters();

            // 如果方法的第一个参数名为 "value",自动插入当前值
            if (!empty($parameters) && $parameters[0]->getName() === 'value') {
                array_unshift($args, $this->value);
            }

            // 调用原方法并更新值
            $this->value = call_user_func_array([$this->object, $method], $args);
            return $this; // 链式返回
        }

        throw new \BadMethodCallException("Method {$method} does not exist.");
    }

    public function get() {
        return $this->value; // 获取最终结果
    }
}

2. 增强通用性:类名和参数约定

  • 类名优化:将 WPJAM_FieldChain 改为通用的 WPJAM_Chainable,表明它是一个通用的链式调用包装器。
  • 参数约定:约定原对象的方法若需要处理当前值,则其第一个参数必须命名为 $value(如 validate($value, ...)),否则直接透传用户参数(如 unpack($data))。

3. 使用方法

基本调用

$field = new WPJAM_Field();
$chain = new WPJAM_Chainable($field, $initialValue);

$result = $chain->validate('for_something')  // 自动插入 $value 作为第一个参数
               ->pack()                      // 自动插入 $value
               ->unpack($externalData)       // 直接透传 $externalData
               ->get();

可选优化:添加 chain 快捷方法(若允许修改原类)

class WPJAM_Field {
    // 原有方法...

    public function chain($value) {
        return new WPJAM_Chainable($this, $value);
    }
}

// 使用方式
$result = $field->chain($input)
               ->validate('for_something')
               ->pack()
               ->get();

方案优势

  1. 无需手动同步方法
    通过 __call 动态代理,原类新增方法时,只要符合参数约定(如第一个参数为 $value),链式调用自动生效,无需修改 WPJAM_Chainable
  2. 通用性设计
    • 类名 WPJAM_Chainable 表明其通用性,可复用于任何需要链式调用的类。
    • 通过反射和参数约定,灵活适配不同方法签名。
  3. 兼容性保障
    • 完全无需修改原类代码,无侵入式扩展。
    • 对 unpack($data) 等特殊方法,直接透传用户参数,兼容性强。

注意事项

  • 参数命名约定:需确保原类中需要处理当前值的方法,其第一个参数命名为 $value
  • 返回值约定:原方法必须返回处理后的值,以便链式传递。
  • 异常处理:通过 BadMethodCallException 明确提示不存在的方法调用。

此方案通过动态代理和约定优于配置的原则,实现了高度灵活和通用的链式调用,兼顾了代码简洁性和扩展性。


牛逼🐂🍺,厉害厉害,下一版本中,WPJAM Basic 我就加入这个 WPJAM_Chainable 的 class。感觉以后些任何功能都可以让 DeepSeek 来帮忙写了,比自己写的还考虑的周全完善。自己把握一下方向就好了,嘻嘻!大家 DeepSeek 也赶快用起来吧!

部署和运行 DeepSeek R1-8b 大型语言模型 (LLM) 的两个简单命令

2025年2月3日 04:45

视频:油管/Youtube | B站/小破站 | 微博视频 | 西瓜视频 | 微信视频号 | X/推特 | 小红书

大型语言模型(LLMs)如 DeepSeek R1-8B 正在革新自然语言处理,使强大的 AI 驱动应用成为可能。然而,设置这些模型往往是一项艰巨的任务,需要复杂的配置。幸运的是,仅需两条简单的命令,您就可以使用 Ollama 在本地系统上轻松部署和运行 DeepSeek R1-8B——Ollama 是一个用于管理和运行开源 LLMs 的简化工具。

步骤 1:安装 Ollama

Ollama 让在本地运行大型语言模型变得更加简单。要安装它,请运行以下命令:

sudo apt install curl -y
curl -fsSL https://ollama.com/install.sh | sh

此命令执行以下操作:

  • 安装 curl,一个用于从互联网下载文件的命令行工具(如果本地没有安装的话)。
  • 下载并执行 Ollama 安装脚本,设置运行 LLMs 所需的一切。

步骤 2:运行 DeepSeek R1-8B

安装 Ollama 后,您可以立即运行 DeepSeek R1-8B 模型:

ollama run deepseek-r1:8b

此命令:

  • 从 Ollama 的存储库拉取 DeepSeek R1-8B 模型(如果尚未下载)。
  • 启动模型,使您可以通过命令行与其交互。

您还可以把deepseek-r1:8b换成llama3.2等,具体看模型列表

为什么使用 Ollama?

  • 易于使用:无需复杂的 Docker 设置或环境配置。
  • 本地推理优化:Ollama 旨在高效地在消费级硬件上运行。
  • 快速设置:整个过程仅需几分钟,让您专注于使用模型,而非配置它。

Ollama 是一个功能强大且用户友好的工具,专为在本地运行和管理开源大型语言模型(LLMs)而设计。它通过消除复杂的配置需求,简化了部署过程,使 AI 模型更易于开发者、研究人员和爱好者使用。借助 Ollama,用户只需使用简单的命令即可轻松下载、运行并与各种 LLMs 交互,确保流畅高效的使用体验。Ollama 针对本地推理进行了优化,能够在消费级硬件上高效运行,使用户无需依赖云端解决方案即可利用先进 AI 模型的强大能力。

结论

部署和运行像 DeepSeek R1-8B 这样的高级 LLM 并不复杂。只需两条简单的命令,您就可以在本地计算机上运行一个强大的 AI 模型。无论您是开发者、研究人员还是 AI 爱好者,这种简化的设置都让 LLMs 的实验变得更加轻松。

立即尝试,体验 DeepSeek R1-8B 的强大功能!

大语言模型 LLM = Large Language Model

英文:Two Simple Commands to Deploy and Run the DeepSeek R1-8b Large Language Model (LLM)

本文一共 714 个汉字, 你数一下对不对.
部署和运行 DeepSeek R1-8b 大型语言模型 (LLM) 的两个简单命令. (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 部署和运行 DeepSeek R1-8b 大型语言模型 (LLM) 的两个简单命令 DeepSeek 人工智能 (AI) 技术 教育 程序员 计算机 计算机
The post 部署和运行 DeepSeek R1-8b 大型语言模型 (LLM) 的两个简单命令 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. 力扣刷题获得一件衣服奖励(Leetcode DCC Winner) 我每天都在力扣上刷题。力扣有国服和美服,我两边都会打卡。每天打卡可以获得积分,而积分可以兑换各种礼物,比如T恤、卫衣、水壶,甚至可以用来抵扣一个月的会员费用。 我从2018年8月开始刷题找工作(当时去伦敦面试亚马逊),从那时起每年都会续费会员,费用是159美元,相当于每月13.25美元。我觉得这是对自己最值得的投资。买了力扣会员,就会有动力刷题、思考,通过不断练习让自己熟能生巧,保持一定的竞争力。 到目前为止,我已经用积分兑换了7-8件力扣的衣服,其中有2-3件是卫衣。国内的礼物我都寄到姐姐家。 前不久,我收到了力扣的邮件,说我获得了DCC奖励。我也不知道为什么会获得这个奖,随手回了邮件。没多久,就收到了一件新版的力扣衬衫。 英文:Leetcode DCC Winner T-shirt 本文一共 291 个汉字, 你数一下对不对. 力扣刷题获得一件衣服奖励(Leetcode DCC Winner)....
  4. 同一台服务器上多个WORDPRESS站点的一些设置可以移出去 我自从把所有网站都挪到一处VPS服务器上 就发现很多事情省事很多 可以同时管理多个网站 包括 WORDPRESS博客. 比如我有四个WORDPRESS博客 然后我就把通用的一些资料给移出去 移到 HTTP或者HTTPS都不能直接访问的文件夹里这样就更安全许多. 文件 wp-conn.php 存储了 相同的数据库资料. 1 2...
  5. 老婆的配偶签证被拒 郁闷死了, 601镑签证费打水漂,一去不回!费钱费力. 去年12月份我请了律师拿到了永居.老婆是T1G签证的陪工签 (DEPENDENT VISA) 2016年4月份到期. 然后我就想说得趁早把她的签证转成配偶签(SPOUSE)这样她就可以尽快走五年永居的路线. 今天收到拒签信,原因是我没有提供 有工资进帐的那份银行帐单,我提供了我和我老婆的联名帐户, 但是工资并不是直接打到这个帐单上的.所以就这一点被拒了.完全不给解释,不给补材料的机会.601镑就这样再见了. 英国的签证寄出之后是先由另一个部门先收费, 收完费才正式审理,而且不管结果如何是不退钱的.后悔没让律师弄,也不至于到现在浪费这么多时间和金钱,签证还没过.由于原签证还没到期,所以还不能上述.估计只能等搬完家后年底请律师搞定这事. 真是郁闷, 600镑, 我可以再买一个IPHONE6,或者给我的新买的车换四个轮胎....
  6. 公司给配了台高配DELL笔记本 早上例会结束的时候我顺便说了一句 我的笔记本有点慢, 当时我并不知道我的经理远程用电话也参加会议了(他全程在听), senior staff SE 对着电话说, “peter, you hear that? btw, my disks are...
  7. 花钱让人换汽车钥匙的电池真是个智商税 今天想不到我这么聪明的人也被人狠狠的收了一把智商税. 今天被收智商税了, 去 Tesco 换车钥匙的电池. . 才发现如此的简单, 那人直接2分钟搞定2个, 然后收了我25英镑. . 服了. . 我还以为很复杂…… 网友说 “1....
  8. 优化设计 个人主页 并且 PageSpeed Insights 双项 100分 坛子的个人主页 www.tanzhijun.com 不错 很适合个人主页的模板. 而且是手机友好. 于是我照着把 我的主页改了改. https://steakovercooked.com 并且做了几点修改: 0. 使用 google mod_pagespeed 把 JS,...

如果基于 DeepSeek 开发 WordPress 的插件,它自己会选择什么功能?

2025年1月30日 21:54

今年最火的就是 DeepSeek 了,各种新闻,把英伟达的股票都干没了10 几个点。我也在想做一个基于 DeepSeep 的 WordPress 插件,但是做什么方向的的功能呢?要不这个功能也让 DeepSeek 帮我们也想想?

DeepSeek 的使用和 ChatGPT 之类其他的 AI 工具是有区别,他是基于推理型的大模型,而不是指令型的大模式,所以使用 DeepSeek 根本不需要提示词,直接就好了。

所以我的问题就直接把自己的目的告诉,我想写个 DeepSeek 的插件,需要给些功能灵感:

我想基于 DeepSeek 写个 WordPress 插件,在方向上,基于你对自己理解,你觉得可以做那些功能呢,你可以给我一些灵感吗?

然后我 开启了深度思考模式,DeepSeek 给出了它对这个问题的推理过程:

然后他给出了自己的建议,它还非常贴心的分成几个小标题,一共提供内容生产力、智能交互增强、数据智能分析和效率增强功能四大方向,每个方向还提供了2 个小功能,大家看看这些功能建议如何,并且它还非常贴心的提供技术实现要点,以及如何赚钱,也就是商业化建议

基于 DeepSeek 的能力和 WordPress 生态需求,以下是几个值得探索的插件开发方向,按优先级排序并附具体实现思路:


一、内容生产力工具(核心场景)

  1. AI 文章助手
    • 自动草稿生成:根据用户输入关键词自动生成结构化大纲(支持Markdown)
    • 智能续写/改写:通过浮动工具栏实现选中内容的优化/扩写/简写
    • SEO 增强:实时分析内容并推荐关键词密度、生成meta描述
    • 技术实现:结合Gutenberg编辑器API + 内容缓存机制降低API调用成本
  2. 多模态内容生成
    • 基于文本描述自动生成特色图片(需集成DeepSeek-Visual)
    • 智能生成文章配图说明文字(ALT文本优化)
    • 自动创建信息图描述文本

二、智能交互增强

  1. 对话式知识库
    • 将网站文档/产品目录转化为可对话的知识库
    • 实现路径:定期爬取指定页面内容构建向量数据库
    • 示例场景:客户服务机器人、产品FAQ交互
  2. 实时评论互动
    • 智能回复用户评论(可设置白名单词库限制)
    • 情感分析自动标记高风险评论
    • 支持预设行业话术模板(电商/教育等)

三、数据智能分析

  1. 流量内容洞察
    • 结合GA数据生成自然语言分析报告
    • 自动识别高跳出率页面的内容问题
    • 预测内容生命周期并提供更新建议
  2. 竞品内容监测
    • 定期抓取竞品RSS进行摘要对比
    • 生成差异化创作建议(需配置代理抓取)

四、效率增强功能

  1. 智能翻译工作流
    • 一键生成多语言版本并保持SEO结构
    • 支持术语表维护和翻译风格预设
    • 实现:WPML兼容 + 增量翻译缓存
  2. 自动化运营
    • 定期自动生成节日营销文案
    • 社交媒体帖子自动生成与排期
    • 结合Zapier实现跨平台自动化

技术实现要点

  1. 性能优化
    • 实现内容缓存池(基于文章ID的版本控制)
    • 支持异步队列处理长文本任务
    • 本地语义相似度计算减少API调用
  2. 安全合规
    • 内容审核过滤层(可对接DeepSeek审核API)
    • 用户数据脱敏处理
    • GDPR兼容设计(数据暂存策略)
  3. 扩展架构
    • 提供webhook接入点
    • 开发REST API扩展模块
    • 支持与WooCommerce等流行插件的数据打通

商业化建议

  • 分层定价策略
    • 免费版:基础内容生成(限次/水印)
    • 专业版:高级分析+多语言(订阅制)
    • 企业版:私有化部署+定制模型
  • 流量变现
    • 内置AI写作模版市场
    • 对接第三方云服务返佣
    • 提供A/B测试数据服务

建议初期聚焦内容生成核心场景,采用「AI功能+SEO工具」组合拳切入市场,后续通过用户行为数据分析逐步扩展智能运营功能。可参考Jarvis(Conversion.ai)的增长路径,但需注意WordPress生态的特殊性,强化与经典插件(Yoast SEO、Elementor)的兼容性。


大家觉得如何?希望首先实现哪个方向的插件?可以给我留言,我争取2 月份就先做个简单的插件出来给大家用用。😁

DeepSeek本地部署以及使用体验

2025年1月30日 20:41

最近,国内一家名为DeepSeek的初创公司通过技术迭代与升级,推出了全新一代大模型“DeepSeek-V3”。这款大模型因其卓越的性能和易用性,迅速在AI爱好者中引起了广泛关注。更令人瞩目的是,DeepSeek R1版本直接免费开源,这一举动迅速在AI发烧友圈中传播开来,并迅速扩散到海外社交平台和技术论坛。海外网友对此纷纷表示赞叹,称其为AI领域的一大突破。

它的研发成本大概600万美金,不到openai的1%,各项性能指标更是和OpenAI-o1 模型不相上下,甚至做到了小部分的超越,关键是开源的,我们可以本地部署使用。

本地部署,我们可以通过Ollama来进行安装

Ollama 官方版:点击前往

Web UI 控制端【点击安装

安装命令

1.5B Qwen DeepSeek R1

ollama run deepseek-r1:1.5b

7B Qwen DeepSeek R1

ollama run deepseek-r1:7b

8B Llama DeepSeek R1

ollama run deepseek-r1:8b

14B Qwen DeepSeek R1

ollama run deepseek-r1:14b

32B Qwen DeepSeek R1

ollama run deepseek-r1:32b

70B Llama DeepSeek R1

ollama run deepseek-r1:70b

DeepSeek和chatgpt比较,我就本地部署deepseek的时候想了一个问题,比较一下确实能分出高低,deepseek马上猜出我的电脑配置,而chatgpt没有,虽然我的电脑售卖的时候是有好几种内存和显卡配置的,当然,我的问题最好写得更具体,当我就应该是不懂的那种:

问题:

我的电脑是Lenovo Legion R7000 2020,帮我推荐安装哪个deepaeek模型:

DeepSeek回答:

根据 Lenovo Legion R7000 2020 的硬件配置(通常是 16GB 内存 + GTX 1650/1660 Ti 显卡),建议选择较小的模型,因为较大的模型需要更多的显存和计算资源。以下是适合你电脑配置的推荐:

推荐选择:

  1. 1.5B Qwen DeepSeek R1
    • 模型较小,适合 16GB 内存和 GTX 1650/1660 Ti 级别的显卡。
    • 运行速度快,对硬件要求较低。
    • 命令:ollama run deepseek-r1:1.5b
  2. 7B Qwen DeepSeek R1
    • 如果你的显卡显存较大(如 6GB 以上),可以尝试 7B 模型。
    • 可能需要降低批处理大小(batch size)以避免显存不足。
    • 命令:ollama run deepseek-r1:7b
  3. 8B Llama DeepSeek R1
    • 类似于 7B 模型,适合显存较大的配置。
    • 命令:ollama run deepseek-r1:8b

不推荐选择:

  • 14B、32B、70B 模型
    这些模型对显存和计算资源要求非常高,通常需要 24GB 以上显存的高端显卡(如 RTX 3090、A100 等),不适合你的电脑配置。

总结:

如果你的显卡显存较小(如 4GB),建议选择 1.5B 模型;如果显存较大(6GB 以上),可以尝试 7B 或 8B 模型。运行前请确保安装了最新的显卡驱动,并关闭不必要的后台程序以释放资源。

chatgpt回答:

要选择适合你 Lenovo Legion R7000 2020 配置的本地 AI 模型,主要需要考虑你的计算机硬件配置,尤其是显卡(GPU)和内存(RAM)的性能。你提供的机器大致配置应该包括较强的处理能力,但具体能跑哪些模型,取决于内存和显卡性能。

通常来说,模型越大,占用的显存和内存就越多。如果你的电脑配备了高性能的显卡(例如 NVIDIA RTX 3060 或更高),并且有足够的内存(16GB 或更高),可以考虑使用较大的模型。以下是对比这些模型的建议:

1. 1.5B Qwen DeepSeek R1

  • 适用条件:这是一个相对较小的模型,对显卡和内存要求较低。基本上,几乎所有配置的电脑都可以运行它,特别适合资源有限的机器。

2. 7B Qwen DeepSeek R1

  • 适用条件:虽然较大一些,但如果你的电脑有较强的 GPU(比如 RTX 3060 及以上)和至少 16GB 内存,它是一个可以运行的模型。

3. 8B Llama DeepSeek R1

  • 适用条件:这个模型对显卡要求更高,可能需要更多的显存和更快的 GPU。如果你的电脑配备了强大的显卡和 16GB 以上的内存,可以考虑。

4. 14B Qwen DeepSeek R1

  • 适用条件:这个模型较大,通常需要更强的 GPU 和较大的内存(可能需要 24GB 或更高的显存)。适合高端配置的机器。

5. 32B Qwen DeepSeek R1

  • 适用条件:32B 的模型非常庞大,可能需要顶级显卡和至少 32GB 内存。一般来说,普通玩家的机器可能难以运行此类模型。

6. 70B Llama DeepSeek R1

  • 适用条件:这是一个极为庞大的模型,只有配备顶级硬件的机器(例如 A100 GPU 或等效硬件)才能够高效运行此类模型。普通游戏笔记本不适合运行如此大的模型。

综合建议:

  • 如果你有较好的 GPU(例如 RTX 3060 或更高)和 16GB 或更多内存,7B Qwen DeepSeek R18B Llama DeepSeek R1 会是比较合适的选择。
  • 如果你是低端显卡或内存较少的配置,选择 1.5B Qwen DeepSeek R1 会更为合适。

最终选择哪个模型,还是要依据你电脑的具体硬件配置来决定。如果你不确定具体的硬件要求,可以先尝试运行小模型,看是否能够稳定运行,再逐步增加模型的规模。

代码测试:

对我来说,更多的是在编程方面的应用,这也是为什么,本来ai可以帮助写作的这段期间,写作应该更简单更快,但我的博客更新率反而降低,因为我最近几乎都在用ai编程,忙得停不下来,最近又做了一套预约系统(客户需求),一个不精通编程的人,因为有了ai便有了希望。

目前利用ai编程,尤其是我这样的水平,很多时候需要丢一大堆代码来进行功能的添加,为的也是不想拆分一段段的代码去解释和修改,虽然ai也能给你答案,但是折腾起来挺费时费力,所以一开始就要想好全部需要的功能,一次性让ai都考虑在内,当然,如果你的系统太复杂,目前有些ai免费版输出的代码有字数限制。

根据我目前的使用心得,在deepaeek还没出来的时候,claude.ai的编程能力最强,但由于字数限制,有经常还得把代码搬到kimi.ai那边去继续修复,kimi.ai主要特点是输出内容比较长,但是编程能力相对会低一些,现在由于deepseek的出现,经过测试,输出内容好像比kimi.ai更长,编程能力和claude不相上下,我测试过一段mercadopago的支付,写出来的代码可用,说明编程能力还是可以的,虽然感觉过去和claude还是有一丁点差距,不过已经非常好了,至少是免费而且没有限制,真的狂喜。

我也看到过做中文文案的人的评测,说DeepSeek的中文能力比chatgpt强,语言组织上更适合中国人的思维,这点也是做自媒体文案的人的总结。

这几天因为deepseek太火,以至于受到海外的网络攻击,也因为访问量太大,各种卡顿,所以本地部署也是一个选择,经过测试,配置选择越大效果会越好。

今日除夕

2025年1月28日 15:23

1、今日除夕,在乡下过年,艳阳高照,合理合法躺平的日子,心安理得享受不内卷的闲暇时光。
2、无论朋友圈,还是科技界,DeepSeek AI 都成了热门话题。我用过几个月的DeepSeek 开放平台的api ,对它的理解不深刻,甚至很肤浅。DeepSeek最近一下子就大火了,按流行的说法就是用500万美元实现了10亿美元的效果。看新闻,就在今天DeepSeek 推出了janus pro 多模态大模型,家里有高配电脑的可以玩起来了。在新闻通稿里,在分析文章里,对DeepSeek不吝溢美之词,堆积着各种我这种低端三流程序员看不懂的AI 术语。看了一上午有关DeepSeek AI 文章,我既高兴,又寂寞。高兴的是终于有咱国产的AI扬眉吐气了,很长脸。寂寞的是,这么高大上的高科技,离我这样三流程序员,还真有点远,我已严重落后了。

3、当我越来越依赖AI的辅助去写程序了,身体上虽然轻松了不少,但内心却有些沉重,AI取代我这样三流程序员的时间点,已经快到了。我退休的年龄已推迟到了63岁,还有12年,被AI淘汰的我,能安心写代码吗?

4、为了排解内心的寂寞,我忍住不打开开发工具,写一会儿小程序的代码,心里想着,写一天算一天了,或许那天写的代码就用不上了。

5、既然你看到了这里,就谢谢你耐心读了以上文字。在这除旧迎新的日子,祝福你 :新春大吉,事事如意。

❌
❌