news 2026/10/20 16:36:49

AI应用开发入门:从LLM、RAG到Agent与记忆系统的完整地图

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI应用开发入门:从LLM、RAG到Agent与记忆系统的完整地图

这两年我接触了不少从其他技术栈转过来做AI应用开发的朋友,大家最普遍的一个困惑是:资料看了几百篇,教程也跟了不少,可真到自己动手做一个带点智能的应用时,却不知道从哪儿下手。LLM、RAG、Agent、记忆系统、向量数据库,这些词每个单独拿出来都有人讲,但它们在真实项目里到底怎么分工、怎么衔接,很少能有一篇文章讲透。这篇文章我想把AI开发这条路上的7个核心领域摊开揉碎说一遍——从大模型的基础认知与Prompt编写,到RAG检索增强生成,再到Agent智能体的规划与工具调用、记忆系统的设计实现,最后落到开发框架选型和一条适合小白的实战路线。目标只有一个:让你读完脑子里能有一张完整的地图,知道每个环节解决什么问题、什么时候该上什么技术,而不是看到一个教程就盲目抄一个。

1. 先看懂AI开发的能力地图:7大核心领域各自解决什么问题

很多人对AI开发的认知是"调一下大模型的接口,传个prompt,拿到结果就完事了"。这种思路在做一个Demo时确实成立,可一旦要做成一个真正的产品,你会发现事情远没有这么简单。举个最直观的例子:你让大模型回答"我们公司最新的报销流程是什么",它大概率会一脸茫然甚至编造一套流程。因为它的知识停留在训练数据截止那天,而且从不认识你公司。

1.1 一个比喻:大模型像个"会聊天但不会干活"的新员工

我特别喜欢用这个比喻来解释AI应用的技术栈:大模型本质上是一个知识面很广、但有点健忘、也不太会用工具的新员工。他读过很多很多书,聊起天来头头是道;但你没告诉他的内部信息,他真的不知道,却又不好意思说"不知道",于是就开始顺着你的话编。你让他帮忙订个会议室、统计一份数据,他嘴上答应,但手里没工具、也不知道该按什么步骤执行。更麻烦的是,他每次见到你都像第一次见面,完全不记得你上周提过什么需求。

后面这四层技术,本质上就是在给这位"新员工"补能力:

  • RAG是给他外挂一个公司知识库,让他遇到不确定的问题先查资料再回答,而不是瞎编。
  • Agent是给他配上双手和工具,让他能调用各种接口去执行具体任务,而不是只动嘴。
  • 记忆系统是治他的"健忘症",让他在多次对话里记住你是谁、你关心什么、任务进展到哪一步。
  • Prompt工程则是给他一本"工作手册",把说话和干活的规矩写得清清楚楚。

1.2 七块拼图与它们之间的关系

基于这个比喻,我把完整的AI应用开发拆成7个局部,这也是本文不断提到的"7大核心领域"。它们不是并列的技术名词,而是一个有依赖关系的分层结构:

核心领域解决的痛点你能得到的产出
1. LLM基础与API调用不了解模型能力边界,调用都不会第一个跑通的对话程序
2. Prompt工程输出不稳定、格式不可控一套可复用的提示词模板
3. RAG检索增强生成知识截止、私有知识缺失、幻觉严重能基于文档库回答问题的系统
4. Agent智能体模型只会聊天不会干活能自主调用工具完成任务的应用
5. 记忆系统模型没有跨会话记忆、上下文受限记得用户与业务状态的智能应用
6. 开发框架与工具链集成多组件时效率低、重复造轮子一套稳妥的工程脚手架
7. 部署与评估上线后效果不可控、问题不直观可监控、可度量、可迭代的线上服务

1.3 为什么按这个顺序学习最省力

很多初学者的误区是一上来就追Agent,甚至直接啃某个开源大项目的源码,结果被各种抽象概念砸晕。我的建议是按依赖顺序来:先把1和2做扎实,理解你正在跟一个什么样的模型打交道;再叠加3和4,让应用从"能说"变成"会做";然后补上5和7这两个工程化能力,让应用真正"可商用"。第6点其实是贯穿全程的,我会在教程后面单独展开,因为框架选错了,前期有多爽后期就有多痛。

