进阶 dagster.io 2026-10-10 01:48:56 · 6 阅读

第17章 用 Dagster 构建可扩展的 AI 产品

现代 AI 开发需要的模式与传统软件大不相同。将熟悉的工程实践与应对 AI 概率特性的新方法相结合,团队就能成功将 AI 产品扩展至生产环境。

“当我走过人生之半途,发现自己置身一片黑暗的森林,那笔直的路径已在其中迷失。” —— 但丁 · 阿基米

传统软件开发所依赖的成熟最佳实践和既定模式,在 AI 开发场景中往往失效。但这种不确定性并非迷失方向的信号,而是我们开拓新领域的标志。虽然技术具有革命性,但我们逐渐发现,成功的 AI 实施仍依赖于熟悉的工程基础。在 Dagster 开发者关系部门的工作经历中,我观察了团队如何穿越这些“黑暗森林”,并注意到了一些具有启发性的模式。

理解技术本质

对于人工智能而言,背后的炒作和营销往往让人难以看清其真实的能力与局限。人工智能是一个概率过程,而非确定性过程。这是在使用这些工具构建系统时最关键的一点。

在确定性系统中,输入相同,输出必然一致。在传统软件中,给定相同的输入,你可以期待得到相同的输出。它是可预测的、基于规则的——例如,在计算器中输入“2 + 2”,每次结果都是“4”。确定性过程遵循从输入到输出的固定路径。

但 AI 系统的工作方式不同。它们处理的是概率、模式和分布,而非固定规则。当 AI 模型生成文本或进行预测时,它基于已学习的模式进行有根据的猜测,并从可能的输出分布中选择一个结果。不同的模型具有不同水平的随机性,而正是这种差异使它们变得有用。

这就是为什么:

- 你向 ChatGPT 问同样的问题两次,可能会得到不同的答案。 - 图像生成模型从相同的提示词生成的图像会略有不同。 - 语音识别在不同条件下对同一音频的解读可能不同。

这种概率基础重塑了构建 AI 应用的方式。我们不再追求绝对的正确性,而是需要思考置信度。传统测试转变为统计任务,成功不再是非黑即白的二元判断,而是在结果分布中衡量的。这种转变要求更细微的系统架构,将变异性视为特性而非边缘情况,优雅地处理歧义。在设计这些系统时,我们需要预见并考虑不确定性,在核心逻辑中建立安全机制和回退方案。

选择合适的工具

在自动化流程时,你需要考虑瓶颈在哪里。对于 AI 用例,你需要判断瓶颈是“智能”(决策、回忆信息或综合处理)。

以下功能非常适合 AI 应用:

- 支持:生成对话,引导用户解决问题。 - 转录/摘要:转录和信息综合是语言模型的核心应用场景。 - 技术故障排查:处理错误通常需要特定的知识,LLM 可以轻松使用 RAG 检索这些信息。

以下功能仍最适合人类:

- 设计:AI 生成的图像有一种特定的“廉价/半成品”美学特征。 - 软件架构:系统架构需要对干系人需求、技术能力/局限以及现有代码库进行综合考量。 - 任何新颖事物:AI 严重偏向于拥有大量训练数据的旧工具。如果你处于最前沿,传统的自然智能更为合适。

Agent(智能体)代表了 AI 的下一个前沿。这些工作者能够自主执行复杂的、多步骤的任务,而传统上这些任务需要人类监督。虽然标准 AI 模型可能只回答单一问题,但 Agent 可以将复杂目标分解为子任务,顺序执行,并根据中间结果调整策略。

这种力量伴随着巨大的挑战。Agent 行动链条中的每一步都引入了错误或偏离预期结果的新机会。由于 Agent 像所有 AI 系统一样按概率运行,这些不确定性会随着每个决策而累积。管理这种复杂性需要强大的编排和监控。你需要追踪最终输出以及导致该输出的整个决策链。正确地做到这一点,是实现所谓“通用人工智能”的障碍。

我们最近与 Olivier Dupuis 深入探讨了这些挑战,他展示了如何使用 Dagster 和 Hex 编排研究 Agent。他的实现表明,通过提供对每一步的可见性,同时保持决策和数据转换的清晰血缘关系,适当的编排可以使 Agent 系统更加可靠和易于调试。

用例示例:使用 Dagster 构建 RAG

虽然 AI 带来许多令人兴奋的可能性,但最实用且能立即产生价值的实现之一是增强组织内的知识。在 Dagster,我们通过 Scout 实施了这一点,它是一个基于 RAG 的助手,帮助用户解决与 Dagster 相关的问题、排查代码错误和解决故障。这个服务表明,当给予适当的上下文时,AI 可以既强大又实用。

我最近构建了这个系统的简化版本,以演示 Dagster 的抽象如何使此类实现变得惊人地简单:

- 资源(Resources):管理到 Pinecone(向量数据库)、GitHub 和网络爬取连接的连接,以构建可重用的块。 - 分区(Partitions):摄取数据按周分区,更好地管理嵌入上下文限制并提高性能。 - 图谱(The Graph):我们管理过程的输出,而非过程本身。这简化了调试和理解。 - OpenAI 集成:将积分和令牌使用量显示为资产元数据,增强可观测性。 - 声明式自动化(Declarative Automation):下游资产通过一行代码自动保持最新状态。

你可以点击这里观看我端到端构建的完整视频:

使用 Dagster 进行 AI 开发

从本质上讲,AI 工程是数据工程,而数据工程是软件工程。特别有趣的是,现代 AI 工程往往比传统机器学习工程更简单,因为基于云的模型和服务处理了许多复杂的计算工作。

AI 的有效性最终取决于上下文,这就是像 RAG 这样的方法变得如此强大的原因。这些系统认识到上下文等于数据,使组织能够在受益于通用 AI 模型的同时,利用领域特定的知识。挑战从模型开发转移到数据管理和工程,重点在于有效地在正确的时间为 AI 系统提供正确的上下文。

*当前 AI 状态 pic.twitter.com/6UREsbqztP — Igor Momentum (@igormomentum) 2025年1月18日*

通过进行适当的编排,你可以远远领先于时代。

在这里,Dagster 的抽象对于构建生产级 AI 实现特别有价值。通过为 ETL 过程、模型训练、推理、版本控制、测试和本地开发提供强大的框架,Dagster 将复杂的 AI 工作流转化为可管理的软件工程任务。平台管理模型版本、数据集和嵌入的方式,反映了对生产 AI 系统需求的理解。

Dagster 的生态系统带来了 AI 系统至关重要的额外能力。Insights、目录管理、分区、资源和资产检查等功能,提供了可靠 AI 系统所需的基础设施。平台强调血缘关系和基于图谱的思维,帮助团队专注于输出,同时保持对整个数据管道可见性。与 OpenAI、Gemini、Anthropic、Chroma 和 Weaviate 等服务的集成进一步简化了开发。这些抽象不仅使 AI 开发更容易,还使其更可靠、可维护且具备生产就绪能力。

立即使用 Dagster 开始你的 AI 应用。有疑问或反馈?在 Slack 或 GitHub 上发起讨论。有兴趣加入我们?查看我们的开放职位。想要更多类似内容?在 LinkedIn 上关注我们。

评论 (0)