LangChain实战指南:大模型应用开发核心模块与避坑经验

作为常年泡在 AI 应用开发一线的工程师,我这两年接手的项目里,十个有八个都跟大模型相关。刚开始那会儿,大家都是在代码里直接拼一个 HTTP 请求去调各家模型的 API,今天发现甲家的理解能力强,明天发现乙家的响应快,项目里到处是 if-else 判断该调哪家,一个对话逻辑写下来全是胶水代码。直到引入 LangChain 框架,这套玩法才算真正沉淀下来。它不是什么高深莫测的黑魔法,本质上是把大模型应用开发里的重复劳动给抽象出来了,我现在带新人的时候,第一周基本都在教他们理解这个框架的套路。

这篇文章就基于我实际带项目和踩坑的经验,把这个框架的核心模块、选型逻辑和实操中容易炸雷的地方,一次说透。不管你是刚接触 AI 开发的新手,还是已经写了一段时间 API 调用想系统化的老手,按照下面的思路走一遍,能少走不少弯路。

1. 整体拆解:为什么大模型应用开发需要 LangChain

先聊一个很现实的问题:直接用 API 写一个聊天机器人,跟用 LangChain 写,到底差在哪?

我最早接的一个客服机器人项目,需求很简单,就是用户问了问题,机器人从公司知识库里找答案返回。如果裸调模型 API,代码大概长这样:接收用户输入,把知识库里所有文档一股脑拼进 prompt,然后请求模型。实际跑起来,第一天就被运营吐槽了两件事:一是文档一多,提示词把上下文窗口撑爆了;二是模型经常不看文档内容,自己凭空发挥。后来我硬着头皮自己写了文档预处理的逻辑、分割逻辑、向量检索逻辑,写了一堆函数,项目代码越来越臃肿,换个模型厂还得改好几处。说白了,大模型应用开发里有一套通用的“脏活累活”,LangChain 把这套脏活累活标准化了。

这就是框架存在的价值:它给开发者提供了一套固定的积木。你想要让模型学会“用工具”,它有Tool和Agent的抽象;你想要让模型记住上下文,它有Memory;你想要做知识库问答,它有完整的 RAG 链路组件。选这套框架还有个很重要的理由——不锁定厂商。底层 OpenAI 收费涨了、效果不行了,换国产模型,上层逻辑基本不用动,只改模型配置那一块。这一点在公司项目里尤其重要,因为没有任何一家公司愿意把核心业务绑死在一家外部服务商身上。

2. 核心细节解析与实操要点

2.1 模型接入层的细节处理

ChatOpenAI是很多人接触的第一个类,表面上就是一个模型调用封装,但里面藏着不少细节。

第一是参数映射,不同的模型厂对同样的功能命名可能不同,比如有的叫temperature,有的叫top_p,LangChain 在这一层做了归一化。我见过不少新人直接照抄别人的temperature=0.7,换了一个模型发现预期不符,其实是没搞懂这个框架已经帮你抹平了差异。

第二是流式输出。面向 C 端的产品基本都要一个字一个字往外蹦,如果你在代码里用invoke()等方法等待完整结果一次性返回,用户等待时那种焦虑感会直接拉低体验。LangChain 的流式调用接口,也就是stream()相关链路,能帮你拿到增量片段。我测试过,在同样网络条件下,流式输出下用户的平均等待感知能快上好几秒,这不是玄学,是实实在在的体验提升。

第三是重试机制。线上模型接口稳定性再高,也扛不住突发流量,有时候返回 429,有时候返回 5xx。不看 LangChain 设置的话要自己写重试逻辑,看完之后你会在心里感叹:这框架还真把脏活全干了。

第四是自定义模型接入。团队某场景需要接入内部微调过的模型,找了一圈没现成集成。这时候你可以继承BaseLLM或者BaseChatModel,实现对应接口,就能挂进 LangChain 生态里。团队后来把一些小模型包装成工具和 Agent 协作,系统灵活性一下就上去了。

