
effect-smol AI模块完全指南提供商无关的LLM接口【免费下载链接】effect-smolCore libraries and experimental work for Effect v4项目地址: https://gitcode.com/GitHub_Trending/ef/effect-smoleffect-smol 是 Effect v4 核心库的官方仓库其AI 模块提供了一套提供商无关的 LLM 接口你只需实现一次业务逻辑就可以在 OpenAI、Anthropic、OpenRouter 等多家大模型服务之间自由切换。本指南带你快速上手这套接口包括文本生成、结构化输出、流式响应、工具调用与多会话管理。一、为什么选择 effect-smol 的 AI 模块传统 LLM SDK 往往绑定单一提供商更换供应商意味着重写大量代码。effect-smol 的 AI 模块采用统一抽象设计带来三大好处特性说明 提供商无关LanguageModel统一接口切换 OpenAI / Anthropic 只需更换 Layer 结构化输出基于Schema校验模型返回对象自动解码与验证️ 多供应商容灾ExecutionPlan支持失败自动降级到备用模型核心接口定义在 packages/effect/src/unstable/ai/ 目录包含 LanguageModel.ts、Chat.ts、Tool.ts 等关键模块。二、4 个官方提供商包一览仓库在 packages/ai/ 下提供了四个开箱即用的提供商适配包effect/ai-openai—— 官方 OpenAI 客户端与模型源码见 OpenAiLanguageModel.tseffect/ai-anthropic—— Claude 系列模型适配源码见 AnthropicLanguageModel.tseffect/ai-openai-compat—— 兼容任意 OpenAI 风格 API 的自托管模型effect/ai-openrouter—— 通过 OpenRouter 一站式接入多家模型源码见 OpenRouterLanguageModel.ts配置模式完全一致用Config从环境变量读取 API Key再叠加一个HttpClient即可例如OpenAiClient.layerConfig与AnthropicClient.layerConfig。三、LanguageModel 的 3 种输出模式LanguageModel是整套接口的核心提供三种生成方式完整示例见 ai-docs/src/71_ai/10_language-model.ts1️⃣ 纯文本生成generateText传入 prompt 即可获取回复响应自带finishReason、usagetoken 用量等便捷字段无需手动解析。2️⃣ 结构化对象generateObject传入一个Schema模型输出会被自动校验并解码为类型安全的对象。比如把一段会议笔记直接转成带受众、渠道、日期、风险的 LaunchPlan 对象省去脆弱的 JSON 解析代码。3️⃣ 流式响应streamText返回Stream可逐段接收text-delta部分非常适合打字机效果的聊天界面。四、ExecutionPlan多提供商自动降级 ⭐这是最实用的特性之一。用ExecutionPlan.make可以定义先试便宜模型、失败再切昂贵模型的降级策略const DraftPlan ExecutionPlan.make( { provide: OpenAiLanguageModel.model(gpt-5.2), attempts: 3 }, { provide: AnthropicLanguageModel.model(claude-opus-4-6), attempts: 2 } )上面表示先用 OpenAI 模型尝试 3 次失败后自动回退到 Anthropic 模型。业务代码通过Effect.withExecutionPlan(draftsModel)应用该策略一行代码获得跨供应商容灾能力。五、Tools 与 Toolkit让模型调用你的函数AI 模块内置了类型安全的工具调用体系示例见 ai-docs/src/71_ai/20_tools.ts定义工具Tool.make指定名称、描述、参数 Schema 和成功结果 Schema组成工具箱Toolkit.make把多个工具聚合为类型化工具箱实现处理器toLayer返回一个Layer为每个工具提供 Effect 形式的处理器传给模型调用generateText时传入toolkit框架自动完成参数解析、调用处理器、回填结果的闭环还支持toolChoice: required强制模型先调用工具以及提供商内置工具如 OpenAI 的 WebSearch与自定义工具混用。六、Chat 模块有状态的多轮对话Chat.ts 提供自动维护会话历史的对话能力示例见 ai-docs/src/71_ai/30_chat.tsChat.fromPrompt创建会话可附带 system 提示词每一轮session.generateText都会自动累积上下文无需手动管理消息数组exportJson/fromJson支持会话序列化与恢复每轮可注入不同模型实现对话中途切换供应商配合Toolkit即可构建代理循环Agent Loop模型调用工具 → 框架回填结果 → 直到模型给出最终答案七、错误处理与可观测性统一的 AiError.ts 错误类型含AiErrorReason可用Schema.TaggedErrorClass映射为你的业务错误各提供商包内置遥测模块如 OpenAiTelemetry.ts便于接入 OpenTelemetry 追踪八、快速上手路径 步骤建议阅读1. 语言模型基础用法ai-docs/src/71_ai/10_language-model.ts2. 定义与调用工具ai-docs/src/71_ai/20_tools.ts3. 有状态对话与代理ai-docs/src/71_ai/30_chat.ts4. AI 模块总览文档ai-docs/src/71_ai/index.md5. 核心类型定义packages/effect/src/unstable/ai/index.ts只需记住一句话配置提供商一次用统一的LanguageModel接口写业务切换模型和供应商只是换一层 Layer 的事—— 这正是 effect-smol AI 模块提供商无关设计的核心价值。【免费下载链接】effect-smolCore libraries and experimental work for Effect v4项目地址: https://gitcode.com/GitHub_Trending/ef/effect-smol创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考