news 2026/8/27 19:16:24

用强化学习微调LLM去除AI写作味:GRPO与LoRA实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
用强化学习微调LLM去除AI写作味:GRPO与LoRA实战

写完一篇技术文章,复制到编辑器里预览,总有种说不上来的不对劲:句子通顺,逻辑连贯,段落之间也有过渡,可读起来就是“AI味”很重。这不是错觉。当你让大语言模型帮你润色一段文字时,它输出的其实是训练数据分布里的“平均偏好”——而平均偏好往往意味着安全、冗余、客套。最近圈子里有个很有意思的尝试:有人用强化学习(RL)微调了一个 LLM,专门用来“去除自己写作里的 AI 味”。这个方向没有停留在 prompt 技巧层面,而是直接动模型本身的偏好分布。

这篇文章会讲清楚三件事:什么是“写作里的 slop”,为什么普通 prompt 工程很难根除它,以及一个以 RL 微调为核心的去 slop 路线可以怎么落地。读完你会得到一条完整的技术路径:从数据准备、奖励信号设计、训练脚本到效果验证和排错思路,整个过程不依赖某个特定平台,也不绑定某个固定模型,你可以在自己的环境里复现。

1. 这篇文章真正要解决的问题

先定义一下“slop”。这个词在英文互联网里指那些“看起来很正式、实则没有信息量”的生成内容。对应到中文写作里,典型症状是:滥用“首先、其次、最后”“值得注意的是”“综上所述”,动不动就“赋能”“抓手”“闭环”,每一段都像从某个模板里套出来的。如果你用 LLM 辅助写作超过一个月,大概率会发现自己手写的文字也开始染上这种味道——因为模型输出的高频词和句式,会不知不觉进入你的表达习惯。

很多人的第一反应是用 prompt 压制它。比如在系统提示词里写“不要使用套话”“语气自然一点”“模仿人类写作”。这确实有效,但效果有限。原因在于:prompt 只是模型生成时的软约束,模型内部的概率分布还是偏向那些“安全”的表达。只要采样空间允许,它还是会溜回高概率的模板路径。更关键的痛点是,当你换了模型,换了上下文长度,或者只是这次忘了写那段 prompt,AI 味就回来了。

所以真正的杠杆不在输入侧,而在模型侧。RL 微调的意义在于,它能把“什么样的表达算好”这个偏好,直接训练进模型的权重里。模型不再是“被提示词短暂约束”,而是内化了一种新的写作偏好。这也是为什么这篇实践值得关注:它代表了一类更本质的 LLM 定制思路——从改提示词到改模型行为。

这篇文章的读者,如果你正在做 AI 写作工具、内容批处理管线,或者经营个人技术博客且受够了 AI 味,那么这条路线对你尤其有价值。如果你只是好奇 RL 微调到底能干什么,也可以把它当做一个入口级的实例来读。

2. 去 slop 涉及的核心概念:RL、LLM 与微调

2.1 LLM 微调为什么能改变写作风格

LLM 的基础能力来自预训练阶段的巨大语料,但它对“好的表达”没有主观偏好。模型只知道哪些词大概率会跟在哪些词后面,所以生成结果会偏向语料里的高频套路。微调(fine-tuning)就是在预训练权重的基础上,用一批“你希望模型输出的样子”的数据继续训练,让模型的概率分布向这个方向偏移。

写作风格的微调通常分两派。一派是监督微调(SFT),直接拿“好文本”当标准答案让模型模仿。它的优点是稳定、简单,缺点是上限受限于你的数据——你提供多少种好表达,模型就学多少种。另一派是强化学习(RL),不直接给标准答案,而是让模型自己生成多个候选,然后按奖励信号打分,分数高的生成方式会被加强。对于“去 AI 味”这种极其依赖主观判断的任务,RL 的潜力往往更大,因为它不需要你把“什么是好风格”标注成唯一答案。

2.2 RLHF、DPO、GRPO 这些概念怎么理解