2.2 提示词管理的门道

Prompt 本身看着简单,但它在 LangChain 里的设计技巧不少。

PromptTemplate是最基础的,相当于把你的提示词模板化,变量留出来,运行时填充。我一开始觉得这个功能没什么,“不就是字符串拼接吗”?直到后来产品经理频繁改话术,我才发现模板化的价值:改 prompt 不用动代码,改配置就行。

再往后是FewShotPromptTemplate,这个对效果提升是真的明显。比如做意图识别,你写一百字提示词让模型猜用户想干嘛,它可能猜得很飘。但如果你给它几条“用户说‘我这个月流量没了帮我查一下’ → 意图是‘余量查询’”这样的示例,它基本就不会跑偏。少样本提示的底层逻辑就是让模型从示例里自己找规律,比全文字描述约束高效得多。

接着是输出格式化,这是我在实际项目里要求团队必须做的事。大模型返回纯文本,你不好判断它成没成功,但如果你让它返回 JSON,然后用with_structured_output()这类方式去约束,代码里就能直接拿到结构化数据,省掉一堆解析逻辑。另外一个隐藏的坑是 Prompt 会被注入,比如你的模板里预留了用户输入的位置,用户塞进来一句“忽略以上指令”,模型可能就中招了。所以在拼 Prompt 的时候,要多加一道信息隔离的步骤,或者做输入过滤,这在做 C 端产品时是必须考虑的安全问题。

2.3 记忆机制的正确打开方式

说说记忆这件事。很多刚接触 LangChain 的人,第一反应是要一个能存所有对话记录的“大容器”。如果你真这么干,很快就能得到一个响应特别慢还疯狂烧钱的机器人——把历史全塞进上下文,模型处理不过来的。

框架里的ConversationBufferMemory会把所有历史都塞进去,适合上下文很短的情景。一旦对话轮数变多,就得考虑截断了。这里推荐用ConversationSummaryMemory,它让模型把前面的内容浓缩成摘要,等到上下文快满的时候再调出来,既能保留关键信息,又不太占地方。还有一种是ConversationSummaryBufferMemory,它结合了两种策略,既能存细节,也支持压缩。

这里有个隐藏的知识点:记忆模块不只是存文本,更重要的是它分“短期记忆”和“长期记忆”。短期记忆就是对话里的上文,长期记忆可能是用户的偏好、历史订单等,最好从业务数据库里检索出来,再拼进提示词里。千万不要把长期记忆也一股脑地丢进上下文里,否则删改起来特别麻烦,用户的隐私数据管理也不好做。

我这边的建议是:记忆策略跟业务绑定,先用最简单的方式跑通数据流,等对话轮数上来了,再去做“相关性检索 + 压缩摘要”的方案。

2.4 Agent 和 ReAct 范式的理解

Agent 概念很容易被神化,实际不复杂,本质是“让模型根据情况决定调用哪些工具”。

LangChain 里实现 Agent 的方式挺多,底层核心是 ReAct 范式。可以这样理解:模型先推理(Reason)当前该怎么做,再调用工具采取行动(Act),然后观察结果,继续推理。

遇到一个典型的例子,用户问“附近哪里有营业中的咖啡馆”,模型如果能调用地图工具和当前时间工具,它就能给出准确推荐。如果你不教它用工具,它只能根据训练数据瞎猜。所以Agent的价值就是把你的代码能力,比如查询接口、计算函数、数据库操作等,变成模型可调用的“外部器官”。

实操过程中的难点在于描述工具的参数。LangChain 里定义工具时要写清楚工具名、描述、参数结构,模型才能准确决定什么时候用、怎么传参。有些团队的踩坑是工具描述写得含糊,比如“获取用户信息”,没说清楚需要传什么 ID,模型调用时就乱传。最后我在团队里立了个规矩:工具的 description 必须包含“什么时候用、传什么参数、返回什么结果”三要素,这样调用成功率才会上来。