2. 第一层地基:LLM基础认知与Prompt工程的"配方"打法

2.1 理解大模型的三个弱点,你才知道后面技术为什么存在

动手写代码之前,我强烈建议你先花一天时间搞清楚大模型的工作原理。它不是一个数据库,也不是搜索引擎,它的本质是一个"给定前文、预测下一个词"的概率模型。这个底层机制决定了它有三个天然弱点:

第一,知识有截止日期。模型只记得训练数据里出现过的东西,训练完之后的世界它一无所知。你以为它在给你讲今天的新闻,其实它在根据历史规律"合理推测",这跟编造只有一线之隔。

第二,幻觉是原生的。因为它本质是概率生成,遇到不知道的事情,它不会诚实地说"不知道",而是会生成一段听起来非常自信、逻辑自洽的内容。越是不懂,越敢说。

第三,上下文窗口有限。模型能"记住"的上下文长度是有限制的,几千到几万token不等。你不可能把一本书都塞进一次请求里,更不可能让它记住上个星期的对话。

理解这三点之后,你会瞬间明白后续章节里的每个技术选择:为什么要做RAG?因为要补知识、治幻觉。为什么要做记忆系统?因为上下文窗口装不下所有历史。为什么要做Agent循环?因为一次调用只能做一件事,复杂任务需要多次规划执行。

2.2 Prompt不是"说话",是配方:角色、任务、约束、示例缺一不可

很多人把Prompt理解成"跟模型好好说话",这是最大的误区。Prompt的核心是配方——它是一份结构化的控制指令,而不是一段聊天文本。我在实战中总结了一个四段式配方:

【角色】你是一位具备X领域经验的专业人士。 【背景】用户正在做某件事,当前遇到了某类问题。 【任务】针对以下输入,完成某个具体产出。 【约束】 - 输出必须包含哪些字段 - 不允许出现什么内容 - 如果信息不足,应该怎么处理

举个例子,我要让模型帮忙做代码审查:

你是一位资深的前端开发者,擅长分析React应用中的状态管理问题。 背景:用户的项目在不该重新渲染的地方出现了频繁重渲染,导致页面卡顿。 任务:分析下面的组件代码,找出可能导致重渲染的写法,并给出修改建议。 约束: 1. 先给出结论,再给修改后的代码,最后用100字以内解释原因。 2. 只关注性能问题,不要修改业务逻辑。 3. 如果代码中没有明显问题,明确说明"未发现明显问题",不要为了找问题而找问题。 组件代码: 【待粘贴的代码】

这个Prompt为什么有效?因为它把"模型知道的"和"我需要的"之间的边界画清楚。特别是第三条约定了"查不出问题就说查不出",直接压制了幻觉的源头。

2.3 Prompt调优里的4个坑,我每个都踩过

坑一:指令堆叠导致模型"选择困难"。我早期写Prompt喜欢把几十条要求全塞进去,结果模型反而忽略关键约束,输出一些四不像。后来我把约束精简到5条以内,并且把最重要的约束放到靠前的位置,效果立刻提升。大模型对长Prompt里的细节本身就是"选择性注意"。

坑二:只写"输出JSON",但不给结构。解析永远是Prompt工程里最疼的问题。你告诉模型"输出JSON",它可能给你一个带注释的JSON、一个markdown包裹的JSON,甚至一个漏了括号的JSON。后来我学会了在Prompt里直接给出JSON Schema或示例模板,让模型照着填值,解析成功率从60%直接跳到95%以上。

坑三:temperature设置永远用默认值。如果你的场景是数据抽取、格式转换,temperature设为0.2以下会大幅降低随机性;如果是头脑风暴类的创意生成,调高到0.8以上才有惊喜。不少初学者不知道这个旋钮是干嘛的,白白被随机性折磨。

坑四:没有输出校验环节。这里是工程思维和Demo思维的分水岭。线上应用必须在拿到模型输出之后加一层校验,字段缺失就重新生成或走降级逻辑,而不是拿着脏数据继续往下走。我记得有次线上问答应用把模型的幻觉输出直接存进了业务数据库,排查了好几天才发现是输出校验缺失。

