AI SDK

提供统一的 AI 模型配置中心,支持各大主流 AI 模型,一次配置处处可用,无需重复设置 API Key。

circle-exclamation

AI SDK 依赖插件简介

「AI SDK 依赖插件」是一款面向插件开发者的开发工具包,提供统一的 AI 模型配置中心,支持各大主流 AI 模型,一次配置,处处可用。通过整合 AI SDK,开发者可在自身的插件中轻松实现文字生成、结构化对象生成以及流式处理等 AI 功能。

统一配置中心:一次设置,处处可用

AI SDK 插件支持以下 8 个 Provider:

商业模型

  • OpenAI(GPT-5.2、GPT-5、o3 等)

  • Anthropic Claude(Claude Sonnet 4.6、Claude Opus 4.6 等)

  • Google Gemini(Gemini 3 Pro、Gemini 3 Flash 等)

  • DeepSeek(DeepSeek V3、DeepSeek R1 等)

  • 通义千问(Qwen3 系列)

OpenAI 兼容协议(连接任何兼容 OpenAI API 的服务):

  • OpenAI Compatible(支持 Groq、Together AI、Fireworks、vLLM 等)

本地模型(完全离线运行):

  • Ollama(支持 Llama 4、Qwen3、Gemma 3 等)

  • LM Studio(图形化界面,新手友好)

后续版本将陆续增加更多主流模型服务提供商的支持。

配置一次后,所有 AI 相关插件都能直接使用,无需重复设置。例如:你安装了「AI 翻译」与「AI 重新命名」插件,它们都会自动共用你在 AI SDK 里填好的配置,甚至可以各自选择不同的模型,而不需要再次输入 API Key。

开放的开发环境

基于 ai-sdk.devarrow-up-right 标准(AI SDK v6),AI SDK 插件为开发者提供了一组干净、稳定的基础设施。开发者不用再花心力处理 API Key 存储、模型切换、错误处理等基础配置,可以专注于插件的功能创新。唯一的区别在于 Provider 的获取方式——我们使用自行开发的 Provider 来确保更好的稳定性和用户体验。

circle-info

版本说明:此插件基于 AI SDK v6 构建,与 ai-sdk.devarrow-up-right 官方文档保持同步。


安装与设置

安装步骤

  1. 进入 Eagle 插件中心

  2. 搜索并找到「AI SDK」插件

  3. 点击安装

  4. 安装完成后,打开 偏好设置,在左侧栏找到「AI 模型

  5. 在右侧设置区块中配置模型服务提供商,并设置默认模型(语言模型、视觉模型)

circle-info

当用户安装具有 AI SDK 依赖的插件时,Eagle 会自动提示用户安装「AI SDK 依赖插件」。因此,开发者无需专门编写代码让用户进行安装,系统会自动确保相关依赖已安装后才允许插件运行。

在 manifest.json 中声明依赖

在插件的 manifest.json 中加入 dependencies 字段:

关键设置为 "dependencies": ["ai-sdk"],这会让 Eagle 知道此插件需要 AI SDK 才能运作。


快速开始

获取 AI SDK 模块:

推荐做法:使用默认模型

用户通常会在偏好设置的「AI 模型」中,事先选好偏好的语言模型与视觉模型。通过 getDefaultModel() 直接继承用户的选择,是最简单也最推荐的做法:

circle-check

指定特定 Provider

如果你的插件确实需要使用特定的 Provider(例如只有 OpenAI 支持的功能),也可以直接指定:


核心概念

Provider 与 Model 的关系

AI SDK 采用双层结构:Provider(提供者)负责管理 API 连接与认证,Model(模型)则是实际执行 AI 任务的单位。

provider::model 格式

triangle-exclamation

此格式用于 getModel()getDefaultModel() 等方法。

同步 vs 异步方法

AI SDK 中的方法明确区分为同步与异步两类:

同步方法(无需 await):

  • getProviders()getProvider()getAvailableProviders()getModel()

  • getDefaultModel()

异步方法(需要 await):

  • generateText()generateObject()streamText()streamObject()

  • Provider 实例的 verify()getModels()hasModel()

获取 Model 的三种方式

circle-check

generateText() — 基本文字生成

