@llmgateway/ai-sdk-provider 3.2.1 → 3.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { LanguageModelV2, LanguageModelV2CallOptions, LanguageModelV2Content, LanguageModelV2FinishReason, LanguageModelV2Usage, LanguageModelV2CallWarning, LanguageModelV2ResponseMetadata, SharedV2Headers, LanguageModelV2StreamPart } from '@ai-sdk/provider';
1
+ import { LanguageModelV2, LanguageModelV2CallOptions, LanguageModelV2Content, LanguageModelV2FinishReason, LanguageModelV2Usage, LanguageModelV2CallWarning, LanguageModelV2ResponseMetadata, SharedV2Headers, LanguageModelV2StreamPart, ImageModelV3, ImageModelV3CallOptions, SharedV3Warning } from '@ai-sdk/provider';
2
2
  export { LanguageModelV2, LanguageModelV2Prompt } from '@ai-sdk/provider';
3
3
  import { models, Provider } from '@llmgateway/models';
4
4
 
@@ -132,6 +132,9 @@ type LLMGatewayCompletionSettings = {
132
132
  suffix?: string;
133
133
  } & LLMGatewaySharedSettings;
134
134
 
135
+ type LLMGatewayImageModelId = string;
136
+ type LLMGatewayImageSettings = {};
137
+
135
138
  type LLMGatewayChatConfig = {
136
139
  provider: string;
137
140
  compatibility: 'strict' | 'compatible';
@@ -209,6 +212,34 @@ declare class LLMGatewayCompletionLanguageModel implements LanguageModelV2 {
209
212
  doStream(options: LanguageModelV2CallOptions): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>>;
210
213
  }
211
214
 
215
+ type LLMGatewayImageConfig = {
216
+ provider: string;
217
+ headers: () => Record<string, string | undefined>;
218
+ url: (options: {
219
+ modelId: string;
220
+ path: string;
221
+ }) => string;
222
+ fetch?: typeof fetch;
223
+ };
224
+ declare class LLMGatewayImageModel implements ImageModelV3 {
225
+ readonly specificationVersion: "v3";
226
+ readonly provider: string;
227
+ readonly modelId: LLMGatewayImageModelId;
228
+ readonly maxImagesPerCall: number | undefined;
229
+ readonly settings: LLMGatewayImageSettings;
230
+ private readonly config;
231
+ constructor(modelId: LLMGatewayImageModelId, settings: LLMGatewayImageSettings, config: LLMGatewayImageConfig);
232
+ doGenerate(options: ImageModelV3CallOptions): Promise<{
233
+ images: Array<string>;
234
+ warnings: Array<SharedV3Warning>;
235
+ response: {
236
+ timestamp: Date;
237
+ modelId: string;
238
+ headers: Record<string, string> | undefined;
239
+ };
240
+ }>;
241
+ }
242
+
212
243
  interface LLMGatewayProvider extends LanguageModelV2 {
213
244
  (modelId: LLMGatewayChatModelId, settings?: LLMGatewayCompletionSettings): LLMGatewayCompletionLanguageModel;
214
245
  (modelId: LLMGatewayChatModelId, settings?: LLMGatewayChatSettings): LLMGatewayChatLanguageModel;
@@ -222,6 +253,14 @@ interface LLMGatewayProvider extends LanguageModelV2 {
222
253
  Creates an LLMGateway completion model for text generation.
223
254
  */
224
255
  completion(modelId: LLMGatewayChatModelId, settings?: LLMGatewayCompletionSettings): LLMGatewayCompletionLanguageModel;
256
+ /**
257
+ Creates an LLMGateway image model for image generation.
258
+ */
259
+ image(modelId: LLMGatewayImageModelId, settings?: LLMGatewayImageSettings): LLMGatewayImageModel;
260
+ /**
261
+ Creates an LLMGateway image model for image generation.
262
+ */
263
+ imageModel(modelId: LLMGatewayImageModelId, settings?: LLMGatewayImageSettings): ImageModelV3;
225
264
  }
226
265
  interface LLMGatewayProviderSettings {
227
266
  /**
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { LanguageModelV2, LanguageModelV2CallOptions, LanguageModelV2Content, LanguageModelV2FinishReason, LanguageModelV2Usage, LanguageModelV2CallWarning, LanguageModelV2ResponseMetadata, SharedV2Headers, LanguageModelV2StreamPart } from '@ai-sdk/provider';
1
+ import { LanguageModelV2, LanguageModelV2CallOptions, LanguageModelV2Content, LanguageModelV2FinishReason, LanguageModelV2Usage, LanguageModelV2CallWarning, LanguageModelV2ResponseMetadata, SharedV2Headers, LanguageModelV2StreamPart, ImageModelV3, ImageModelV3CallOptions, SharedV3Warning } from '@ai-sdk/provider';
2
2
  export { LanguageModelV2, LanguageModelV2Prompt } from '@ai-sdk/provider';
3
3
  import { models, Provider } from '@llmgateway/models';
4
4
 
@@ -132,6 +132,9 @@ type LLMGatewayCompletionSettings = {
132
132
  suffix?: string;
133
133
  } & LLMGatewaySharedSettings;
134
134
 
135
+ type LLMGatewayImageModelId = string;
136
+ type LLMGatewayImageSettings = {};
137
+
135
138
  type LLMGatewayChatConfig = {
136
139
  provider: string;
137
140
  compatibility: 'strict' | 'compatible';
@@ -209,6 +212,34 @@ declare class LLMGatewayCompletionLanguageModel implements LanguageModelV2 {
209
212
  doStream(options: LanguageModelV2CallOptions): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>>;
210
213
  }
211
214
 
215
+ type LLMGatewayImageConfig = {
216
+ provider: string;
217
+ headers: () => Record<string, string | undefined>;
218
+ url: (options: {
219
+ modelId: string;
220
+ path: string;
221
+ }) => string;
222
+ fetch?: typeof fetch;
223
+ };
224
+ declare class LLMGatewayImageModel implements ImageModelV3 {
225
+ readonly specificationVersion: "v3";
226
+ readonly provider: string;
227
+ readonly modelId: LLMGatewayImageModelId;
228
+ readonly maxImagesPerCall: number | undefined;
229
+ readonly settings: LLMGatewayImageSettings;
230
+ private readonly config;
231
+ constructor(modelId: LLMGatewayImageModelId, settings: LLMGatewayImageSettings, config: LLMGatewayImageConfig);
232
+ doGenerate(options: ImageModelV3CallOptions): Promise<{
233
+ images: Array<string>;
234
+ warnings: Array<SharedV3Warning>;
235
+ response: {
236
+ timestamp: Date;
237
+ modelId: string;
238
+ headers: Record<string, string> | undefined;
239
+ };
240
+ }>;
241
+ }
242
+
212
243
  interface LLMGatewayProvider extends LanguageModelV2 {
213
244
  (modelId: LLMGatewayChatModelId, settings?: LLMGatewayCompletionSettings): LLMGatewayCompletionLanguageModel;
214
245
  (modelId: LLMGatewayChatModelId, settings?: LLMGatewayChatSettings): LLMGatewayChatLanguageModel;
@@ -222,6 +253,14 @@ interface LLMGatewayProvider extends LanguageModelV2 {
222
253
  Creates an LLMGateway completion model for text generation.
223
254
  */
224
255
  completion(modelId: LLMGatewayChatModelId, settings?: LLMGatewayCompletionSettings): LLMGatewayCompletionLanguageModel;
256
+ /**
257
+ Creates an LLMGateway image model for image generation.
258
+ */
259
+ image(modelId: LLMGatewayImageModelId, settings?: LLMGatewayImageSettings): LLMGatewayImageModel;
260
+ /**
261
+ Creates an LLMGateway image model for image generation.
262
+ */
263
+ imageModel(modelId: LLMGatewayImageModelId, settings?: LLMGatewayImageSettings): ImageModelV3;
225
264
  }
226
265
  interface LLMGatewayProviderSettings {
227
266
  /**
package/dist/index.js CHANGED
@@ -3618,6 +3618,79 @@ var LLMGateway = class {
3618
3618
  }
3619
3619
  };
3620
3620
 
3621
+ // src/image/index.ts
3622
+ var import_v47 = require("zod/v4");
3623
+ var LLMGatewayImageResponseSchema = import_v47.z.object({
3624
+ data: import_v47.z.array(
3625
+ import_v47.z.object({
3626
+ b64_json: import_v47.z.string().optional(),
3627
+ url: import_v47.z.string().optional(),
3628
+ revised_prompt: import_v47.z.string().optional()
3629
+ })
3630
+ )
3631
+ });
3632
+ var LLMGatewayImageModel = class {
3633
+ constructor(modelId, settings, config) {
3634
+ this.specificationVersion = "v3";
3635
+ this.maxImagesPerCall = void 0;
3636
+ this.modelId = modelId;
3637
+ this.settings = settings;
3638
+ this.config = config;
3639
+ this.provider = config.provider;
3640
+ }
3641
+ async doGenerate(options) {
3642
+ const warnings = [];
3643
+ if (options.seed != null) {
3644
+ warnings.push({
3645
+ type: "unsupported",
3646
+ feature: "seed"
3647
+ });
3648
+ }
3649
+ const body = {
3650
+ model: this.modelId,
3651
+ prompt: options.prompt,
3652
+ n: options.n,
3653
+ response_format: "b64_json"
3654
+ };
3655
+ if (options.size != null) {
3656
+ body.size = options.size;
3657
+ }
3658
+ if (options.aspectRatio != null) {
3659
+ body.aspect_ratio = options.aspectRatio;
3660
+ }
3661
+ const { value: response, responseHeaders } = await postJsonToApi({
3662
+ url: this.config.url({
3663
+ path: "/images/generations",
3664
+ modelId: this.modelId
3665
+ }),
3666
+ headers: combineHeaders(this.config.headers(), options.headers),
3667
+ body,
3668
+ failedResponseHandler: llmgatewayFailedResponseHandler,
3669
+ successfulResponseHandler: createJsonResponseHandler(
3670
+ LLMGatewayImageResponseSchema
3671
+ ),
3672
+ abortSignal: options.abortSignal,
3673
+ fetch: this.config.fetch
3674
+ });
3675
+ return {
3676
+ images: response.data.map((item) => {
3677
+ if (item.b64_json) {
3678
+ return item.b64_json;
3679
+ }
3680
+ throw new Error(
3681
+ "Expected b64_json in response but got url. Set response_format to b64_json."
3682
+ );
3683
+ }),
3684
+ warnings,
3685
+ response: {
3686
+ timestamp: /* @__PURE__ */ new Date(),
3687
+ modelId: this.modelId,
3688
+ headers: responseHeaders
3689
+ }
3690
+ };
3691
+ }
3692
+ };
3693
+
3621
3694
  // src/provider.ts
3622
3695
  function createLLMGateway(options = {}) {
3623
3696
  var _a16, _b16, _c, _d;
@@ -3646,6 +3719,12 @@ function createLLMGateway(options = {}) {
3646
3719
  fetch: options.fetch,
3647
3720
  extraBody: options.extraBody
3648
3721
  });
3722
+ const createImageModel = (modelId, settings = {}) => new LLMGatewayImageModel(modelId, settings, {
3723
+ provider: "llmgateway.image",
3724
+ url: ({ path }) => `${baseURL}${path}`,
3725
+ headers: getHeaders,
3726
+ fetch: options.fetch
3727
+ });
3649
3728
  const createLanguageModel = (modelId, settings) => {
3650
3729
  if (new.target) {
3651
3730
  throw new Error(
@@ -3664,6 +3743,8 @@ function createLLMGateway(options = {}) {
3664
3743
  provider.languageModel = createLanguageModel;
3665
3744
  provider.chat = createChatModel;
3666
3745
  provider.completion = createCompletionModel;
3746
+ provider.image = createImageModel;
3747
+ provider.imageModel = createImageModel;
3667
3748
  return provider;
3668
3749
  }
3669
3750
  var llmgateway = createLLMGateway({