3. RAG检索增强生成:让模型学会"先查资料再回答"

3.1 RAG要解决的核心问题与整体链路

RAG这个名字听起来高大上,拆开就是Retrieval-Augmented Generation,检索增强生成。它做的事情用大白话讲:在模型回答之前,先从你自己的知识库里检索出相关的资料片段,再把这些资料连同问题一起交给模型,让它依据资料作答。

这个技术之所以成为AI应用开发的标配,是因为它同时解决了三个问题:知识截止日期、私有领域知识缺失、以及幻觉。模型不用再猜测答案,它会像开卷考试一样,先把参考资料摆在眼前,照着抄。

RAG的整体链路是一个完整的数据管线,跑通它你才算真正入了门:

文档加载 → 文本切分(chunking) → 向量化(embedding) → 存入向量库 → 用户提问时向量化问题 → 召回(retrieval) → 重排(rerank,可选) → 拼接Prompt交给LLM生成答案

这八个环节里,任何一个出了问题,最终回答质量都会打折扣。而大多数人的RAG效果不好,原因往往不在模型,而在前面的"数据"环节。

3.2 文档切分与向量化:决定RAG效果的地基环节

切分方式直接影响召回质量。我见过太多人直接把整本PDF丢进去切,每500个token硬切一刀,结果一句话被拦腰截断,丢失语义。更合理的做法是按文档结构切:先按标题分块,每个标题下的内容作为一个语义完整的段落;段落太长再按固定长度切,并设置overlap(重叠区域)。overlap的作用是让相邻块之间保留上下文衔接,避免一句话因为换块而"失忆"。

关于chunk_size,我给你一组经验值:通用业务文档选300到600个token,技术文档可以适当扩大;如果文档里都是短段落,200个token就够。不要迷信某个固定数值,用你的真实数据跑一遍,看看召回结果的命中情况再调。

向量化模型的选择也很关键。不同embedding模型对中文的支持差异很大,有的在中英混合场景表现非常差。建议用至少两个模型在你的业务数据上做一个召回对比,不要只看网上谁火就选谁。向量模型输出的维度也影响存储成本,768维和1536维的存储开销差一倍,小项目够用就行,别盲目上大模型。

3.3 召回到生成之间的调优经验:参数、重排与问题排查

链路跑通之后,就到了最磨人的调优阶段。我最常调的几个参数列成表格给你参考:

参数作用我的经验值
chunk_size检索单元大小200-600 token
chunk_overlap块间上下文重叠10%-20%
top_k召回数量3-8 条
temperature生成随机性0.1-0.3
重排开关是否对召回结果精排数据量大时必须开

一个值得单独提醒的参数是top_k。有些人以为召回越多越好,一下子把top_k调到20,结果Prompt被大量无关片段塞满,模型反而抓不住重点,回答质量直线下降。我先用top_k=5做基线,再逐步增减,找到效果拐点。

如果RAG效果不理想,问题排查要按照"数据 → 召回 → 生成"的顺序拆解,而不是一上来就怀疑模型:

  1. 看召回结果里有没有包含问题的关键段落。如果没有,那是切分或向量化的问题,去检查chunk大小、embedding模型和文档本身的格式。
  2. 如果召回了,但生成答案没用上,那是Prompt组装的问题。很多框架默认的RAG模板要自己改,你得明确要求模型"只能依据提供的资料回答,资料中没有的内容不要编造"。
  3. 如果上下文里有干扰信息,那就考虑加重排,或者动态调整召回阈值。

记住一个排查原则:召回决定上限,生成决定下限。召回阶段就漏了,后面再怎么调Prompt都是徒劳。

4. Agent智能体:从"回答问题"到"主动完成任务"

4.1 Agent的本质:模型从对话者变成执行者

如果说RAG是让模型"会查资料",那么Agent就是让模型"会干活"。两者的思维模式完全不同:在普通的对话场景里,模型是一个回答者,你说一句它答一句;在Agent场景里,模型变成了一个决策者和执行者,你给它一个目标,它自己拆解步骤、选择工具、执行动作、观察结果,并在必要时调整计划,直到完成任务或到达最大步数。