RL 微调 LLM 最著名的范式是 RLHF(基于人类反馈的强化学习),ChatGPT 早期对齐就是靠它。RLHF 需要先训练一个奖励模型来模拟人类喜好,再用奖励模型引导策略模型更新。流程重,成本高,普通开发者很难复现。

后来出现了 DPO(直接偏好优化)。它不需要单独的奖励模型,只需要偏好数据对——同一段输入,人类觉得 A 比 B 好。DPO 直接把这个偏好关系转化成训练目标,对算力的要求低很多,是目前个人开发者最常用的入门路线。

再往后是 GRPO(组相对策略优化),它在训练时让模型对同一个 prompt 生成多组输出,按组内相对优劣计算奖励,进一步减少对独立奖励模型的依赖。对于风格类任务,GRPO 的好处是奖励信号可以来自一个轻量规则:比如给“包含套话的句子”扣分,给“表达独特的句子”加分。这一点后面会展开。

2.3 “去 slop”为什么适合用 RL

写作风格没有唯一正确答案。一句话写得好不好,跟语境、读者、节奏、信息密度都有关系。这种模糊任务如果用 SFT,很容易把模型训成“只会模仿那几篇范文”。而 RL 的思路是让模型在生成空间里自己探索,再用一套奖励标准判断好坏,这套标准可以是你对 AI 味的定义,也可以是一组人工标注的偏好对。

换句话说,SFT 教模型“照着我给你的例子写”,RL 教模型“往这个方向探索,好的留下来”。对于去 slop 这种“我知道什么不好,但很难给出现成标准答案”的场景,RL 天然更匹配。

3. 环境准备与前置条件

这一节开始进入实操。整体技术栈围绕 Python + Hugging Face 生态展开,这也是当前 LLM 微调最通用的一条路径。

3.1 基本硬件与软件要求

训练一个 LLM 需要 GPU。如果只是微调 7B 级别的模型并做 LoRA 低秩适配,单张 24GB 显存的显卡(比如 4090)勉强可以跑,32GB 以上会更舒服。如果是个人开发者没有本地 GPU,直接用云 GPU 实例或者 Kaggle / Colab 这类平台也可以,重点不是硬件本身,而是你能否跑通一个最小训练循环。

软件层面,Python 版本建议 3.10 或 3.11。核心依赖是 PyTorch、transformers、datasets、peft、trl。具体版本以你当前环境的兼容性为准,不建议照抄某个固定的 requirements.txt,因为 PyTorch 和 CUDA 的版本配合非常敏感。

pip install torch transformers datasets peft trl

如果本地显卡驱动较老,先确认 CUDA 版本,再选择对应的 PyTorch 版本。判断依据很简单:torch.cuda.is_available()返回 True 就说明环境没问题。

3.2 模型选型:从 7B 级别的基座模型开始

“去 slop”本质上是一个风格迁移任务,对模型的基础推理能力要求不算高,反而对中文或英文语料的语感要求高。建议选择 7B 级别、中文能力较好的基座模型,而不是那种已经做了大量对齐的聊天模型。原因在于:聊天模型已经被 RLHF 训得非常“礼貌”,本身就带 slop 倾向,你还要再花力气把它拉回来。选一个更接近原始分布的基座模型,反而更容易训练出个性化风格。

从实操经验看,Qwen2.5-7B、Qwen2.5-14B 这类模型的中文基础都不错,训练资源要求也相对可控。如果你材料充足,用 1.5B 级别的小模型先跑通流程,确认效果后再上更大模型,是成本最低的做法。

3.3 需要准备的训练数据

RL 微调需要三类数据:prompt 数据、生成候选数据、偏好信号。prompt 数据可以是你自己写的文章段落,也可以是公开的写作提示。关键在于要覆盖你实际使用模型时遇到的场景。比如你希望模型帮你润色技术博客,那 prompt 就可以是“请润色这段话,保持原意但不使用套话”;如果你希望模型从头生成短文,那 prompt 就换成“写一段关于 XX 的短文”。

