@ai-sdk/openai
Advanced tools
Comparing version 1.0.7 to 1.0.8
# @ai-sdk/openai | ||
## 1.0.8 | ||
### Patch Changes | ||
- 09a9cab: feat (ai/core): add experimental generateImage function | ||
- Updated dependencies [09a9cab] | ||
- @ai-sdk/provider@1.0.2 | ||
- @ai-sdk/provider-utils@2.0.4 | ||
## 1.0.7 | ||
@@ -4,0 +13,0 @@ |
@@ -1,2 +0,2 @@ | ||
import { LanguageModelV1, ProviderV1, EmbeddingModelV1 } from '@ai-sdk/provider'; | ||
import { LanguageModelV1, ProviderV1, EmbeddingModelV1, ImageModelV1 } from '@ai-sdk/provider'; | ||
import { FetchFunction } from '@ai-sdk/provider-utils'; | ||
@@ -159,2 +159,4 @@ | ||
type OpenAIImageModelId = 'dall-e-3' | 'dall-e-2' | (string & {}); | ||
interface OpenAIProvider extends ProviderV1 { | ||
@@ -190,2 +192,6 @@ (modelId: 'gpt-3.5-turbo-instruct', settings?: OpenAICompletionSettings): OpenAICompletionLanguageModel; | ||
textEmbeddingModel(modelId: OpenAIEmbeddingModelId, settings?: OpenAIEmbeddingSettings): EmbeddingModelV1<string>; | ||
/** | ||
Creates a model for image generation. | ||
*/ | ||
image(modelId: OpenAIImageModelId): ImageModelV1; | ||
} | ||
@@ -192,0 +198,0 @@ interface OpenAIProviderSettings { |
@@ -29,3 +29,3 @@ "use strict"; | ||
// src/openai-provider.ts | ||
var import_provider_utils6 = require("@ai-sdk/provider-utils"); | ||
var import_provider_utils7 = require("@ai-sdk/provider-utils"); | ||
@@ -1340,10 +1340,61 @@ // src/openai-chat-language-model.ts | ||
// src/openai-image-model.ts | ||
var import_provider_utils6 = require("@ai-sdk/provider-utils"); | ||
var import_zod5 = require("zod"); | ||
var OpenAIImageModel = class { | ||
constructor(modelId, config) { | ||
this.specificationVersion = "v1"; | ||
this.modelId = modelId; | ||
this.config = config; | ||
} | ||
get provider() { | ||
return this.config.provider; | ||
} | ||
async doGenerate({ | ||
prompt, | ||
n, | ||
size, | ||
providerOptions, | ||
headers, | ||
abortSignal | ||
}) { | ||
var _a; | ||
const { value: response } = await (0, import_provider_utils6.postJsonToApi)({ | ||
url: this.config.url({ | ||
path: "/images/generations", | ||
modelId: this.modelId | ||
}), | ||
headers: (0, import_provider_utils6.combineHeaders)(this.config.headers(), headers), | ||
body: { | ||
model: this.modelId, | ||
prompt, | ||
n, | ||
size, | ||
...(_a = providerOptions.openai) != null ? _a : {}, | ||
response_format: "b64_json" | ||
}, | ||
failedResponseHandler: openaiFailedResponseHandler, | ||
successfulResponseHandler: (0, import_provider_utils6.createJsonResponseHandler)( | ||
openaiImageResponseSchema | ||
), | ||
abortSignal, | ||
fetch: this.config.fetch | ||
}); | ||
return { | ||
images: response.data.map((item) => item.b64_json) | ||
}; | ||
} | ||
}; | ||
var openaiImageResponseSchema = import_zod5.z.object({ | ||
data: import_zod5.z.array(import_zod5.z.object({ b64_json: import_zod5.z.string() })) | ||
}); | ||
// src/openai-provider.ts | ||
function createOpenAI(options = {}) { | ||
var _a, _b, _c; | ||
const baseURL = (_a = (0, import_provider_utils6.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.openai.com/v1"; | ||
const baseURL = (_a = (0, import_provider_utils7.withoutTrailingSlash)(options.baseURL)) != null ? _a : "https://api.openai.com/v1"; | ||
const compatibility = (_b = options.compatibility) != null ? _b : "compatible"; | ||
const providerName = (_c = options.name) != null ? _c : "openai"; | ||
const getHeaders = () => ({ | ||
Authorization: `Bearer ${(0, import_provider_utils6.loadApiKey)({ | ||
Authorization: `Bearer ${(0, import_provider_utils7.loadApiKey)({ | ||
apiKey: options.apiKey, | ||
@@ -1377,2 +1428,8 @@ environmentVariableName: "OPENAI_API_KEY", | ||
}); | ||
const createImageModel = (modelId) => new OpenAIImageModel(modelId, { | ||
provider: `${providerName}.image`, | ||
url: ({ path }) => `${baseURL}${path}`, | ||
headers: getHeaders, | ||
fetch: options.fetch | ||
}); | ||
const createLanguageModel = (modelId, settings) => { | ||
@@ -1401,2 +1458,3 @@ if (new.target) { | ||
provider.textEmbeddingModel = createEmbeddingModel; | ||
provider.image = createImageModel; | ||
return provider; | ||
@@ -1403,0 +1461,0 @@ } |
@@ -162,2 +162,12 @@ import { LanguageModelV1, EmbeddingModelV1 } from '@ai-sdk/provider'; | ||
type OpenAIConfig = { | ||
provider: string; | ||
url: (options: { | ||
modelId: string; | ||
path: string; | ||
}) => string; | ||
headers: () => Record<string, string | undefined>; | ||
fetch?: FetchFunction; | ||
}; | ||
type OpenAIEmbeddingModelId = 'text-embedding-3-small' | 'text-embedding-3-large' | 'text-embedding-ada-002' | (string & {}); | ||
@@ -185,11 +195,2 @@ interface OpenAIEmbeddingSettings { | ||
type OpenAIEmbeddingConfig = { | ||
provider: string; | ||
url: (options: { | ||
modelId: string; | ||
path: string; | ||
}) => string; | ||
headers: () => Record<string, string | undefined>; | ||
fetch?: FetchFunction; | ||
}; | ||
declare class OpenAIEmbeddingModel implements EmbeddingModelV1<string> { | ||
@@ -203,3 +204,3 @@ readonly specificationVersion = "v1"; | ||
get supportsParallelCalls(): boolean; | ||
constructor(modelId: OpenAIEmbeddingModelId, settings: OpenAIEmbeddingSettings, config: OpenAIEmbeddingConfig); | ||
constructor(modelId: OpenAIEmbeddingModelId, settings: OpenAIEmbeddingSettings, config: OpenAIConfig); | ||
doEmbed({ values, headers, abortSignal, }: Parameters<EmbeddingModelV1<string>['doEmbed']>[0]): Promise<Awaited<ReturnType<EmbeddingModelV1<string>['doEmbed']>>>; | ||
@@ -206,0 +207,0 @@ } |
{ | ||
"name": "@ai-sdk/openai", | ||
"version": "1.0.7", | ||
"version": "1.0.8", | ||
"license": "Apache-2.0", | ||
@@ -29,4 +29,4 @@ "sideEffects": false, | ||
"dependencies": { | ||
"@ai-sdk/provider": "1.0.1", | ||
"@ai-sdk/provider-utils": "2.0.3" | ||
"@ai-sdk/provider": "1.0.2", | ||
"@ai-sdk/provider-utils": "2.0.4" | ||
}, | ||
@@ -33,0 +33,0 @@ "devDependencies": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
594999
5962
+ Added@ai-sdk/provider@1.0.2(transitive)
+ Added@ai-sdk/provider-utils@2.0.4(transitive)
- Removed@ai-sdk/provider@1.0.1(transitive)
- Removed@ai-sdk/provider-utils@2.0.3(transitive)
Updated@ai-sdk/provider@1.0.2
Updated@ai-sdk/provider-utils@2.0.4