Agent的核心组件就三个:大模型作为大脑、工具集作为手脚、循环控制作为躯干。模型负责"下一步该做什么",工具负责"把事儿做出来",循环负责"检查结果并决定是否继续"。

理解了这个结构,你就知道为什么Agent的代码量其实不大,难的是设计好它的思考边界和工具边界。工具不是越多越好,你用到的场景大概就那几类:查数据库的、调外部API的、算数据的、发消息的、控制浏览器的。每个工具都要有清晰的描述,因为模型是靠描述来决定"什么时候该调它"的。

4.2 用ReAct循环实现一个最小Agent

ReAct是目前最简单的Agent范式,思路是让模型在每一步输出"我想了什么(Thought)→ 我决定调用什么工具(Action)→ 我期待得到什么结果(Action Input)",然后由程序去执行这个工具,把观察结果(Observation)还给模型,如此循环,直到模型输出"Finish"。

这里给你一个最小可运行的伪代码结构:

def run_agent(goal, tools, max_steps=10): messages = [{"role": "system", "content": "你是任务规划与执行助手,只能使用给定的工具完成任务。每次按格式输出Thought/Action/Action Input。"}] for step in range(max_steps): response = llm.chat(messages) messages.append({"role": "assistant", "content": response}) action = parse_action(response) # 解析Action字段 if action.type == "finish": return action.answer if action.type not in tools: messages.append({"role": "system", "content": f"工具{action.type}不存在,请重新选择"}) continue tool_result = tools[action.type](action.args) messages.append({"role": "tool", "content": tool_result}) return "任务未在最大步数内完成"

跑通这个最小Agent的关键在于行动输出格式必须极其严格。模型很擅长在Action里自由发挥,用了各种不同的格式,导致parse_action直接摔跟头。我的做法是在系统Prompt里给出一个"标准输出模板",并且每一轮都把上一个工具的结果原样放回上下文,让模型的下一步决策有据可依。同时务必加上max_steps限制,不然模型会在某些任务里无限循环,白白消耗你的API预算。

4.3 Agent失控的4个常见原因与工程防护

Agent开发者的主要工作不是写代码,而是"防止模型胡来"。我在项目里踩过的坑归纳下来就四种:

一是死循环。模型反复调用同一个工具,得到相同结果,然后再调用一次。防护办法是设置最大步数,以及对重复动作做去重检测,发现连续N次相同的调用就强制终止。

二是动作格式漂移。前面几轮还规规矩矩按格式输出,几轮之后就开始加注释、换措辞、甚至用markdown包裹动作。我的经验是不要在上下文里放太多无关历史,每轮执行完把"刚刚这一步的结果"摘要放进去,减少模型的发散空间。

三是工具权限失控。给Agent的工具越多,安全隐患越大。有一次我给Agent接了一个"执行任意代码"的工具,它直接循环执行了几十次耗时的计算。现在我对每个工具都做白名单和参数校验,能读不能写的绝不放开写权限,能用只读查询的绝不给执行权限。最小权限原则在Agent场景里尤其重要。

四是目标理解偏差。用户说的目标跟模型理解的目标经常不是一回事。比如"帮我整理这份数据",模型可能直接开始删数据而不是统计汇总。防护办法是在任务启动前加一个"目标确认"环节,让模型先复述一遍它对任务的理解,用户确认后再真正开跑。

5. 记忆系统:让AI应用从"失忆"到"记事儿"

5.1 为什么需要单独的"记忆系统"设计

你做过那种用户每次打开都得重新介绍自己的应用吗?我做过,效果非常糟糕。大模型的上下文窗口天然有限,它天生是"健忘"的,要想让应用有连续对话能力、个性化体验,必须专门设计一套记忆机制。

记忆系统要解决的问题有三类:第一类是会话内的短期记忆,比如用户刚刚说了什么,这些内容要一直保留在上下文里;第二类是跨会话的长期记忆,比如用户一个月前说过的偏好、历史偏好、业务状态;第三类是任务状态,比如一个多步骤流程走到哪一步了,中间产出的临时数据放在哪。

