Javaer转Agent开发:从确定性思维到概率性系统的学习路径与实战
2026/9/23 6:56:59 网站建设 项目流程

1. 从Java业务开发到Agent开发,到底跨了什么坎

干了五六年Java后端的人,第一次听到“转Agent开发”这件事,心里多半是两种反应:一种是“不就是调个大模型API吗,我Spring Boot写得飞起,这有什么难的”;另一种是“完了,Python那一套我完全不会,是不是得从头学起”。这两种反应我都经历过,而且都错了。

先说结论:Javaer转Agent开发,真正的门槛不在语言,也不在框架,而在于思维方式的切换。你过去写业务代码,核心是“确定性”——输入A,经过固定的逻辑链路,输出B,中间每一步都可预测、可测试、可回滚。但Agent开发的核心是“不确定性管理”——大模型的输出天然带有随机性,你要做的是设计一套机制,让这种随机性在可接受的边界内产生价值。这个转变,比学任何框架都重要。

我刚开始接触这块的时候,犯过一个很典型的错误:试图用写Service层的方式去写Agent。我把Prompt当成SQL一样精心构造,把工具调用当成RPC一样严格定义,结果发现整个系统极其脆弱——模型稍微换个说法,我的解析逻辑就崩了。后来才明白,Agent开发更像是设计一个“给聪明但不太靠谱的实习生用的工作流程”:你要给他清晰的指令、必要的工具、合理的检查机制,而不是试图控制他每一步怎么想。

这篇内容面向的是有Java基础、想往Agent方向转的开发者。不管你是刚工作一两年想拓宽技术栈,还是做了多年业务开发想找个新方向,下面这些学习路径和踩坑经验应该都能帮到你。我不会只列一堆资料让你自己啃,而是把每个阶段该学什么、为什么学、怎么验证自己学会了,都讲清楚。

2. 先搞清楚Agent开发和传统Java开发的区别在哪

2.1 确定性系统与概率性系统的本质差异

传统Java后端开发,你面对的是一个确定性系统。用户请求进来,经过Controller、Service、DAO层层处理,每一步的输入输出都是明确的。你可以写单元测试覆盖每个分支,可以用断点调试追踪每个变量的值,出了问题看日志就能定位。这套方法论在过去二十年里非常有效,也是Java生态如此成熟的原因。

Agent开发面对的是一个概率性系统。大模型不是数据库,你给它同样的输入,它可能给出不同的输出。这不是bug,是特性。你没法用传统的断言测试去验证一个Agent的输出是否“正确”,只能验证它是否“合理”。这个差异导致整个开发和调试的方式都要变。

举个具体的例子。假设你要做一个“根据用户描述自动生成SQL查询”的Agent。传统思路是:解析用户输入→匹配模板→生成SQL→执行。但Agent的思路是:把用户输入和数据库Schema一起给模型→模型生成SQL→执行→如果报错,把错误信息回传给模型让它修正→循环直到成功或达到重试上限。你看,这里没有“解析”和“匹配”的步骤,取而代之的是“让模型理解”和“让模型自我修正”。

这个思维转变的关键在于:你不再试图穷举所有情况,而是设计一个能处理未知情况的循环。这就像从写一个巨大的switch-case,变成写一个带反馈机制的状态机。

2.2 Java在Agent生态中的真实位置

很多人有个误解,觉得Agent开发是Python的天下,Java没戏。这个判断在2023年之前基本成立,但现在情况变了。Java在企业级应用中的统治地位决定了它不可能缺席Agent这波浪潮——毕竟大部分公司的核心业务系统、数据、权限体系都在Java这边。

目前Java Agent生态主要有两条线。一条是Spring AI,Spring官方出品,和Spring Boot无缝集成,适合已经在用Spring全家桶的团队。另一条是LangChain4j,对标Python的LangChain,功能更丰富,社区也更活跃一些。两者不是非此即彼的关系,很多项目会同时用到——比如用LangChain4j做复杂的Agent编排,用Spring AI做和现有Spring服务的集成。

Java在这个领域的优势是什么?我觉得最核心的是工程化能力。Python写Agent原型很快,但要做成生产级系统,涉及并发控制、事务管理、监控告警、权限校验这些,Java生态的成熟度是Python比不了的。你想想,一个Agent要调用公司内部的订单服务、库存服务、支付服务,这些服务都是Java写的,用Java来做集成天然顺畅。

