已发布 上游基线 bf46254 原文 ↗ 在 GitHub 编辑

Effect AI 简介

介绍 Effect 的 AI 集成 —— 一组用于与大语言模型交互的包

Experimental Module

Effect AI 集成包目前处于实验性 / alpha 阶段。我们欢迎你提供反馈,以进一步完善它们的功能。

欢迎阅读 Effect 的 AI 集成包文档 —— 这是一组库,旨在让你与大语言模型(LLM)的协作变得无缝、灵活且与提供商无关。

这些包让你编写的程序只需描述你用 LLM 做什么 —— 生成补全、处理对话交互、执行函数调用 —— 而不必事先确定这些操作如何执行、在哪里执行。

核心包 @effect/ai 提供了一个高层、统一的接口,用于对 LLM 交互建模,且不依赖任何特定提供商。当你准备好运行程序时,只需从我们的 LLM 提供商集成包中,插入程序所需的服务即可。

这种关注点分离让你能够:

  • 编写简洁、声明式的业务逻辑,无需担心特定提供商的怪癖
  • 在运行时或测试期间轻松切换或组合不同的提供商
  • 在构建 AI 驱动的工作流时,充分利用 Effect 的各项特性

无论你是在构建智能 agent、交互式聊天应用,还是利用 LLM 处理后台任务的系统,Effect 的 AI 包都能提供你所需的灵活性与控制力!

让我们开始吧!

为什么选择 Effect 构建 AI 应用?

集成 LLM 并不只是发送 API 请求 —— 还要处理流式输出、重试、速率限制、超时以及用户驱动的副作用,同时保持系统稳定与响应迅速。Effect 提供了简单、可组合的构建块,让你以安全声明式可组合的方式为这些工作流建模。

在 LLM 交互中使用 Effect,你将获得以下好处:

  • 🧩 与提供商无关的架构
    业务逻辑只需编写一次,而底层提供商(OpenAI、Anthropic、本地模型、mock 等)的选择可以推迟到运行时

  • 🧪 完全可测试
    由于 LLM 交互是通过 Effect 服务建模的,你只需提供一个替代实现,就能 mock、模拟响应或对响应做快照

  • 🧵 结构化并发
    并发执行 LLM 调用、取消过期的请求、流式返回部分结果,或让多个提供商竞速 —— 这些都由 Effect 的结构化并发模型安全地管理

  • 🔍 可观测性
    利用 Effect 内置的追踪、日志与指标为你的 LLM 交互埋点,从而深入了解生产环境中的性能瓶颈或故障

……以及更多!

核心概念

Effect 的 AI 集成围绕与提供商无关的编程这一理念构建。你无需把对某个特定 LLM 提供商 API 的调用硬编码在代码里,而是使用基础包 @effect/ai 提供的服务来描述你的交互。

这些服务提供的能力包括:

  • 生成文本 – 单次文本生成
  • 生成嵌入向量 – 用于搜索或检索的文本向量表示
  • 工具调用 – 结构化输出与工具使用
  • 流式输出 – 增量输出,兼顾内存效率与响应速度

这些服务中的每一个都被定义为一个 Effect 服务 —— 这意味着它们可以像 Effect 生态中任何其他依赖一样被注入、组合和测试。

这种解耦让你把 AI 代码写成对「你想要发生什么」的纯粹描述,稍后再解决它如何发生 —— 无论是接入 OpenAI、Anthropic、用于测试的 mock 服务,还是你自己定制的 LLM 后端。


Effect 的 AI 生态由若干专注特定职责的包组成:

@effect/ai

定义了与 LLM 提供商服务交互的核心抽象。该包定义了以与提供商无关的方式构建 AI 应用所需的通用服务与辅助工具。

使用这个包可以:

  • 定义你的应用与 LLM 的交互方式
  • 使用 Effect 组织对话或补全流程
  • 构建类型安全、声明式的 AI 逻辑

详细的 API 文档请参见 API 参考

@effect/ai-openai

OpenAI API 支撑的 @effect/ai 服务的具体实现。

支持的服务包括:

详细的 API 文档请参见 API 参考

@effect/ai-anthropic

Anthropic API 支撑的 @effect/ai 服务的具体实现。

支持的服务包括:

详细的 API 文档请参见 API 参考

@effect/ai-amazon-bedrock

Amazon Bedrock 支撑的 @effect/ai 服务的具体实现。

支持的服务包括:

详细的 API 文档请参见 API 参考

@effect/ai-google

Google Generative AI 支撑的 @effect/ai 服务的具体实现。

支持的服务包括:

详细的 API 文档请参见 API 参考