没有记忆系统的AI应用,就像一个每次见面都假装不认识你的客服,用户用两次就烦了。有了记忆系统,应用才可能从"能用"升级到"好用"。

5.2 短期、长期、工作记忆的工程实现方案

短期记忆是最简单的:直接把对话历史作为消息数组传给模型。但要注意上下文窗口有限,不可能无限累积,所以通常的做法是只保留最近N轮对话,更早的内容做摘要压缩。你可以用模型把前面的对话生成一个"对话小结",在下一轮放进system message里,这样既保留关键信息又省token。

长期记忆的通用方案是"向量数据库 + 结构化数据库"组合:把用户说过的重要事实、历史操作、偏好摘要存成两类数据——结构化的字段(比如用户ID、创建时间、偏好标签)放关系型数据库,叙事性的内容(比如"上次讨论过某项目的技术选型")向量化之后放进向量数据库。等到新对话开始时,系统用当前问题去检索相关的历史记忆,把命中结果注入Prompt。

工作记忆管理的是当前任务的状态,最简单的实现是一个JSON文档或一张任务状态表,记录"任务ID、当前阶段、已完成步骤、下一步动作、已完成的结果"。Agent每执行一步,更新一次状态表;任务中断后重新拉起,可以从状态表恢复进度。

5.3 记忆的写入、召回与更新:一个轻量级设计

给你一个可以直接抄作业的轻量级记忆模块设计思路:

class MemoryService: def __init__(self, sqlite_path, vector_store): self.db = sqlite_path # 结构化信息 self.vectors = vector_store # 语义记忆 def save_interaction(self, user_id, query, response, important_facts): # 1. 把important_facts存入SQLite,作为带标签的结构化记忆 # 2. 把query+response写入向量库,作为可检索的语义记忆 # 3. 触发一次"记忆摘要更新",合并旧的摘要与本次新内容 def recall(self, user_id, query, top_k=5): # 1. 先从SQLite取出用户标签/画像 # 2. 再从向量库召回语义相似的历史交互 # 3. 合并两组结果,按时间衰减权重,返回给上层

这里有一个时间衰减权重的细节值得展开:长期记忆不能平等对待。三个月前的偏好可能早变了,但"用户当前项目使用的技术栈"这类短期事实反而更准确。我的做法是在召回时对记忆打一个时间衰减系数,近7天的记忆权重给1.0,30天前降到0.5,90天前降到0.2,再用这个权重参与排序。这样既保留长期画像,又不会被过期信息误导。

5.4 记忆场景里容易被忽视的3个问题

记忆系统做出来不难,做对很难。三个问题我建议你提前想清楚,不然后面早晚返工。

一是隐私合规。你存了用户多少历史对话,就必须承担起保护这些数据的责任。用户在设置里关闭记忆功能时,你真能把他所有记忆痕迹删干净吗?设计阶段就要把"删除逻辑"做进去,而不是事后补救。

二是记忆污染。模型提取"重要事实"的过程可能出错,它可能把用户随口说的一句话当成事实存下来,然后在下一次对话里用它作为推理依据,错误就被放大了。我的应对方案是:记忆写入前加一个置信度门槛,只有模型判断为"明确提出且对后续对话有影响"的内容才入长期记忆。

三是记忆检索失败不能影响主流程。如果召回记忆的服务超时或者返回空结果,应用应该"优雅降级"到普通对话模式,而不是直接抛错。做个简单的try-except,让用户感知不到技术故障,只把他当成第一次对话的正常人。

6. 开发框架、向量数据库与环境准备:少走弯路的关键选型

6.1 先写原生代码再上框架,理解永远比工具重要

聊到工具链之前,我想先说一个反常识的建议:学习阶段,不管框架多方便,都先写一遍不依赖框架的原生代码。我见过太多"框架熟练工",会用LangChain的链式调用,却不知道一个RAG请求真正经历了哪些环节;出了问题只能网上搜,搜索不到就彻底卡住。用原生API把第三节里那个RAG链路完整写一遍,把Agent循环自己实现一遍,你会发现框架只是个封装,底层逻辑一点都不神秘。

