Effect AI 简介
介绍 Effect 的 AI 集成 —— 一组用于与大语言模型交互的包
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 服务的具体实现。
支持的服务包括:
LanguageModel(通过 OpenAI 的 Chat Completions API)EmbeddingsModel(通过 OpenAI 的 Embeddings API)
详细的 API 文档请参见 API 参考。
@effect/ai-anthropic
由 Anthropic API 支撑的 @effect/ai 服务的具体实现。
支持的服务包括:
LanguageModel(通过 Anthropic 的 Messages API)
详细的 API 文档请参见 API 参考。
@effect/ai-amazon-bedrock
由 Amazon Bedrock 支撑的 @effect/ai 服务的具体实现。
支持的服务包括:
LanguageModel(通过 Amazon Bedrock 的 Converse API)
详细的 API 文档请参见 API 参考。
@effect/ai-google
由 Google Generative AI 支撑的 @effect/ai 服务的具体实现。
支持的服务包括:
LanguageModel(通过 Google 的 Gemini API)
详细的 API 文档请参见 API 参考。