使用指定模型生成文字回应。

基本用法(prompt)

使用 messages 数组

通过 messages 可以设置系统提示词与多轮对话:

多模态(文字 + 图片)

circle-info

更多 generateText 的进阶用法(如 maxTokenstemperature 等参数),请参考 AI SDK 官方文档arrow-up-right


generateObject() — 结构化对象生成

让 AI 依照指定的 Schema 返回结构化 JSON 对象。

使用 Zod Schema

使用 JSON Schema

图片分析示例

circle-info

更多 generateObject 的进阶用法,请参考 AI SDK 官方文档arrow-up-right


streamText() — 流式文字生成

以流式方式逐步接收 AI 回应,适合需要即时显示结果的场景。

即时显示在 UI 中

circle-info

更多 streamText 的进阶用法,请参考 AI SDK 官方文档arrow-up-right


streamObject() — 流式对象生成

以流式方式逐步接收结构化对象,每次迭代会收到目前已解析的部分对象。

circle-check
circle-info

更多 streamObject 的进阶用法,请参考 AI SDK 官方文档arrow-up-right


Provider 管理方法

以下方法皆为同步方法,无需使用 await


getProviders()

获取所有已注册的 Provider 数组。

  • 返回 ProviderFunction[] — 所有 Provider 的数组

triangle-exclamation

getProvider(providerName)

获取指定名称的 Provider。

  • providerName string — Provider 名称(如 "openai""google"

  • 返回 ProviderFunction | undefined — 找到的 Provider,若不存在则返回 undefined

circle-info

如果需要获取特定 Provider,建议使用 getProvider() 而非 getProviders(),代码更简洁清晰。但在多数情况下,直接使用 getDefaultModel() 是更好的选择。


getAvailableProviders()

获取所有已配置(用户已完成设置)的 Provider。

  • 返回 ProviderFunction[] — 已配置的 Provider 数组

circle-info

此方法与 getProviders() 的差异在于:getProviders() 返回所有 8 个 Provider(含未配置的),getAvailableProviders() 仅返回用户已完成设置的 Provider。


getModel(providerAndModel)

通过 provider::model 格式直接获取模型实例。

  • providerAndModel string — 格式为 "provider::model"

  • 返回 Model — 可直接传入 generateText() 等方法的模型对象

triangle-exclamation

设置与刷新


open()

打开偏好设置中的「AI 模型」设置面板。适合在插件界面中提供「模型设置」按钮,让用户快速配置模型服务提供商与默认模型。

  • 返回 void

circle-check

reload()

重新加载 AI SDK 配置。当用户通过 open() 打开设置面板并调整配置后,调用此方法即可读取到最新的配置。

  • 返回 void

circle-info

open() 不会阻塞程序执行,系统无法得知用户何时完成设置。建议在需要使用模型时调用 reload() 确保读取到最新配置。


默认模型方法

AI SDK 支持设置和读取默认模型,让用户可以在偏好设置的「AI 模型」中统一指定偏好的模型。


getDefaultModel(type)

获取指定类型的默认模型。此为同步方法

  • type string — 模型类型,可选值:"chat"(语言模型)或 "image"(视觉模型)

  • 返回 string | undefined — 默认模型的 "provider::model" 字符串,若未设置则返回 undefined

circle-info

用户可以在偏好设置的「AI 模型」中分别选择偏好的语言模型"chat")和视觉模型"image"),插件可各取所需。


Provider 实例方法

通过 getProvider() 获取的 Provider 实例,除了可作为函数调用来获取 Model 之外,还提供以下方法。


verify()

验证 Provider 的连接与认证是否有效。用来检查用户目前的配置是否能正常连接。

  • 返回 Promise<VerifyResult> — 验证结果对象

    • ok boolean — 验证是否成功

    • error APIError(可选) — 失败时的错误详情

triangle-exclamation

getModels()

获取此 Provider 所有可用的模型列表。

  • 返回 Promise<string[]> — 模型 ID 数组

circle-info

此方法会向 Provider 的 API 发送请求,请确保用户已完成该 Provider 的配置。若未配置,会抛出 APIError


hasModel(modelId)