数据量方面,风格微调通常不需要百万级语料。几百到几千条高质量 prompt 就足以影响模型风格偏好,关键在于多样性。如果 prompt 全是“润色这段话”,模型学到的东西就会局限在润色任务上。

4. RL 微调的核心流程拆解

RL 微调的完整流程可以拆成六个环节,每个环节都有独立的失败模式,这也是它比普通 SFT 复杂的地方。如果某个环节出问题,最终效果都会打折扣,所以我把每一步的关键点和常见错误路径都写清楚。

4.1 收集符合场景的 prompt 池

第一步是准备 prompt 池。这个池子要尽量还原你真实使用模型写作的场景。比如你是技术作者,prompt 就是“写一段介绍 Redis 持久化机制的文字,不要用套话”;你是产品经理,prompt 可能是“写一份周报,避免 AI 腔”。prompt 池的覆盖度决定了模型的泛化边界,所以宁可多花时间收集,也不要急着进入训练阶段。

如果没有任何现成数据,可以先从自己的历史文章里抽句子,或者从公开数据集里筛出符合场景的提示,再批量构造成统一的 JSONL 格式。格式本身不复杂,关键是每一条 prompt 都要足够具体,避免出现“写一段关于人工智能的话”这种极宽泛的输入——太宽泛的 prompt 会让奖励信号失去比较基准。

4.2 设计奖励信号:打分规则或偏好对

这是整个流程中最核心、也最容易出问题的一步。奖励信号有两种做法。

第一种是规则打分。定义几个可计算的指标,比如是否包含套话词表、句子长度方差、和原文的语义相似度、困惑度(perplexity)等。规则打分的优点是稳定、可复现,缺点是比较机械,容易漏掉细微的语感问题。

第二种是偏好对。给定同一个 prompt,让模型生成 A、B 两版回答,再由人工或一个已有的高质量模型判断哪个更“自然”。偏好对更适合表达质量这种主观指标,但标注成本高。实际项目里可以混用:先用规则打分做初筛,再让少量人工标注修正边界情况。

这里有一个关键认知:奖励信号不是为了追求“绝对客观”,而是为了让模型有一个可学习的梯度方向。哪怕你的规则很粗糙,只要有区分度,RL 就能学会朝你偏好的方向移动。

4.3 微调策略:LoRA 降低成本

全量微调一个 7B 模型,单卡显存不够,训练时间也很长。所以实践中普遍使用 LoRA(Low-Rank Adaptation)。LoRA 的做法是冻结原模型权重,只训练注入的一小部分低秩矩阵。这样显存占用大幅下降,训练速度也更快,效果和全量微调在风格任务上差距不大。

# lora_config.yaml peft_config: r: 16 lora_alpha: 32 lora_dropout: 0.05 bias: "none" task_type: "CAUSAL_LM" target_modules: ["q_proj", "k_proj", "v_proj", "o_proj"]

r 值越大,可学习的参数越多,模型改变幅度越大,但也更容易过拟合。从 8 到 16 是比较常见的区间。task_type 为 CAUSAL_LM,表示这是做自回归语言生成。

4.4 训练策略:GRPO 与 SFT 的先后顺序

从实践角度看,更稳妥的路线是“先 SFT 后 RL”。先用少量高质量范文做一轮 SFT,让模型稳定地掌握“没有 AI 味的表达”的基本模式,再做 GRPO 或 DPO,进一步强化偏好。这样做的原因是:奖励信号通常比较稀疏,如果模型一开始的输出水平太低,RL 很难在巨大的搜索空间里找到好方向。

SFT 阶段的数据可以是你自己润色过的文章、团队内部的高质量内容、或者公开的优质博客语料。数量不用多,几百条足够。关键是这些数据要代表你真正想要的表达风格,而不是“看起来还行”的通用文本。

4.5 训练轮数与过拟合控制

RL 微调最大的风险是奖励过度优化(reward hacking)。模型会找到奖励函数里你没考虑到的小漏洞,比如不断缩短句子以规避套话检测,或者刻意插入生僻词来提高“独特性”得分。结果是模型确实不再油腻了,但变成了另一种难读的风格。

