ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AI SDK Prodia Provider 接入指南:在 TypeScript 中调用 Prodia 图像生成 API

AI SDK Prodia Provider 接入指南:在 TypeScript 中调用 Prodia 图像生成 API AI SDK Prodia Provider 接入指南在 TypeScript 中调用 Prodia 图像生成 API【免费下载链接】aiThe AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents项目地址: https://gitcode.com/GitHub_Trending/ai/ai本文档介绍 AI SDK 官方 Prodia Providerai-sdk/prodia的安装、配置与使用方式。Prodia 是一个面向生成式 AI 的快速推理平台提供基于 FLUX 与 Stable Diffusion 的高速图像生成服务。通过本指南你将掌握如何在 TypeScript 项目中创建 Prodia Provider 实例、调用generateImage完成文本到图像的生成、透传providerOptions.prodia附加参数尺寸、步数、风格预设、LoRA 等并理解底层job?pricetrue异步任务接口与 multipart 响应解析的实现细节。安装与引入Prodia Provider 以ai-sdk/prodia模块发布可通过包管理器直接安装当前仓库中该包的版本为 2.0.40见 packages/prodia/package.jsonpnpm add ai-sdk/prodia该包依赖ai-sdk/provider与ai-sdk/provider-utils工作区内部依赖并以zod作为 peer dependency^3.25.76 || ^4.1.8。安装完成后即可导入默认的 Provider 实例import { prodia } from ai-sdk/prodia;ai-sdk/prodia的公共导出集中在 packages/prodia/src/index.ts包括createProdia、默认实例prodia、类型ProdiaProvider、ProdiaProviderSettings、ProdiaImageModelOptions旧名ProdiaImageProviderOptions已被标记为 deprecated 别名以及各模型的 ID 类型。Provider 实例与自定义配置默认导出prodia是一个零配置实例适合开箱即用。若需要自定义 API Key、代理地址或请求行为可使用createProdia工厂函数import { createProdia } from ai-sdk/prodia; const prodia createProdia({ apiKey: process.env.PRODIA_TOKEN, baseURL: https://inference.prodia.com/v2, headers: { /* 自定义请求头 */ }, });createProdia支持的完整配置项定义在 packages/prodia/src/prodia-provider.ts 的ProdiaProviderSettings接口中配置项类型说明apiKeystringProdia API Key通过Authorization: Bearer key请求头发送。默认从PRODIA_TOKEN环境变量读取。baseURLstringAPI 基础地址默认https://inference.prodia.com/v2。headersRecordstring, string附加到每个请求的自定义请求头。fetchFetchFunction自定义 fetch 实现可用于拦截请求、添加中间件或注入测试用 mock。从源码实现看createProdia在构造时会做两件事用withoutTrailingSlash去除baseURL末尾多余的斜杠用withUserAgentSuffix在请求头中追加形如ai-sdk/prodia/2.0.40的 UA 后缀版本号取自 packages/prodia/src/version.ts。API Key 通过loadApiKey惰性加载——即只有在真正发起请求时才会从PRODIA_TOKEN环境变量读取未配置时会抛出明确的错误提示。图像生成第一个 text-to-image 调用Prodia Provider 实现了 AI SDK 的ImageModelV4接口specificationVersion v4因此可以无缝接入ai包顶层导出的generateImage。以下是最简示例import fs from node:fs; import { prodia } from ai-sdk/prodia; import { generateImage } from ai; const { image } await generateImage({ model: prodia.image(inference.flux-fast.schnell.txt2img.v2), prompt: A cat wearing a intricate robe, }); const filename image-${Date.now()}.png; fs.writeFileSync(filename, image.uint8Array); console.log(Image saved to ${filename});prodia.image(modelId)工厂方法用于创建图像模型。当前仓库中声明了两个明确的图像模型 ID见 packages/prodia/src/prodia-image-settings.ts模型 ID说明inference.flux-fast.schnell.txt2img.v2快速版 FLUX Schnell 文本生成图像模型inference.flux.schnell.txt2img.v2FLUX Schnell 文本生成图像模型由于模型 ID 类型是string {}的联合扩展你也可以传入 Prodia 官方文档中列出的其他模型 ID该 Provider 只约束了推荐的模型类型并不会在类型层面拒绝其他 ID。返回值image对象包含uint8Array形式的 PNG 二进制数据直接写入文件即可落盘。值得注意的是ProdiaImageModel的maxImagesPerCall 1见 packages/prodia/src/prodia-image-model.ts即单次调用最多返回一张图。使用size参数控制输出尺寸除providerOptions外generateImage原生支持size参数WIDTHxHEIGHT格式const { image } await generateImage({ model: prodia.image(inference.flux-fast.schnell.txt2img.v2), prompt: A serene mountain landscape at sunset, size: 1024x768, });从 packages/prodia/src/prodia-image-model.ts 的getArgs实现可见size会被拆分为width/height并写入任务配置若格式非法例如缺少x分隔或非数字Provider 不会报错中断而是产生一条unsupported类型的 warning并回退为不传尺寸。使用seed参数复现结果generateImage的seed参数会原样透传到任务配置中jobConfig.seed seed用于复现可重复的生成结果const { image } await generateImage({ model: prodia.image(inference.flux-fast.schnell.txt2img.v2), prompt: A serene mountain landscape at sunset, seed: 12345, });生成完成后实际使用的 seed 会通过providerMetadata返回方便你记录并复现每一次生成。providerOptions.prodia透传 Prodia 专属参数如果你想在 prompt 之外传递额外的模型输入请使用providerOptions.prodia属性。该对象会经过 packages/prodia/src/prodia-image-model-options.ts 中的 zod schema 严格校验类型可由ProdiaImageModelOptions旧称ProdiaImageProviderOptions标注import { prodia, type ProdiaImageModelOptions } from ai-sdk/prodia; import { generateImage } from ai; const { image } await generateImage({ model: prodia.image(inference.flux-fast.schnell.txt2img.v2), prompt: A cat wearing an intricate robe, providerOptions: { prodia: { width: 1024, height: 1024, steps: 4, stylePreset: cinematic, } satisfies ProdiaImageModelOptions, }, });支持的图像选项与取值范围下表汇总了providerOptions.prodia支持的字段取值范围来自源码中的 zod schema 定义选项类型取值范围/默认说明stepsnumber整数1–4计算迭代步数步数越多通常质量越高。widthnumber整数256–1920输出图像宽度像素。设置后覆盖size解析出的宽度。heightnumber整数256–1920输出图像高度像素。设置后覆盖size解析出的高度。stylePresetstring17 个枚举值见下为输出图像应用视觉风格主题。lorasstring[]最多 3 个使用 LoRA 模型增强输出。progressiveboolean—使用 JPEG 输出时返回渐进式 JPEG。stylePreset支持的完整枚举为3d-model、analog-film、anime、cinematic、comic-book、digital-art、enhance、fantasy-art、isometric、line-art、low-poly、neon-punk、origami、photographic、pixel-art、texture、craft-clay。底层参数映射从 packages/prodia/src/prodia-image-model.ts 的实现可以看到这些选项在底层是如何映射到 Prodia 任务配置的width/height优先取providerOptions中的值其次才回退到size解析结果steps直接映射为stepsstylePreset会转换为下划线风格的style_preset字段loras与progressive分别映射为loras与progressive。最终请求体为{ type: modelId, config: jobConfig }的结构。配置 Base URLProvider 默认使用https://inference.prodia.com/v2作为 API 基础地址。如果使用了代理网关、私有部署或其他兼容端点可通过createProdia的baseURL覆盖import { createProdia } from ai-sdk/prodia; const prodia createProdia({ baseURL: https://inference.prodia.com/v2, apiKey: process.env.PRODIA_TOKEN, });创建后的 Provider 实例会同时提供image/imageModel图像生成、languageModel多模态 img2img与video/videoModel实验性视频生成工厂方法所有模型共享同一baseURL与鉴权配置。另外该 Provider 未实现 embedding 能力——调用embeddingModel或textEmbeddingModel会抛出NoSuchModelError见 packages/prodia/src/prodia-provider.ts。深入源码任务接口与 multipart 响应解析Prodia 的图像生成在底层是一个异步任务接口。ProdiaImageModel.doGenerate会向${baseURL}/job?pricetrue发起 POST 请求pricetrue用于同时获取计价信息请求头声明Accept: multipart/form-data; image/png随后解析返回的 multipart 响应实现见 packages/prodia/src/prodia-image-model.ts 与 packages/prodia/src/prodia-api.ts 中的parseMultipart。multipart 响应包含两类 partnamejob的 JSON part包含任务 ID、创建/更新时间、状态、指标耗时elapsed、每秒迭代ips与价格信息解析 schema 定义在 packages/prodia/src/prodia-api.tsnameoutput或image/*类型的 part即生成的图像二进制数据直接作为image.uint8Array返回。任务结果会通过buildProdiaProviderMetadatapackages/prodia/src/prodia-api.ts整理进providerMetadata.prodia.images[]可用字段如下字段类型说明jobIdstring生成任务唯一标识seednumber实际使用的随机种子可用于复现elapsednumber生成耗时秒iterationsPerSecondnumber每秒迭代次数反映处理速度createdAt/updatedAtstring任务创建/更新时间戳dollarsnumber本次生成的价格美元在应用中读取这些元数据的示例const { image, providerMetadata } await generateImage({ model: prodia.image(inference.flux-fast.schnell.txt2img.v2), prompt: A serene mountain landscape at sunset, }); const metadata providerMetadata?.prodia?.images?.[0]; console.log(Job ID:, metadata?.jobId); console.log(Seed:, metadata?.seed); console.log(Elapsed:, metadata?.elapsed);此外图像模型还实现了WORKFLOW_SERIALIZE/WORKFLOW_DESERIALIZE见 packages/prodia/src/prodia-image-model.ts支持在 AI SDK Workflow 等场景中对模型实例进行序列化与反序列化保证跨步骤/跨进程的可移植性。更多能力多模态 img2img 与视频生成除了图像生成ai-sdk/prodia还封装了另外两类模型能力可结合 AI SDK 的generateText与实验性视频 API 使用。多模态语言模型img2imgprodia.languageModel(inference.nano-banana.img2img.v2)创建一个输入图像 文本、输出文本与图像的模型。从 packages/prodia/src/prodia-language-model.ts 的实现看它使用FormData以multipart/form-data提交任务jobpart 为 JSON 配置inputpart 为输入图像并在请求配置中加入include_messages: true系统消息会拼接到 prompt 之前输入图像支持dataUint8Array/Base64与url会通过 fetch 拉取两种形式。同时该模型对temperature、topP、topK、tools、maxOutputTokens等通用 LLM 参数会以unsupportedwarning 形式忽略。视频生成实验性prodia.video(inference.wan2-2.lightning.txt2vid.v0)与inference.wan2-2.lightning.img2vid.v0对应文本生成视频与图像生成视频两个模型 ID见 packages/prodia/src/prodia-video-model-settings.ts实现了Experimental_VideoModelV4接口属于实验性 API接口细节可能随 AI SDK 演进调整。小结ai-sdk/prodia为 TypeScript 开发者提供了对 Prodia 高速图像推理平台的标准化接入安装一个包、创建一个 Provider 实例即可通过generateImage与 AI SDK 的其他模型无缝组合使用。本文梳理了从环境变量鉴权、Base URL 覆盖、providerOptions.prodia参数透传宽度/高度/步数/风格预设/LoRA/渐进式 JPEG到任务元数据读取的完整链路并深入到了job异步接口与 multipart 响应解析的源码实现。若需在 Vercel 等平台使用 AI Gateway 代理访问 Prodia无需额外包与 API Key可参考相应平台的 AI Gateway 文档完整的 Provider 说明文档同时存放在仓库的 content/providers/01-ai-sdk-providers/65-prodia.mdx。【免费下载链接】aiThe AI Toolkit for TypeScript. From the creators of Next.js, the AI SDK is a free open-source library for building AI-powered applications and agents项目地址: https://gitcode.com/GitHub_Trending/ai/ai创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表