2.5 检索链路 RAG 的核心公式

把 RAG 拆开看,其实就是“外部知识 → 切碎 → 索引 → 检索 → 拼进 prompt”。LangChain 在这里提供的 Loader 很多,PDF、网页、数据库都能加载,但加载只是第一步,真正决定问答质量的是索引结构。

文档分割是第一个技术细节。如果按固定字符硬切,很容易把一个完整句子拦腰截断,导致检索结果割裂,提问词在对不上号。最好先按标题、段落、句子层级做结构化的切分,再配置合理的重叠区域。举例说明:一篇产品说明文档,你按每 300 个字符切一个 chunk,重叠 50 字符,这样每个片段理解起来相对完整,又能覆盖上下文。但具体切多大,还得看文本密度和模型窗口。

向量化就是给每个片段生成一个“数学指纹”,事后再拿用户问题的指纹到数据库里做相似度搜索。Embedding 模型在国内和海外都有不少选择,这里提醒一下,Embedding 效果直接决定检索准不准,一定要拿自己的业务数据做评测。我见过一个项目换了个 Embedding 模型,同一个问题的命中率直接从 70% 掉到 45%。

检索回来之后还有一个关键动作:重排序。初步向量检索可能召回 20 个片段,但真正对正确答案有效的可能只有 3 个。细调 prompt 之后,模型看得越少,回答就越不容易被噪声带偏。所以现在主流方案都是“向量检索初筛 + 排序模型精排”,这一步对准确性提升极其显著。

3. 实操过程与核心环节实现

为了让你对上面这些模块有一个直观认识,我拿“某知识库问答机器人”这个完全虚构、但真实项目中很典型的场景,完整走一遍实现流程。我们把它看作一个跨平台系统里的小模块,用来处理产品使用咨询。

3.1 项目环境搭建与依赖安装

我的开发环境都有固定配置:Python 3.10 以上是必须的,版本管理上用虚拟环境。安装主框架的时候要注意,这个框架的版本更新速度比较快,不同版本的 API 差异很大,我见过因为装到新版导致旧代码全报错的情况。所以团队开发时一定要把依赖锁到指定版本,用项目里的依赖配置文件去做固定,避免线上和本地环境不一致。

用代码说明就是,在项目根目录下执行虚拟环境创建与激活,然后安装需要的基础依赖包。我一般习惯把核心框架和向量库、文档加载库一起装,省得后面反复补包。

装入之后,先在终端里通过命令行方式快速验证一下基础模型调用是否通,再写第一版测试脚本。我习惯新建一个临时文件,用最简单的代码跑一个“你好”的输出测试,确认整条链路通了再做后续。这一步虽然看着基础,但能帮你快速排除环境问题和密钥配置问题。

3.2 从文档加载到向量库索引

知识库里通常有 PDF 和网页文档,我先通过循环遍历,把某个设定目录下所有的 PDF 文件加载成文档对象集合。这里有个实际经验:PDF 加载时经常出现排版乱掉的问题,所以后面加了一步,如果文本量低于某个阈值,就改用结构化解析的 PDF 解析方式。这些都是基于我用常见开源工具时总结出的注意事项,在实际项目中经常要处理。

加载完成之后是文本分割。我用的递归字符分割器是多数人日常最常用的方案,它的特点是尽量保持段落语义完整。它有这样一组参数:chunk_size=400表示每个片段最多 400 个字符,chunk_overlap=50表示相邻片段共享 50 个字符。这样做的好处是,即使句子断开在上一块的末尾,下一块也有重叠部分,概率上保住了语义完整性。

分割完成,下一步是向量化入库。这里嵌入模型的选择上,我一般选兼容 OpenAPI 格式的编码服务,因为这样换服务商时改动最小。向量数库我常用具备轻量部署能力的本地库,初始化很快,不用单独起服务。这是一个被很多人忽略的优势——早期项目根本没有必要上重型的专门的向量数据库服务器,先把链路跑通才是关键,等数据量真大了再迁移。