2.3 学习路径的优先级排序

基于我自己的经验和带新人的观察,Javaer转Agent开发的学习优先级应该是这样的:

优先级学习内容原因建议投入时间
Prompt工程基础这是所有Agent开发的地基,不理解Prompt就理解不了Agent的行为1-2周
至少一个Java Agent框架Spring AI或LangChain4j选一个深入,另一个了解即可3-4周
RAG原理与实现大部分企业级Agent都需要接入私有知识2-3周
工具调用与函数编排Agent区别于Chatbot的核心能力2周
多Agent协作除非做复杂场景,否则初期用不到按需

这个排序的逻辑是:先建立对“模型怎么理解指令”的直觉,再学框架怎么帮你组织这些指令,然后才是具体的功能模块。很多人一上来就啃框架文档,结果写出来的Agent行为诡异,因为底层Prompt没写好,框架再好也救不了。

3. Spring AI和LangChain4j,先学哪个、怎么学

3.1 两个框架的定位差异与选型逻辑

Spring AI和LangChain4j虽然都是Java Agent框架,但设计哲学完全不同。Spring AI的思路是“把AI能力做成Spring生态的一等公民”,所以它的API风格极其Spring——ChatClient、EmbeddingClient、VectorStore这些接口,用惯了Spring的人一看就懂。它的优势在于和Spring Boot的自动配置、依赖注入、Actuator监控无缝集成,如果你的项目本来就是Spring Boot,引入Spring AI几乎零成本。

LangChain4j的思路是“把Python LangChain的能力完整搬到Java”,所以它的抽象层次更多,功能也更细。比如它区分了ChatLanguageModel和StreamingChatLanguageModel,有专门的AiServices注解体系,还有各种Chain和Agent的实现。它的优势在于灵活性和功能丰富度,但学习曲线也更陡。

选型建议很简单:如果你是在现有Spring Boot项目里加AI能力,从Spring AI入手;如果你是要从零做一个Agent项目,或者需要更复杂的编排能力,从LangChain4j入手。两个都学当然最好,但初期没必要,先把一个用熟。

我个人的路径是先学的Spring AI,因为当时项目就是Spring Boot的,引入成本最低。后来做另一个需要复杂工具编排的项目时,才转去学LangChain4j。回头看,这个顺序是合理的——Spring AI帮我快速建立了“Java里怎么写AI应用”的体感,LangChain4j则让我看到了更完整的可能性。

3.2 Spring AI的入门路径与关键概念

Spring AI的入门其实很简单,但有几个概念必须先搞清楚,否则后面会一直迷糊。

第一个是ChatClient。这是你用得最多的接口,它封装了和模型对话的完整流程。你可以把它理解成一个“会说话的服务”,你给它Prompt,它给你回复。但和普通Service不同的是,它的回复不是确定的,而且它可以带上下文、带工具、带记忆。

第二个是Advisor。这是Spring AI里比较独特的设计,类似Spring MVC里的Interceptor。你可以在对话前后插入处理逻辑,比如记录日志、做RAG检索、过滤敏感词。这个设计非常Spring,用起来很自然。

第三个是Tool Calling。这是Agent的核心能力——让模型决定什么时候调用什么工具。Spring AI里通过@Tool注解来定义工具,模型会根据你的描述自动判断是否调用。这里的关键是工具的描述要写清楚,模型是根据描述来决定用不用的。

入门代码大概长这样:

@RestController public class ChatController { private final ChatClient chatClient; public ChatController(ChatClient.Builder builder) { this.chatClient = builder .defaultSystem("你是一个专业的Java技术顾问,回答要简洁准确") .build(); } @GetMapping("/chat") public String chat(@RequestParam String message) { return chatClient.prompt() .user(message) .call() .content(); } }

就这么简单。但简单背后有几个坑:defaultSystem里的Prompt怎么写,直接决定了回答质量;call()是阻塞的,高并发场景要用stream();还有模型的选择、温度参数的设置,都会影响输出。

3.3 LangChain4j的核心抽象与上手要点

LangChain4j的核心抽象比Spring AI多,但理解了之后会发现设计得很合理。

最核心的是ChatLanguageModel,这是所有对话模型的统一接口。然后有AiServices,这是一个很巧妙的设计——你定义一个Java接口,用注解标注每个方法的行为,LangChain4j会自动生成实现。比如:

