6个月成为AI工程师(含资源)
AI工程已迅速成为科技领域最有价值的技能之一。
问题在于,大多数初学者并不清楚自己究竟应该学习什么。
有些人从机器学习理论入手。
有些人则陷入无休止的教程观看中。
还有一些人直接跳到提示和代理上,却不了解API、后端基础知识,也不了解实际产品是如何构建的。
结果通常都是一样的:一片混乱,却几乎没有任何实践技能。
如果你的目标是成为一名AI工程师,你不需要精通人工智能的每一个领域。
你需要学习如何在现实世界中构建有用的AI系统。
这意味着要学习如何:
- 使用机器学习模型(LLM)构建端到端应用程序。
- 使用OpenAI和Anthropic等模型API。
- 正确设计提示和上下文。
- 使用结构化输出和工具调用。
- 在需要时添加检索功能。
- 部署项目,以便人们能够实际使用它们。
本指南旨在为你提供一个实用的6个月学习路线图。
这篇文章超过 10,000 字,所以阅读可能需要几个小时甚至更长时间。
但它的真正价值在于,对于你需要学习的每一项技能,都有相应的资源和清晰的讲解。
这样,你可以在六个月内达到人工智能工程师的水平,并在最初的 1-2 个月内就开始将其应用到自己的项目中。
撰写这篇文章耗时超过 40 小时,我和我的朋友 @andy_ai0 共同完成了这项工作。
他刚刚开始在 X 平台上打造个人品牌,但他对人工智能的理解非常深刻,并为本文的撰写提供了很大的帮助。
我真心认为,随着他的成长,他值得你的关注和支持。
现在,让我们开始阅读文章吧⬇️
1、AI工程师的实际工作内容
很多人一听到“AI工程师”这个词,就会想到从零开始训练大型模型。
实际上,大多数现代人工智能工程师的工作要实际得多。
他们基于现有模型构建产品和系统。
这通常包括:
- 连接到 LLM API
- 设计提示和上下文流程
- 构建聊天、搜索或自动化功能。系统
- 集成工具、数据库和外部 API
- 处理结构化输出
- 提高可靠性、降低成本和延迟
- 将 AI 功能部署到实际应用中
因此,在实践中,AI 工程师通常介于以下几种情况之间:
- 软件工程
- 产品工程
- 自动化
- 应用 AI
这就是为什么这个职位发展如此迅速的原因
公司需要的不仅仅是研究人员
他们需要能够将模型转化为有用产品的人才
这也是为什么这份路线图较少关注理论,而更多地关注实际应用的原因
如果您能够构建真正的 LLM 应用、检索系统、自动化流程和可用于生产环境的工作流程,那么您比大多数初学者更接近就业目标
第一个月:扎实掌握编码和基础知识
本月目标:成为一名合格的 Python 开发人员
您无需成为专家,只需停止搜索基本语法,并能够自信地构建简单的程序
AI 工程首先是软件开发工程
接下来的几个月里,所有内容都假设您能够编写简洁的 Python 代码、使用终端、调用 API 并管理代码库。本月是您的基础。
学习内容如下:
1、Python
Python 是人工智能工程的语言。毋庸置疑。在接下来的六个月里,您遇到的几乎所有库、API 和教程都是用 Python 编写的。
学习方法:
从结构化的课程开始,这些课程会强制您编写代码,而不仅仅是观看视频。
初学者最常犯的错误是被动地吸收内容,边读边点头,却从不打开代码编辑器。
要克服这个错误,就要边学习边编写每个示例的代码。
资源:
- Python for Everyone(Coursera,免费旁听)
链接:https://www.coursera.org/specializations/python
对于绝对的初学者来说,这是最佳的入门课程。 Chuck 博士是互联网上最适合 Python 初学者的老师之一。
- freeCodeCamp Python 课程(YouTube,免费)
链接:https://www.youtube.com/watch?v=rfscVS0vtbw
时长 4 小时的综合视频,涵盖所有基础知识。
- CS50P:Python 编程入门(哈佛大学,免费)
链接:https://cs50.harvard.edu/python/
课程更具挑战性,包含习题集和期末项目。如果你需要结构化的内容,这很棒。
- 官方 Python 文档(教程)
链接:https://docs.python.org/3/tutorial/
内容略显枯燥但权威,可作为参考资料。
重点内容:
- 变量、数据类型、循环、条件语句、函数
- 列表、字典、集合、元组
- 文件 I/O 和 JSON 处理
- 类和基础面向对象编程(足以理解文档内容即可)
- 使用 try/except 进行错误处理
- 虚拟环境 (venv) 和 pip
- 包管理 – 理解 requirements.txt 文件
练习项目:用 Python 构建一个简单的命令行工具。例如,一个可以读写 JSON 文件的个人费用追踪器,或者一个调用公共 API(例如天气 API)并打印格式化结果的脚本。
2、Git 和 GitHub
Git 是专业开发者保存和共享代码的方式。你会经常用到它,用来管理项目版本、协作以及在 GitHub 上展示你的作品集。
如何学习:
Git 一开始可能会让人困惑,因为它的思维模型并不直观。
不要试图死记硬背命令,而是要理解 Git 解决的问题(例如跟踪更改、实现协作、撤销错误),这样命令就很容易理解了。
资源:
- GitHub Skills(免费,交互式)
GitHub 内置的官方交互式课程。从这里开始。
- Learn Git Branching(免费,交互式)
链接:https://learngitbranching.js.org/
目前为止,理解分支和合并的最佳可视化工具。
- Pro Git Book(免费在线书籍)
链接:https://git-scm.com/book/en/v2
全面的参考资料。跳至所需章节
重点内容:
- git init、add、commit、push、pull
- 分支和合并
- 理解 .gitignore 文件
- 在 GitHub 上创建仓库并推送本地项目
- 阅读和编写基本的 README 文件
实践:从现在开始,你构建的每个项目,即使是小型脚本,都应该放在 GitHub 仓库中。这能帮你养成习惯,并积累作品集。
3、命令行/终端基础
作为一名AI工程师,你将完全通过命令行运行脚本、安装软件包、管理服务器和浏览文件。
在终端操作缓慢或畏惧会成为真正的瓶颈。
资源:
- 50 个最常用的 Linux 和终端命令(面向初学者的完整课程)
链接:https://www.youtube.com/watch?v=ZtqBQ68cfJc
适合 Linux/Mac 的绝对初学者。
- 计算机科学教育中缺失的一学期(麻省理工学院,免费)
链接:https://missing.csail.mit.edu/
涵盖 shell 脚本、终端工具以及大多数计算机科学课程都会忽略的命令行操作能力。
重点内容:
- 导航:cd、ls、pwd、mkdir、rm
- 读取文件:cat、less、grep
- 从终端运行 Python 脚本
- 环境变量
- PATH 的基本理解
4、JSON API、HTTP 和异步基础
从第二个月的第一天起,您就需要调用 LLM API。
这意味着在您接触 OpenAI 或 Anthropic 的 SDK 之前,您需要了解 Web API 的工作原理。
资源:
- HTTP 基础 – MDN Web 文档(免费)
链接:https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview
对 HTTP 请求和响应工作原理最清晰的解释
- REST API 教程
简明实用
- Python requests 库文档
链接:https://requests.readthedocs.io/en/latest/
学习如何在 Python 中调用任何 Web API
- Python async/await(免费)
链接:https://realpython.com/async-io-python/
理解异步对于后续处理 LLM 流式响应至关重要
重点内容:
- GET 和 POST 请求 – 它们是什么以及如何创建它们Python
- JSON 的读写
- HTTP 状态码(200、400、401、404、500 – 了解它们的含义)
- API 密钥是什么以及基本身份验证模式
- async def 和 await 的作用和存在意义
练习项目:编写一个 Python 脚本,调用一个免费的公共 API(例如 OpenMeteo,用于获取天气数据,无需 API 密钥),并将结果格式化为干净的 JSON 输出
5、基础 SQL 和 Pandas
你不需要成为数据科学家,但你会经常需要检查、查询和操作数据
掌握 SQL 基础知识和 Pandas 将为你节省大量时间
资源:
- SQLBolt(免费、交互式)
从零开始学习 SQL 的最快方法。 20 个简短的课程,包含浏览器内练习
- Pandas 官方入门指南
链接:https://pandas.pydata.org/docs/getting_started/index.html
完成“10 分钟上手 Pandas”教程
- Kaggle Pandas 课程(免费)
链接:https://www.kaggle.com/learn/pandas
注重实践,简短易懂
重点:
- SQL:SELECT、WHERE、GROUP BY、JOIN、ORDER BY
- Pandas:加载 CSV 文件、过滤行、选择列、基本聚合
6、FastAPI
资源:
- FastAPI 官方教程(免费)
链接:https://fastapi.tiangolo.com/tutorial/
堪称最佳框架文档之一
从头到尾认真学习。涵盖路径参数、请求体、Pydantic 验证以及运行开发服务器
- Python API 开发(19 小时课程,freeCodeCamp,YouTube,免费)
链接:https://www.youtube.com/watch?v=ZtqBQ68cfJc
涵盖 API 设计基础知识,包括路由、序列化、模式验证和 SQL 数据库集成。从零开始构建完整的社交媒体风格 API
重点内容:使用 Pydantic 创建 GET 和 POST 端点、路径和查询参数、请求体,运行 uvicorn,以及使用 FastAPI 内置的 /docs 接口测试 API,无需编写客户端
第一个月里程碑
到本月底,您应该能够:
- 编写 Python 程序,用于读取/写入文件、调用 API 和处理错误
- 使用 Git 对代码进行版本控制,并将项目推送到 GitHub
- 熟练地使用终端
- 理解 HTTP 请求的概念,并使用 Python 发送 HTTP 请求
- 使用基本 SQL 查询 SQLite 数据库
- 构建并运行一个简单的 F本地 astAPI 应用
第二个月:精通 LLM 应用开发
本月目标:使用 OpenAI 和 Anthropic API 构建真正的 AI 应用
到本月结束时,您应该能够熟练地编写可靠的提示,从模型中获取结构化数据,让模型调用您的函数,并处理所有可能出现的问题。
这是 AI 工程的核心。路线图中的其他所有内容都建立在您在此学习的基础之上。
学习内容如下:
1、提示基础知识
提示不仅仅是礼貌地提问。它是一门编写指令的艺术,这些指令能够从本质上是概率性的模型中产生一致、可靠的输出。
作为一名 AI 工程师,您将在这里花费大量时间。
学习方法:
首先学习 Anthropic 的交互式教程,因为它最具实践性。
然后阅读 OpenAI 的官方指南。之后,提示工程指南将所有内容整合在一起。
请按顺序学习这三部分——每一部分都与其他部分相互巩固。
资源:
- Anthropic 的交互式提示工程教程(免费,GitHub)
链接:https://github.com/anthropics/prompt-eng-interactive-tutorial
这是一个循序渐进的课程,分为 9 个章节,包含练习,旨在为您提供大量机会来练习编写和调试提示。
使用 Claude API 以 Jupyter Notebook 的形式运行。
- Anthropic 提示工程文档(免费)
链接:https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview
官方参考资料。涵盖从基本清晰度到 XML 结构和智能体系统的所有内容
3. OpenAI 提示工程指南(免费)
链接:https://platform.openai.com/docs/guides/prompt-engineering
OpenAI 官方指南,涵盖与其模型配合良好并能产生更实用输出的提示格式
- PromptingGuide.ai(免费)
链接:https://www.promptingguide.ai/
涵盖从基本提示到高级策略的基本技巧,以及函数调用、工具集成和智能体系统
重点:系统消息和用户消息的区别、为什么具体性很重要、思维导图式提示(逐步思考)、在提示中使用示例(少样本)以及措辞上的细微变化如何显著提升输出质量
练习:选择一个实际任务——例如总结文档、从文本中提取关键信息或对反馈进行分类——并为其编写 5 个不同的提示。比较输出结果。您会立即发现提示设计对可靠性的影响有多大。
2、结构化输出/JSON Schema
在实际应用中,您几乎不需要从 LLM 获取原始文本,而是需要可以解析、存储并在代码中使用的结构化数据。
结构化输出通过强制模型匹配您定义的模式来解决这个问题。
资源:
- OpenAI 结构化输出指南(官方文档,免费)
链接:https://platform.openai.com/docs/guides/structured-outputs
该指南介绍了确保模型始终生成符合 JSON Schema 的响应的功能,因此您无需担心缺少键或出现错误值。
- Instructor 库(免费,开源)
链接:https://python.useinstructor.com/
使用 Pydantic 模型从任何 LLM 提供商获取结构化输出的最简洁方法。
它适用于 OpenAI、Anthropic、Google 和 15 多个其他提供商,使用相同的代码接口,并在验证失败时自动重试。
这就是大多数生产环境中的 AI 工程师实际上会使用以下工具:
- OpenAI Cookbook:结构化输出简介(免费)
链接:https://developers.openai.com/cookbook/examples/structured_outputs_intro/
涵盖思维导图输出、结构化数据提取和 UI 生成的实用示例,有助于理解实际应用场景。
重点内容:为您的数据定义 Pydantic 模型、将模式传递给 API、理解结构化输出和 JSON 模式之间的区别,以及如何优雅地处理拒绝请求。
实践项目:构建一个发票或收据解析器。输入原始文本(例如“发票 #123,3 个小部件,45.99 美元,3 月 30 日到期”),并使其返回一个包含 invoice_number、amount、items 和 due_date 等字段的结构化 Python 对象。
3、函数/工具调用
工具调用可以将 LLM 从文本生成器转换为可以执行操作的工具——例如,搜索网络、查询数据库、调用 API 或运行代码。这是本指南中最重要的技能之一。
理解方法:模型实际上并不会执行你的函数。
它会检查提示信息,并在决定使用某个工具时返回一个包含函数名和参数的结构化调用。
然后,你的代码执行该调用并将结果返回。
参考资料:
- OpenAI 函数调用指南(官方文档,免费)
链接:https://platform.openai.com/docs/guides/function-calling
权威参考资料。涵盖工具定义、五步调用流程、并行调用和最佳实践。
- Anthropic 工具使用文档(免费)
链接:https://docs.anthropic.com/en/docs/build-with-claude/tool-use
Anthropic 的工具使用文档Claude 的等效指南。概念相同,语法略有不同。
- OpenAI Cookbook:如何使用聊天模型调用函数(免费,GitHub)
一个完整的可运行 notebook,通过实际示例演示了完整的工具调用循环。
重点:在 JSON Schema 中清晰地描述函数、解析工具调用响应、执行函数并返回结果、处理不需要工具调用的情况,以及 tool_choice: "auto" 的概念。
练习项目:构建一个简单的助手,包含三个工具:get_weather(city)、calculate(expression) 和 search_notes(query)(只需搜索一个硬编码的字典)。将它们全部连接起来,然后观察模型如何根据你的指令决定调用哪个组件。
4、流式响应
流式响应是指在模型输出生成的同时(逐字)显示输出结果,而不是等待完整的响应。它能显著提升应用的运行速度和响应速度。
资源:
- OpenAI Streaming 文档(官方,免费)
链接:https://platform.openai.com/docs/api-reference/streaming
本文档介绍了如何在请求中添加 stream=True 参数以及如何遍历数据块。
- Anthropic Streaming 文档(官方,免费)
链接:https://docs.anthropic.com/en/api/messages-streaming
Anthropic 的 Streaming API 参考文档,包含 Python 示例。
- Streaming LLM API 的工作原理 – Simon Willison(免费)
链接:https://til.simonwillison.net/llms/streaming-llm-apis
本文档清晰地解析了 OpenAI、Anthropic 和 Google 的服务器发送事件 (Server-Sent Events) 底层工作原理,有助于理解 HTTP 层的实际操作。
重点内容:设置 stream=True、遍历增量数据块、将各个部分组装成完整的响应,以及如何将流式传输集成到应用程序 (Publisher) 中。使用 StreamingResponse 的 FastAPI 端点
提示:对于面向用户的应用来说,流式传输几乎总是最佳选择。没人愿意盯着加载指示器 10 秒钟,等待完整的响应一次性出现。
5、对话状态
LLM 是无状态的——它们在调用之间没有记忆。对话历史记录需要通过每次请求发送完整的消息列表来管理。理解这一点至关重要。
资源:
- OpenAI 聊天补全指南,管理对话(官方,免费)
链接:https://platform.openai.com/docs/guides/conversation-state
对消息数组的工作原理以及如何管理多轮对话的权威解释
- Anthropic Messages API 文档(官方,免费)
链接:https://docs.anthropic.com/en/api/messages
Anthropic 的等效功能。概念相同,建议两篇都阅读,看看它们有何不同。
重点:消息数组结构、为什么要同时添加用户消息和助手消息、上下文窗口限制以及超出限制时会发生什么,以及基本的截断策略(丢弃最旧的消息、汇总历史记录)。
实践项目:在终端中构建一个简单的多回合聊天机器人。每回合都会向消息列表添加新消息。添加一个 /reset 命令来清除历史记录,并在每次交换后打印当前的令牌计数。
6、成本、延迟和令牌基础知识
如果不了解成本和令牌就发布 AI 应用,最终会导致账单金额超出预期,应用运行缓慢。这部分内容虽然枯燥,但至关重要。
资源:
- OpenAI 定价页面(官方)
链接:https://openai.com/api/pricing
了解每个模型的输入和输出令牌成本。将此页面加入书签,并在每次选择模型时查看。
- Anthropic 定价页面(官方)
链接:https://www.anthropic.com/pricing
Claude 模型也适用。
- OpenAI 分词器工具(免费、交互式)
链接:https://platform.openai.com/tokenizer
粘贴任何文本,即可查看其对应的分词数量。学习过程中要经常使用这个工具
- Tiktoken(Python 库,免费)
链接:https://github.com/openai/tiktoken
OpenAI 的分词器库,用于在发送请求之前统计代码中的词元数量
重点:什么是词元(大约 4 个字符/3/4 个单词),输入词元和输出词元的定价差异,上下文窗口大小如何影响模型的功能,以及小型快速模型和大型智能模型之间的延迟权衡
所以:不要把 GPT-4/Opus 用于所有任务——对于简单的任务,更便宜的模型通常就足够了
7、故障处理
LLM API 可能会出现故障。例如达到速率限制、响应超时、模型返回格式错误的 JSON 等。优雅地处理故障是区分演示应用和生产应用的关键。
资源:
- OpenAI 错误代码参考(官方,免费)
链接:https://platform.openai.com/docs/guides/error-codes
涵盖所有可能遇到的错误类型及其处理方法。
- Anthropic 错误处理文档(官方,免费)
链接:https://docs.anthropic.com/en/api/errors
Claude 也适用。
- Tenacity(Python 库,免费)
链接:https://tenacity.readthedocs.io/
一个简洁的库,可为任何 Python 函数添加指数退避重试逻辑。只需一个装饰器即可处理重试。
重点关注:速率限制错误 (429) 和指数退避有限退避、使用 httpx/requests 处理超时、在使用模型输出前进行验证、回退策略(使用不同的模型重试、返回缓存的响应),以及避免因 LLM 返回意外输出而导致应用程序崩溃。
8. 提示注入意识
提示注入是 LLM 应用程序中的首要安全风险。
当不受信任的用户输入与系统指令结合使用时,就会发生提示注入,允许用户更改、覆盖提示或向提示中注入新的行为,从而导致系统执行非预期操作或生成被篡改的输出。
您无需成为安全专家,但需要在发布任何内容之前了解提示注入的存在。
资源:
- OWASP LLM 应用程序十大安全风险 – LLM01:提示注入(免费)
链接:https://genai.owasp.org/llmrisk/llm01-prompt-injection/
权威分类涵盖直接注入(越狱)、通过外部内容(例如文档或网站)进行的间接注入,以及真实世界的攻击场景
- OWASP 提示注入防御速查表(免费)
链接:https://cheatsheetseries.owasp.org/cheatsheets/LLM_Prompt_Injection_Prevention_Cheat_Sheet.html
实用的防御模式:输入验证、权限控制和输出验证
- Evidently AI:什么是提示注入(免费)
链接:https://www.evidentlyai.com/llm-guide/prompt-injection-llm
面向开发者的清晰讲解,阐述了攻击类型、风险以及缓解这些风险的设计模式
重点内容:直接注入和间接注入的区别、为什么系统提示并非真正“安全”、工具访问的最小权限原则,以及永远不要信任未经验证的 LLM 输出来自动做出重要决策
第二个月里程碑
到本月底,您应该能够:
- 编写能够为给定任务生成一致、可靠输出的提示
- 从中获取结构化的 JSON 数据使用 Pydantic + Instructor 构建任何模型
- 配置工具调用,以便模型可以调用您的 Python 函数
- 通过 FastAPI 端点实时传输响应
- 正确管理多轮对话历史记录
- 在发送请求之前估算请求的令牌成本
- 处理 API 错误、超时和错误输出,避免崩溃
- 解释什么是提示注入并应用基本防御措施
第三个月:正确学习 RAG
本月目标:构建系统,让 LLM 能够回答来自您的文档(而不仅仅是训练数据)的问题
到课程结束时,您应该能够摄取文档、嵌入和存储文档、在查询时检索正确的数据块,并生成有理有据、准确且可引用的答案
RAG 是目前 AI 工程领域最热门的实用技能。几乎所有企业级人工智能的实际应用案例——客户支持机器人、内部知识库、文档问答——都建立在它之上。
深入理解它,而不仅仅是照搬教程,才是区分优秀工程师和卓越工程师的关键。
1、嵌入
在构建 RAG 系统之前,你需要理解嵌入的本质——因为它是所有其他技术的基础。
文本嵌入是将一段文本投影到高维向量空间中。
文本在该空间中的位置用一长串数字表示。
关键在于,语义相似的文本在该空间中会彼此靠近——这使得相似性搜索成为可能。
资源:
- Stack Overflow 博客:文本嵌入的直观入门(免费)
链接:https://stackoverflow.blog/2023/11/09/an-intuitive-introduction-to-text-embeddings/
最佳入门讲解。由一位多年从事自然语言处理产品开发的开发者撰写,专注于构建正确的直觉而非数学原理。
- Google 机器学习速成课程:词嵌入(免费)
链接:https://developers.google.com/machine-learning/crash-course/embeddings
讲解了密集向量表示如何解决独热编码无法解决的问题——特别是捕捉项目之间的语义关系。
- HuggingFace:词嵌入入门(免费)
链接:https://huggingface.co/blog/getting-started-with-embeddings
实践指南。展示如何使用 sentence-transformers 库生成嵌入向量,托管这些嵌入向量,并将其用于真实 FAQ 数据集上的语义搜索。
- OpenAI 嵌入向量指南(官方文档,免费)
链接:https://platform.openai.com/docs/guides/embeddings
使用 OpenAI 的 text-embedding-3-small 和 text-embedding-3-large 模型进行代码编写的参考指南。
重点:向量的概念是什么,为什么相似的文本会产生相似的向量,余弦相似度是如何工作的,嵌入模型(OpenAI、HuggingFace sentence-transformers)之间的区别,以及嵌入维度在实践中的意义。
练习:选取 20 个关于相关主题的句子,使用 OpenAI 或 sentence-transformers 进行嵌入,并编写一个简单的最近邻搜索,返回与查询最相似的 3 个句子。这正是 RAG 算法的核心所在。
2、分块
您的文档文件太大,无法整体嵌入。分块是指在嵌入之前将其拆分成更小的部分。
文档分块的方式直接影响系统查找相关信息和提供准确答案的能力。即使是完美的检索系统,如果搜索准备不充分的数据也会失败。
资源:
- Weaviate:RAG 分块策略(免费)
链接:https://weaviate.io/blog/chunking-strategies-for-rag
最实用的指南。涵盖固定大小、递归和语义分块,并清晰地指导何时使用每种分块方式。
- Unstructured:RAG 最佳实践分块(免费)
链接:https://unstructured.io/blog/chunking-for-rag-best-practices
深入探讨分块大小、重叠以及嵌入模型的上下文窗口如何施加硬性限制的技术细节。
一个好的实验起点是使用约 250 个 token(约 1000 个字符)的分块大小,并结合 10-20% 的连续分块重叠,以避免在边界处丢失上下文。
- LangChain 文本分割器文档(官方,免费)
链接:https://python.langchain.com/docs/concepts/text_splitters/
在代码中使用 RecursiveCharacterTextSplitter、MarkdownTextSplitter 和语义分割器的实用参考。
重点:以重叠为基准的固定大小分块,以及递归分块。结构化文档分块、语义分块以更好地检测边界,以及核心的权衡:过大的块会降低检索精度;过小的块会丢失上下文信息。
入门提示:从 LangChain 的 RecursiveCharacterTextSplitter 开始,设置 chunk_size=500 和 chunk_overlap=50。这是大多数文档最灵敏的默认设置,可以作为改进的基础。
3、向量数据库
有了词嵌入之后,你需要一个高效的地方来存储和搜索它们。这就是向量数据库的用途。
正确的选择取决于您的具体情况:Chroma 适合快速本地原型开发;Pinecone 适合可管理的交钥匙式扩展;Weaviate 提供开源的灵活性和强大的混合搜索功能;Qdrant 适合复杂的过滤器和经济高效的自托管;如果您已经在使用 PostgreSQL 并且不想添加另一个系统,可以选择 pgvector。
资源:
- Chroma 官方文档(免费)
链接:https://docs.trychroma.com/
Chroma 非常适合注重开发速度和简洁性的个人开发者和小团队,它可以在内存中或本地运行,无需管理任何基础设施。
- Pinecone 学习中心(免费)
链接:https://www.pinecone.io/learn/
提供优秀的免费教程,涵盖向量搜索概念、混合搜索和 RAG 流水线。即使您不使用 Pinecone,它也是很好的、与数据库提供商无关的资源。
- Qdrant 文档(免费)
链接:https://qdrant.tech/documentation/
最佳开源生产环境选项,具备高级过滤功能。速度极快、灵活,并且可以免费自托管。
- pgvector(开源,免费)
链接:https://github.com/pgvector/pgvector
如果您正在构建一个已经使用 PostgreSQL 的系统,pgvector 可以直接将向量搜索添加到您现有的数据库中,无需任何新的基础设施。
重点:创建集合、插入带有元数据的嵌入、使用 top_k 进行相似度查询以及在查询时按元数据进行过滤。
您无需理解索引算法(HNSW、IVF)——只需了解如何使用它们即可。
实践项目:将 50-100 页来自任何公开文档(例如 Python 文档或维基百科文章转储)的内容及其元数据(源 URL、章节标题)索引到 Chroma 中。编写一个查询函数,用于检索任何问题的最相关 5 个文本块。
4、元数据过滤
仅靠原始相似性搜索不足以满足实际应用的需求。元数据过滤允许您将检索范围限制在相关的子集内——按日期、来源、文档类型、用户、类别或您与每个数据块一起存储的任何其他属性进行过滤。
资源:
- Pinecone:元数据过滤指南(免费)
链接:https://docs.pinecone.io/guides/data/filter-with-metadata
清晰地解释了如何在相似性搜索之前或期间按元数据字段过滤向量,并提供代码示例。
- LlamaIndex:元数据过滤器指南(官方文档,免费)
链接:https://docs.llamaindex.ai/en/stable/module_guides/querying/node_postprocessors/node_postprocessors/
解释了如何在 LlamaIndex 管道中于查询时应用过滤器。
重点:在数据摄取时使用相关的元数据(源文件名、页码、章节、日期、类别)标记每个数据块,并在查询时使用这些字段来过滤结果。这就是玩具演示系统和生产系统之间的区别所在,在生产系统中,用户可以要求“只显示 2025 年第四季度至 2026 年第一季度的报告结果”。
5、重排序
重排序是一种能够提升任何关键词或向量搜索系统语义质量的技术。
在第一阶段检索返回候选结果集后,重排序器会根据结果与查询的真实上下文相关性(而不仅仅是向量接近程度)对这些结果进行重新评分。
两阶段模式为:嵌入和搜索(快速、近似)。→ 重新排序前 k 个结果(速度较慢,但更准确)。结果是检索质量显著提高,而延迟成本却很低。
资源:
- Cohere 重排序文档(官方,免费)
链接:https://docs.cohere.com/docs/reranking-with-cohere
这是最佳入门资源。涵盖完整的重排序工作流程,包括电子邮件和 JSON 文档等半结构化数据。只需一行代码即可添加到现有的检索流程中
- LangChain:Cohere 重排序器集成(官方文档,免费)
链接:https://python.langchain.com/docs/integrations/retrievers/cohere-reranker/
解释了如何使用 ContextualCompressionRetriever 将 Cohere 重排序集成到 LangChain 检索器中
重点:两阶段检索-重排序模式、双编码器(用于第一阶段嵌入搜索)和交叉编码器(用于重排序)之间的区别,以及对前 20 个结果和前 5 个结果进行重排序的实际延迟/质量权衡
6、检索质量问题
大多数 RAG 失败并非模型失败,而是检索失败。了解检索出错的原因对于调试实际系统至关重要。
常见问题:
- 语义漂移:即使信息存在,查询嵌入也与相关的块嵌入不匹配。解决方法:尝试查询重写或使用 HyDE(假设文档嵌入)。
- 块边界问题:相关信息被分割到两个块中。解决方法:增加重叠部分或使用语义块划分。
- 缺少元数据上下文:块在语义上与查询相似,但属于错误的文档、日期或用户。解决方法:使用元数据过滤。
- 前 k 个结果过少:正确的块存在,但未出现在前 5 个检索结果中。修复:在检索时增加 top_k 值,并在重新排序后减少
资源:
- LangChain:查询转换(免费)
链接:https://python.langchain.com/docs/how_to/#query-analysis
涵盖查询重写、回退提示和 HyDE
- Pinecone:提升检索质量(免费)
链接:https://www.pinecone.io/learn/retrieval-augmented-generation/#retrieval-quality
常见故障模式及其修复方法的实用指南
7、减少幻觉
与传统的 LLM 相比,RAG 显著减少了幻觉,但并未完全消除。
通过在运行时向模型提供检索到的事实,RAG 将其响应锚定到真实来源,而不是仅仅依赖训练数据,模型的输出甚至可以引用这些来源,从而提高透明度和可信度。
但是,检索失败、错误数据块和冲突信息仍然会导致模型产生错误结果。向上
资源:
- Zep:减少 LLM 幻觉——开发者指南(免费)
链接:https://www.getzep.com/ai-agents/reducing-llm-hallucinations/
面向开发者的实用指南,涵盖提示接地策略、事实性任务的思维链以及输出验证模式
- Voiceflow:减少 LLM 幻觉的 5 种方法(免费)
链接:https://www.voiceflow.com/blog/prevent-llm-hallucinations
对组合策略的良好概述:RAG + 思维链 + 防护措施的组合优于任何单一方法
重点:提示模型仅根据提供的上下文回答(当没有答案时说“我不知道”),在显示答案之前添加置信度阈值,以及在指责 LLM 之前始终验证检索质量
8、引用和基准
一个有基准的 RAG 系统不仅仅是回答——它会告诉你答案的来源。这对于用户信任和调试至关重要。
资源:
- Anthropic:为 Claude 提供来源(文档,免费)
链接:https://docs.anthropic.com/en/docs/build-with-claude/citations
解释了如何提示 Claude 生成带有来源引用的答案。
- LangChain:带来源的 RAG(免费)
链接:https://python.langchain.com/docs/how_to/qa_sources/
解释了如何在 LangChain RAG 管道中返回答案的来源文档。
重点:将块元数据(源文件名、页码、URL)传递到提示上下文中,指示模型在其答案中引用来源,并在 UI 或 API 响应中显示这些来源。
9、你的 RAG 框架:LangChain 或 LlamaIndex
你不需要从头开始构建 RAG 管道。有两个框架主导着这个领域,值得了解:
LlamaIndex 优先考虑搜索和索引,它将数据摄取、分块、嵌入和查询抽象成几行代码,让您在一个下午就能构建出一个可用的原型。
当您的应用程序更像是一个编排引擎时,LangChain 的优势就显现出来了——它擅长处理多代理工作流、工具调用和条件链,这些条件链会在生成答案之前查询多个 LLM 或外部 API。
在第三个月,建议先使用 LlamaIndex 进行 RAG 开发。当您开始处理第四个月的代理工作时,再切换到 LangChain。
资源:
- LlamaIndex:RAG 简介(官方文档,免费)
链接:https://developers.llamaindex.ai/python/framework/understanding/rag/
涵盖 RAG 的五个关键阶段:加载、索引、存储检索、查询和评估——以及 LlamaIndex 如何处理每一步
- LlamaIndex 入门教程(官方文档,免费)
链接:https://developers.llamaindex.ai/python/framework/getting_started/starter_example/
官方快速入门指南。用不到 30 行代码构建一个可用的 RAG 系统
- LangChain:构建 RAG 代理(官方文档,免费)
链接:https://docs.langchain.com/oss/python/langchain/rag
展示如何使用 RAG 代理构建基于非结构化文本的问答应用程序,从 40 行代码的最小版本到包含重排序的完整检索流程
练习项目:构建一个“与文档聊天”的应用程序。导入 10-20 个 PDF 或文本文件(您自己的笔记、教科书章节、产品文档——任何内容)。构建一个 FastAPI 端点,该端点接受一个问题,检索重新排序的前 5 个最相关的代码块,并返回来自 Claude 或 OpenAI 的引用答案。这是一份真实的作品集
第三个月里程碑
到本月底,你应该能够:
- 解释什么是嵌入以及为什么相似的文本会产生相似的向量
- 使用适当的策略智能地对任何文档进行分块
- 在向量数据库中存储和查询嵌入,并进行元数据过滤
- 添加重排序步骤以提高检索质量
- 系统地调试常见的检索失败
- 使用 LlamaIndex 或 LangChain 构建完整的端到端 RAG 管道,该管道可以摄取文档、检索相关块并返回有依据且被引用的答案
第四个月:智能体、工具、工作流和评估
本月目标:构建能够自主执行一系列操作、连接多步骤工作流并批判性地评估其有效性的 AI 系统
到月底,你应该能够从头开始构建一个真正的智能体,了解何时智能体是错误的选择,并衡量你构建的任何系统的性能
这才是 AI 工程真正开始的地方复杂。第四个月的技能是区分初级AI工程师和能够端到端负责整个AI功能的人员的关键所在。
1、智能体循环
智能体并非魔法,而是一种出人意料的简单模式。
可以将智能体视为目标驱动的系统,它们不断循环进行观察、推理和行动。
这种循环使它们能够处理超越简单问答的任务,实现真正的自动化、工具使用和动态适应。
“思考”发生在提示中,“分支”是指智能体在可用工具之间进行选择,“执行”发生在调用外部函数时。其他一切都只是基础工作。
一旦你理解了这一点,即使是最复杂的智能体框架也会变得易于阅读。
资源:
- Anthropic:构建高效智能体(官方,免费)
链接:https://www.anthropic.com/research/building-effective-agents
关于生产环境中智能体的最佳文章。在编写任何一行代理代码之前,请先阅读以下内容:
- OpenAI:构建代理的实用指南(官方 PDF,免费)
链接:https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf
OpenAI 的补充指南,涵盖了生产环境中的代理模式、防护规则和安全模式。
- freeCodeCamp:开源 LLM 代理手册(免费)
链接:https://www.freecodecamp.org/news/the-open-source-llm-agent-handbook/
这是一本全面的实用指南,涵盖了代理循环、LangGraph、CrewAI、规划、内存和工具使用。非常适合快速上手。
- LangChain Academy:LangGraph 入门(免费课程)
链接:https://academy.langchain.com/courses/intro-to-langgraph
LangGraph 的官方免费课程,LangGraph 是应用最广泛的代理编排框架。涵盖状态、内存、人机交互等内容
重点:感知 → 计划 → 行动 → 观察循环,智能体循环如何终止,循环内工具调用失败时会发生什么,以及为什么智能体本质上就是 while 循环,而逻辑逻辑模型 (LLM) 负责分支决策
练习:从零开始构建一个智能体,不使用任何框架——直接使用 OpenAI 或 Anthropic API。给它 3 个工具、一个目标和一个循环。这是真正理解框架抽象概念的最有效方法。
2、工具选择
编写好的工具是成功的一半。工具及其参数的描述就是 LLM 的用户手册。如果手册含糊不清,LLM 就会误用工具。务必做到详尽明确。
描述不清晰的工具会被错误调用、在错误的时间调用,或者完全被忽略。描述完善的工具行为可预测,并且在各种输入条件下都能被正确选择。
资源:
- OpenAI:函数调用最佳实践(官方文档,免费)
链接:https://platform.openai.com/docs/guides/function-calling/best-practices
编写可靠工具描述的权威指南,包含命名约定和参数文档模式。
- Anthropic:工具使用最佳实践(官方文档,免费)
链接:https://docs.anthropic.com/en/docs/build-with-claude/tool-use/implement-tool-use#best-practices-for-tool-definitions
Anthropic 的等效方法。请特别注意关于何时让模型选择工具以及何时强制使用特定工具的指导。
重点:编写不带解释性的动词作为工具名称,编写说明何时调用工具(而不仅仅是工具的功能)的描述,保持参数数量最少且类型正确,以及将 LLM 作为调用方来设计工具。
新手提示:测试每个工具描述时,问问自己:“如果我没有任何文档,只有这个 JSON 模式,我是否能准确地知道何时以及如何调用它?” 如果不能,则需要进一步改进。
3、状态管理
在 LangGraph 中,状态是一个在图中流动的共享内存对象。它存储所有相关信息——消息、变量、中间结果和决策历史——并在整个执行过程中自动管理。
理解状态是构建能够处理多轮任务、从故障中恢复以及在组件之间干净利落地交接的智能体的关键。
资源:
- LangGraph 官方文档:状态管理(免费)
链接:https://langchain-ai.github.io/langgraph/concepts/low_level/#state
权威参考资料。涵盖状态模式、reducer 以及状态如何在节点和边中流
- DataCamp:LangGraph Agents 教程(免费)
链接:https://www.datacamp.com/tutorial/langgraph-agents
本教程涵盖状态、节点和边的基础知识,并提供实践代码,最终构建具有跨会话持久内存的有状态 Agents
- Real Python:Python 中的 LangGraph(免费)
链接:https://realpython.com/langgraph-python/
本教程全面讲解如何构建完整的有状态 LangGraph Agent,并详细解释状态图和条件边
重点内容:使用 TypedDict 定义状态模式、reducer 如何合并并行更新、内存状态和持久化检查点之间的区别,以及如何通过在执行过程中检查和修改状态来实现人机交互暂停
4、Agents 中的重试和故障处理
Agents 的故障处理方式与常规 LLM 调用不同。循环中途调用错误的工具可能会破坏状态、导致无限循环,或者悄无声息地产生错误的结果。你需要针对所有这些制定明确的策略。
资源:
- LangGraph:错误处理和重试(官方文档,免费)
链接:https://langchain-ai.github.io/langgraph/how-tos/autofill-tool-errors/
解释了如何在 LangGraph 的工具节点级别添加自动错误处理和重试逻辑。
- OpenAI 实用代理指南:防护栏部分(免费)
链接:https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf
将防护栏作为分层防御机制,结合基于 LLM 的检查、基于规则的过滤器(例如正则表达式)和审核 API,在代理循环的每个阶段审查输入和输出。
重点关注:最大迭代次数限制以防止无限循环、使用指数退避的每个工具的重试、在工具执行层捕获和记录异常而不导致代理崩溃,以及何时……向用户显示失败信息,还是静默重试?
5、何时不应使用智能体
这是人工智能工程中最重要也最容易被忽视的技能之一。智能体固然令人兴奋,但它们也存在速度慢、成本高、不可预测且难以调试等问题。懂得何时选择更简单的方案是良好判断力的体现。
Anthropic 建议寻找尽可能简单的解决方案,仅在必要时才增加复杂性——这可能意味着完全不构建智能体系统。
智能体系统以延迟和成本为代价来换取更好的任务性能,您应该仔细考虑这种权衡何时才合理。
决策框架如下:
- 如果任务可以在一次提示中通过正确的上下文解决,则使用单个 LLM 调用。
- 如果步骤固定且可预测,则使用工作流。
- 仅当步骤数量确实不可预测且需要动态决策时才使用智能体。
资源:
- Anthropic:构建高效智能体,何时使用智能体(官方,免费)
链接:https://www.anthropic.com/research/building-effective-agents
这是来自模型构建团队的权威解答。
- Simon Willison:设计智能体循环(免费)
链接: https://simonwillison.net/2025/Sep/30/designing-agentic-loops/
一位资深工程师对何时合理使用代理复杂性以及如何思考代理循环设计的实用见解
需要记住的是:由 3 个固定 LLM 调用组成的链式调用始终比可以进行 3 次调用的代理更快、更便宜且更易于调试。将代理保留用于真正开放式的任务。
6、多步骤工作流
在“单提示”和“完整代理”之间存在着一个巨大的高效中间地带:工作流。当任务可以清晰地分解为固定的子任务时,工作流是理想的选择——通过使每个单独的 LLM 调用成为一个更简单、更专注的任务,以牺牲延迟为代价来换取更高的准确性。
常见模式包括提示链(一个调用的输出作为下一个调用的输入)、路由(对输入进行分类并发送到专门的处理程序)、p并行化(同时运行多个调用并进行聚合)和协调器-子代理(一个 LLM 进行规划,其他执行)
资源:
- Anthropic:工作流模式(官方,免费)
链接:https://www.anthropic.com/research/building-effective-agents#workflow-patterns
涵盖所有主要模式,并附有图表和代码示例。并行化和编排部分尤其有用。
- LangGraph:多智能体网络(官方文档,免费)
链接:https://langchain-ai.github.io/langgraph/concepts/multi_agent/
解释了如何将多个智能体连接成一个网络,并包含监督器和交接模式。
实践项目:构建一个三步内容管道:
步骤 1 – 一个 LLM 从文章中提取关键事实。
步骤 2 – 另一个 LLM 调用使用这些事实并行生成一条推文、一篇 LinkedIn 帖子和一份摘要。
步骤 3 – 最后一个 LLM 调用对这三者进行质量评分,并选择最佳结果。
无需智能体,纯粹的工作流。
7、评估工具
评估是了解您的 AI 系统是否真正有效的方法——不仅针对您手动测试的示例,还要系统地针对数百个输入进行评估。
AI 智能体功能强大,但部署起来很复杂,因为它们的概率性、多步骤行为引入了许多故障点。
智能体的不同组成部分——LLM、工具、检索器和工作流——各自需要不同的评估方法
资源:
- DeepEval(开源,免费)
链接:https://deepeval.com/docs/getting-started
一个受 pytest 启发的开源 LLM 评估框架。编写包含输入和预期输出的测试用例,使用 50 多个内置指标运行测试,包括幻觉、答案相关性和事实一致性,并捕获版本之间的回归问题。
- Promptfoo(开源,免费)
链接:https://github.com/promptfoo/promptfoo
一个用于使用自动化测试套件测试和评估 LLM 应用的 CLI 和库。支持跨多个模型的多个提示的并排比较、CI/CD 集成以及安全漏洞的红队演练。
- LangSmith(免费版)
链接:https://smith.langchain.com/
用于 LangChain 和 LangGraph 应用的跟踪、调试和评估。免费版功能非常丰富,追踪界面让调试代理循环变得异常轻松。
- Ragas(开源,免费)
专为 RAG 流程设计的评估框架。衡量忠实度、答案相关性、上下文精确度和上下文召回率。如果您从第三个月开始评估 RAG 系统,那么 Ragas 必不可少。
重点:构建一个包含 20-50 个具有代表性的输入(带有预期输出或评分标准)的黄金测试集;编写能够确定性地(字符串匹配、JSON 模式验证)或使用 LLM 作为评判标准的评估函数;以及在更改提示或更换模型时自动运行评估。
关键在于:评估并非可有可无的优化步骤。每次更改提示、更换模型或调整检索策略而不运行评估,都存在风险。交付可靠 AI 产品的工程师会持续进行评估。
8、任务成功指标
除了自动化评估之外,您还需要一些指标来告诉您智能体是否实现了其实际目标。
资源:
- Hamel Husain:《您的 AI 产品需要评估》(免费)
链接:https://hamel.dev/blog/posts/evals/
这是关于为实际生产 AI 系统构建评估流程的最实用文章之一,作者本人拥有大规模构建评估流程的经验。
- OpenAI 评估框架(开源,免费)
链接:https://github.com/openai/evals
OpenAI 自有的评估框架,拥有一个庞大的社区贡献评估模式库,您可以根据需要进行调整。
重点:过程指标(智能体是否调用了正确的工具?)和结果指标(任务是否成功?)之间的区别;在构建任何内容之前定义清晰的成功标准;以及使用 LLM 作为评判标准来评估难以精确匹配的输出(例如长篇答案或多步骤推理过程)。
实践项目:利用您在第三个月建立的 RAG 流程,构建一个合适的评估框架。从您的文档中创建 30 个问答对,将它们输入到您的流程中,并使用 DeepEval 对每个答案的相关性、真实性和完整性进行评分。然后更改一项设置(例如块大小、模型、top-k 等),重新运行以查看是否有改进。
第四个月里程碑
到本月底,您应该能够:
- 解释什么是代理循环,并在不使用框架的情况下从头开始实现一个代理循环
- 编写能够被正确可靠地选择的工具描述
- 使用 LangGraph 或等效工具正确管理代理状态
- 在代理循环内部处理故障而不导致崩溃
- 自信地判断任务需要代理、工作流还是单个提示
- 构建能够链接、路由和并行化 LLM 调用的多步骤工作流
- 编写自动评估程序,以便在更改提示或模型时捕获回归
- 定义并衡量您构建的任何 AI 系统的任务成功指标
第五个月:部署、产品思维和可靠性
您本月的目标是:将你构建的所有内容都升级到生产环境
到月底,你应该能够部署一个 AI 应用,该应用可以处理真实用户、真实流量和真实故障,而不会在凌晨 2 点崩溃。
大多数 AI 工程师都止步于此。他们可以构建一个很棒的演示,但却无法交付一个经受住真实世界考验的产品。
这里列出的技能才是公司真正需要的:可靠性、安全性、成本控制,以及在出现不可避免的故障时保持系统运行的能力。
1、FastAPI 生产模式
你已经从第一个月开始学习如何构建 FastAPI 应用。现在你需要让它能够承受生产环境的流量。
开发环境和生产环境之间的差异非常巨大。使用带有 --reload 参数的单个 uvicorn 进程进行构建就足够了。在生产环境中,一旦实际流量到来,它就会成为瓶颈。
您真正需要的是:多工作节点 ASGI 配置、合适的错误处理中间件、健康检查端点和 CORS 策略。
资源:
- FastAPI 部署文档(官方,免费)
链接:https://fastapi.tiangolo.com/deployment/
官方指南涵盖 Uvicorn 工作节点、Gunicorn 和 Docker 部署。建议您首先阅读此文档。
- FastAPI 生产环境部署指南(CYS 文档,免费)
链接:https://craftyourstartup.com/cys-docs/fastapi-production-deployment/
全面的生产环境部署模式:Gunicorn 配置、Nginx 反向代理、健康检查和速率限制。包含可供您修改的真实配置文件
- FastAPI 生产环境最佳实践(FastLaunchAPI,免费)
链接:https://fastlaunchapi.dev/blog/fastapi-best-practices-production-2026
涵盖异步数据库池、Redis 缓存、JWT 身份验证和后台任务。基于 100 多位开发者使用的真实模板,提供经过生产环境测试的模式
重点:使用 Uvicorn 工作进程运行 Gunicorn(而非裸 Uvicorn)、设置健康检查端点、添加 CORS 中间件、实现正确的异步数据库会话,以及对任何无需阻塞响应的操作使用后台任务
2、Docker
Docker 让您不再需要说“它在我的机器上运行正常”,而是可以开始交付一致的部署
如果您正在构建 AI 应用,Docker 可以解决依赖冲突、确保环境一致性,并使扩展变得简单
您无需成为 Docker 专家。您需要能够将 FastAPI + LLM 应用容器化并部署到任何位置。
资源:
- Docker 官方入门指南(免费)
链接:https://docs.docker.com/get-started/
权威入门指南。涵盖镜像、容器、Dockerfile 和 Docker Compose。
- freeCodeCamp:如何使用 Python 和 Docker 构建和部署多智能体 AI 系统(免费)
链接:https://www.freecodecamp.org/news/build-and-deploy-multi-agent-ai-with-python-and-docker/
使用 Docker Compose 构建真实多智能体流水线的实用端到端教程。涵盖关注点分离、定时任务调度和安全注意事项
- DataCamp:使用 Docker 部署 LLM 应用程序(免费)
链接:https://www.datacamp.com/tutorial/deploy-llm-applications-using-docker
专门针对带有 RAG 流水线的 LLM 应用程序的分步指南。涵盖 Dockerfile 创建、环境管理和部署
- LLM 应用的 Docker 容器化(ApXML,免费)
涵盖基础镜像选择、依赖管理、多阶段构建以及用于多服务 LLM 部署的 Docker Compose
重点内容:为 Python/FastAPI 应用编写 Dockerfile,使用多阶段构建来减小镜像大小,使用 Docker Compose 进行多服务设置(应用 + 数据库 + Redis),使用环境变量存储密钥,以及使用 .dockerignore 文件避免泄露敏感文件
实践项目:容器化您在第三个月学习的 RAG 应用。创建一个 docker-compose.yml 文件,用于运行您的 FastAPI 应用、一个向量数据库(Chroma 或 Qdrant)以及用于缓存的 Redis。部署时,确保 docker compose up 命令能够启动所有组件。
3、后台任务和队列
LLM 调用速度较慢。如果用户请求您的应用处理文档,而您让他们等待 30 秒才能得到响应,他们很可能会离开。
后台任务允许您立即接受请求,异步处理,并在完成后通知用户。
资源:
- Celery 官方入门指南(免费)
链接:https://docs.celeryq.dev/en/stable/getting-started/introduction.html
标准的 Python 任务队列。涵盖基本设置、任务定义和工作进程管理。
- FastAPI 后台任务文档(官方,免费)
链接:https://fastapi.tiangolo.com/tutorial/background-tasks/
内置轻量级后台任务,适用于简单的用例。将此用于快速执行的即发即弃任务,对于更复杂的任务则使用 Celery。
重点:了解何时使用 FastAPI 内置的 BackgroundTasks,何时使用像 Celery 这样的专业任务队列;如何设置 Redis 作为消息代理;如何处理任务失败和重试;以及如何向用户返回任务状态。
4、身份验证和 API 密钥安全
如果您的 AI 应用有 API,则需要进行身份验证。安全措施。没有它,任何人都可以使用您的端点,耗尽您的 LLM 积分,最终您将收到一张 5000 美元的账单。
资源:
- FastAPI 安全文档(官方,免费)
链接:https://fastapi.tiangolo.com/tutorial/security/
涵盖 OAuth2、JWT 令牌、API 密钥和基于依赖关系的身份验证模式。这是官方参考资料,请完整学习教程。
- OWASP API 安全 Top 10(免费)
链接:https://owasp.org/API-Security/
权威的 API 安全风险列表。在发布任何内容之前,务必了解身份验证、注入和批量赋值方面的漏洞。
- Auth0:API 身份验证最佳实践(免费)
链接:https://auth0.com/docs/get-started/authentication-and-authorization
API 身份验证和授权的实用指南
重点内容:使用 JWT 令牌进行用户身份验证、用于服务间通信的 API 密钥管理、按用户/密钥进行速率限制、切勿在代码中存储密钥(使用环境变量),以及理解身份验证(你是谁)和授权(你可以做什么)之间的区别。
5、日志记录和可观测性
在生产环境中,如果您无法看到发生了什么,就无法修复问题。
LLM 应用面临着一个独特的挑战:模型可能返回 200 状态码,但仍然会产生无用或错误的响应。传统的监控方法无法捕获这种情况。您需要 LLM 专用的可观测性
资源:
- Langfuse(开源,免费版)
链接:https://langfuse.com/docs/observability/overview
开源 LLM 可观测性平台。追踪每个请求:发送的提示、收到的响应、令牌使用情况、延迟、工具调用。支持提示版本控制、评估和 LLM 作为评判标准进行评分。可与 OpenAI、Anthropic、LangChain 和 LlamaIndex 集成。
- LangSmith(免费版)
链接:https://smith.langchain.com/
由 LangChain 团队开发。如果您正在使用 LangChain/LangGraph,只需一个环境变量即可完成设置。提供追踪、调试、监控仪表板和在线评估功能。免费版足以满足开发和小规模生产的需求。
- Python Structlog(免费)
Python 的结构化日志记录工具。生成可搜索和可解析的 JSON 日志。远胜于 print() 或基本日志记录,尤其适用于生产环境应用
重点:追踪每个 LLM 调用(输入提示、输出、令牌、延迟、成本),使用 JSON 输出进行结构化日志记录,设置仪表盘以显示请求量、错误率和每日成本,并在出现故障或成本飙升时发出警报
6、提示和版本管理
在生产环境中,提示就是代码。它们需要版本控制、测试和回滚功能
在生产环境中更改提示而不跟踪更改内容会导致系统崩溃,并且无法找出原因
资源:
- Langfuse 提示管理(免费)
链接:https://langfuse.com/docs/prompts
集中式提示版本控制,内置测试环境。将提示的版本控制与应用程序代码分开。无需重新部署应用即可部署提示更改
- Anthropic 提示管理最佳实践(免费)
链接:https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview
大规模组织、迭代和管理提示的最佳实践
重点:将提示存储在应用程序代码之外,对每次提示更改进行版本控制,在生产环境中对提示变体进行 A/B 测试,以及在新提示性能下降时制定回滚策略
7、成本监控和速率限制
LLM API 按令牌收费。如果没有成本控制,流量高峰或提示符中的一个错误就可能在几分钟内烧掉数百美元。
资源:
- OpenAI 使用情况仪表盘(官方)
链接:https://platform.openai.com/usage
按模型、按天跟踪支出,并设置使用限制
- Anthropic 使用情况仪表盘(官方)
链接:https://console.anthropic.com/ Claude API 使用情况也一样
- Helicone(免费版)
基于代理的可观测性,可捕获每个 LLM 调用并自动跟踪成本。只需一行代码即可设置:只需更改您的基本 URL
- LiteLLM(开源,免费)
链接:https://github.com/BerriAI/litellm
适用于 100 多个 LLM 提供商的统一接口。包括预算管理、速率限制和跨提供商的支出跟踪
重点:设置每日/每月硬性支出上限,在 API 中实施按用户速率限制,对简单任务使用更便宜的模型(不要所有任务都使用 GPT-4/Opus),使用 Redis 缓存重复的相同请求,并监控每次请求的成本以便及早发现高成本的请求。
8、缓存
如果 20% 的用户提出类似的问题,您就相当于为同一个 LLM 调用支付了 20 次费用。
缓存是同时降低成本和延迟的最简单方法。
资源:
- Redis 官方文档(免费)
标准的内存数据存储。快速、简单,非常适合 LLM 响应缓存。
- GPTCache(开源,免费)
链接:https://github.com/zilliztech/GPTCache
专为 LLM 应用设计的语义缓存。通过嵌入相似性来查找语义相似(而不仅仅是相同)查询的缓存响应
重点:针对相同提示的精确匹配缓存、针对相似查询的语义缓存、缓存失效策略(基于 TTL 的策略最简单)以及衡量缓存命中率以了解实际成本节省
第五个月里程碑
到本月底,您应该能够:
- 在 Docker 中部署具有正确生产配置的 FastAPI + LLM 应用程序
- 使用后台作业和队列处理长时间运行的任务
- 使用身份验证、速率限制和 API 密钥管理保护您的 API
- 使用 Langfuse 或 LangSmith 跟踪和调试 LLM 调用
- 使用版本控制和回滚功能管理提示
- 实时监控成本并设置支出限额
- 缓存 LLM 响应以降低延迟和成本
第六个月:专精并提升就业竞争力
您获得的这些知识和技能可以应用于三个方面(当然,只有那些最能体现您优势的方面)。我明白了)
你需要选择其中一个方向并专注于实践。
虽然上面提到的所有内容也最好通过纯粹的实践来学习。
方向 1:AI 产品工程师
如果你想快速进入创业公司,这是最佳选择。
这是最常见的路径。你将构建由真实用户交互的 AI 产品。
你已经掌握了前五个月的大部分技能。现在深入产品方面。
重点关注:
- LLM 应用
- RAG
- 代理
- 部署
- 产品用户体验
本月学习内容:
1.1 端到端产品构建
停止构建教程。构建人们可以使用的产品。
资源:
- Vercel AI SDK(免费)
构建支持流式处理的 AI 用户界面的最快方法。集成 React、Next.js 和 Vue,并内置流式 UI 组件。
- Streamlit(免费)
使用纯 Python 构建数据应用和 AI 演示。非常适合内部工具和最小可行产品 (MVP),不适合生产规模的 UI
- Gradio(免费)
链接:https://www.gradio.app/docs 用最少的代码快速构建机器学习/人工智能界面。尤其适合演示模型和构建原型
重点:本月构建 2-3 个完整的项目并进行演示。例如,“与文档聊天”应用、人工智能驱动的内部工具或自动化实际工作流程的代理。发布它们。将它们上传到 GitHub。部署到用户可以试用的地方。
1.2 人工智能产品用户体验
如果用户体验没有考虑到模型的局限性,人工智能产品就会失败。
资源:
- Google:《人机交互指南》(免费)
链接:https://pair.withgoogle.com/guidebook/
设计人机交互的最佳资源。涵盖设定预期、处理错误和建立信任
- Nielsen Norman Group:AI UX 指南(免费)
链接:https://www.nngroup.com/topic/artificial-intelligence/
基于研究的 AI 界面指南
重点:如何处理流式加载状态、模型出错时应显示什么、如何让用户提供反馈,以及如何针对 AI 输出的概率性(有时会出错)进行设计
方向 2:应用机器学习/LLM 工程师
如果您希望从事更深入的技术工作,这是最佳选择
此方向适合希望超越 API 调用,了解底层工作原理的工程师
重点:
- 微调
- 何时进行微调,何时进行提示
- 评估
- 推理优化
- 开源模型
- 训练流程
本月学习内容:
2.1 何时进行微调,何时进行提示
应用机器学习中最重要的决策:您需要更改模型,还是只需更改与模型交互的方式?
资源:
- Google 机器学习速成课程:微调、蒸馏和提示工程(免费)
链接:https://developers.google.com/machine-learning/crash-course/llm/tuning
对这三种方法及其适用场景的最清晰解释
- Codecademy:提示工程 vs 微调(免费)
链接:https://www.codecademy.com/article/prompt-engineering-vs-fine-tuning
针对每种方法的实用决策框架,并附有清晰的用例
- IBM:RAG vs 微调 vs 提示工程(免费)
链接:https://www.ibm.com/think/topics/rag-vs-fine-tuning-vs-prompt-engineering
涵盖所有决策空间,包括何时组合使用各种方法
需要记住的决策框架:首先使用提示工程(成本最低、速度最快);如果模型需要访问特定数据,则添加 RAG;仅在提示工程 + RAG 的情况下进行微调无法达到所需的质量、一致性或延迟
2.2 实践中的微调
当您需要进行微调时,以下是一些方法:
资源:
- OpenAI 微调指南(官方,免费)
链接:https://platform.openai.com/docs/guides/fine-tuning
开始微调的最简单方法。上传 JSONL 数据集,运行作业,即可获得自定义模型。即使您以后转向开源模型,它也非常适合学习工作流程。
- HuggingFace Transformers 微调教程(免费)
链接:https://huggingface.co/docs/transformers/training
用于处理开源模型的标准库。涵盖训练、评估和模型保存。
- Unsloth(开源,免费)nk:https://github.com/unslothai/unsloth
- 微调速度提升 2 倍,内存占用减少 80%。开箱即用,支持 LoRa 和 QLoRa。在消费级硬件上微调开源模型的最快途径。
- LLaMA Factory(开源,免费)
链接:https://github.com/hiyouga/LLaMA-Factory
用于微调 100 多个 LLM 的统一框架。包含一个无需编写代码即可进行微调的 Web 用户界面。支持 LoRa、QLoRA、完整微调、RLHF 和 DPO。
重点:准备训练数据集(JSONL 格式)、理解 LoRa 和 QLoRA(参数高效的微调)、在 OpenAI 或 HuggingFace 上运行微调作业、将微调后的模型与基础模型进行比较,以及了解何时微调成本过高。
2.3 开源模型
并非所有模型都需要通过 OpenAI 或 Anthropic 进行微调。开源模型让您拥有完全控制权,无需支付 API 费用,并可在本地运行。
资源:
- Ollama(免费)
只需一条命令即可在本地运行开源 LLM 模型。支持 Llama、Mistral、Gemma 等数十种模型。这是体验开源模型的最快方式。
- HuggingFace 模型中心(免费)
链接:https://huggingface.co/models
最大的开源模型库。浏览、下载和部署适用于任何任务的模型。
- vLLM(开源,免费)
链接:https://github.com/vllm-project/vllm
高吞吐量 LLM 推理引擎。速度比 HuggingFace 的原生服务快 2-4 倍。开源模型生产部署标准
重点内容:使用 Ollama 在本地运行模型进行测试,理解量化(GGUF、GPTQ、AWQ)及其对部署的重要性,针对您的用例将开源模型与 API 模型进行基准测试,以及使用 vLLM 在生产环境中部署模型
2.4 推理优化
让模型在生产环境中运行得更快、更经济
资源:
- HuggingFace:LLM 推理优化(免费)
链接:https://huggingface.co/docs/transformers/llm_optims
涵盖键值缓存优化、量化和批处理策略
- NVIDIA TensorRT-LLM(免费)
链接:https://github.com/NVIDIA/TensorRT-LLM
在 NVIDIA GPU 上实现最佳推理性能。被大多数大规模生产级 LLM 服务所采用
重点关注:提高吞吐量的批处理策略、用于降低内存和成本的量化、用于加快生成速度的键值缓存优化,以及为您的推理工作负载选择合适的硬件
方向 3:AI 自动化工程师
如果您希望立即为企业构建产品,这是最佳选择
此方向侧重于使用 AI 自动化实际业务工作流程。它更侧重于解决运营问题,而非构建产品
重点关注:
- 工作流编排
- 业务流程自动化
- 多工具系统
- CRM、文档、电子邮件、支持、运维用例
本月学习内容:
3.1 工作流编排
真正的业务自动化几乎从来都不是一次 LLM 调用就能完成的。它涉及跨多个系统的一系列操作。
资源:
- n8n(开源,可免费自托管)
使用 AI 节点实现可视化工作流自动化。将 LLM 连接到 400 多个集成(Slack、Gmail、Notion、CRM 等)。最佳的无代码/低代码 AI 自动化方案
- LangGraph:多智能体工作流(免费)
链接:https://langchain-ai.github.io/langgraph/concepts/multi_agent/
面向复杂多智能体系统的代码优先编排。当 n8n 不足以满足需求,需要完全程序化控制时,LangGraph 是您的理想之选。
- Temporal(开源,免费)
适用于长时间运行、容错流程的持久化工作流引擎。当您的自动化流程需要应对崩溃、重试和超时时
重点在于:设计能够优雅地处理故障的工作流程,将 AI 连接到实际业务工具(电子邮件、CRM、数据库、电子表格),构建人工参与的审批步骤,并记录每个自动化操作以进行审计跟踪。
3.2 业务流程自动化
AI 自动化的价值在于解决特定的、成本高昂的业务问题。
资源:
- Zapier AI Actions(免费版)
无需编写代码即可将 AI 连接到 6000 多个应用程序。非常适合在构建自定义解决方案之前进行自动化原型设计。
- Make(Integromat)(免费版)
具有高级逻辑和 AI 集成的可视化自动化平台。比 Zapier 更强大,适用于复杂的工作流程
重点:识别投资回报率最高的自动化目标(通常是重复性、耗时且基于规则的任务),构建能够增强而非取代人类的自动化流程,并衡量实际节省的时间和金钱
3.3 CRM、文档、电子邮件、支持自动化
最常见且最有价值的 AI 自动化用例
资源:
- OpenAI Cookbook:AI 驱动的电子邮件处理(免费)
链接:https://github.com/openai/openai-cookbook
使用 AI 对电子邮件进行分类、路由和回复的模式
- LangChain:文档处理管道(免费)
链接:https://python.langchain.com/docs/how_to/#document-loaders
从 80 多个来源摄取和处理文档
重点:构建 AI 驱动的电子邮件分类器自动回复系统、创建可提取结构化数据的文档处理流程、构建使用 RAG 算法处理知识库的支持聊天机器人,以及将 AI 集成到现有的 CRM 工作流程(HubSpot、Salesforce 等)中。
方向 3 的实践项目:构建端到端的潜在客户资格认定系统。该系统应:
从来源(CSV、API 或表单)抓取或导入潜在客户信息
使用潜在客户生命周期模型 (LLM) 对每个潜在客户进行调研(公司信息、匹配度评估)
根据理想客户画像 (ICP) 对潜在客户进行评分和排名
撰写个性化的外联信息
将所有信息记录到电子表格或 CRM 系统中。这是一个真正可销售的自动化系统,企业会为此付费。
结束语
这 6 个月后,您能期待什么?
说实话,如果没有雄厚的资金支持,
这份路线图不会让你在6个月内成为高级人工智能工程师。
但它能让你成为能够构建、交付和部署真正人工智能系统,解决实际问题的人才。
而现在,市场正需要这样的人才。
对人工智能工程师的需求并未放缓。职位发布数量同比增长25%。
普华永道发现,需要人工智能技能的职位比不需要人工智能技能的同类职位薪资高出56%。
只有1%的公司被认为是“人工智能成熟型”的,这意味着99%的公司仍然需要人才。美国劳工统计局预测,到2034年,人工智能领域的就业增长率将达到26%。
这些数据并非夸大其词。这是基于分析的真实数据(来自 Claude kek)
如果你在美国全职从事人工智能工作:
- 初级人工智能工程师起薪 9 万至 13 万美元
- 中级(3-5 年经验)年薪 15.5 万至 20 万美元
- 高级职位年薪 19.5 万至 35 万美元以上
根据 Glassdoor 的数据(2026 年 3 月),平均年薪为 184,757 美元
中级职位增长最快,年增长率达 9.2%,因为企业迫切需要能够独立交付生产级人工智能产品的人才
如果你更倾向于自由职业:
- 人工智能代理开发时薪 175 至 300 美元
- RAG 实现时薪 150 至 250 美元
- LLM 集成时薪 125 至 200 美元
一位 Reddit 开发者在两周内为一家律师事务所开发了一款文档摘要工具,并获得了丰厚的报酬。 8,000 美元。一位自由职业者每周工作 25 小时,每小时收费 150 美元,年收入可达 195,000 美元。
如果你走咨询路线(我在之前的文章中提到过),你可以收取以下费用:
- 为企业搭建 AI 代理,收费 300-5,000 美元
- AI 内容管理,每月收费 500-2,000 美元
- 客户支持自动化,收费 1,000-4,000 美元
- 陌生拜访设置,收费 500-2,000 美元
服务范围更广,但一旦你掌握了这份路线图中的技能,到 2026 年,你就会成为炙手可热的专家。
这些都是真实数据,来自真实用户的真实工作。
现在,我真正想让你记住的是:
每个月选择一个项目,然后把它做出来。不要阅读相关资料,也不要观看教程。把它做出来,找出问题,修复问题,部署它,然后把它放到 GitHub 上。真正被录用的工程师,是那些展示自己实际成果的人,而不是那些只学过书的人。
开始分享你的学习心得。在X平台、LinkedIn或其他任何平台上写下来。教学是学习最快的方式,同时也能提升你的声誉。我见过最好的机会都来自那些积极展示自己的人,而不是那些投递了500份简历的人。
请不要等到感觉准备好了才行动。你永远不会觉得自己准备好了。“我在学习”和“我在实践”之间的鸿沟,正是大多数人永远无法摆脱的困境。
一旦有了可以实际操作的项目,就立即开始申请工作、开始做自由职业、开始提供服务。即使它们并不完美。市场不会奖励完美主义者,它奖励的是能够交付成果的人。
如果你真的投入精力,6个月足以改变一切。
我真心相信,读到这篇文章的你们每个人都能做到。
永远不要停止实践,永远不要停止学习。
原文链接:How to become an AI Engineer in 6 months (RESOURCES)
汇智网翻译整理,转载请标明出处