的LLM接口)
effect-smol AI模塊完全指南提供商無關(guān)的LLM接口【免費(fèi)下載鏈接】effect-smolCore libraries and experimental work for Effect v4項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ef/effect-smoleffect-smol 是 Effect v4 核心庫的官方倉庫其AI 模塊提供了一套提供商無關(guān)的 LLM 接口你只需實(shí)現(xiàn)一次業(yè)務(wù)邏輯就可以在 OpenAI、Anthropic、OpenRouter 等多家大模型服務(wù)之間自由切換。本指南帶你快速上手這套接口包括文本生成、結(jié)構(gòu)化輸出、流式響應(yīng)、工具調(diào)用與多會話管理。一、為什么選擇 effect-smol 的 AI 模塊傳統(tǒng) LLM SDK 往往綁定單一提供商更換供應(yīng)商意味著重寫大量代碼。effect-smol 的 AI 模塊采用統(tǒng)一抽象設(shè)計帶來三大好處特性說明 提供商無關(guān)LanguageModel統(tǒng)一接口切換 OpenAI / Anthropic 只需更換 Layer 結(jié)構(gòu)化輸出基于Schema校驗(yàn)?zāi)P头祷貙ο笞詣咏獯a與驗(yàn)證? 多供應(yīng)商容災(zāi)ExecutionPlan支持失敗自動降級到備用模型核心接口定義在 packages/effect/src/unstable/ai/ 目錄包含 LanguageModel.ts、Chat.ts、Tool.ts 等關(guān)鍵模塊。二、4 個官方提供商包一覽倉庫在 packages/ai/ 下提供了四個開箱即用的提供商適配包effect/ai-openai—— 官方 OpenAI 客戶端與模型源碼見 OpenAiLanguageModel.tseffect/ai-anthropic—— Claude 系列模型適配源碼見 AnthropicLanguageModel.tseffect/ai-openai-compat—— 兼容任意 OpenAI 風(fēng)格 API 的自托管模型effect/ai-openrouter—— 通過 OpenRouter 一站式接入多家模型源碼見 OpenRouterLanguageModel.ts配置模式完全一致用Config從環(huán)境變量讀取 API Key再疊加一個HttpClient即可例如OpenAiClient.layerConfig與AnthropicClient.layerConfig。三、LanguageModel 的 3 種輸出模式LanguageModel是整套接口的核心提供三種生成方式完整示例見 ai-docs/src/71_ai/10_language-model.ts1?? 純文本生成generateText傳入 prompt 即可獲取回復(fù)響應(yīng)自帶finishReason、usagetoken 用量等便捷字段無需手動解析。2?? 結(jié)構(gòu)化對象generateObject傳入一個Schema模型輸出會被自動校驗(yàn)并解碼為類型安全的對象。比如把一段會議筆記直接轉(zhuǎn)成帶受眾、渠道、日期、風(fēng)險的 LaunchPlan 對象省去脆弱的 JSON 解析代碼。3?? 流式響應(yīng)streamText返回Stream可逐段接收text-delta部分非常適合打字機(jī)效果的聊天界面。四、ExecutionPlan多提供商自動降級 ?這是最實(shí)用的特性之一。用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 模型。業(yè)務(wù)代碼通過Effect.withExecutionPlan(draftsModel)應(yīng)用該策略一行代碼獲得跨供應(yīng)商容災(zāi)能力。五、Tools 與 Toolkit讓模型調(diào)用你的函數(shù)AI 模塊內(nèi)置了類型安全的工具調(diào)用體系示例見 ai-docs/src/71_ai/20_tools.ts定義工具Tool.make指定名稱、描述、參數(shù) Schema 和成功結(jié)果 Schema組成工具箱Toolkit.make把多個工具聚合為類型化工具箱實(shí)現(xiàn)處理器toLayer返回一個Layer為每個工具提供 Effect 形式的處理器傳給模型調(diào)用generateText時傳入toolkit框架自動完成參數(shù)解析、調(diào)用處理器、回填結(jié)果的閉環(huán)還支持toolChoice: required強(qiáng)制模型先調(diào)用工具以及提供商內(nèi)置工具如 OpenAI 的 WebSearch與自定義工具混用。六、Chat 模塊有狀態(tài)的多輪對話Chat.ts 提供自動維護(hù)會話歷史的對話能力示例見 ai-docs/src/71_ai/30_chat.tsChat.fromPrompt創(chuàng)建會話可附帶 system 提示詞每一輪session.generateText都會自動累積上下文無需手動管理消息數(shù)組exportJson/fromJson支持會話序列化與恢復(fù)每輪可注入不同模型實(shí)現(xiàn)對話中途切換供應(yīng)商配合Toolkit即可構(gòu)建代理循環(huán)Agent Loop模型調(diào)用工具 → 框架回填結(jié)果 → 直到模型給出最終答案七、錯誤處理與可觀測性統(tǒng)一的 AiError.ts 錯誤類型含AiErrorReason可用Schema.TaggedErrorClass映射為你的業(yè)務(wù)錯誤各提供商包內(nèi)置遙測模塊如 OpenAiTelemetry.ts便于接入 OpenTelemetry 追蹤八、快速上手路徑 步驟建議閱讀1. 語言模型基礎(chǔ)用法ai-docs/src/71_ai/10_language-model.ts2. 定義與調(diào)用工具ai-docs/src/71_ai/20_tools.ts3. 有狀態(tài)對話與代理ai-docs/src/71_ai/30_chat.ts4. AI 模塊總覽文檔ai-docs/src/71_ai/index.md5. 核心類型定義packages/effect/src/unstable/ai/index.ts只需記住一句話配置提供商一次用統(tǒng)一的LanguageModel接口寫業(yè)務(wù)切換模型和供應(yīng)商只是換一層 Layer 的事—— 這正是 effect-smol AI 模塊提供商無關(guān)設(shè)計的核心價值?!久赓M(fèi)下載鏈接】effect-smolCore libraries and experimental work for Effect v4項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ef/effect-smol創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考