@ai-sdk/xai 2.0.0-canary.0 → 2.0.0-canary.10
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 +124 -0
- package/README.md +1 -1
- package/dist/index.d.mts +6 -9
- package/dist/index.d.ts +6 -9
- package/dist/index.js +22 -7
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -9
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,129 @@
|
|
|
1
1
|
# @ai-sdk/xai
|
|
2
2
|
|
|
3
|
+
## 2.0.0-canary.10
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- cf8280e: fix(providers/xai): return actual usage when streaming instead of NaN
|
|
8
|
+
- Updated dependencies [cf8280e]
|
|
9
|
+
- Updated dependencies [e86be6f]
|
|
10
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.10
|
|
11
|
+
- @ai-sdk/provider@2.0.0-canary.9
|
|
12
|
+
- @ai-sdk/provider-utils@3.0.0-canary.10
|
|
13
|
+
|
|
14
|
+
## 2.0.0-canary.9
|
|
15
|
+
|
|
16
|
+
### Patch Changes
|
|
17
|
+
|
|
18
|
+
- Updated dependencies [95857aa]
|
|
19
|
+
- Updated dependencies [7ea4132]
|
|
20
|
+
- @ai-sdk/provider@2.0.0-canary.8
|
|
21
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.9
|
|
22
|
+
- @ai-sdk/provider-utils@3.0.0-canary.9
|
|
23
|
+
|
|
24
|
+
## 2.0.0-canary.8
|
|
25
|
+
|
|
26
|
+
### Patch Changes
|
|
27
|
+
|
|
28
|
+
- Updated dependencies [5d142ab]
|
|
29
|
+
- Updated dependencies [b6b43c7]
|
|
30
|
+
- Updated dependencies [b9a6121]
|
|
31
|
+
- Updated dependencies [8aa9e20]
|
|
32
|
+
- Updated dependencies [3795467]
|
|
33
|
+
- @ai-sdk/provider-utils@3.0.0-canary.8
|
|
34
|
+
- @ai-sdk/provider@2.0.0-canary.7
|
|
35
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.8
|
|
36
|
+
|
|
37
|
+
## 2.0.0-canary.7
|
|
38
|
+
|
|
39
|
+
### Patch Changes
|
|
40
|
+
|
|
41
|
+
- 41cab5c: fix(providers/xai): edit supported models for structured output
|
|
42
|
+
- fa49207: feat(providers/openai-compatible): convert to providerOptions
|
|
43
|
+
- d9b26f2: chore (providers/xai): update grok-3 model aliases
|
|
44
|
+
- Updated dependencies [fa49207]
|
|
45
|
+
- Updated dependencies [26735b5]
|
|
46
|
+
- Updated dependencies [443d8ec]
|
|
47
|
+
- Updated dependencies [14c9410]
|
|
48
|
+
- Updated dependencies [d9c98f4]
|
|
49
|
+
- Updated dependencies [c4a2fec]
|
|
50
|
+
- Updated dependencies [0054544]
|
|
51
|
+
- Updated dependencies [9e9c809]
|
|
52
|
+
- Updated dependencies [32831c6]
|
|
53
|
+
- Updated dependencies [d0f9495]
|
|
54
|
+
- Updated dependencies [fd65bc6]
|
|
55
|
+
- Updated dependencies [393138b]
|
|
56
|
+
- Updated dependencies [7182d14]
|
|
57
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.7
|
|
58
|
+
- @ai-sdk/provider@2.0.0-canary.6
|
|
59
|
+
- @ai-sdk/provider-utils@3.0.0-canary.7
|
|
60
|
+
|
|
61
|
+
## 2.0.0-canary.6
|
|
62
|
+
|
|
63
|
+
### Patch Changes
|
|
64
|
+
|
|
65
|
+
- Updated dependencies [6db02c9]
|
|
66
|
+
- Updated dependencies [411e483]
|
|
67
|
+
- Updated dependencies [79457bd]
|
|
68
|
+
- Updated dependencies [ad80501]
|
|
69
|
+
- Updated dependencies [1766ede]
|
|
70
|
+
- Updated dependencies [f10304b]
|
|
71
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.6
|
|
72
|
+
- @ai-sdk/provider@2.0.0-canary.5
|
|
73
|
+
- @ai-sdk/provider-utils@3.0.0-canary.6
|
|
74
|
+
|
|
75
|
+
## 2.0.0-canary.5
|
|
76
|
+
|
|
77
|
+
### Patch Changes
|
|
78
|
+
|
|
79
|
+
- a7d3fbd: feat (providers/xai): add grok-3 models
|
|
80
|
+
- Updated dependencies [6f6bb89]
|
|
81
|
+
- @ai-sdk/provider@2.0.0-canary.4
|
|
82
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.5
|
|
83
|
+
- @ai-sdk/provider-utils@3.0.0-canary.5
|
|
84
|
+
|
|
85
|
+
## 2.0.0-canary.4
|
|
86
|
+
|
|
87
|
+
### Patch Changes
|
|
88
|
+
|
|
89
|
+
- Updated dependencies [d1a1aa1]
|
|
90
|
+
- @ai-sdk/provider@2.0.0-canary.3
|
|
91
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.4
|
|
92
|
+
- @ai-sdk/provider-utils@3.0.0-canary.4
|
|
93
|
+
|
|
94
|
+
## 2.0.0-canary.3
|
|
95
|
+
|
|
96
|
+
### Patch Changes
|
|
97
|
+
|
|
98
|
+
- Updated dependencies [a166433]
|
|
99
|
+
- Updated dependencies [abf9a79]
|
|
100
|
+
- Updated dependencies [9f95b35]
|
|
101
|
+
- Updated dependencies [0a87932]
|
|
102
|
+
- Updated dependencies [6dc848c]
|
|
103
|
+
- @ai-sdk/provider-utils@3.0.0-canary.3
|
|
104
|
+
- @ai-sdk/provider@2.0.0-canary.2
|
|
105
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.3
|
|
106
|
+
|
|
107
|
+
## 2.0.0-canary.2
|
|
108
|
+
|
|
109
|
+
### Patch Changes
|
|
110
|
+
|
|
111
|
+
- Updated dependencies [c57e248]
|
|
112
|
+
- Updated dependencies [33f4a6a]
|
|
113
|
+
- @ai-sdk/provider@2.0.0-canary.1
|
|
114
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.2
|
|
115
|
+
- @ai-sdk/provider-utils@3.0.0-canary.2
|
|
116
|
+
|
|
117
|
+
## 2.0.0-canary.1
|
|
118
|
+
|
|
119
|
+
### Patch Changes
|
|
120
|
+
|
|
121
|
+
- Updated dependencies [060370c]
|
|
122
|
+
- Updated dependencies [0c0c0b3]
|
|
123
|
+
- Updated dependencies [63d791d]
|
|
124
|
+
- @ai-sdk/provider-utils@3.0.0-canary.1
|
|
125
|
+
- @ai-sdk/openai-compatible@1.0.0-canary.1
|
|
126
|
+
|
|
3
127
|
## 2.0.0-canary.0
|
|
4
128
|
|
|
5
129
|
### Major Changes
|
package/README.md
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
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-2-1212' | 'grok-2-vision-1212' | 'grok-
|
|
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 {
|
|
@@ -15,19 +12,19 @@ interface XaiImageSettings {
|
|
|
15
12
|
maxImagesPerCall?: number;
|
|
16
13
|
}
|
|
17
14
|
|
|
18
|
-
interface XaiProvider extends
|
|
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
|
-
import {
|
|
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-2-1212' | 'grok-2-vision-1212' | 'grok-
|
|
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 {
|
|
@@ -15,19 +12,19 @@ interface XaiImageSettings {
|
|
|
15
12
|
maxImagesPerCall?: number;
|
|
16
13
|
}
|
|
17
14
|
|
|
18
|
-
interface XaiProvider extends
|
|
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
|
@@ -26,13 +26,28 @@ __export(src_exports, {
|
|
|
26
26
|
module.exports = __toCommonJS(src_exports);
|
|
27
27
|
|
|
28
28
|
// src/xai-provider.ts
|
|
29
|
-
var import_provider = require("@ai-sdk/provider");
|
|
30
29
|
var import_openai_compatible = require("@ai-sdk/openai-compatible");
|
|
30
|
+
var import_provider = require("@ai-sdk/provider");
|
|
31
31
|
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,16 +75,16 @@ 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,
|
|
69
84
|
fetch: options.fetch,
|
|
70
|
-
defaultObjectGenerationMode: structuredOutputs ? "json" : "tool",
|
|
71
85
|
errorStructure: xaiErrorStructure,
|
|
72
|
-
supportsStructuredOutputs: structuredOutputs
|
|
86
|
+
supportsStructuredOutputs: structuredOutputs,
|
|
87
|
+
includeUsage: true
|
|
73
88
|
});
|
|
74
89
|
};
|
|
75
90
|
const createImageModel = (modelId, settings = {}) => {
|
|
@@ -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
|
|
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 OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV1,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatModelId, supportsStructuredOutputs } from './xai-chat-settings';\nimport { XaiErrorData, xaiErrorSchema } from './xai-error';\nimport { XaiImageModelId, XaiImageSettings } from './xai-image-settings';\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 errorStructure: xaiErrorStructure,\n supportsStructuredOutputs: structuredOutputs,\n includeUsage: true,\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,+BAIO;AACP,sBAKO;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;;;AFcD,IAAM,oBAA0D;AAAA,EAC9D,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK;AAC/B;AAuDO,SAAS,UAAU,UAA+B,CAAC,GAAgB;AA9E1E;AA+EE,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,gBAAgB;AAAA,MAChB,2BAA2B;AAAA,MAC3B,cAAc;AAAA,IAChB,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
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// src/xai-provider.ts
|
|
2
|
-
import {
|
|
3
|
-
NoSuchModelError
|
|
4
|
-
} from "@ai-sdk/provider";
|
|
5
2
|
import {
|
|
6
3
|
OpenAICompatibleChatLanguageModel,
|
|
7
4
|
OpenAICompatibleImageModel
|
|
8
5
|
} from "@ai-sdk/openai-compatible";
|
|
6
|
+
import {
|
|
7
|
+
NoSuchModelError
|
|
8
|
+
} from "@ai-sdk/provider";
|
|
9
9
|
import {
|
|
10
10
|
loadApiKey,
|
|
11
11
|
withoutTrailingSlash
|
|
@@ -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,16 +56,16 @@ 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,
|
|
50
65
|
fetch: options.fetch,
|
|
51
|
-
defaultObjectGenerationMode: structuredOutputs ? "json" : "tool",
|
|
52
66
|
errorStructure: xaiErrorStructure,
|
|
53
|
-
supportsStructuredOutputs: structuredOutputs
|
|
67
|
+
supportsStructuredOutputs: structuredOutputs,
|
|
68
|
+
includeUsage: true
|
|
54
69
|
});
|
|
55
70
|
};
|
|
56
71
|
const createImageModel = (modelId, settings = {}) => {
|
|
@@ -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
|
|
1
|
+
{"version":3,"sources":["../src/xai-provider.ts","../src/xai-chat-settings.ts","../src/xai-error.ts"],"sourcesContent":["import {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV1,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatModelId, supportsStructuredOutputs } from './xai-chat-settings';\nimport { XaiErrorData, xaiErrorSchema } from './xai-error';\nimport { XaiImageModelId, XaiImageSettings } from './xai-image-settings';\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 errorStructure: xaiErrorStructure,\n supportsStructuredOutputs: structuredOutputs,\n includeUsage: true,\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,EACE;AAAA,EACA;AAAA,OAEK;AACP;AAAA,EAGE;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;;;AFcD,IAAM,oBAA0D;AAAA,EAC9D,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK;AAC/B;AAuDO,SAAS,UAAU,UAA+B,CAAC,GAAgB;AA9E1E;AA+EE,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,gBAAgB;AAAA,MAChB,2BAA2B;AAAA,MAC3B,cAAc;AAAA,IAChB,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.10",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,14 +19,14 @@
|
|
|
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.10",
|
|
23
|
+
"@ai-sdk/provider": "2.0.0-canary.9",
|
|
24
|
+
"@ai-sdk/provider-utils": "3.0.0-canary.10"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "20.17.24",
|
|
28
28
|
"tsup": "^8",
|
|
29
|
-
"typescript": "5.
|
|
29
|
+
"typescript": "5.8.3",
|
|
30
30
|
"zod": "3.23.8",
|
|
31
31
|
"@vercel/ai-tsconfig": "0.0.0"
|
|
32
32
|
},
|
|
@@ -51,13 +51,15 @@
|
|
|
51
51
|
"ai"
|
|
52
52
|
],
|
|
53
53
|
"scripts": {
|
|
54
|
-
"build": "tsup",
|
|
55
|
-
"build:watch": "tsup --watch",
|
|
56
|
-
"clean": "rm -rf dist",
|
|
54
|
+
"build": "pnpm clean && tsup --tsconfig tsconfig.build.json",
|
|
55
|
+
"build:watch": "pnpm clean && tsup --watch",
|
|
56
|
+
"clean": "rm -rf dist *.tsbuildinfo",
|
|
57
57
|
"lint": "eslint \"./**/*.ts*\"",
|
|
58
|
-
"type-check": "tsc --
|
|
58
|
+
"type-check": "tsc --build",
|
|
59
59
|
"prettier-check": "prettier --check \"./**/*.ts*\"",
|
|
60
60
|
"test": "pnpm test:node && pnpm test:edge",
|
|
61
|
+
"test:update": "pnpm test:node -u",
|
|
62
|
+
"test:watch": "vitest --config vitest.node.config.js",
|
|
61
63
|
"test:edge": "vitest --config vitest.edge.config.js --run",
|
|
62
64
|
"test:node": "vitest --config vitest.node.config.js --run"
|
|
63
65
|
}
|