3.3 检索问答链路的组装

当知识已经进了向量库,接下来就是把检索和问答组装起来。

首先是检索器,设定成“从向量库里取前 4 个最相关的文档片段”。这里不取多个的原因,是防止不相干内容太多,干扰模型判断。如果你发现取 4 个不够,可以先用排序模型做一轮精排,再加大召回量。

然后是组装问答链。整个链路逻辑顺序是:拿到用户问题,先去检索器里捞知识片段,再把“知识片段 + 问题”一起交给模型去总结回答。要特别注意,prompt 里要跟模型明说“请基于给定资料回答,若资料不足,请明确告知”,不写这句,模型会给你信口开河。

整套组装过程在 LangChain 里非常简洁,几乎就是把组件串联起来。但我想强调一点,这个链路在早期版本叫RetrievalQA链,后续版本对接口做了调整,很多同学看网络上的旧教程跑来问为什么自己的代码报错,基本都是这个原因。建议在写代码时,直接看当前版本官方文档确认最新 API,然后给团队统一封装一层问答函数,这样后续修改行为、调整组件,只需要改一个位置。

3.4 引入 Agent 增强工具能力

知识库问答只能解决“从文档中找答案”的问题。业务上还有个高频需求:用户问“我现在的套餐还剩多少流量”,这类数据不可能存在文档里,必须实时查系统。所以我在知识库链路旁边,接了一个能调用内部查询工具的小助理。

实现方式是定义一个查询函数作为工具,里面模拟访问内部的流量余额 API。在 LangChain 里,一行装饰器声明工具的名称和描述,再把它绑定到模型上。这样模型遇到这类问题时,会自动生成一条调用参数的指令,框架负责解析并执行函数,再把结果返回给模型。这一步就是前面讲过的 Agent 应用。

在模拟实现中,我直接返回一个写死的余额数值,真实项目里这个函数会去调内部接口。这里想提醒一个非常容易踩的坑:真实接口可能超时或返回异常格式,工具函数里必须做容错处理并返回一个可读的错误信息给模型,否则模型拿到异常就会开始“胡言乱语”。我在生产环境里,给所有工具包了一层超时控制,并规定了统一的异常返回结构。

3.5 链路调试与整体体验优化

链路接完,接着是调试和优化。我整理几个必须检查的维度:

第一,检索质量体检。我会拿一批典型问题,逐一打出来看检索到的 chunk 到底相关内容有多少。如果经常分到不相干的片段,优先不是调 prompt,而是调整文档分割参数或换 Embedding 模型。

第二,回答延迟。本地加真实接口以后,整条链路会明显变慢,这时候要做并发性能分析,同时启用流式输出。我的经验是,流式输出带来的体验改善,比压接口延时有价值得多。

第三,成本观测。每调一次 RAG 的 token 消耗都可以通过 LangChain 内置回调观察出来。设置日志,线上跑几天,你就能知道哪些用户动作在大量消耗 token,然后做缓存策略或者限制调用次数。

4. 常见问题与排查技巧实录

实操中遇到的坑可以说是一茬接一茬,我把项目里最常见的几类问题和排查思路记录在下表里,方便你对照参考。

问题现象常见原因排查思路与解决建议
回答问题完全脱离给定资料,自由发挥检索未命中,或是 prompt 没有约束模型只能根据资料回答先检查检索器能否返回内容;再检查 prompt 是否有强约束;最后检查召回内容的质量与排序
模型总是调错工具或参数格式错误工具描述不清晰,或参数结构设计得反直觉重写工具描述,明确调用场景,精简参数结构,用一个典型示例写在描述里
对话多轮后上下文越界报错记忆模块选择了无限保留方案,没有压缩或截断换用带摘要功能的记忆类型,对历史消息做截断,同时考虑只保留最近的 N 轮
检索结果相关性差,但文档内容正确分割策略不适合文档结构,或 Embedding 模型不匹配业务领域优化分割参数,增加重叠量;使用领域内更合适的 Embedding 模型做对比测试
同一问题反复被问,消耗大量 token没有做缓存,也没有限制调用频次对规范化后的 query 做精确匹配缓存;对高频用户做速率限制
版本升级后旧代码大面积报错框架 API 发生破坏性变更,依赖没有锁版本锁定依赖版本做统一升级,不直接改最新稳定版;升级前跑兼容测试集
流式输出时 UI 层出现断断续续流式接口调用方式不对,没有正确处理增量块逐块收集增量内容并实时推进 UI 光标,用专门回调处理流式事件;做好前端批流合并

