简介这份PDF为OReilly于2024年推出的《Developing Apps with GPT-4 and ChatGPT》正式版电子书作者为Olivier Caelen与Marie-Alice Blete面向具备一定编程基础、希望把大模型能力落地为实际产品的开发者与技术人员。全书从GPT-4与ChatGPT的能力边界和调用方式讲起逐步延伸到智能聊天机器人搭建、内容生成器设计、提示词组织与输出结果调优等典型场景并结合可迁移的工程思路说明如何把一次对话式调用扩展为稳定可用的应用功能帮助读者跨过“会用”到“能开发”的门槛。压缩包内共1个pdf文件约2.86MB单文件结构完整版权页、目录与正文章节层次清晰便于离线阅读、全文检索与摘录笔记通勤或断网环境下也能连续研读。目前已有1133人学习下载适合希望系统梳理大模型应用开发路径或把它作为课程参考与团队技术分享材料的读者。1. 先搞懂一件事GPT-4 和 ChatGPT 到底是什么刚接触这块的人十个里有九个会先卡在同一个问题上GPT-4 和 ChatGPT 到底是不是同一个东西我给零基础学员讲入门课时通常先用一句话把这事说清ChatGPT 是你打开就能打字、等它回话的那个产品GPT-4 是支撑这类产品干活的那台引擎里的一个具体型号。一个是你摸得到的界面一个是界面背后的发动机两者不在一个层级上所以不存在哪个更好、该学哪个的问题。把这两者的关系换成生活里的场景就更好理解了。你去餐厅点菜服务员听你说完需求、转身进后厨、端出一盘菜——服务员是产品后厨是模型。你完全不懂后厨怎么起火、怎么调味也能点出一桌好菜但如果你想自己开一家餐厅那就必须知道后厨里有什么、能做什么、不能做什么。这份讲 GPT-4 和 ChatGPT 应用开发的书本质上就是在带你进后厨而不是教你怎么当顾客。它适合的人比想象中宽。会一点编程、想给自己的小工具加个对话功能的做产品、想知道这件事到底能做到什么程度的纯粹好奇、想搞明白那些“AI 好像什么都懂”的说法里有多少水分的——都能读。反过来如果你已经在自己调模型、写提示词工程这本书前几章对你来说就偏浅了。2. 为什么值得学会聊天和会做应用中间隔着什么2.1 用别人的聊天框和把模型装进自己的产品大多数人跟这类模型的第一次接触都是在别人的网页上打字。这个阶段你练的是“怎么问”收益也很直接问得好答案就好。但这条路的天花板来得很快——你没法让它读你电脑里的表格没法让它每天自动整理邮件也没法让它以固定的格式输出、直接塞进你的数据库。你只能一次次复制粘贴像个传话的人。做应用就不一样了。同样是“总结一段文字”在聊天框里你要手动贴、手动复制写进程序里它可以每天凌晨自动跑一遍把结果写进文件。差别不在于模型变强了而在于你把模型接进了一条流水线。这条流水线里有三样东西输入怎么给、输出怎么用、出错了怎么办。这三件事聊天框一样都不帮你管。我第一次意识到这个差距是帮人处理一批格式混乱的文本。手工复制粘贴干了两小时后来改成写个循环调用五分钟跑完还剩下一堆时间用来检查结果对不对。从那天起我就明白了学这本书不是为了多会一个工具是为了把“一次次手动操作”换成“一次写好、反复运行”。这才是“开发应用”这四个字真正的分量。入门阶段最容易走偏的地方是把“会提问”和“会开发”当成一回事。前者是使用技能后者是工程技能两者的学习曲线完全不同。使用技能靠多试一天就能上手工程技能要靠理解输入输出的边界、理解模型的能力范围这个必须老老实实从概念啃起。2.2 这本书打算把你带到哪一步按书名和开篇内容看这本书的路线是“先讲清楚模型是什么再讲怎么把模型接进应用”。开篇那章基本没写代码全在讲大语言模型的来龙去脉——它从哪来、属于哪个技术分支、内部大致怎么运转。这个安排对新手其实很友好先让你知道自己在操作一个什么东西再让你动手。为什么这个顺序重要因为这类模型有很多“反直觉”的行为。它会一本正经地编造不存在的事实会因为提问方式的一点变化给出完全不同的答案会对超过一定长度的输入直接“忘掉”开头。你要是不知道它内部是在做概率预测就会把这些当成 bug一遍遍重试最后怀疑是自己写错了代码。知道原理你才知道哪些是它的天性、哪些是你的问题。这本书面向的应用类型也写得很明确智能聊天机器人、内容生成器这一类。这两个方向恰好是新手最容易出成果的——不需要复杂的前端不需要部署大型服务一个脚本加上几十行代码就能看到效果。先做出一个能跑的东西比先读懂所有理论更能让人坚持下去。需要提醒的是这本书出版时间较早模型和能力都在快速变化。书里的概念、架构、思路是稳的具体的接口细节可能已经和现在不一样了。入门阶段这不算问题你要学的是“怎么想”不是“抄哪一行”。2.3 零基础的前置知识其实没有想象中多很多人被“人工智能”“深度学习”这些词吓住觉得自己数学不好、没学过算法肯定看不懂。实话说读这本书的前几章你需要的数学大概就是“概率是什么意思”这个程度。真正卡人的不是数学是陌生名词的密度——一页纸上冒出七八个没见过的词谁都会发怵。所以我建议你入门时先做一件事把所有看不懂的名词列成一张表每读到一个就补一行解释用你自己的话写不许抄定义。这个动作看着笨效果极好。等你写到第三十个词会发现它们开始互相咬合、彼此解释了——这就是入门的信号。编程基础方面会写最基本的循环、函数、字典就够了。书里的示例大多是短小的脚本不涉及复杂框架。如果你连 Python 都没写过建议先花两三天过一遍基础语法能读懂for、if、字典取值就可以回来接着读。不用等到“学扎实”那是个永远不会到来的时间点。至于英语原书是英文的但技术类英文的词汇量其实很窄来回就那么几百个词。读的时候开着翻译工具读到第三十页就顺了。我见过太多人卡在“等我英语好一点再读”然后一年过去还没开始。语言是读进去才会的不是学会了才读。3. 打地基把 AI、机器学习、深度学习、NLP 一次捋顺3.1 一层一层往里套从 AI 到 Transformer 的四个圈这几个词之所以让人晕是因为它们不是并列关系而是一层套一层的关系。把它们想成四个同心圆从外往里人工智能、机器学习、深度学习、Transformer。越往里越具体越往外越宽泛。最外面那层“人工智能”指的是让机器完成本来需要人脑才能完成的任务。这个定义宽到什么程度导航软件算路况、游戏里电脑对手按规则出招都能算进去。所以“人工智能”这个词本身信息量很低说一个东西是 AI等于什么都没说。往里一层是“机器学习”。这里有个关键转折程序员不再直接写规则而是给算法一堆例子让它自己从例子里找出规律。打个比方传统编程是你告诉电脑“红灯停绿灯行”机器学习是你给电脑看一万张路口的照片让它自己总结出“红色的时候车都停着”。前者你写规则后者你喂数据。再往里是“深度学习”它是机器学习里的一类方法特点是使用多层神经网络。层数多带来的好处是能自动从原始数据里提取特征不用人手工设计。最后那个 Transformer是深度学习里的一种具体网络结构2017 年被提出来专门处理序列数据——一句话、一段文字本质上都是有序的序列。这个四层结构不需要背但必须理解因为后面所有的名词都能挂到这棵树上。读到“大语言模型”你就知道它属于 Transformer 这一层读到“自然语言处理”你就知道它横跨在应用层是用这些技术去处理人类语言的一整套任务集合。顺便说清楚 NLP 和这几层的关系。自然语言处理不是某一层里的东西它更像是一个“应用方向”——用机器学习的方法去解决和语言有关的任务。这些任务包括把文本分类、把一种语言翻成另一种、根据一段材料回答问题、根据开头往下续写。你以后做的每一个功能基本都能对到这四类里的某一类。3.2 语言模型到底在解决哪一类问题新手最容易误解的一点以为语言模型“理解”了你说的话。它没有。它做的事情非常单一——给定一段已有的文字预测下一个最可能出现的词。就这一个动作反复执行一次吐一个词串起来就成了你看到的整段回答。这个认知非常重要因为它一次性解释了模型的一大堆怪毛病。为什么它会编造不存在的书名因为它在预测“这里最可能接什么词”而一本听起来很合理的书名在概率上确实很高。为什么同一个问题问两次答案不同因为“最可能”有好几个候选选哪个带一点随机性。为什么它算数经常算错因为它在续写“看起来像答案的文字”而不是在真的做运算。理解了这一层你就不会再问“它为什么不懂”这种问题。它本来就不是为“懂”设计的它是为“续得像”设计的。你要做的是在它这个能力的基础上通过设计输入、约束输出、增加校验让它产出对你有用的东西。那些“大”字也不是白加的。模型规模大到一定程度之后出现了一个让研究者都意外的现象原本只训练它做“预测下一个词”结果它顺带会了翻译、分类、问答这些没专门教过的任务。这个能力叫“涌现”是这波技术能火起来的根本原因。你不需要训练模型你只需要会用这个已经涌现出来的能力。3.3 三代技术演进n-gram、循环网络、Transformer这段历史值得花十分钟了解因为它解释了“为什么现在的模型能记住那么长的上下文”。最早的一代叫 n-gram。做法极其朴素统计大量文本里“某几个词后面最常跟哪个词”然后按频率挑。比如训练语料里“今天天气很”后面出现“好”的次数最多那就接“好”。这个方法的问题是它只看前面固定的几个词看不到整句的意思写出来的东西前后不搭读着像机器翻译的早期版本。第二代是循环神经网络和它的改进版长短期记忆网络。它们的思路是“一边读一边记”每读一个词就更新一次内部状态理论上能把前面读过的内容带到后面。这个思路对了一大步但有个硬伤它必须一个词一个词按顺序处理不能并行。这导致训练速度上不去输入一长就记不住开头——就像你听一段很长的话听到后面忘了前面。第三代就是 Transformer2017 年提出。它的关键改动是彻底放弃了“按顺序处理”改成让每个词同时和句子里所有其他词建立联系。这个改动带来两个直接好处一是能并行计算训练速度大幅提升才有可能喂进去海量数据二是每个词都能“看到”整句话长距离的依赖关系不再丢失。现在你用的所有主流大模型底子都是这个结构。把这三代放在一起看你会发现一条清晰的主线每一代都在解决上一代“看不到更远”的问题。n-gram 只能看几个词循环网络能看但看得吃力Transformer 能看而且看得快。理解了这条主线后面再冒出新名词你也能大致判断它是在哪个方向上做的改进。4. 拆开黑匣子token、注意力、上下文窗口是怎么回事4.1 模型眼里的文字token 是什么模型不认字它认数字。所以任何一段文字送进去之前都要先被切成小块每块换成一个编号这个过程叫分词切出来的每一块叫一个 token。token 不等于单词也不等于字——它是介于两者之间的东西可能是一个完整的词也可能是词的一部分。举个直观的例子。英文句子 “The weather is nice today” 送进去可能被切成 The、wea、ther、is、nice、today 这样的块。注意 weather 被拆成了两半因为模型见过的文本里这个词以这种形式出现的频率更高。中文的情况更碎一个字可能就是一个 token也可能两个字合成一个取决于具体分词器的词表。下面这段代码是个教学用的极简演示只按空格和标点切让你看清“切”这个动作本身是什么样的。真实分词器比这复杂得多会维护一张几万到十几万条的词表。import re def rough_tokenize(text): # 把标点单独拆出来前后加空格方便后面按空格切 text re.sub(r([,.!?;:]), r \1 , text) # 按空格切开去掉空字符串 return [t for t in text.split() if t] prompt The weather is nice today, so I decided to tokens rough_tokenize(prompt) print(len(tokens)) # 切出来多少块 print(tokens) # 每一块长什么样跑完你会看到 13 块左右。这个数字没有实际意义但它让你建立一个直觉同一句话送进模型后变成了一串块块数不等于单词数。真实分词器切出来的块数通常比这个少因为像 weather 这种词会被整体保留。为什么要关心这个因为计费、长度限制、上下文管理全都按 token 算不按字数算。原书里给了一个经验换算英文文本里100 个 token 大约对应 75 个单词。反过来说1000 个单词大概要 1300 多个 token。中文别拿这个比例硬套中文字符通常更“费 token”具体比例要看分词器最稳的办法是实际跑一遍数出来。你需要估算的东西大致方法英文段落长度单词数 × 1.33 ≈ token 数中文段落长度按字符数估乘以一个 12 之间的系数实测为准一段代码符号多、空格多通常比同字数的英文更费 token4.2 自注意力一句话里的词是怎么互相“看”的Transformer 能成立核心在一个机制上注意力。说白了就是处理某个词的时候让模型先判断这句话里其他哪些词跟它关系最大把注意力分配过去。原书里有个很好的例子我用中文重讲一遍。句子是“小张收到了同事们的表扬”。现在模型要理解“同事们”这个词指的是谁、和谁有关系。通过注意力机制模型会给“小张”和“表扬”这两个词分配更高的权重把它们和“同事们”关联起来最后形成一个新概念“小张的同事们”。这个过程不是人教的是模型从海量文本里自己学出来的关联方式。这种“同一句话内部词和词互相看”的机制就叫自注意力。它解决了循环网络的老毛病不管两个词隔多远中间夹了多少内容它们之间都能直接建立联系。这也是为什么现在的模型能处理长文档——它不需要一个词一个词地“记”而是同时看到全貌。要知道注意力算的不是“意思”是“相关程度”的数值权重。模型内部把这些权重做加权求和得到一个对当前词的新的表示。这个表示是一串数字人类看不懂但它压缩了上下文信息。所谓模型“理解”了句子指的就是这串数字编码了足够的关系信息让它下一步的预测更准。入门阶段理解到“每个词都会看一遍全句、按相关度分配权重”这个程度就够用了。你不需要会手算矩阵但你要知道输入里任何一个词的位置、顺序、搭配变化都会改变整句话的权重分配进而改变输出。这就是为什么提示词的措辞会影响结果——不是你说了什么魔法词是权重图变了。4.3 交叉注意力与编解码器GPT 为什么只用了 Transformer 的一半标准的 Transformer 是“两半”的一半叫编码器一半叫解码器。原书用了一个翻译的例子来说明分工我换成中文场景讲。假设要把一句英文翻成中文。编码器负责读英文把整句话的含义压缩成一组数字表示相当于做了一份“内容摘要”。解码器负责根据这份摘要一个词一个词地往外写中文。问题来了写中文的时候怎么知道该重点参考英文原文的哪一部分这时候用的就是交叉注意力——它让解码器在生成每个词时回头去“看”编码器留下的那份摘要把注意力放在最相关的部分上。交叉注意力和自注意力的区别就在“看谁”自注意力是看自己这句话内部交叉注意力是看另一段输入产出的表示。前者解决“这句话里谁跟谁有关系”后者解决“输出该对着输入的哪一块”。关键点来了GPT 这一支压根没有编码器。它只保留了解码器那一半因此也就不需要交叉注意力只靠自注意力在那一段文本内部绕。听起来像是砍掉了一半为什么还能用因为它干的活本来就不一样翻译需要先完整读完输入再输出所以要两半而“接着往下写”这件事只需要看着已有的文字往后预测一个解码器就够了。作为对照另一支只保留编码器的模型比如 BERT 那一类擅长的是“读懂”——做分类、做判断、做抽取。它不适合直接生成因为它的训练方式不是往后续写。所以你以后选模型时先问自己一句我是要它“写出来”还是要它“判断出来”前者对应解码器这一支后者对应编码器那一支。这个判断能省下大量试错时间。4.4 上下文窗口8,192 和 32,768 这两个数字意味着什么模型一次能“看到”的 token 总量叫上下文窗口。原书提到GPT-4 有两个版本窗口分别是 8,192 和 32,768 个 token。这个数字是你入门阶段最该记住的一个参数因为它直接决定了你能做什么、不能做什么。8,192 个 token按前面那个换算英文大概六千多个单词中文要打折扣。听起来不少但你要注意这个额度是“输入 输出”共享的。你贴进去三千字材料模型再写两千字回答加起来就把窗口吃掉大半。如果还要带上前几轮的对话历史消耗得更快。超出窗口会发生什么不是报错而是最早的内容被丢掉了。这是最坑的地方——它不告诉你“我忘了开头”而是很自然地基于后面还留着的内容继续回答看起来一切正常结论却已经错了。提示长文档处理时别指望一次全塞进去。先把文档切成若干段每段单独处理出小结再把这些小结拼起来做第二轮处理。这个“先局部、后整体”的做法比硬塞靠谱得多。窗口大小也决定了你的架构选择。窗口够用就把相关材料直接放进提示词里窗口不够就得先做检索——先把最相关的几段找出来只把那几段送进去。这个思路是后面做实际应用的必修课现在先建立一个印象窗口是稀缺资源要像省钱一样省着用。还有一个容易忽略的点窗口大不等于效果好。有研究发现材料放在窗口的不同位置被模型利用的程度并不一样中间部分容易被忽略。所以重要的信息尽量放在开头或结尾这是入门阶段就能用上的小技巧。5. 避坑新手学这块最容易翻车的五个地方第一个坑把它当搜索引擎用。现象是你问一个很具体的事实性问题它给出一个格式完美、细节丰富、但完全不存在的答案你拿去用然后出错。原因是它在做“续写像答案的文字”不是去数据库里查。解决办法是调整期待把它当成一个知识面广但不保证准确的写作助手凡是涉及具体数据、日期、引用、条款的内容一律要求它标注来源或者你直接把这些材料贴进提示词里让它基于给定材料回答而不是靠记忆。第二个坑按字数估 token。现象是你按“一千字大概一千 token”去算结果程序报长度超限。原因是分词按子词切标点、空格、代码符号都算实际数量和你估的差得远。解决办法是别估直接数。写个小脚本把待发送的文本跑一遍分词打印出块数心里就有数了。我吃过一次亏一段看着不长的配置文本token 数比预期多了四成。第三个坑一上来就啃论文和公式。现象是读了三天注意力机制的推导卡在矩阵乘法上然后放弃觉得自己不适合。原因是把“会用”和“会造”混为一谈了。解决办法是先跑通一个最小例子让屏幕上出现模型返回的一句话拿到正反馈再回头补理论。入门阶段的目标是能操作不是能推导。血泪经验先动手的人走得远先看论文的人往往半路就没了。第四个坑把所有历史对话无限累积。现象是聊了二十轮之后模型开始答非所问或者把很早之前说过的话重复一遍。原因是上下文窗口被塞满最早的内容被挤掉了。解决办法是给历史设一个上限只保留最近若干轮更早的内容压缩成一段摘要放回去。这件事越早做越好等到上线再改就得动大手术。第五个坑以为同一个输入永远得到同一个输出。现象是你测好了效果上线后发现同样的问法答案每次都不同没法做断言测试。原因是生成过程带随机性模型是从概率分布里挑词不是取唯一解。解决办法有两个方向一是把随机性调到最低让输出尽量稳定二是改变测试思路不比对完全相等的字符串而是检查“关键信息是否出现”“格式是否合规”。第二类测试对这类模型才是有效的。6. 第一步怎么迈从读完第一章到跑通第一个对话程序概念过完最怕的就是停在这儿。给你一条能走的路按周算每周都能看到东西阶段要干的事验收标准第 1 周读完概念章节自己整理一张名词表能用大白话向别人解释 token 和上下文窗口第 2 周手写分词演示、估一次 token 数能算出自己的输入大概占多少额度第 3 周跑通一次对话调用屏幕上出现返回结果脚本能跑能改参数看变化第 4 周给它加一段固定指令约束输出格式输出稳定落在你要的格式里第三周那个“跑通”很多人卡在环境配置上。我的建议是先用最笨的方式跑一次不装任何框架只看请求长什么样。所有对话类接口的请求本质都是把三段内容拼在一起发出去——一段是系统设定告诉模型它扮演什么角色、有什么限制一段是历史消息记录之前聊了什么一段是这次的提问。# 对话请求的骨架真实字段以你手上的接口文档为准这里只看结构 def build_messages(system_prompt, history, user_input): messages [{role: system, content: system_prompt}] messages history # 之前几轮按时间顺序 messages.append({role: user, content: user_input}) return messages system_prompt 你是学习助教只回答学习相关问题每次回答不超过三句话。 history [] # 第一轮空的 print(build_messages(system_prompt, history, 什么是 token))这段代码不发请求只帮你把“发什么”想清楚。system_prompt是行为约束写“不超过三句话”比写“请简洁一点”有效得多因为前者可验证、后者靠感觉。history是记忆第一轮为空第二轮就把上一轮的问答追加进去。真正发请求那一步按你拿到的文档补字段名可能不同结构跑不掉。跑通之后下一步别急着做复杂功能先做一件事把同一个问题问十遍看输出的波动有多大。你会直观感受到这个“黑匣子”的脾气——哪些地方稳定哪些地方玄学。这份感觉比读十篇文章都值钱。再往后建议按这个顺序加能力先加格式约束让输出能直接被程序解析再加外部材料把文档片段塞进提示词里做问答最后才是多轮记忆和错误处理。每一步都在上一步已经稳定的基础上加别一次上三个新东西出了问题你不知道该从哪儿查。我自己的教训是第一周就想做个“全能助手”结果提示词写到两千字逻辑绕成一团调试的时候连哪句话导致了哪个问题都分不清。从那以后我每次加新功能都强制走一遍“先跑最小例子、再加一层”的流程哪怕慢一点也没再翻过车。希望帮到你。本文还有配套的精品资源点击获取
企业数字化 ERP 产品动态
相关推荐
单设备多会话与账号互斥的架构设计与实现 1. 单设备多会话与多账号互斥的核心挑战在现代化应用架构中,单设备多会话与多账号互斥的需求越来越普遍。想象一下这样的场景:一台医院自助服务终端需要同时处理多个患者的挂号、缴费操作,每个患者登录后需要保持独立的会话状态,但… · 2026/11/3 20:18:49
C语言底层考点:sizeof、数组退化与内存布局 简介:这是一份面向C语言笔试与面试备考者的经典试题合集,聚焦指针、内存管理与关键字等高频考点,适合正在准备校招、实习笔试或希望夯实C语言底层基础的中初级开发者查漏补缺。资源包共1个文件,为doc文档,整体约122KB&… · 2026/11/3 20:18:49
Leetcode链表专题:从基础操作到经典题目解析 1. Leetcode链表专题:从基础操作到经典题目解析链表作为数据结构中的重要组成部分,一直是算法面试中的高频考点。最近在Leetcode周赛430中,链表相关题目再次成为讨论热点。今天我将带大家深入解析Leetcode链表部分的三个经典题目:… · 2026/11/3 20:18:49
RAP Fiori开发核心:CDS+Behavior+Projection三位一体架构 简介:本资源是一份面向ABAP开发者与SAP Fiori初/中级学习者的RAP(ABAP RESTful Application Programming)开发教程合集,聚焦SAP S/4HANA环境下基于ABAP的现代化Fiori应用构建。内容系统覆盖RAP核心概念、CDS视图建模、行为定义与实… · 2026/11/3 21:06:21
Visual Studio Express 2015桌面开发入门指南 1. Visual Studio Express 2015 for Windows Desktop 中文学习版概述Visual Studio Express 2015 for Windows Desktop是微软推出的轻量级集成开发环境(IDE),专为Windows桌面应用程序开发设计。这个中文学习版特别适合刚接触C#、C等语言的开发者,提供了完… · 2026/11/3 21:06:21
Axure拖动分组技术:提升原型设计效率的关键 1. 拖动分组的核心概念与应用场景 在Axure原型设计中,拖动分组(Drag Group)是一个经常被忽视但极其强大的功能。它允许我们将多个元件绑定为一个整体,实现同步拖动效果。不同于简单的组合(Group)功能&#… · 2026/11/3 21:06:21
OpenCode Token监控实战:从日志解析到实时速度与缓存命中率 自从 OpenCode 升到 V2 之后,我在终端里写代码越来越依赖它,但很快就发现一个问题:我根本不知道自己这半天到底烧了多少 Token。OpenCode 原生界面里没有实时的 Token 速度、没有成本估算,连上下文缓存命中率这种直接影响结算的指… · 2026/11/3 21:06:21
MySQL ROW_COUNT与FOUND_ROWS语义差异及分页弃用排查 上周有位同行在群里甩了张截图过来,一条 UPDATE 语句明明把三行数据改成了想要的样子,可 Java 代码里拿到的返回值是 0,后面那段“更新成功后清缓存”的逻辑死活不触发。他把 SQL 打印出来看了八遍,条件没错,字段没错… · 2026/11/3 21:06:21
金融数据分析实战:DeepSeek与Tushare的智能组合应用 1. 项目背景与核心价值去年我在量化投资领域踩过一个坑:花了整整三个月手工整理A股财报数据,结果模型还没跑起来政策风向就变了。这次教训让我意识到,金融数据分析必须同时满足实时性和智能化两个刚需。这就是为什么我会把DeepSeek和Tushare这… · 2026/11/3 21:05:20
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46