检查此 Provider 是否包含指定模型。

  • modelId string — 模型 ID(如 "gpt-5"

  • 返回 Promise<boolean> — 是否存在


Provider 实例属性

以下为 Provider 实例的只读属性:


name string

Provider 的名称。


baseURL string | undefined

目前设置的 API 端点。


支持的 Provider 一览表

Provider
名称
类型
默认 Base URL

OpenAI

"openai"

商业(云端)

需手动设置

Anthropic

"anthropic"

商业(云端)

需手动设置

Google Gemini

"google"

商业(云端)

需手动设置

DeepSeek

"deepseek"

商业(云端)

需手动设置

通义千问

"tongyi"

商业(云端)

https://dashscope.aliyuncs.com/compatible-mode/v1

OpenAI Compatible

"openai-compatible"

兼容协议

用户自行设置

Ollama

"ollama"

本地

http://localhost:11434/v1

LM Studio

"lmstudio"

本地

http://localhost:1234/v1

circle-info

OpenAI Compatible 可连接任何兼容 OpenAI API 的服务(如 Groq、Together AI、Fireworks、vLLM 等)。API Key 为选填——云端服务通常需要,本地服务则不需要。使用时需自行提供 Base URL。

triangle-exclamation

错误处理

APIError 类

AI SDK 在 API 请求失败时会抛出 APIError,包含完整的错误信息。

属性

属性
类型
说明

message

string

错误消息

status

number | undefined

HTTP 状态码(如 401、403、500)

statusText

string | undefined

HTTP 状态文字(如 "Unauthorized")

code

string | undefined

错误码(从响应内容中提取)

provider

string | undefined

Provider 名称

url

string | undefined

请求的 URL

responseBody

unknown

服务器返回的原始错误内容

方法

方法
说明

toJSON()

返回完整错误详情对象(适合记录日志)

toString()

返回错误消息字符串

错误处理示例

网络错误

当无法连接到 Provider 时(如本地 Ollama 未启动),也会收到 APIError


最佳实践

1. 优先使用默认模型

这是最重要的建议。使用 getDefaultModel() 直接继承用户在 AI SDK 设置界面中的偏好,而非在代码中写死特定的 Provider 和模型:

为什么不要写死模型? 如果你在代码中指定 ai.getProvider("openai")("gpt-5"),但用户没有配置 OpenAI,就会出错。你需要额外处理「Provider 未配置」的边界情况,这很麻烦。使用默认模型则能保证用户已经配置并验证过,省去大量防御性代码。

2. 正确处理 verify() 结果

3. 流式适用于长文本生成

当预期回应较长时,使用 streamText() 提供更好的用户体验:


完整示例

以下为一个综合性的插件示例,展示如何正确使用 AI SDK 的主要功能:


API 速查表

AI SDK 顶层方法

方法
同步/异步
返回类型
说明

getProviders()

同步

ProviderFunction[]

获取所有 Provider

getProvider(name)

同步

ProviderFunction | undefined

获取指定 Provider

getAvailableProviders()

同步

ProviderFunction[]

获取已配置的 Provider

getModel(provider::model)

同步

Model

获取模型实例

getDefaultModel(type)

同步

string | undefined

获取默认模型

open()

同步

void

打开偏好设置的模型设置面板

reload()

同步

void

重新加载最新配置

generateText(options)

异步

Promise<GenerateTextResult>

生成文字

generateObject(options)

异步

Promise<GenerateObjectResult>

生成结构化对象

streamText(options)

异步

StreamTextResult

流式文字生成

streamObject(options)

异步

StreamObjectResult

流式对象生成

Provider 实例方法

方法
同步/异步
返回类型
说明

provider(modelId)

同步

Model

获取模型(函数调用)

verify()

异步

Promise<VerifyResult>

验证连接与认证

getModels()

异步

Promise<string[]>

获取模型列表

hasModel(modelId)

异步

Promise<boolean>

检查模型是否存在

Provider 实例属性

属性
类型
说明

name

string

Provider 名称(只读)

baseURL

string | undefined

API 端点(只读)

VerifyResult

属性
类型
说明

ok

boolean

验证是否成功

error

APIError | undefined

失败时的错误对象

最后更新于