控制方法是:训练日志里同时监控损失、奖励均值、生成样本的句子长度,以及一个独立的人工评估指标。一旦发现奖励均值还在上升,但人工评估开始变差,就说明已经进入了过度优化区间,应该回滚到之前的 checkpoint。

4.6 评估与迭代闭环

RL 微调不是一次性的。训练完的模型需要在真实的写作任务上评估,然后根据评估结果决定是继续训练、调整数据,还是增加 SFT 阶段。这里的关键是建立一个闭环:新模型生成一批样本,丢到真实场景里用,再把表现不好的样本回收到下一轮训练数据里。这个“生产数据反哺训练”的循环,才是 RL 微调长期价值所在。

5. 完整示例:用 GRPO 微调一个去 slop 的写作模型

下面用一个最小示例演示整个流程。注意,这不是一个生产级工程代码,而是用于验证“RL 微调能不能改变写作风格”的最小闭环。训练脚本以 trl 库的 GRPO 接口为主线,如果你用的是 DPO 或其他框架,思路可以平移。

5.1 准备 prompt 数据

先构造 prompt 池,保存为prompts.jsonl。数据规模按个人能力调整,这里只示例三条作为格式参考。

{"prompt": "请将下面这段话改写成更自然的技术博客风格,删除空洞套话:利用先进的人工智能技术,能够有效赋能企业数字化转型,推动业务流程的智能化升级。"} {"prompt": "请写一段关于数据库索引原理的短文,要求表达直接、不堆砌概念。"} {"prompt": "请润色这句话:首先,我们需要明确的是,合理利用大模型技术,对于提升开发效率具有重要意义。"}

实际使用时,prompt 数量建议至少三五百条。prompt 池越多样,模型越不会在某个单一风格上“跑偏”。

5.2 编写奖励函数

奖励函数是这套方案的灵魂。在这个示例里,我们用三个规则计算一个综合分数:

  • 套话词惩罚:如果生成结果包含明显套话词,扣分。
  • 长度多样性奖励:句子长度方差适中则加分。
  • 语义连贯性:用文本困惑度近似评估,过高则扣分。

这套规则不完美,但足以让模型学到“别再说套话”的方向。代码里保留自定义接口,你可以替换成你自己的打分逻辑。

# reward_func.py import math import re SLOP_WORDS = ["首先", "其次", "最后", "综上所述", "值得注意的是", "赋能", "闭环", "抓手", "具有重要意义", "提供强有力支撑"] def compute_perplexity(text: str) -> float: # 实际项目中建议用一个小型语言模型计算困惑度 # 这里为了便于运行,用词数 + 冗余度做近似 words = re.findall(r"[\u4e00-\u9fa5a-zA-Z0-9]+", text) return max(1.0, math.log(len(words) + 1) * 1.0) def reward_fn(prompt: str, completion: str) -> float: score = 0.0 # 1. 套话词惩罚 for w in SLOP_WORDS: if w in completion: score -= 1.0 # 2. 句子长度方差奖励(防止过于单调) sentences = re.split(r"[。!?!?]", completion) sentences = [s for s in sentences if len(s) > 2] if len(sentences) >= 2: lens = [len(s) for s in sentences] avg_len = sum(lens) / len(lens) var_len = sum((l - avg_len) ** 2 for l in lens) / len(lens) if 10 < var_len < 200: score += 0.5 # 3. 冗余度惩罚 ppl = compute_perplexity(completion) if ppl > 6.0: score -= 0.5 return score

这个奖励函数的边界比较粗糙,但它足够说明问题:RL 并不需要一开始就有一个完美的评分器。只要分数能区分“更自然的表达”和“更模板化的表达”,模型就有机会学到朝哪个方向优化。

5.3 编写 GRPO 训练脚本

使用 trl 库的 GRPOTrainer 可以省去大量底层实现。脚本里加载模型和分词器、读取数据、把奖励函数传入 trainer,然后开始训练。为了在消费级显卡上跑通,这里开启了 LoRA,并利用 4bit 量化进一步降低显存占用。