这不是说框架不好,而是说理解要在抽象之前。框架帮你省掉的重复劳动,建立在你已经理解它帮你做了什么事的前提下。否则你省掉的不是麻烦,是理解。

6.2 主流框架与向量数据库怎么选

开发框架我用自己的经验给你一个客观的评价:

框架/工具定位适用场景注意事项
LangChain这类编排框架全链路组件编排项目里组件多、集成复杂版本更新频繁,抽象层多,排错成本高
LlamaIndex这类数据索引框架文档索引与RAG知识库密集、召回场景多索引优化方便,Agent能力不如通用编排框架
原生代码 + 必要库自由可控学习原理、做精细定制代码量大,但最透明
Chroma/FAISS轻量向量存储Demo、中小规模简单易用,数据量大要换分布式方案
Milvus这类分布式向量库生产级向量存储大规模、高并发部署运维成本高,初创期别急着上

我的项目选型原则很简单:Demo期怎么做最简怎么做,上线前再根据真实瓶颈做取舍。不要因为某个框架"未来能扩展到百万数据量"就在第一天选它,你的第一个版本可能连一千条文档都没有。过早引入重型基础设施,只会拖慢迭代速度。

6.3 环境准备:虚拟环境、依赖管理与密钥管理

很多教程跳过了环境配置,直接到代码,结果新手第一步就摔跤。这里给你一份足够稳的准备流程:

# 1. 创建并激活虚拟环境 python -m venv venv source venv/bin/activate # 2. 安装核心依赖(按需增减版本号) pip install openai python-dotenv pip install langchain chromadb tiktoken # 3. 用.env管理密钥,绝不要写进代码 echo "OPENAI_API_KEY=sk-xxx" > .env

在密钥管理上我说个血的教训:有一次我把API密钥直接写进了共享的代码仓库,不到两小时就被扫描程序捞走了,当天账单直接爆掉。现在我的所有密钥都放环境变量或密钥管理服务里,代码仓库里只放.env.example模板,并且把.env加进.gitignore。这类事一次都赌不起,新手尤其要养成习惯。

7. 小白7天入门路线与避坑清单

7.1 7天路线图:每天学什么、交付什么

如果你完全没有经验,又想快速建立完整的动手能力,我建议你按下面这份路线走。每一天的产出都是"一个能跑的东西",而不是"看完了某个文档"。

天数学习主题当日交付物
Day 1LLM API调用与基础认知用代码完成一次真实的模型调用,拿到回复
Day 2Prompt工程针对一个具体场景写出一套四段式Prompt,并验证稳定性
Day 3RAG最小实现加载3个文档,跑通"检索+生成"问答
Day 4向量化与检索调优调整chunk方式,对比检索结果并记录差异
Day 5Agent最小实现让模型能调用两个工具完成"查询天气并整理成日报"
Day 6记忆系统实现跨对话记住用户名字与偏好的Demo
Day 7综合项目做一个"带记忆的、可回答私有知识的、能调用工具的助手"

到了第7天,你其实已经把7大核心领域的核心串起来了。这个综合项目不用大,但一定要完整。

7.2 我给新手的10条避坑建议

  • 别在没跑通Demo前纠结"最优架构"。架构是为可维护性服务的,你的第一版还没有维护负担。
  • 别把大模型当数据库用。事实查询交给RAG或传统存储,模型只负责理解和生成。
  • 别忽略输出校验。模型输出是"概率性正确",必须有程序层面的兜底。
  • 别把密钥写进代码。一次泄露就可能被薅掉大量API额度。
  • 一定要设计日志。模型输入输出、耗时、成本、召回结果全都要留痕,不然线上问题无从查起。
  • 别盲目追逐最新版本。框架大版本升级经常破坏API,能用稳定的就别当小白鼠。
  • 密切关注上下文长度与成本。同样功能,不同Prompt方案token消耗能差好几倍。
  • 先保证召回质量,再调生成效果。RAG系统里召回是根,生成是叶。
  • 做好输入输出的Schema校验。非结构化数据是系统地雷。
  • 给自己定义一个"最小可用"标准,别憋大招。7天学不会完美,但完全足够学完"能跑通"。

7.3 从"跑通Demo"到"做成产品":评估、监控与成本