有几个坑值得额外展开讲讲。

关于上下文窗口溢出,新手很容易误以为是模型能力不够,实际上是记忆模块配置太“实诚”。我调试过某个公司内部项目,对方把整个客服对话记录全部压进上下文,一开始测试都正常,跑了一个月之后用户一进系统就报错。原因就是旧用户的对话历史太长,超出上下文。所以记忆部分的黄金法则是:上下文里永远只保留最近有激活度的信息,其余从长期存储器里按需检索。

关于工具调用不稳定,我遇到过一次特别棘手的情况:模型不是不调用工具,而是每次都把入参结构传错。我排查了半天,最后发现是工具描述里参数名跟代码参数名有细微的差异,模型一个字母拼错就传不进去。后来我把这个工具的示例调用写进了描述里,就稳定多了。

还有关于 Embedding 模型切换后效果骤降的问题,前面提过一次。那种 45% 的命中率下跌不是个案,因为不同模型对语义空间的理解维度完全不同,换模型不只是换个 API 那么简单,相当于整个检索空间的坐标系都变了。所以任何一个已经上线并调优过的 RAG 系统,不要轻易换 Embedding 模型,如果一定要换,必须重新做建库、召回评测、排序调优三步闭环。

5. 我的个人实操体会

最后说点个人体会。我见过太多人刚接触 LangChain 的时候,一头扎进源码里研究各种抽象概念,结果写了一周连一个能跑的 Demo 都没有。我的建议永远都是:先别看源码,先把官方教程里的 Quickstart 跑通,然后马上做一个自己业务里的最小链路,比如“文档加载 + 分割 + 检索 + 问答”。跑通了再回头理解框架封装了什么、为什么封装,你会豁然开朗。

对版本态度也是一样。国内技术社区关于 LangChain 的中文资料,相当一部分已经过期,很多 API 都变了。你在网上看到一段代码跑不起来,先别急着怀疑框架有 bug,大概率是版本差异导致的。学会看当前版本文档,比背多少个函数都管用。

如果你正在团队里推这套技术方案,还有一点很重要:一开始就约定统一的封装层。所有人写的代码都经过同一层入口去调用模型和链,而不是各写各的。这样做后续升级模型、加监控、做缓存都特别方便。这是我在真实团队项目里反复验证过的经验,与其后期花大价钱整理,不如一开始就守住统一的架构边界。

LangChain 说到底就是一座桥,桥这边是你的业务逻辑,桥那边是大模型能力。它帮你把桥墩砌好了,但桥面怎么铺、往哪里通,还是得自己动脑子。希望这篇文章能帮你更快地找到适合自己的路线。

相关新闻

PPA注意力模块提升YOLO小目标检测的PyTorch实现与集成实战

PPA注意力模块提升YOLO小目标检测的PyTorch实现与集成实战

小目标检测一直是YOLO系列的老大难问题。很多时候你的模型在常规目标上指标涨得挺欢,一到小物体上就开始拉胯,原因往往不是特征提取不够充分,而是注意力机制在“看”一个只有十几像素的小目标时,把全局的上下文平均了一下&#xf…

2026/10/19 16:36:20 阅读更多 →
IDEA整合Java与Python:多语言自动化测试框架搭建实战教程

IDEA整合Java与Python:多语言自动化测试框架搭建实战教程