# train_grpo.py from datasets import load_dataset from transformers import AutoModelForCausalLM, AutoTokenizer from peft import LoraConfig from trl import GRPOConfig, GRPOTrainer from reward_func import reward_fn model_name = "Qwen/Qwen2.5-7B-Instruct" model = AutoModelForCausalLM.from_pretrained( model_name, load_in_4bit=True, device_map="auto", ) tokenizer = AutoTokenizer.from_pretrained(model_name) tokenizer.pad_token = tokenizer.eos_token lora_config = LoraConfig( r=16, lora_alpha=32, lora_dropout=0.05, bias="none", task_type="CAUSAL_LM", ) training_args = GRPOConfig( output_dir="./grpo_slop_removal", per_device_train_batch_size=1, gradient_accumulation_steps=8, learning_rate=2e-5, max_steps=100, logging_steps=10, save_steps=20, warmup_ratio=0.1, bf16=True, report_to="none", ) dataset = load_dataset("json", data_files="prompts.jsonl", split="train") trainer = GRPOTrainer( model=model, args=training_args, train_dataset=dataset, peft_config=lora_config, reward_funcs=[reward_fn], ) trainer.train()

这段脚本里,最需要关注的是reward_funcs参数。它接收一个 callable,输入是 prompt 和 completion,输出是分数。GRPO 会为同一 prompt 生成多组输出,再按组内相对分数去更新模型。如果模型生成的结果普遍分数很低,它会倾向于往那些分数相对高的方向移动。

5.4 使用训练好的 LoRA 做推理对比

训练完成后,LoRA 权重会保存在output_dir中。推理时可以用 peft 的PeftModel加载,并和基础模型生成的结果做对比。

# inference_compare.py from transformers import AutoModelForCausalLM, AutoTokenizer from peft import PeftModel base_model_name = "Qwen/Qwen2.5-7B-Instruct" lora_path = "./grpo_slop_removal/checkpoint-100" base_model = AutoModelForCausalLM.from_pretrained( base_model_name, load_in_4bit=True, device_map="auto", ) tokenizer = AutoTokenizer.from_pretrained(base_model_name) model = PeftModel.from_pretrained(base_model, lora_path) prompt = "写一段关于缓存穿透的短文,要求表达直接,不要用套话。" inputs = tokenizer(prompt, return_tensors="pt").to("cuda") for max_new_tokens in [100, 200]: outputs = model.generate( **inputs, max_new_tokens=max_new_tokens, do_sample=True, temperature=0.8, top_p=0.9, ) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) print("=" * 50)

推理时不需要把 LoRA 权重合并回基础模型,直接加载就行。如果你想用这个 LoRA 写一个服务端部署,也可以先把权重合并成一个完整模型,再走 vLLM 或 TGI 部署方案。

6. 运行结果与效果验证

训练完成后,最重要的环节是验证“slop 是不是真的减少了”。这一步不能只看训练损失,因为 RL 的损失下降可能对应的是奖励被 hack,而不是人类感知的提升。

6.1 先做单样本对比

拿同一批 prompt,分别用基础模型和微调后的模型生成结果,逐条对比。对比重点是四件事:套话词数量、句式变化程度、语义是否保留、是否有新式语病。用这个 prompt 举例:“请写一段关于 AI Agent 技术选型的建议,避免 AI 腔。”

基础模型的输出可能长这样:

首先,AI Agent 技术选型需要综合考虑业务需求、技术成本和团队能力等多个维度。其次,我们不仅要关注模型的推理能力,还要重视框架的生态建设,从而为企业的智能化转型提供强有力的支撑。

微调后模型的输出可能长这样:

AI Agent 选型,核心看你到底要解决什么问题。如果只是做问答,那一个函数调用加上检索就够用;如果要做多步骤任务,才需要考虑 ReAct、规划器这些重一点的方案。