很多人的项目止步在Demo,是因为没有往下走产品化的那几步。第一个要解决的是效果评估。RAG系统不能只靠"感觉回答得还行",要建立一批测试问题集,给每个问题标注标准答案,自动记录模型的回答、召回结果、准确率和漏检率。我一般准备50到100条线上真实问题作为评测集,每次改参数都重新跑一遍,用自己的评测数据判断改动方向,而不是拍脑袋。

第二个是监控。上线之后至少要看三件事:API调用的成功率与延迟、用户真实Query里的Bad Case、每天的token消耗成本。我见过不少团队,模型表现时好时坏却毫无察觉,等用户投诉了才去翻日志,非常被动。

第三个是成本控制。大模型API的账单是按token算的,而在Agent和RAG场景里,每次任务动辄消耗几万token。如果不做缓存、不做上下文压缩、不限制Agent最大步数,一个看起来很简单的功能也能烧出让你肉疼的费用。建议从第一天就养成记录token的习惯。

我在做综合项目的阶段,最大的体会是把上面这些"无聊的工程问题"处理好,反而比追求更花哨的模型能力提升更快。因为产品体验的短板,往往不在模型的聪明程度,而在工程链路的可靠性。

最后再分享一个实际项目里被验证过的小技巧:把项目中的Prompt模板、参数配置、知识库版本全部纳入版本管理。模型效果和Prompt文本强相关,你改了Prompt却说不清改了什么,回滚和排查都会变成灾难。哪怕只是加了一个换行符,也记录下来。AI开发很多时候不是"一次写好",而是"持续调对",而调对的前提,是每一次改动都留痕。这条习惯,越早养成越受益。

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

Python代码练习的核心方法:从刻意训练到工程化实践

很多人学 Python 的时候,教程看了好几套,视频刷了几百集,一到自己动手就懵。打开编辑器,手指放在键盘上半天,不知道该写什么。这不是你笨,而是缺了“代码练习”这个环节里最核心的东西:一套能让…

作者头像 李华
网站建设 2026/10/20 16:35:29

AI工具选型的工程化方法论:工作流嵌入、上下文稳定与错误追溯

1. 这不是工具清单,而是一份“认知过滤器”的使用实录2026年春天,我清空了本地所有AI工具的快捷方式,只留下12个图标。这不是精简,是溃败后的重建——过去18个月里,我系统性地测试了217款标榜“提升效率”“重构工作流…

作者头像 李华
网站建设 2026/10/20 16:32:06

C++多态深度解析:虚函数表、常见陷阱与编译时替代方案

做C开发越久,越会发现“多态”这个词在不同场合的含义并不完全一样。面试里它主要考虚函数表和动态绑定;代码评审里它决定模块边界;架构设计里,它往往意味着“一个接口、多种实现”能否真正落地。多态的核心价值,是让调…

作者头像 李华
网站建设 2026/10/20 16:30:56

轻量级双塔推荐系统:解决冷启动与行为稀疏的工业实践

简介:本资源是一套面向人工智能课程设计与毕业设计实践的深度学习商品推荐系统完整实现,聚焦解决电商场景下用户行为建模、冷启动与长尾商品推荐等核心问题。项目基于Python构建,融合深度学习特征提取与召回排序双阶段架构,虽标签…

作者头像 李华
网站建设 2026/10/20 16:30:07

浏览器原型插件工程化改造:从解压到可交付的完整路径

简介:这是一款面向产品经理、交互设计师及前端原型开发者的 Chrome 浏览器扩展工具,用于在浏览器环境中辅助 Axure 原型相关操作,解决原型预览与状态管理不便的问题。资源包共 7 个文件,以 3 个 png 图标资源、2 个 js 脚本、1 个…

作者头像 李华
网站建设 2026/10/20 16:29:39

从softmax到混淆矩阵:分类模型评估与可视化全流程指南

1. 为什么要手动处理softmax输出:模型预测和可视化之间的隐性断层做过分类模型项目的人应该都有这种体验:训练阶段看着准确率一路飙升,验证集loss不断下降,心里还挺踏实。但真正到了交付环节、写实验报告、或者给非技术同事展示成…

作者头像 李华