interface Assistant { @SystemMessage("你是一个Java面试官,根据候选人的回答给出评分和建议") String evaluate(@UserMessage String answer); } Assistant assistant = AiServices.create(Assistant.class, model); String result = assistant.evaluate("HashMap和Hashtable的区别是...");

这种声明式的风格在Java里很舒服,比手动拼Prompt优雅得多。

另一个重要的是EmbeddingStoreContentRetriever,这是做RAG的基础。LangChain4j支持的向量数据库比Spring AI多,而且API设计更统一。如果你要做RAG,LangChain4j的文档和示例会更丰富。

LangChain4j的学习建议是:先把AiServices用熟,这是它最有特色的部分;然后学ContentRetriever做RAG;最后再看Agent和Chain的高级用法。不要一上来就啃Agent部分,那个抽象层次太高,没有前面的基础会看晕。

3.4 两个框架的踩坑对比

我在两个框架上都踩过坑,这里列几个典型的,帮你省点时间。

Spring AI的坑主要在版本迭代上。它从0.x到1.0变化很大,很多网上的教程还是老版本的API,照着写会报错。建议直接看官方文档的最新版,别信博客。另外Spring AI对模型的支持虽然多,但每个模型的配置方式不太一样,切换模型时要注意。

LangChain4j的坑主要在依赖管理上。它的模块拆得很细,你需要哪个功能就引哪个依赖,但有时候会漏引导致运行时才报错。还有它的版本更新也快,不同版本之间API有变化,建议锁定一个稳定版本用。

提示:两个框架都建议用Maven的dependencyManagement锁定版本,不要用latest,否则某天构建突然失败都不知道为什么。

4. RAG是Javaer最容易上手的Agent切入点

4.1 为什么RAG适合作为第一个Agent项目

如果你问我Javaer转Agent开发第一个项目做什么,我会毫不犹豫地说:RAG。原因有三个。

第一,RAG的输入输出相对确定。用户问一个问题,你从知识库里检索相关内容,拼成Prompt给模型,模型生成回答。整个流程清晰,容易调试。不像纯Agent那样需要处理复杂的工具调用和状态管理。

第二,RAG能直接复用你现有的Java技能。文档解析、文本分块、向量存储、检索排序,这些本质上都是数据处理,Java在这块的工具链很成熟。你不需要重新学一套数据处理的方式。

第三,RAG的价值容易验证。你拿公司的一份产品文档,做成知识库,然后问几个只有文档里才有的问题,看模型能不能答对。答对了就是有效,答错了就调检索策略。这种即时反馈对学习很有帮助。

我做的第一个RAG项目是给团队做一个内部技术文档的问答助手。文档大概几百页,涉及各种API和配置说明。做完之后,新人问配置问题基本不用找人了,直接问助手就行。这个项目让我完整走了一遍RAG的流程,也让我理解了检索质量对最终效果的决定性影响。

4.2 文档处理与分块策略的实操细节

RAG的第一步是把文档变成可以检索的片段。这一步看起来简单,实际上坑很多。

首先是文档格式。PDF、Word、Markdown、HTML,每种格式的解析方式都不一样。PDF最麻烦,因为它的结构是给排版用的,不是给语义用的。一个表格可能被解析成乱七八糟的文本。我的经验是:能用Markdown就用Markdown,能用纯文本就用纯文本,PDF是最后的选择。如果必须处理PDF,建议用专门的PDF解析库,比如Apache PDFBox,但要做好心理准备,效果不会太完美。

然后是分块。这是RAG里最关键的决策之一。分块太大,检索出来的内容包含太多无关信息,会干扰模型;分块太小,可能丢失上下文,模型理解不了。常见的策略有几种:

  • 固定长度分块:简单粗暴,按字符数或token数切。优点是实现简单,缺点是可能把一句话切成两半。
  • 按段落分块:以自然段落为单位,保持语义完整。适合结构清晰的文档。
  • 递归分块:先按大标题切,再按小标题切,再按段落切,直到满足大小要求。这是LangChain4j和Spring AI都支持的策略,效果通常最好。
  • 语义分块:用Embedding判断句子之间的相似度,相似度低的地方切一刀。效果最好但计算成本高。

我的建议是:先用递归分块,块大小设置在500-1000个token之间,块之间保留10%-20%的重叠。这个配置在大多数场景下都能work。然后根据实际效果调整——如果发现检索出来的内容经常缺上下文,就增大重叠;如果发现检索结果太杂,就减小块大小。

还有一个容易被忽略的点:给每个块加上元数据。比如来源文件名、章节标题、页码。这些元数据在检索时可以用来过滤,在生成回答时可以用来标注引用来源。没有元数据的RAG,用户问“这个结论是哪来的”,你答不上来。

4.3 向量检索的质量优化与常见问题

向量检索是RAG的核心。它的原理是把文本块和用户问题都转成向量,然后找向量距离最近的块。听起来简单,但实际效果受很多因素影响。

第一个因素是Embedding模型的选择。不同的Embedding模型在不同语言、不同领域上的表现差异很大。中文场景下,建议用专门针对中文优化的模型。Spring AI和LangChain4j都支持多种Embedding模型,切换成本不高,建议多试几个。

第二个因素是相似度度量方式。常见的有余弦相似度、欧氏距离、点积。大多数场景用余弦相似度就行,它对向量长度不敏感。但如果你的向量都归一化了,点积和余弦是等价的。

第三个因素是检索数量。你检索Top 3还是Top 10,效果差别很大。检索太少可能漏掉关键信息,检索太多会引入噪声。我的经验是:先检索Top 10,然后用重排序模型精选出Top 3给模型。重排序是RAG里提升效果最明显的手段之一,值得花时间研究。

常见问题里,最典型的是“检索到了相关内容但模型没用”。这通常是因为Prompt没写好。你需要在Prompt里明确告诉模型:“只根据以下参考资料回答,如果资料里没有就说不知道。”不加这句话,模型可能会用自己的知识胡编。

另一个常见问题是“相似的问题检索结果不稳定”。这是因为向量检索本质上是近似最近邻搜索,不同的索引结构、不同的参数会导致结果有细微差异。如果对稳定性要求高,可以考虑用精确搜索,但性能会下降。

4.4 从RAG到Agent的平滑过渡

RAG做熟了之后,往Agent过渡会很自然。因为RAG本身就是一种最简单的Agent——它只有一个工具,就是“检索知识库”。

过渡的关键是理解工具调用的本质。在RAG里,你是在代码里硬编码“先检索再生成”的流程。而在Agent里,你把“检索知识库”定义成一个工具,让模型自己决定什么时候调用。这个转变带来的灵活性是巨大的——模型可以根据问题类型决定是查知识库、查数据库、还是调API。

举个例子。你做一个客服Agent,用户问“我的订单到哪了”。纯RAG的做法是:在知识库里检索“订单查询”相关的文档,然后告诉用户“请提供订单号”。Agent的做法是:模型识别出这是一个订单查询请求,调用“查询订单状态”的工具,拿到结果后直接回答。体验完全不同。

从RAG到Agent,你需要补的主要是工具定义多轮对话管理。工具定义的关键是描述要清晰,让模型能准确判断什么时候用。多轮对话管理的关键是状态维护,要记住上下文,但也不能什么都记,否则Prompt会越来越长。

5. 工具调用与函数编排的实战要点

5.1 工具定义的艺术:让模型准确理解你的意图

工具调用是Agent区别于普通Chatbot的核心能力。但很多人定义工具的方式有问题——他们按照写Java接口的习惯来定义,方法名和参数名都很技术化,结果模型根本不知道什么时候该调用。

工具定义的关键是用自然语言描述清楚三件事:这个工具是做什么的、什么时候该用、参数是什么意思。这三件事缺一不可。

举个例子。假设你要定义一个查询天气的工具。技术化的定义是这样的:

@Tool(description = "getWeather") public String getWeather(@Param("cityCode") String cityCode) { ... }

这个定义模型很难用好,因为“getWeather”太抽象,“cityCode”模型也不知道是什么格式。好的定义应该是:

@Tool(description = "查询指定城市的当前天气情况。当用户询问天气、温度、是否下雨等问题时使用此工具。") public String getWeather( @Param("cityName") @ToolParam(description = "城市名称,如'北京'、'上海'") String cityName) { ... }

你看,描述里明确了功能、使用场景、参数格式。模型看到这样的定义,就能准确判断什么时候调用、怎么传参。

还有一个技巧是给工具起个好名字。名字本身就是一种描述。比如“searchKnowledgeBase”比“query”好,“sendEmail”比“process”好。模型在决定调用哪个工具时,名字是重要的参考。