不需要专业评分器,这个对比已经能看出差别。微调后的输出更具体,更像一个工程师在说话,而不是一个宣传册在复述。

6.2 做一组小规模盲评

更严谨的验证方式是盲评。准备 20 个 prompt,分别用基础模型和微调模型生成 20 组结果,随机打乱顺序,让 3 个人打分,从“表达自然度、信息密度、是否有 AI 味”三个维度打分。如果微调模型的平均分显著高于基础模型,说明训练方向是对的。如果分差不大,优先怀疑数据质量和奖励函数设计,而不是模型参数量不够。

6.3 奖励曲线的判断

打开训练日志,正常情况下奖励均值应该是波动上升的。如果奖励均值快速冲到很高然后长期不动,要警惕 reward hacking。需要每隔几个 step 手动生成几条样本看效果,形成“训练曲线 + 人工抽样”双轨验证。

7. 常见问题与排查思路

RL 微调 LLM 的过程,失败模式比 SFT 多不少。以下是我在整理这类实践时最常遇到的几类问题,按表格整理成排查清单。

问题现象可能原因排查方式解决方案
显存不足无法启动模型过大,LoRA 配置不当,或未开启量化查看显存占用日志,确认load_in_4bit是否生效换更小模型,降低per_device_train_batch_size,开启梯度累积
训练很快收敛但生成效果差奖励函数过于简单,模型学会了绕过规则打印奖励高分样本,观察生成结果的规律增加语义连贯性评估,引入人工偏好对
生成结果越来越短,甚至变成只言片语长度惩罚过度,或奖励函数过度奖励简洁统计训练前后平均生成长度在奖励函数中加入长度下限,或降低简洁性的权重
套话减少但语义错误变多模型过于关注风格,忽略了事实正确性对比原 prompt 的语义一致性增加语义相似度奖励,或先做一轮 SFT 再 RL
同一 prompt 多轮生成结果差异巨大温度过高,或未做 seed 固定降低 temperature,固定随机种子评估时用do_sample=False或固定seed
奖励值一直不涨数据 prompt 与任务场景不匹配检查 prompt 是否过于宽泛或重复增加 prompt 多样性,重新设计奖励信号
LoRA 合并后模型输出异常合并阶段基座模型与 LoRA 版本不一致核对基座模型路径和 lora 配置使用同一个 model_name 执行合并

这些问题的核心逻辑是一致的:先确认是数据问题、奖励问题,还是训练配置问题,不要一上来就调超参数。

8. 最佳实践与工程建议

8.1 数据质量优先于数据数量

RL 微调里,prompt 的多样性比 prompt 的绝对数量更重要。500 条覆盖不同场景的高质量 prompt,效果通常好于 5000 条场景重复的数拼接数据。建议每个 prompt 都带上明确的指令,比如“改写成表达自然的博客风格”“写一段技术说明,避免形容词堆砌”,让模型清楚地知道要往哪个方向做。

8.2 奖励函数要分层,不要太单一

只用一个指标驱动的奖励函数,模型大概率会找到漏洞。建议拆成三个层次:基础层(语法是否正确、是否跑题)、风格层(是否有套话、句式是否单调)、语义层(是否保留原意)。每层单独打分,再加权求和。这样即便某一层被 hack,其他层还能兜底。

8.3 保留未经修改的 checkpoint

RL 微调过程中,模型可能会出现“好一阵、坏一阵”的震荡。建议每隔几十步保存一次 checkpoint,并且不要急着覆盖。实际工程里,最后用的常常不是 loss 最低的 checkpoint,而是人工评估最高分的那个。

8.4 安全边界与使用提醒

RL 微调本质上是放大模型某一类偏好,这种能力很容易被误用。设计奖励信号时,请明确“写作风格”的边界,不要通过奖励函数去绕过模型本身的安全对齐,也不要故意诱导模型生成偏见、违规或攻击性内容。如果这块涉及生产环境的数据、权限或审核规则,请务必在测试环境验证、保留完整日志、并设置可回滚的灰度发布方案。

8.5 生产成本与模型迭代策略

