给所有想转Agent开发或者Agent进阶同学的一些建议

📅 2026/7/29 16:13:06
给所有想转Agent开发或者Agent进阶同学的一些建议
最近一直有小伙伴私信我关于Agent开发的问题有的同学是Java、Python后端觉得传统开发越来越卷想转Agent方向有的同学已经会调用API、能跑通demo但感觉自己只是在拼积木不知道怎么进阶有的同学是产品、运营背景想跨界做Agent开发不知道从哪里切入。聊的多了发现这是一个共性问题干脆整理成文章希望对更多人有帮助。这篇文章会结合我的经历讲清楚三件事1. 传统开发转Agent开发最大的挑战到底是什么2. 如何高效完成转型——从会用到会做具体学什么、怎么学3. 在掌握基础之后如何真正进阶进阶要突破哪些关键点先说结论传统开发转Agent开发最大的挑战不是学新技术而是思维方式的转变——从确定性编程切换到概率性编程三刷官方文档是高效掌握新技术的制胜法宝下面会用一个具体例子演示如何三刷LangChain文档1刷1-2天从头看到尾建立整体认知地图扫清概念盲点2刷3-5天动手跑每一个代码示例写注释和总结做到看得懂、跑得通3刷2-3天先只写注释不看文档自己实现遇到卡点再对照原文实现肌肉记忆。推荐学习路线和免费资源下文有详细说明入门langchaingo官方示例 → 吴恩达《Building Systems with the ChatGPT API》免费课程 → 动手做一个RAG问答机器人进阶向量数据库ChromaDB/Milvus Prompt Engineering指南 Eino/langchaingo工作流编排高阶Multi-Agent架构设计 Agent工程化实践 GoPython混合架构要进阶就要深入理解Multi-Agent架构和Agent工程化。下文会用Mermaid架构图帮你直观理解这些概念让大家先有个目标心中有火眼里有光。下面进入正文看看对大家有没有启发。传统开发思维 vs Agent开发思维无论是后端转Agent还是前端转Agent在有编程基础的情况下学习新的技术栈本身并不难。对有基础的同学来说学Agent开发无外乎就是学会调用LLM API、理解工具调用机制、掌握一个框架的基本用法。认真学两周内就能跑通第一个项目。但是真正的挑战在哪里我认为难点在思维方式的转变从确定性编程到概率性编程的转变。传统开发思维传统开发是确定性的。我们来看一个简单的例子——实现查询天气并判断是否适合户外运动// 传统开发确定性逻辑func CheckOutdoorActivity(city string) string { weather : GetWeatherAPI(city) // 一定返回 {Temp, Weather, Wind} switch weather.Weather { case晴: if weather.Temp 15 weather.Temp 35 { return适合户外运动 } return温度不适宜 case阴: return可以做户外运动但要注意天气变化 default: return不适合户外运动 }}// 输入北京每次运行结果完全一致// 出了问题断点调试一路跟下去就行这就是我们熟悉的编程方式输入A输出B逻辑可预测bug可追踪。Agent开发思维同样的需求用Agent来做// Agent开发概率性逻辑// 使用 Go 版 LangChain: github.com/tmc/langchaingoimport ( github.com/tmc/langchaingo/agents github.com/tmc/langchaingo/tools github.com/tmc/langchaingo/llms/openai)// 定义工具查询天气func getWeatherTool() tools.Tool { return tools.GenericTool{ Name: get_weather, Description: 查询指定城市的天气返回温度、天气状况、风力, Run: func(ctx context.Context, input string) (string, error) { return weatherAPI(input), nil }, }}llm, _ : openai.New(openai.WithModel(gpt-4o))toolList : []tools.Tool{getWeatherTool()}systemPrompt : 你是一个户外运动顾问。根据用户提供的城市天气判断是否适合户外运动。判断规则- 晴天、温度15-35度适合- 阴天可以但需注意- 雨天/大风/高温/低温不适合请给出判断并解释原因。agent : agents.NewOpenAIFunctionsAgent(llm, toolList)executor : agents.NewExecutor(agent)result, _ : executor.Call(ctx, map[string]any{ input: 北京天气怎么样,})// 同样输入北京可能出现// 第1次北京今天晴天25度非常适合户外运动 ✅// 第2次北京今天晴天25度非常适合户外运动。推荐去公园跑步。 ✅ 还给了建议// 第3次北京今天天气不错应该可以户外运动吧 ⚠️ 不确定的语气// 第4次{suitable: true} ❌ 输出格式不符合预期发现问题了吗同样的代码、同样的输入输出却天差地别有时候LLM会自己加戏推荐跑步地点这可能是惊喜也可能是惊吓有时候语气不确定影响用户体验有时候输出格式完全跑偏下游解析直接报错更关键的是这不是代码bug你没法通过断点调试来找到问题。这是Prompt设计问题、模型温度参数问题、甚至是模型本身的行为特性。如何应对这种不确定性有经验的Agent开发者会做三件事1. 结构化输出Structured Output// 定义期望的输出结构体type ActivityAdvice struct { Suitable bool json:suitable Reason stringjson:reason Suggestion stringjson:suggestion}// 在Prompt中要求LLM输出JSON格式然后用 json.Unmarshal 解析systemPrompt : 你是一个户外运动顾问。请严格按照以下JSON格式输出{suitable: true/false, reason: 判断理由, suggestion: 具体建议}不要输出任何其他内容。// 调用后解析var advice ActivityAdviceif err : json.Unmarshal([]byte(llmOutput), advice); err ! nil { // 输出格式不对触发重试或降级 log.Warn(输出格式解析失败, output, llmOutput, error, err)}2. 评估而非调试// 跑100次统计成功率successCount : 0for i : 0; i 100; i { output, err : executor.Call(ctx, map[string]any{ input: 北京天气怎么样, }) if err ! nil { continue } var advice ActivityAdvice if json.Unmarshal([]byte(output), advice) nil { successCount }}fmt.Printf(成功率: %.2f%%\n, float64(successCount)/100*100)3. 防御性编程var advice ActivityAdviceif err : json.Unmarshal([]byte(agentOutput), advice); err ! nil { // 降级方案用更简单的方式重新请求或返回兜底 advice ActivityAdvice{ Suitable: false, Reason: 解析失败, Suggestion: 请重试, }}阶段性总结传统开发和Agent开发的关注点是不一样的维度传统开发Agent开发核心逻辑if-else / 算法Prompt 模型推理问题定位断点调试统计评估输出特征确定性概率性质量保证单元测试评估数据集 回归测试失败处理try-catch降级 重试 兜底转型的同学要有意识地调整自己的思维角度。不要用写业务代码的方式去做Agent开发不然会很痛苦。三刷官方文档实战演示前面说了方法论这里我用一个真实案例演示如何用三刷法吃透 langchaingoGo版LangChain。注Go 生态目前最成熟的 Agent 框架是 langchaingo13k Star和字节跳动开源的 Eino。这里以 langchaingo 为例方法同样适用于任何框架的官方文档。1刷建立认知地图1-2天目标不写代码只做三件事——浏览 langchaingo 官方示例 和文档画出思维导图理解每个模块是干什么的不必理解怎么用标记出自己最需要的模块2刷时重点突破。刷完后你应该能画出这样一张认知地图langchaingoGo Agent框架├── llms模型交互层│ ├── openai —— 调用OpenAI/GPT│ ├── ollama —— 本地模型推理│ └── anthropic —— 调用Claude├── chains链式调用│ ├── LLMChain —— 基础链│ ├── ConversationalRetrievalQA —— 对话检索链│ └── MapReduce —— 长文本总结├── agents智能体│ ├── tools —— 工具定义│ ├── OpenAIFunctionsAgent —— 函数调用Agent│ └── Executor —— 执行循环ReAct模式├── vectorstores向量数据库│ ├── chroma —— ChromaDB│ ├── milvus —— Milvus│ └── pgvector —— PostgreSQL向量扩展└── documentloaders文档加载 ├── PDF/Text/Markdown加载器 └── 文档切片器避坑提示很多新手一上来就跟着Quickstart敲代码结果敲完了也不知道自己敲的是什么。1刷的核心是认知先行——先知道有什么再决定学什么。2刷动手跑通每一个示例3-5天目标按模块顺序把官方文档中每一个代码示例跑通并在代码中写注释。以Agent模块为例2刷时你应该做到// 步骤1定义工具 // 工具是Agent的手让LLM能执行实际操作importgithub.com/tmc/langchaingo/toolsfunc searchKnowledgeBaseTool() tools.Tool { return tools.GenericTool{ Name: search_knowledge_base, Description: 搜索公司内部知识库查询产品文档、技术规范等信息, Run: func(ctx context.Context, query string) (string, error) { // 实际项目中这里接向量数据库 return fmt.Sprintf(关于%s的搜索结果..., query), nil }, }}func createTicketTool() tools.Tool { return tools.GenericTool{ Name: create_ticket, Description: 创建工单。输入格式{\title\: \工单标题\, \priority\: \高/中/低\}, Run: func(ctx context.Context, input string) (string, error) { var req struct { Title stringjson:title Priority stringjson:priority } json.Unmarshal([]byte(input), req) return fmt.Sprintf(已创建工单%s优先级%s, req.Title, req.Priority), nil }, }}// 步骤2创建Agent // Executor是Agent的大脑接收任务 → 思考 → 调工具 → 观察结果 → 继续思考 → 输出答案toolList : []tools.Tool{searchKnowledgeBaseTool(), createTicketTool()}llm, _ : openai.New( openai.WithModel(gpt-4o), openai.WithToken(sk-xxx),)agent : agents.NewOpenAIFunctionsAgent(llm, toolList)executor : agents.NewExecutor( agent, agents.WithMaxIterations(5), // 防止无限循环 agents.WithCallbacksHandler(callbacks.LogHandler{}), // 打印思考过程调试必备)// 步骤3运行并观察 result, _ : executor.Call(ctx, map[string]any{ input: 客户反馈登录页面打不开帮我查一下有没有相关文档有的话创建工单,})// callbacks.LogHandler 会输出// Thought: 用户想查登录问题的文档我需要先搜索知识库// Action: search_knowledge_base// Action Input: 登录页面打不开// Observation: 找到1篇相关文档《登录模块故障排查指南》// Thought: 有相关文档现在创建工单// Action: create_ticket// Action Input: {title: 客户反馈登录页面打不开, priority: 高}// Observation: 已创建工单...// Final Answer: 已为您查到相关文档并创建了高优先级工单。关键习惯2刷时一定要打开日志回调这是理解Agent思考过程最直观的方式。很多同学跑了demo但不知道Agent内部怎么运作的就是因为没看日志。3刷脱离文档独立实现2-3天目标只保留自己写的注释不看文档独立实现。具体做法把2刷时写的注释提取出来当作需求文档清空代码对着注释自己写卡住了不要立刻看文档先思考为什么这里需要这样设计实在写不出来了再对照文档用红笔标出自己卡住的地方。3刷后你会发现那些让你卡住的地方恰恰是你理解最薄弱的地方。这个卡点清单就是你后续深入学习的路线图。时间投入总计1刷1-2天 2刷3-5天 3刷2-3天 ≈ 1-2周就能从看过文档到真正掌握。AI应用架构演进史理解了思维方式掌握了学习方法接下来需要看清整个AI应用的版图。结合我自己的经历介绍一下AI应用架构的演进帮大家理解自己现在处于哪个阶段以及下一步要去哪里。第一阶段单次调用2023年初直接调用LLM API输入问题输出答案。这是最简单的形态。典型场景写一个AI客服把用户问题和预设的system prompt一起丢给GPT拿到回复直接展示。这个阶段的问题很明显模型不知道你的私有数据客户问了我的订单什么时候到GPT只能瞎编无法执行操作不能真的查物流每次对话独立记不住上一轮说了什么。第二阶段RAG 工具调用2023年中-至今给LLM接上知识库RAG和工具Tool Use让它能查资料、能执行操作。这是目前企业级AI应用的主流形态。典型场景智能客服系统用户问我的订单到哪了Agent调用物流查询工具获取真实数据再结合知识库中的退换货政策给出准确回复。免费学习资源推荐 吴恩达《LangChain for LLM Application Development》免费约1小时概念通用 吴恩达《Building Systems with the ChatGPT API》免费约1小时概念通用 langchaingo 官方示例Go生态首选含完整可运行代码 Eino 官方文档字节跳动开源Go原生AI框架 Prompt Engineering Guide免费开源中文版第三阶段Multi-Agent架构2024-至今多个Agent协作每个Agent负责一个专门的子任务通过编排层协调工作。典型场景软件开发助手——一个Agent负责理解需求并拆解任务一个Agent负责写代码一个Agent负责写测试一个Agent负责代码审查。四个Agent通过编排器协同工作最终输出完整的、经过测试的代码。免费学习资源推荐 吴恩达《Multi AI Agent Systems with crewAI》免费约1小时 CrewAI官方文档免费开源框架 Microsoft AutoGen官方文档微软开源学术论文级别 LangGraph官方教程免费适合自定义Agent编排Multi-Agent是主流趋势越来越多的企业级AI应用在往这个方向演进。那么如何从第二阶段进阶到第三阶段答案就是深入理解Agent工程化。什么是Agent工程化很多人会调用API、会用框架但做出来的东西只能在demo阶段一到生产环境就各种问题。这就是缺乏工程化思维的表现。Agent工程化就是让Agent从能跑到能用、从能用到好用的过程。先看一张Agent工程化的全景图下面逐一拆解每个层面给出具体的代码示例。可靠性设计Agent在生产环境中会遇到各种异常模型输出格式不对、工具调用失败、上下文超长…**具体怎么做**来看一个生产级的Agent调用封装// 生产级Agent封装——可靠性设计type ProductionAgent struct { maxRetries int fallbackResp string maxInputTokens int}func NewProductionAgent() *ProductionAgent { return ProductionAgent{ maxRetries: 3, fallbackResp: 抱歉系统繁忙请稍后重试。, maxInputTokens: 100000, }}// InvokeWithRetry 带指数退避重试的调用func (pa *ProductionAgent) InvokeWithRetry(ctx context.Context, executor *agents.Executor, input map[string]any) (string, error) { var lastErr error for attempt : 0; attempt pa.maxRetries; attempt { // 1. 输入校验 inputStr, ok : input[input].(string) if !ok || len(inputStr) 0 { return pa.fallbackResp, fmt.Errorf(输入不合法) } // 2. Token预算检查 if estimatedTokens : estimateTokens(inputStr); estimatedTokens pa.maxInputTokens { input[input] truncateText(inputStr, pa.maxInputTokens) } // 3. 调用Agent result, err : executor.Call(ctx, input) if err ! nil { lastErr err log.Warn(Agent调用失败准备重试, attempt, attempt1, error, err) // 指数退避1s → 2s → 4s time.Sleep(time.Duration(1attempt) * time.Second) continue } // 4. 输出校验 if !pa.validateOutput(result) { lastErr fmt.Errorf(输出格式异常: %s, result) time.Sleep(time.Duration(1attempt) * time.Second) continue } return result, nil } return, fmt.Errorf(重试%d次后仍失败: %w, pa.maxRetries, lastErr)}// SafeInvoke 最终安全调用——带兜底func (pa *ProductionAgent) SafeInvoke(ctx context.Context, executor *agents.Executor, input map[string]any) string { result, err : pa.InvokeWithRetry(ctx, executor, input) if err ! nil { log.Error(Agent调用彻底失败使用兜底回复, error, err) return pa.fallbackResp } return result}关键点重试不是简单的for i : 0; i 3; i而是指数退避1s → 2s → 4s避免给API造成雪崩压力。可观测性你需要知道Agent在做什么、为什么这样做、哪个环节出了问题。**具体怎么做**使用LangSmith免费额度或自建追踪import timeimport jsonfrom functools import wrapsdef trace_agent_call(func): Agent调用追踪装饰器 wraps(func) def wrapper(*args, **kwargs): trace_id ftrace_{int(time.time() * 1000)} start time.time() log_entry { trace_id: trace_id, timestamp: start, input: str(kwargs.get(input, ))[:200], # 截断存储 } try: result func(*args, **kwargs) log_entry.update({ duration_ms: (time.time() - start) * 1000, status: success, output_length: len(str(result)), }) return result except Exception as e: log_entry.update({ duration_ms: (time.time() - start) * 1000, status: error, error: str(e), }) raise finally: # 写入日志生产环境用结构化日志如JSON Lines print(json.dumps(log_entry, ensure_asciiFalse)) return wrapper免费工具推荐LangSmithLangChain官方出品免费额度够个人项目用Phoenix (Arize)开源本地部署支持LLM调用追踪和评估Go 项目可直接用slog 结构化日志 Grafana/Prometheus 搭建可观测性体系轻量高效成本控制Token是钱。一个不注意单次对话花掉几毛钱日活上千一天就是几百块。具体策略// 成本感知的Agenttype ModelCost struct { Input float64// 每百万token美元 Output float64}var modelCostMap map[string]ModelCost{ gpt-4o: {Input: 2.5, Output: 10.0}, gpt-4o-mini: {Input: 0.15, Output: 0.6}, claude-3.5-sonnet: {Input: 3.0, Output: 15.0},}// RouteByComplexity 按任务复杂度选模型——简单任务用小模型省钱func RouteByComplexity(task string) string { simpleKeywords : []string{总结, 分类, 提取} complexKeywords : []string{分析, 推理, 代码} for _, kw : range simpleKeywords { if strings.Contains(task, kw) { returngpt-4o-mini// 简单任务便宜约17倍 } } for _, kw : range complexKeywords { if strings.Contains(task, kw) { returngpt-4o// 复杂任务用大模型 } } returngpt-4o-mini// 默认用小模型}// EstimateCost 估算单次调用成本func EstimateCost(model string, inputTokens, outputTokens int) float64 { cost, ok : modelCostMap[model] if !ok { return0 } returnfloat64(inputTokens)/1_000_000*cost.Input float64(outputTokens)/1_000_000*cost.Output}// 实际效果示例// 一句话总结任务gpt-4o ≈ $0.001gpt-4o-mini ≈ $0.00006// 日处理10万次总结gpt-4o ≈ $100/天gpt-4o-mini ≈ $6/天// 差距是17倍省钱口诀简单任务用mini复杂推理用大模型能缓存就缓存Prompt能压缩就压缩。评估体系Agent的效果怎么衡量不能只靠感觉好像还行。**具体怎么做**建立评估数据集跑批量化自动化评估// 评估数据集示例type EvalCase struct { Input string ExpectedTools []string// 期望调用的工具 ExpectedKeywords []string// 期望包含的关键词 Difficulty string}var evalDataset []EvalCase{ { Input: 帮我查一下北京的天气适合跑步吗, ExpectedTools: []string{get_weather}, ExpectedKeywords: []string{温度, 适合, 不适合}, Difficulty: easy, }, { Input: 客户说登录不了帮我查文档、创工单、发通知给运维, ExpectedTools: []string{search_kb, create_ticket, send_notification}, ExpectedKeywords: []string{工单, 通知, 文档}, Difficulty: hard, }, // ... 至少准备50-100条}type EvalResult struct { Total int ToolAccuracy float64 KeywordRecall float64}func EvaluateAgent(executor *agents.Executor, dataset []EvalCase) EvalResult { var r EvalResult r.Total len(dataset) for _, c : range dataset { result, _ : executor.Call(context.Background(), map[string]any{input: c.Input}) // 工具调用准确率 calledTools : extractCalledTools(result) if stringSliceEqual(calledTools, c.ExpectedTools) { r.ToolAccuracy } // 关键词召回率 outputLower : strings.ToLower(result) matched : 0 for _, kw : range c.ExpectedKeywords { if strings.Contains(outputLower, kw) { matched } } r.KeywordRecall float64(matched) / float64(len(c.ExpectedKeywords)) } r.ToolAccuracy r.ToolAccuracy / float64(r.Total) * 100 r.KeywordRecall r.KeywordRecall / float64(r.Total) * 100 return r}关键理念Agent开发不是写完了上线就行而是上线后持续用数据驱动迭代。没有评估体系迭代就是盲人摸象。Multi-Agent编排当任务复杂到单个Agent搞不定就需要多个Agent协作。以Go为例用 goroutine channel 搭建一个技术文章写作团队// Multi-Agent 编排技术文章写作团队type ArticleTask struct { Topic string Research string// 研究资料 Draft string// 初稿 FinalDraft string// 终稿}// Agent 1研究员 —— 负责搜集资料func researcherAgent(ctx context.Context, topic string, resultCh chan- ArticleTask) { // 调用LLM做研究 research : callLLM(ctx, fmt.Sprintf(请搜集关于%s的最新资料、论文和最佳实践, topic)) resultCh - ArticleTask{Topic: topic, Research: research}}// Agent 2撰稿人 —— 根据研究资料写初稿func writerAgent(ctx context.Context, task ArticleTask, resultCh chan- ArticleTask) { prompt : fmt.Sprintf(根据以下研究资料撰写关于%s的深度技术文章\n%s, task.Topic, task.Research) task.Draft callLLM(ctx, prompt) resultCh - task}// Agent 3审校 —— 质量把关func reviewerAgent(ctx context.Context, task ArticleTask, resultCh chan- ArticleTask) { prompt : fmt.Sprintf(审查以下文章的技术准确性、逻辑清晰度和可读性直接输出修改后的版本\n%s, task.Draft) task.FinalDraft callLLM(ctx, prompt) resultCh - task}// 编排器串联执行func orchestrateArticleWriting(ctx context.Context, topic string) *ArticleTask { ch1 : make(chan ArticleTask, 1) ch2 : make(chan ArticleTask, 1) ch3 : make(chan ArticleTask, 1) go researcherAgent(ctx, topic, ch1) task : -ch1 go writerAgent(ctx, task, ch2) task -ch2 go reviewerAgent(ctx, task, ch3) task -ch3 return task}Go生态提示目前 Go 语言的 Agent 框架生态还在早期阶段主要选择有langchaingoLangChain 的 Go 移植GitHub 13k Star最活跃Eino字节跳动开源Go 语言 AI 应用开发框架支持 Agent/Chain/Workflow直接调用 OpenAI/Claude API goroutine 编排轻量灵活适合对可控性要求高的场景如果项目中需要复杂 Multi-Agent 协作也可以 Go 做业务层Python 服务化提供 Agent 能力通过 HTTP/gRPC 调用这是目前较务实的混合架构方案。注意Multi-Agent不是银弹。每增加一个Agent延迟和成本都会增加。判断标准一个Prompt能解决的不用Chain一个Chain能解决的不用Agent一个Agent能解决的不用Multi-Agent。免费学习资源 吴恩达《Multi AI Agent Systems with crewAI》免费Python但概念通用 langchaingo Agent 示例Go生态Agent实践 Eino Agent 使用指南字节跳动开源Go原生 Anthropic《Building effective agents》必读Anthropic官方Agent设计指南最后唠两句为什么AI大模型成为越来越多程序员转行就业、升职加薪的首选很简单这些岗位缺人且高薪智联招聘的最新数据给出了最直观的印证2025年2月AI领域求职人数同比增幅突破200% 远超其他行业平均水平整个人工智能行业的求职增速达到33.4%位居各行业榜首其中人工智能工程师岗位的求职热度更是飙升69.6%。AI产业的快速扩张也让人才供需矛盾愈发突出。麦肯锡报告明确预测到2030年中国AI专业人才需求将达600万人人才缺口可能高达400万人这一缺口不仅存在于核心技术领域更蔓延至产业应用的各个环节。那0基础普通人如何学习大模型 深耕科技一线十二载亲历技术浪潮变迁。我见证那些率先拥抱AI的同行如何建立起效率与薪资的代际优势。如今我将积累的大模型面试真题、独家资料、技术报告与实战路线系统整理分享于此为你扫清学习困惑共赴AI时代新程。我整理出这套 AI 大模型突围资料包【允许白嫖】✅从入门到精通的全套视频教程✅AI大模型学习路线图0基础到项目实战仅需90天✅大模型书籍与技术文档PDF✅各大厂大模型面试题目详解✅640套AI大模型报告合集✅大模型入门实战训练这份完整版的大模型 AI 学习和面试资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】①从入门到精通的全套视频教程包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图0基础到项目实战仅需90天全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤640套AI大模型报告合集⑥大模型入门实战训练如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生‌无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型‌非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界‌。业务赋能 ‌突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型‌。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】