5.2 多工具编排的流程设计与状态管理

当Agent有多个工具时,编排就成了关键问题。模型需要决定:先调用哪个、后调用哪个、什么时候停止。

最简单的编排是串行调用:模型调用工具A,拿到结果,再决定是否调用工具B。这种模式适合步骤明确的场景,比如“先查用户信息,再根据用户等级决定推荐什么产品”。

复杂一点的是并行调用:模型同时调用多个工具,然后综合结果。这种模式适合信息聚合的场景,比如“同时查天气、查交通、查餐厅,然后给出出行建议”。

最难的是条件分支:根据工具A的结果决定是否调用工具B。这种模式需要模型有较强的推理能力,也是最能体现Agent价值的场景。

状态管理是编排的另一个难点。多轮对话中,你需要维护一个状态,记录已经调用了哪些工具、拿到了什么结果、还缺什么信息。这个状态不能无限增长,否则Prompt会爆。我的做法是:只保留最近N轮的工具调用记录,更早的用摘要代替

还有一个坑是工具调用的循环。模型可能会反复调用同一个工具,或者陷入A调用B、B调用A的死循环。解决办法是设置最大调用次数,超过就强制停止并返回当前结果。这个阈值一般设在5-10次之间。

5.3 工具调用失败的容错与重试策略

工具调用失败是常态,不是异常。网络超时、参数错误、权限不足,各种情况都可能发生。关键是失败之后怎么办。

最基础的是错误信息回传。工具调用失败时,不要把异常直接抛给用户,而是把错误信息作为工具结果返回给模型,让模型决定怎么处理。比如“查询订单失败,错误信息:订单号格式不正确”,模型看到这个可能会说“请提供正确的订单号”。

进阶一点的是自动重试。对于网络超时这类临时性错误,可以自动重试几次。但要注意,不是所有错误都适合重试——参数错误重试多少次都没用。我的做法是:只对超时和5xx错误重试,重试次数不超过3次,每次间隔递增

更高级的是降级策略。当主要工具不可用时,切换到备用方案。比如主数据库查不了,就从缓存查;缓存也没有,就返回一个默认值并告知用户。这种策略需要在设计工具时就考虑好,不是运行时能临时加的。

注意:工具调用的超时时间要设置合理。太短会导致正常调用被误判为超时,太长会让用户等太久。一般建议设置在10-30秒之间,具体看工具的执行时间。

5.4 实测中遇到的典型问题与解决思路

我在实际项目里遇到过几个典型问题,这里分享一下解决思路。

第一个问题是模型不调用工具。明明定义了工具,模型却直接用自己的知识回答。原因通常是工具描述不够清晰,或者System Prompt里没有强调要用工具。解决办法是在System Prompt里明确写“回答用户问题前,先检查是否有可用的工具,如果有且适用,必须调用工具”。

第二个问题是模型调用错误的工具。比如用户问“今天天气怎么样”,模型却调用了“查询股票”的工具。这通常是因为工具描述有歧义,或者工具太多导致模型混淆。解决办法是精简工具数量,把功能相近的工具合并,或者在描述里加上排除条件。

第三个问题是工具返回结果太长。有些工具返回的是JSON,字段很多,直接塞给模型会占用大量token。解决办法是在工具内部做预处理,只返回模型需要的关键字段。或者在工具和模型之间加一层摘要,把长结果压缩成短描述。

第四个问题是多轮对话中工具调用状态丢失。用户第一轮问了订单状态,第二轮问“那什么时候到”,模型不知道“那”指的是什么。解决办法是在Prompt里保留最近几轮的工具调用记录,让模型有上下文。

6. 学习资源筛选与实战项目建议

6.1 官方文档之外真正值得看的内容

官方文档是必读的,但只读官方文档不够。官方文档告诉你API怎么用,但不会告诉你什么场景该用什么方案、遇到问题怎么排查。

Spring AI的话,我推荐看它的GitHub仓库里的examples目录。里面的示例比文档更贴近实际使用场景,而且会随着版本更新。另外Spring的官方博客偶尔会发一些AI相关的深度文章,质量很高。

LangChain4j的话,它的文档比Spring AI详细,而且有很多教程。但要注意版本,不同版本的API差异较大。建议看文档时先确认版本号,别照着最新文档写老版本的代码。