如果你所在的团队既有基于 Java 的 UI 自动化框架,又有用 Python 写的接口自动化脚本,那你大概率经历过这种拧巴:平时开一个 IDEA 写 Java 用例,跑 Python 脚本还要切到 PyCharm,两个项目各存一份环境配置,…

2026/10/19 16:36:20 阅读更多 →
基于Git钩子的CLI代码评审工作流:LLM+open-code-review实战

基于Git钩子的CLI代码评审工作流:LLM+open-code-review实战

1. 项目概述:这不是一个工具,而是一套可落地的代码评审新工作流“open-code-review”这个名称乍看像某个开源项目仓库名,但结合当前技术热点和实际工程痛点,它本质上指向一种正在快速成型的新型代码评审范式——以开源精神重构代码…

2026/10/19 16:35:07 阅读更多 →

最新新闻

E3神U+P106矿卡变身AI推理建站服务器实战

E3神U+P106矿卡变身AI推理建站服务器实战

坐拥 E3 神U 和 P106 矿卡这两块二手市场的大热门,把这套配置改造成一台集 AI 推理与建站于一体的全能服务器,是很多折腾党都想干的事。E3 的多核生产力在百元价位几乎没有对手,P106 这块被矿潮埋没的显卡又恰好拥有大显存和高吞吐量的底子&a…

2026/10/19 17:27:01 阅读更多 →
ROS多版本OpenCV共存实战:从符号冲突到RPATH隔离的完整方案

ROS多版本OpenCV共存实战:从符号冲突到RPATH隔离的完整方案

简介:这份资源面向在Ubuntu 20.04上使用ROS Noetic的开发者,尤其是需要运行依赖旧版OpenCV的开源算法、又不愿破坏系统默认OpenCV 4.2.0环境的用户。教程围绕多版本OpenCV与cv_bridge共存展开,涵盖依赖安装、OpenCV 3及contrib库源码编译、依…

2026/10/19 17:27:01 阅读更多 →
政务办公智能体系统建设调研:从场景识别到RAG落地全记录

政务办公智能体系统建设调研:从场景识别到RAG落地全记录

刚接到“政府办公助手智能体系统建设调研报告”这个活儿的时候,团队里好几个同事的第一反应都是:这不就是拿大模型套个壳,做个问答机器人吗?等真的扎进去做调研,才发现完全不是这么回事。政务办公场景有一种天然的“重…

2026/10/19 17:27:01 阅读更多 →
nxdk入门:在原始Xbox上运行裸金属C代码

nxdk入门:在原始Xbox上运行裸金属C代码

简介:nxdk是一款专为初代Xbox(2001年发布)开发的跨平台开源SDK,面向嵌入式逆向开发者、复古游戏自制程序(homebrew)爱好者及系统级C/C工程师,解决原生Xbox程序开发长期依赖闭源XDK工具链的难题。…

2026/10/19 17:27:01 阅读更多 →
开源CLI代码审查工具:LLM驱动的本地化Code Review实践

开源CLI代码审查工具:LLM驱动的本地化Code Review实践

1. 项目概述:一个真正能嵌入日常开发流的开源代码审查 CLI 工具“open-code-review”这个名字乍一听有点抽象,但拆开来看就非常实在:open 是开放、透明、可审计;code review 是软件工程里最基础也最容易被形式化的关键环节&#x…

2026/10/19 17:27:01 阅读更多 →
Java SE蓝牙开发实战:SPP通信全链路实现与跨平台适配

Java SE蓝牙开发实战:SPP通信全链路实现与跨平台适配

简介:本资源是一个面向Java开发者与物联网初学者的蓝牙通信实践项目,聚焦JSR-82规范在桌面端的落地实现,解决Java SE环境下缺乏原生蓝牙支持的开发痛点,适用于智能家居设备控制、低功耗传感器通信等IoT场景。压缩包为RAR格式&…

2026/10/19 17:25:59 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →