@ai-sdk/xai 2.0.0-canary.5 → 2.0.0-canary.7
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/CHANGELOG.md +38 -0
- package/dist/index.d.mts +4 -7
- package/dist/index.d.ts +4 -7
- package/dist/index.js +19 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +19 -4
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @ai-sdk/xai
|
|
2
2
|
|
|
3
|
+
## 2.0.0-canary.7
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 41cab5c: fix(providers/xai): edit supported models for structured output
|
|
8
|
+
- fa49207: feat(providers/openai-compatible): convert to providerOptions
|
|
9
|
+
- d9b26f2: chore (providers/xai): update grok-3 model aliases
|
|
10
|
+
- Updated dependencies [fa49207]
|
|
11
|
+
- Updated dependencies [26735b5]
|
|
12
|
+
- Updated dependencies [443d8ec]
|
|
13
|
+
- Updated dependencies [14c9410]
|
|
14
|
+
- Updated dependencies [d9c98f4]
|
|
15
|
+
- Updated dependencies [c4a2fec]
|
|
16
|
+
- Updated dependencies [0054544]
|
|
17
|
+
- Updated dependencies [9e9c809]
|
|
18
|
+
- Updated dependencies [32831c6]
|
|
19
|
+
- Updated dependencies [d0f9495]
|
|
20
|
+
- Updated dependencies [fd65bc6]
|
|
21
|
+
- Updated dependencies [393138b]
|
|
22
|
+
- Updated dependencies [7182d14]
|
|
23
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.7
|
|
24
|
+
- @ai-sdk/provider@2.0.0-canary.6
|
|
25
|
+
- @ai-sdk/provider-utils@3.0.0-canary.7
|
|
26
|
+
|
|
27
|
+
## 2.0.0-canary.6
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- Updated dependencies [6db02c9]
|
|
32
|
+
- Updated dependencies [411e483]
|
|
33
|
+
- Updated dependencies [79457bd]
|
|
34
|
+
- Updated dependencies [ad80501]
|
|
35
|
+
- Updated dependencies [1766ede]
|
|
36
|
+
- Updated dependencies [f10304b]
|
|
37
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.6
|
|
38
|
+
- @ai-sdk/provider@2.0.0-canary.5
|
|
39
|
+
- @ai-sdk/provider-utils@3.0.0-canary.6
|
|
40
|
+
|
|
3
41
|
## 2.0.0-canary.5
|
|
4
42
|
|
|
5
43
|
### Patch Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { ProviderV2, LanguageModelV2, ImageModelV1 } from '@ai-sdk/provider';
|
|
2
2
|
import { FetchFunction } from '@ai-sdk/provider-utils';
|
|
3
|
-
import { OpenAICompatibleChatSettings } from '@ai-sdk/openai-compatible';
|
|
4
3
|
import { z } from 'zod';
|
|
5
4
|
|
|
6
|
-
type XaiChatModelId = 'grok-3-
|
|
7
|
-
interface XaiChatSettings extends OpenAICompatibleChatSettings {
|
|
8
|
-
}
|
|
5
|
+
type XaiChatModelId = 'grok-3' | 'grok-3-latest' | 'grok-3-fast' | 'grok-3-fast-latest' | 'grok-3-mini' | 'grok-3-mini-latest' | 'grok-3-mini-fast' | 'grok-3-mini-fast-latest' | 'grok-2-vision-1212' | 'grok-2-vision' | 'grok-2-vision-latest' | 'grok-2-image-1212' | 'grok-2-image' | 'grok-2-image-latest' | 'grok-2-1212' | 'grok-2' | 'grok-2-latest' | 'grok-vision-beta' | 'grok-beta' | (string & {});
|
|
9
6
|
|
|
10
7
|
type XaiImageModelId = 'grok-2-image' | (string & {});
|
|
11
8
|
interface XaiImageSettings {
|
|
@@ -19,15 +16,15 @@ interface XaiProvider extends ProviderV2 {
|
|
|
19
16
|
/**
|
|
20
17
|
Creates an Xai chat model for text generation.
|
|
21
18
|
*/
|
|
22
|
-
(modelId: XaiChatModelId
|
|
19
|
+
(modelId: XaiChatModelId): LanguageModelV2;
|
|
23
20
|
/**
|
|
24
21
|
Creates an Xai language model for text generation.
|
|
25
22
|
*/
|
|
26
|
-
languageModel(modelId: XaiChatModelId
|
|
23
|
+
languageModel(modelId: XaiChatModelId): LanguageModelV2;
|
|
27
24
|
/**
|
|
28
25
|
Creates an Xai chat model for text generation.
|
|
29
26
|
*/
|
|
30
|
-
chat: (modelId: XaiChatModelId
|
|
27
|
+
chat: (modelId: XaiChatModelId) => LanguageModelV2;
|
|
31
28
|
/**
|
|
32
29
|
Creates an Xai image model for image generation.
|
|
33
30
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
import { ProviderV2, LanguageModelV2, ImageModelV1 } from '@ai-sdk/provider';
|
|
2
2
|
import { FetchFunction } from '@ai-sdk/provider-utils';
|
|
3
|
-
import { OpenAICompatibleChatSettings } from '@ai-sdk/openai-compatible';
|
|
4
3
|
import { z } from 'zod';
|
|
5
4
|
|
|
6
|
-
type XaiChatModelId = 'grok-3-
|
|
7
|
-
interface XaiChatSettings extends OpenAICompatibleChatSettings {
|
|
8
|
-
}
|
|
5
|
+
type XaiChatModelId = 'grok-3' | 'grok-3-latest' | 'grok-3-fast' | 'grok-3-fast-latest' | 'grok-3-mini' | 'grok-3-mini-latest' | 'grok-3-mini-fast' | 'grok-3-mini-fast-latest' | 'grok-2-vision-1212' | 'grok-2-vision' | 'grok-2-vision-latest' | 'grok-2-image-1212' | 'grok-2-image' | 'grok-2-image-latest' | 'grok-2-1212' | 'grok-2' | 'grok-2-latest' | 'grok-vision-beta' | 'grok-beta' | (string & {});
|
|
9
6
|
|
|
10
7
|
type XaiImageModelId = 'grok-2-image' | (string & {});
|
|
11
8
|
interface XaiImageSettings {
|
|
@@ -19,15 +16,15 @@ interface XaiProvider extends ProviderV2 {
|
|
|
19
16
|
/**
|
|
20
17
|
Creates an Xai chat model for text generation.
|
|
21
18
|
*/
|
|
22
|
-
(modelId: XaiChatModelId
|
|
19
|
+
(modelId: XaiChatModelId): LanguageModelV2;
|
|
23
20
|
/**
|
|
24
21
|
Creates an Xai language model for text generation.
|
|
25
22
|
*/
|
|
26
|
-
languageModel(modelId: XaiChatModelId
|
|
23
|
+
languageModel(modelId: XaiChatModelId): LanguageModelV2;
|
|
27
24
|
/**
|
|
28
25
|
Creates an Xai chat model for text generation.
|
|
29
26
|
*/
|
|
30
|
-
chat: (modelId: XaiChatModelId
|
|
27
|
+
chat: (modelId: XaiChatModelId) => LanguageModelV2;
|
|
31
28
|
/**
|
|
32
29
|
Creates an Xai image model for image generation.
|
|
33
30
|
*/
|
package/dist/index.js
CHANGED
|
@@ -32,7 +32,22 @@ var import_provider_utils = require("@ai-sdk/provider-utils");
|
|
|
32
32
|
|
|
33
33
|
// src/xai-chat-settings.ts
|
|
34
34
|
function supportsStructuredOutputs(modelId) {
|
|
35
|
-
return [
|
|
35
|
+
return [
|
|
36
|
+
"grok-3",
|
|
37
|
+
"grok-3-beta",
|
|
38
|
+
"grok-3-latest",
|
|
39
|
+
"grok-3-fast",
|
|
40
|
+
"grok-3-fast-beta",
|
|
41
|
+
"grok-3-fast-latest",
|
|
42
|
+
"grok-3-mini",
|
|
43
|
+
"grok-3-mini-beta",
|
|
44
|
+
"grok-3-mini-latest",
|
|
45
|
+
"grok-3-mini-fast",
|
|
46
|
+
"grok-3-mini-fast-beta",
|
|
47
|
+
"grok-3-mini-fast-latest",
|
|
48
|
+
"grok-2-1212",
|
|
49
|
+
"grok-2-vision-1212"
|
|
50
|
+
].includes(modelId);
|
|
36
51
|
}
|
|
37
52
|
|
|
38
53
|
// src/xai-error.ts
|
|
@@ -60,9 +75,9 @@ function createXai(options = {}) {
|
|
|
60
75
|
})}`,
|
|
61
76
|
...options.headers
|
|
62
77
|
});
|
|
63
|
-
const createLanguageModel = (modelId
|
|
78
|
+
const createLanguageModel = (modelId) => {
|
|
64
79
|
const structuredOutputs = supportsStructuredOutputs(modelId);
|
|
65
|
-
return new import_openai_compatible.OpenAICompatibleChatLanguageModel(modelId,
|
|
80
|
+
return new import_openai_compatible.OpenAICompatibleChatLanguageModel(modelId, {
|
|
66
81
|
provider: "xai.chat",
|
|
67
82
|
url: ({ path }) => `${baseURL}${path}`,
|
|
68
83
|
headers: getHeaders,
|
|
@@ -81,7 +96,7 @@ function createXai(options = {}) {
|
|
|
81
96
|
errorStructure: xaiErrorStructure
|
|
82
97
|
});
|
|
83
98
|
};
|
|
84
|
-
const provider = (modelId
|
|
99
|
+
const provider = (modelId) => createLanguageModel(modelId);
|
|
85
100
|
provider.languageModel = createLanguageModel;
|
|
86
101
|
provider.chat = createLanguageModel;
|
|
87
102
|
provider.textEmbeddingModel = (modelId) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/xai-provider.ts","../src/xai-chat-settings.ts","../src/xai-error.ts"],"sourcesContent":["export { createXai, xai } from './xai-provider';\nexport type { XaiProvider, XaiProviderSettings } from './xai-provider';\nexport type { XaiErrorData } from './xai-error';\n","import {\n ImageModelV1,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport {
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/xai-provider.ts","../src/xai-chat-settings.ts","../src/xai-error.ts"],"sourcesContent":["export { createXai, xai } from './xai-provider';\nexport type { XaiProvider, XaiProviderSettings } from './xai-provider';\nexport type { XaiErrorData } from './xai-error';\n","import {\n ImageModelV1,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatModelId, supportsStructuredOutputs } from './xai-chat-settings';\nimport { XaiImageSettings } from './xai-image-settings';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { XaiErrorData, xaiErrorSchema } from './xai-error';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface XaiProvider extends ProviderV2 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId, settings?: XaiImageSettings): ImageModelV1;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(\n modelId: XaiImageModelId,\n settings?: XaiImageSettings,\n ): ImageModelV1;\n}\n\nexport interface XaiProviderSettings {\n /**\nBase URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (modelId: XaiChatModelId) => {\n const structuredOutputs = supportsStructuredOutputs(modelId);\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: 'xai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n defaultObjectGenerationMode: structuredOutputs ? 'json' : 'tool',\n errorStructure: xaiErrorStructure,\n supportsStructuredOutputs: structuredOutputs,\n });\n };\n\n const createImageModel = (\n modelId: XaiImageModelId,\n settings: XaiImageSettings = {},\n ) => {\n return new OpenAICompatibleImageModel(modelId, settings, {\n provider: 'xai.image',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n });\n };\n\n const provider = (modelId: XaiChatModelId) => createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n\n return provider;\n}\n\nexport const xai = createXai();\n","// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-3'\n | 'grok-3-latest'\n | 'grok-3-fast'\n | 'grok-3-fast-latest'\n | 'grok-3-mini'\n | 'grok-3-mini-latest'\n | 'grok-3-mini-fast'\n | 'grok-3-mini-fast-latest'\n | 'grok-2-vision-1212'\n | 'grok-2-vision'\n | 'grok-2-vision-latest'\n | 'grok-2-image-1212'\n | 'grok-2-image'\n | 'grok-2-image-latest'\n | 'grok-2-1212'\n | 'grok-2'\n | 'grok-2-latest'\n | 'grok-vision-beta'\n | 'grok-beta'\n | (string & {});\n\n/**\n * https://docs.x.ai/docs/guides/structured-outputs\n */\nexport function supportsStructuredOutputs(modelId: XaiChatModelId) {\n return [\n 'grok-3',\n 'grok-3-beta',\n 'grok-3-latest',\n 'grok-3-fast',\n 'grok-3-fast-beta',\n 'grok-3-fast-latest',\n 'grok-3-mini',\n 'grok-3-mini-beta',\n 'grok-3-mini-latest',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-beta',\n 'grok-3-mini-fast-latest',\n 'grok-2-1212',\n 'grok-2-vision-1212',\n ].includes(modelId);\n}\n","import { z } from 'zod';\n\n// Add error schema and structure\nexport const xaiErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorSchema>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,sBAKO;AACP,+BAIO;AACP,4BAIO;;;ACWA,SAAS,0BAA0B,SAAyB;AACjE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,OAAO;AACpB;;;AC3CA,iBAAkB;AAGX,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,MAAM,aAAE,OAAO;AAAA,EACf,OAAO,aAAE,OAAO;AAClB,CAAC;;;AFeD,IAAM,oBAA0D;AAAA,EAC9D,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK;AAC/B;AAuDO,SAAS,UAAU,UAA+B,CAAC,GAAgB;AA/E1E;AAgFE,QAAM,cAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,cAAU,kCAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,sBAAsB,CAAC,YAA4B;AACvD,UAAM,oBAAoB,0BAA0B,OAAO;AAC3D,WAAO,IAAI,2DAAkC,SAAS;AAAA,MACpD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,6BAA6B,oBAAoB,SAAS;AAAA,MAC1D,gBAAgB;AAAA,MAChB,2BAA2B;AAAA,IAC7B,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CACvB,SACA,WAA6B,CAAC,MAC3B;AACH,WAAO,IAAI,oDAA2B,SAAS,UAAU;AAAA,MACvD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAA4B,oBAAoB,OAAO;AAEzE,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAChB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa;AACtB,WAAS,QAAQ;AAEjB,SAAO;AACT;AAEO,IAAM,MAAM,UAAU;","names":[]}
|
package/dist/index.mjs
CHANGED
|
@@ -13,7 +13,22 @@ import {
|
|
|
13
13
|
|
|
14
14
|
// src/xai-chat-settings.ts
|
|
15
15
|
function supportsStructuredOutputs(modelId) {
|
|
16
|
-
return [
|
|
16
|
+
return [
|
|
17
|
+
"grok-3",
|
|
18
|
+
"grok-3-beta",
|
|
19
|
+
"grok-3-latest",
|
|
20
|
+
"grok-3-fast",
|
|
21
|
+
"grok-3-fast-beta",
|
|
22
|
+
"grok-3-fast-latest",
|
|
23
|
+
"grok-3-mini",
|
|
24
|
+
"grok-3-mini-beta",
|
|
25
|
+
"grok-3-mini-latest",
|
|
26
|
+
"grok-3-mini-fast",
|
|
27
|
+
"grok-3-mini-fast-beta",
|
|
28
|
+
"grok-3-mini-fast-latest",
|
|
29
|
+
"grok-2-1212",
|
|
30
|
+
"grok-2-vision-1212"
|
|
31
|
+
].includes(modelId);
|
|
17
32
|
}
|
|
18
33
|
|
|
19
34
|
// src/xai-error.ts
|
|
@@ -41,9 +56,9 @@ function createXai(options = {}) {
|
|
|
41
56
|
})}`,
|
|
42
57
|
...options.headers
|
|
43
58
|
});
|
|
44
|
-
const createLanguageModel = (modelId
|
|
59
|
+
const createLanguageModel = (modelId) => {
|
|
45
60
|
const structuredOutputs = supportsStructuredOutputs(modelId);
|
|
46
|
-
return new OpenAICompatibleChatLanguageModel(modelId,
|
|
61
|
+
return new OpenAICompatibleChatLanguageModel(modelId, {
|
|
47
62
|
provider: "xai.chat",
|
|
48
63
|
url: ({ path }) => `${baseURL}${path}`,
|
|
49
64
|
headers: getHeaders,
|
|
@@ -62,7 +77,7 @@ function createXai(options = {}) {
|
|
|
62
77
|
errorStructure: xaiErrorStructure
|
|
63
78
|
});
|
|
64
79
|
};
|
|
65
|
-
const provider = (modelId
|
|
80
|
+
const provider = (modelId) => createLanguageModel(modelId);
|
|
66
81
|
provider.languageModel = createLanguageModel;
|
|
67
82
|
provider.chat = createLanguageModel;
|
|
68
83
|
provider.textEmbeddingModel = (modelId) => {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/xai-provider.ts","../src/xai-chat-settings.ts","../src/xai-error.ts"],"sourcesContent":["import {\n ImageModelV1,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport {
|
|
1
|
+
{"version":3,"sources":["../src/xai-provider.ts","../src/xai-chat-settings.ts","../src/xai-error.ts"],"sourcesContent":["import {\n ImageModelV1,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatModelId, supportsStructuredOutputs } from './xai-chat-settings';\nimport { XaiImageSettings } from './xai-image-settings';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { XaiErrorData, xaiErrorSchema } from './xai-error';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface XaiProvider extends ProviderV2 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId, settings?: XaiImageSettings): ImageModelV1;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(\n modelId: XaiImageModelId,\n settings?: XaiImageSettings,\n ): ImageModelV1;\n}\n\nexport interface XaiProviderSettings {\n /**\nBase URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (modelId: XaiChatModelId) => {\n const structuredOutputs = supportsStructuredOutputs(modelId);\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: 'xai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n defaultObjectGenerationMode: structuredOutputs ? 'json' : 'tool',\n errorStructure: xaiErrorStructure,\n supportsStructuredOutputs: structuredOutputs,\n });\n };\n\n const createImageModel = (\n modelId: XaiImageModelId,\n settings: XaiImageSettings = {},\n ) => {\n return new OpenAICompatibleImageModel(modelId, settings, {\n provider: 'xai.image',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n });\n };\n\n const provider = (modelId: XaiChatModelId) => createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n\n return provider;\n}\n\nexport const xai = createXai();\n","// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-3'\n | 'grok-3-latest'\n | 'grok-3-fast'\n | 'grok-3-fast-latest'\n | 'grok-3-mini'\n | 'grok-3-mini-latest'\n | 'grok-3-mini-fast'\n | 'grok-3-mini-fast-latest'\n | 'grok-2-vision-1212'\n | 'grok-2-vision'\n | 'grok-2-vision-latest'\n | 'grok-2-image-1212'\n | 'grok-2-image'\n | 'grok-2-image-latest'\n | 'grok-2-1212'\n | 'grok-2'\n | 'grok-2-latest'\n | 'grok-vision-beta'\n | 'grok-beta'\n | (string & {});\n\n/**\n * https://docs.x.ai/docs/guides/structured-outputs\n */\nexport function supportsStructuredOutputs(modelId: XaiChatModelId) {\n return [\n 'grok-3',\n 'grok-3-beta',\n 'grok-3-latest',\n 'grok-3-fast',\n 'grok-3-fast-beta',\n 'grok-3-fast-latest',\n 'grok-3-mini',\n 'grok-3-mini-beta',\n 'grok-3-mini-latest',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-beta',\n 'grok-3-mini-fast-latest',\n 'grok-2-1212',\n 'grok-2-vision-1212',\n ].includes(modelId);\n}\n","import { z } from 'zod';\n\n// Add error schema and structure\nexport const xaiErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorSchema>;\n"],"mappings":";AAAA;AAAA,EAGE;AAAA,OAEK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EAEE;AAAA,EACA;AAAA,OACK;;;ACWA,SAAS,0BAA0B,SAAyB;AACjE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,SAAS,OAAO;AACpB;;;AC3CA,SAAS,SAAS;AAGX,IAAM,iBAAiB,EAAE,OAAO;AAAA,EACrC,MAAM,EAAE,OAAO;AAAA,EACf,OAAO,EAAE,OAAO;AAClB,CAAC;;;AFeD,IAAM,oBAA0D;AAAA,EAC9D,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK;AAC/B;AAuDO,SAAS,UAAU,UAA+B,CAAC,GAAgB;AA/E1E;AAgFE,QAAM,UAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,OAAO;AAAA,IACxB,eAAe,UAAU,WAAW;AAAA,MAClC,QAAQ,QAAQ;AAAA,MAChB,yBAAyB;AAAA,MACzB,aAAa;AAAA,IACf,CAAC,CAAC;AAAA,IACF,GAAG,QAAQ;AAAA,EACb;AAEA,QAAM,sBAAsB,CAAC,YAA4B;AACvD,UAAM,oBAAoB,0BAA0B,OAAO;AAC3D,WAAO,IAAI,kCAAkC,SAAS;AAAA,MACpD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,6BAA6B,oBAAoB,SAAS;AAAA,MAC1D,gBAAgB;AAAA,MAChB,2BAA2B;AAAA,IAC7B,CAAC;AAAA,EACH;AAEA,QAAM,mBAAmB,CACvB,SACA,WAA6B,CAAC,MAC3B;AACH,WAAO,IAAI,2BAA2B,SAAS,UAAU;AAAA,MACvD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,gBAAgB;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAA4B,oBAAoB,OAAO;AAEzE,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAChB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa;AACtB,WAAS,QAAQ;AAEjB,SAAO;AACT;AAEO,IAAM,MAAM,UAAU;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/xai",
|
|
3
|
-
"version": "2.0.0-canary.
|
|
3
|
+
"version": "2.0.0-canary.7",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@ai-sdk/openai-compatible": "1.0.0-canary.
|
|
23
|
-
"@ai-sdk/provider": "2.0.0-canary.
|
|
24
|
-
"@ai-sdk/provider-utils": "3.0.0-canary.
|
|
22
|
+
"@ai-sdk/openai-compatible": "1.0.0-canary.7",
|
|
23
|
+
"@ai-sdk/provider": "2.0.0-canary.6",
|
|
24
|
+
"@ai-sdk/provider-utils": "3.0.0-canary.7"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "20.17.24",
|