除了官方资源,GitHub上的一些开源项目也值得研究。比如一些基于Spring AI或LangChain4j做的RAG系统、客服机器人,看别人怎么组织代码、怎么设计Prompt、怎么处理边界情况。这比看文档学得快。

视频教程的话,B站和YouTube上都有一些质量不错的。但要注意甄别,很多教程是照着文档念的,没有实际项目经验。判断标准很简单:看它有没有讲踩坑经验,有没有讲为什么这么设计。只讲怎么用的,价值有限。

6.2 从Demo到生产:项目进阶的必经之路

很多人学完框架能跑通Demo,但一到实际项目就懵了。Demo和生产之间的差距,主要在几个方面。

并发处理。Demo通常是单用户串行的,生产环境要处理并发请求。大模型调用是IO密集型的,需要合理配置线程池。但也不能无限并发,因为模型API通常有速率限制。我的做法是用信号量控制并发数,超过就排队或降级。

成本控制。大模型调用是按token计费的,生产环境的调用量可能很大。要做的优化包括:缓存常见问题的回答、压缩Prompt长度、选择合适的模型(简单问题用便宜模型,复杂问题用贵模型)。这些优化在Demo阶段通常不会考虑,但生产环境必须做。

可观测性。Demo出问题了看控制台就行,生产环境需要完整的日志、指标、追踪。要记录每次调用的输入输出、耗时、token消耗、工具调用情况。这些数据不仅能用来排查问题,还能用来优化Prompt和工具设计。

安全与合规。生产环境的Agent要处理用户输入,必须考虑Prompt注入、敏感信息泄露、不当内容生成等问题。基本的防护包括:输入过滤、输出审核、权限校验。这些在Demo阶段通常被忽略,但生产环境是红线。

6.3 几个适合练手的Agent项目方向

如果你不知道做什么项目练手,这几个方向可以参考。

技术文档问答助手。这是最经典的RAG项目,适合入门。找一个你熟悉的技术文档,做成知识库,然后做一个问答界面。进阶方向是加入多轮对话、引用标注、反馈收集。

代码审查Agent。给它一段代码,让它检查潜在问题、给出改进建议。这个项目能练到工具调用——你可以让它调用静态分析工具、查编码规范、查历史bug记录。技术栈上,LangChain4j可能更合适,因为它的工具编排更灵活。

数据分析Agent。用户用自然语言描述分析需求,Agent生成SQL、执行查询、生成图表。这个项目能练到多工具编排和状态管理,而且和Java后端技能结合紧密。Spring AI在这块有优势,因为和Spring Data集成方便。

工作流自动化Agent。比如自动处理邮件、自动生成周报、自动整理会议纪要。这类项目的特点是工具多、流程长,适合练复杂的编排和容错。

选项目的原则是:选一个你自己会用到的,这样才有动力做下去,也才能发现真实的问题。为了学而学的项目,通常做一半就放弃了。

6.4 持续学习:跟进这个快速变化的领域

Agent这个领域变化太快了,框架几个月就一个大版本,新的模型和工具层出不穷。持续学习的能力比任何具体知识都重要。

我的做法是:关注几个核心信息源,但不过度追逐热点。Spring AI和LangChain4j的Release Notes必看,了解新特性和破坏性变更。几个高质量的技术博客和公众号可以关注,但不要什么都看,信息过载反而焦虑。

实践比阅读重要。看到一个新特性,最好的学习方式是在自己的项目里试一下。哪怕只是写个Demo,也比只看文章理解得深。我很多对Agent的理解,都是在实际调试中悟出来的,不是看书看来的。

还有一点:不要只盯着Java生态。Python那边的LangChain、LlamaIndex有很多设计思路值得借鉴,即使你不写Python,看看它们的文档和示例也能开阔思路。Agent开发很多概念是跨语言的,理解概念比记住API重要。

最后说个心态问题。转Agent开发的过程中,肯定会遇到“这个我不懂”“那个我没学过”的时候。这很正常,因为这个领域本身就很新,没有人是全部懂的。关键是保持好奇心和动手的习惯,遇到问题就查、就试、就总结。我刚开始的时候,一个简单的RAG调了一周才跑通,但现在回头看,那一周踩的坑比后面看一个月文档学到的都多。

这个方向还在快速演进,现在入场不算晚,但也别指望一两个月就能成为专家。给自己半年时间,做一个完整的项目,踩一遍该踩的坑,你就能超过大部分还在观望的人了。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询