从成本角度看,为一个写作风格任务去微调一个 7B 模型,单轮训练预算其实可控,但如果需要反复实验,累积成本会很快上升。建议先用 1.5B 模型做小规模实验验证路线,确认奖励函数和数据集能产生肉眼可见的效果,再切换到 7B 或 14B 模型。同时,把训练数据、奖励函数、评估结果分别归档,方便后续团队成员复制或改进。

9. 总结与后续学习方向

这篇文章从“AI 写作太油”这个具体痛点出发,完整拆解了用 RL 微调 LLM 的路线。现在你应该能理解:prompt 工程改变的是模型生成时的临时约束,而 RL 微调改变的是模型的偏好分布,后者才是根除 AI 味的真正杠杆。文中给出的 GRPO + LoRA 最小示例,足够让你在一个消费级 GPU 上跑通全流程,并用盲评方法验证效果。

如果你打算继续深入,下一步最值得做的是:收集自己的写作语料,先跑一轮 SFT 让模型学会你的基本表达风格,再设计一个包含套话惩罚、长度多样性和语义保留的奖励函数,然后用 GRPO 强化一轮。之后把模型生成的样本放到真实写作场景里用,收集不理想样本回填到训练数据中,形成闭环。

RL 微调 LLM 最值得学习的,不是某一个训练脚本,而是一套“用反馈信号持续修正模型行为”的思维方式。对于任何“感觉不对,但说不清哪里不对”的任务,这条路线都值得一试——AI 味只是第一个可以被驯服的目标。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 19:16:13

【笔记】用cursor手搓cursor(九)

用了一圈&#xff0c;我觉得目前知识库比较接近我的预想的是腾讯的ima&#xff0c;但是管理大规模知识的检索&#xff0c;以及索引的索引&#xff0c;索引的索引的索引…都还是问题&#xff0c;说白了就是思维链通路。 最新的deepseek v4 flash还不错&#xff0c;但deepseek整…

作者头像 李华
网站建设 2026/8/27 19:12:07

UL1561——干式配电变压器的“安全铁律” 出口墨加美地区安规认证变压器

UL1561——干式配电变压器的“安全铁律”在UL针对变压器的认证体系中&#xff0c;UL 1561是分量最重、要求最严的标准之一。它针对的是10kVA以上的干式通用和电力变压器&#xff0c;覆盖了从生产线主电源供电到大型工业设备配电的核心场景&#xff0c;堪称产线动力的“主力军”…

作者头像 李华
网站建设 2026/8/27 19:12:03

翼龙飞行建模:从化石数据到多目标优化的实战路径

1. 这不是一篇“论文模板”&#xff0c;而是一份翼龙飞行建模的实战手记2022年小美赛A题——“翼龙如何飞行”&#xff0c;表面看是个古生物问题&#xff0c;实则是一道典型的多学科交叉建模题&#xff1a;它不考你背了多少空气动力学公式&#xff0c;而是逼你从零开始&#xf…

作者头像 李华
网站建设 2026/8/27 19:07:07

一个双非软件工程本科生的逆风翻盘经历

写在前面 我的高考分数不高&#xff0c;只上了一个很一般的学校&#xff0c;也对自己的专业不感兴趣。但庆幸的是&#xff0c;大学四年&#xff0c;我慢慢的对编程产生了兴趣&#xff0c;学会了如何学习并走入了编程的大门。 后来还算顺利吧&#xff01;考上了某211硕&#xff…

作者头像 李华
网站建设 2026/8/27 19:04:41

在这公司干了五年Android开发,发现薪资被新人倒挂,凭什么不给老员工涨薪?

最近网上有篇热帖引发了互联网圈内码农们的共鸣。随着2021届高校毕业生秋招的工作接近尾声&#xff0c;职场新人接连入厂。大多数码农们也愈发感叹这种被新人薪资倒挂的现象是越来越严重了。 正所谓长江后浪推前浪&#xff0c;这一浪有时候就真能把你拍在沙滩上… 那么问题就来…

作者头像 李华