@sweetretry/ai-sdk-volcengine-adapter 0.1.0 → 0.1.2

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.
Files changed (62) hide show
  1. package/dist/chat/convert-to-volcengine-chat-message.d.ts +3 -0
  2. package/dist/chat/convert-to-volcengine-chat-message.js +189 -0
  3. package/dist/chat/convert-to-volcengine-chat-message.js.map +1 -0
  4. package/dist/chat/convert-volcengine-chat-usage.d.ts +28 -0
  5. package/dist/chat/convert-volcengine-chat-usage.js +51 -0
  6. package/dist/chat/convert-volcengine-chat-usage.js.map +1 -0
  7. package/dist/chat/get-response-metadata.d.ts +9 -0
  8. package/dist/chat/get-response-metadata.js +9 -0
  9. package/dist/chat/get-response-metadata.js.map +1 -0
  10. package/dist/chat/index.d.ts +2 -0
  11. package/dist/chat/index.js +3 -0
  12. package/dist/chat/index.js.map +1 -0
  13. package/dist/chat/map-volcengine-finish-reason.d.ts +2 -0
  14. package/dist/chat/map-volcengine-finish-reason.js +32 -0
  15. package/dist/chat/map-volcengine-finish-reason.js.map +1 -0
  16. package/dist/chat/volcengine-chat-language-model.d.ts +22 -0
  17. package/dist/chat/volcengine-chat-language-model.js +443 -0
  18. package/dist/chat/volcengine-chat-language-model.js.map +1 -0
  19. package/dist/chat/volcengine-chat-options.d.ts +16 -0
  20. package/dist/chat/volcengine-chat-options.js +29 -0
  21. package/dist/chat/volcengine-chat-options.js.map +1 -0
  22. package/dist/chat/volcengine-chat-prompt.d.ts +49 -0
  23. package/dist/chat/volcengine-chat-prompt.js +4 -0
  24. package/dist/chat/volcengine-chat-prompt.js.map +1 -0
  25. package/dist/chat/volcengine-error.d.ts +1 -0
  26. package/dist/chat/volcengine-error.js +16 -0
  27. package/dist/chat/volcengine-error.js.map +1 -0
  28. package/dist/chat/volcengine-prepare-tools.d.ts +30 -0
  29. package/dist/chat/volcengine-prepare-tools.js +96 -0
  30. package/dist/chat/volcengine-prepare-tools.js.map +1 -0
  31. package/dist/convert-to-volcengine-chat-message.js +12 -0
  32. package/dist/convert-to-volcengine-chat-message.js.map +1 -1
  33. package/dist/image/index.d.ts +1 -0
  34. package/dist/image/index.js +3 -0
  35. package/dist/image/index.js.map +1 -0
  36. package/dist/image/volcengine-image-api.d.ts +22 -0
  37. package/dist/image/volcengine-image-api.js +22 -0
  38. package/dist/image/volcengine-image-api.js.map +1 -0
  39. package/dist/image/volcengine-image-model.d.ts +29 -0
  40. package/dist/image/volcengine-image-model.js +99 -0
  41. package/dist/image/volcengine-image-model.js.map +1 -0
  42. package/dist/image/volcengine-image-options.d.ts +24 -0
  43. package/dist/image/volcengine-image-options.js +32 -0
  44. package/dist/image/volcengine-image-options.js.map +1 -0
  45. package/dist/index.d.ts +4 -3
  46. package/dist/index.js +1 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/tool/image-generation.d.ts +107 -0
  49. package/dist/tool/image-generation.js +79 -0
  50. package/dist/tool/image-generation.js.map +1 -0
  51. package/dist/tool/web-search.d.ts +70 -2
  52. package/dist/tool/web-search.js +42 -29
  53. package/dist/tool/web-search.js.map +1 -1
  54. package/dist/volcengine-chat-prompt.d.ts +3 -0
  55. package/dist/volcengine-chat-prompt.js.map +1 -1
  56. package/dist/volcengine-prepare-tools.js +46 -5
  57. package/dist/volcengine-prepare-tools.js.map +1 -1
  58. package/dist/volcengine-provider.d.ts +12 -2
  59. package/dist/volcengine-provider.js +24 -23
  60. package/dist/volcengine-provider.js.map +1 -1
  61. package/dist/volcengine-tools.d.ts +3 -1
  62. package/package.json +12 -3
@@ -0,0 +1,443 @@
1
+ import { NoContentGeneratedError } from "@ai-sdk/provider";
2
+ import { combineHeaders, createEventSourceResponseHandler, createJsonResponseHandler, generateId, injectJsonInstructionIntoMessages, parseProviderOptions, postJsonToApi, removeUndefinedEntries } from "@ai-sdk/provider-utils";
3
+ import { z } from "zod";
4
+ import { convertToVolcengineChatMessages } from "./convert-to-volcengine-chat-message";
5
+ import { convertVolcengineUsage } from "./convert-volcengine-chat-usage";
6
+ import { getResponseMetadata } from "./get-response-metadata";
7
+ import { mapVolcengineFinishReason } from "./map-volcengine-finish-reason";
8
+ import { volcengineChatOptions } from "./volcengine-chat-options";
9
+ import { volcengineFailedResponseHandler } from "./volcengine-error";
10
+ import { prepareTools } from "./volcengine-prepare-tools";
11
+ // Response schemas
12
+ const volcengineUsageSchema = z.object({
13
+ prompt_tokens: z.number().optional(),
14
+ completion_tokens: z.number().optional(),
15
+ total_tokens: z.number().optional(),
16
+ prompt_tokens_details: z.object({
17
+ cached_tokens: z.number().optional()
18
+ }).optional(),
19
+ completion_tokens_details: z.object({
20
+ reasoning_tokens: z.number().optional()
21
+ }).optional()
22
+ });
23
+ const volcengineToolCallSchema = z.object({
24
+ id: z.string(),
25
+ type: z.literal("function"),
26
+ function: z.object({
27
+ name: z.string(),
28
+ arguments: z.string()
29
+ })
30
+ });
31
+ const volcengineMessageSchema = z.object({
32
+ role: z.literal("assistant"),
33
+ content: z.string().nullable().optional(),
34
+ reasoning_content: z.string().nullable().optional(),
35
+ tool_calls: z.array(volcengineToolCallSchema).optional()
36
+ });
37
+ const volcengineChoiceSchema = z.object({
38
+ index: z.number(),
39
+ message: volcengineMessageSchema,
40
+ finish_reason: z.string().nullable().optional()
41
+ });
42
+ const volcengineChatResponseSchema = z.object({
43
+ id: z.string().optional(),
44
+ object: z.string().optional(),
45
+ created: z.number().optional(),
46
+ model: z.string().optional(),
47
+ choices: z.array(volcengineChoiceSchema),
48
+ usage: volcengineUsageSchema.optional()
49
+ });
50
+ // Streaming schemas
51
+ const volcengineDeltaSchema = z.object({
52
+ role: z.string().optional(),
53
+ content: z.string().nullable().optional(),
54
+ reasoning_content: z.string().nullable().optional(),
55
+ tool_calls: z.array(z.object({
56
+ index: z.number(),
57
+ id: z.string().optional(),
58
+ type: z.literal("function").optional(),
59
+ function: z.object({
60
+ name: z.string().optional(),
61
+ arguments: z.string().optional()
62
+ }).optional()
63
+ })).optional()
64
+ });
65
+ const volcengineChunkChoiceSchema = z.object({
66
+ index: z.number(),
67
+ delta: volcengineDeltaSchema,
68
+ finish_reason: z.string().nullable().optional()
69
+ });
70
+ const volcengineChatChunkSchema = z.object({
71
+ id: z.string().optional(),
72
+ object: z.string().optional(),
73
+ created: z.number().optional(),
74
+ model: z.string().optional(),
75
+ choices: z.array(volcengineChunkChoiceSchema).optional(),
76
+ usage: volcengineUsageSchema.nullable().optional()
77
+ });
78
+ export class VolcengineChatLanguageModel {
79
+ specificationVersion = "v3";
80
+ provider;
81
+ modelId;
82
+ supportedUrls = {};
83
+ config;
84
+ generateId;
85
+ constructor(modelId, config){
86
+ this.modelId = modelId;
87
+ this.provider = config.provider;
88
+ this.config = config;
89
+ this.generateId = config.generateId ?? generateId;
90
+ }
91
+ async getArgs({ responseFormat, prompt, maxOutputTokens, temperature, topP, topK, presencePenalty, frequencyPenalty, stopSequences, seed, tools, toolChoice, providerOptions }) {
92
+ const warnings = [];
93
+ // Parse provider options
94
+ const options = await parseProviderOptions({
95
+ provider: "volcengine",
96
+ providerOptions,
97
+ schema: volcengineChatOptions
98
+ }) ?? {};
99
+ // Unsupported features warnings
100
+ if (topK != null) {
101
+ warnings.push({
102
+ type: "unsupported",
103
+ feature: "topK"
104
+ });
105
+ }
106
+ if (presencePenalty != null) {
107
+ warnings.push({
108
+ type: "unsupported",
109
+ feature: "presencePenalty"
110
+ });
111
+ }
112
+ if (frequencyPenalty != null) {
113
+ warnings.push({
114
+ type: "unsupported",
115
+ feature: "frequencyPenalty"
116
+ });
117
+ }
118
+ if (stopSequences != null && stopSequences.length > 0) {
119
+ warnings.push({
120
+ type: "unsupported",
121
+ feature: "stopSequences"
122
+ });
123
+ }
124
+ // Handle response format
125
+ let messages = convertToVolcengineChatMessages(prompt);
126
+ let responseFormatConfig;
127
+ if (responseFormat?.type === "json") {
128
+ if (responseFormat.schema != null && options.structuredOutputs !== false) {
129
+ responseFormatConfig = {
130
+ type: "json_schema",
131
+ json_schema: {
132
+ name: responseFormat.name ?? "response",
133
+ description: responseFormat.description,
134
+ schema: responseFormat.schema,
135
+ strict: options.strictJsonSchema ?? false
136
+ }
137
+ };
138
+ } else {
139
+ responseFormatConfig = {
140
+ type: "json_object"
141
+ };
142
+ messages = convertToVolcengineChatMessages(injectJsonInstructionIntoMessages({
143
+ messages: prompt,
144
+ schema: responseFormat.schema
145
+ }));
146
+ }
147
+ }
148
+ // Prepare tools
149
+ const { tools: volcengineTools, toolChoice: volcengineToolChoice, toolWarnings } = await prepareTools({
150
+ tools,
151
+ toolChoice
152
+ });
153
+ // Convert boolean thinking option to Volcengine API format
154
+ const thinkingConfig = options.thinking === true ? {
155
+ type: "enabled"
156
+ } : options.thinking === false ? {
157
+ type: "disabled"
158
+ } : undefined;
159
+ return {
160
+ args: removeUndefinedEntries({
161
+ model: this.modelId,
162
+ messages,
163
+ max_tokens: maxOutputTokens,
164
+ temperature,
165
+ top_p: topP,
166
+ seed,
167
+ response_format: responseFormatConfig,
168
+ tools: volcengineTools,
169
+ tool_choice: volcengineToolChoice,
170
+ parallel_tool_calls: options.parallelToolCalls,
171
+ thinking: thinkingConfig
172
+ }),
173
+ warnings: [
174
+ ...warnings,
175
+ ...toolWarnings
176
+ ]
177
+ };
178
+ }
179
+ async doGenerate(options) {
180
+ const { args, warnings } = await this.getArgs(options);
181
+ const { value: response, responseHeaders } = await postJsonToApi({
182
+ url: `${this.config.baseURL}/chat/completions`,
183
+ headers: combineHeaders(this.config.headers(), options.headers),
184
+ body: args,
185
+ failedResponseHandler: volcengineFailedResponseHandler,
186
+ successfulResponseHandler: createJsonResponseHandler(volcengineChatResponseSchema),
187
+ abortSignal: options.abortSignal,
188
+ fetch: this.config.fetch
189
+ });
190
+ const choice = response.choices[0];
191
+ if (!choice) {
192
+ throw new NoContentGeneratedError({
193
+ message: "No choices returned in response"
194
+ });
195
+ }
196
+ const content = this.extractContent(choice.message);
197
+ const usage = convertVolcengineUsage(response.usage);
198
+ const finishReason = mapVolcengineFinishReason(choice.finish_reason);
199
+ return {
200
+ content,
201
+ usage,
202
+ finishReason,
203
+ warnings,
204
+ request: {
205
+ body: {
206
+ ...args,
207
+ stream: false
208
+ }
209
+ },
210
+ response: {
211
+ ...getResponseMetadata(response),
212
+ headers: responseHeaders,
213
+ body: response
214
+ }
215
+ };
216
+ }
217
+ async doStream(options) {
218
+ const { args, warnings } = await this.getArgs(options);
219
+ const { value: eventStream, responseHeaders } = await postJsonToApi({
220
+ url: `${this.config.baseURL}/chat/completions`,
221
+ headers: combineHeaders(this.config.headers(), options.headers),
222
+ body: {
223
+ ...args,
224
+ stream: true,
225
+ stream_options: {
226
+ include_usage: true
227
+ }
228
+ },
229
+ failedResponseHandler: volcengineFailedResponseHandler,
230
+ successfulResponseHandler: createEventSourceResponseHandler(volcengineChatChunkSchema),
231
+ abortSignal: options.abortSignal,
232
+ fetch: this.config.fetch
233
+ });
234
+ const self = this;
235
+ const stream = new ReadableStream({
236
+ async start (controller) {
237
+ const reader = eventStream.getReader();
238
+ let textId;
239
+ let reasoningId;
240
+ const toolCallState = new Map();
241
+ let finishReason;
242
+ let usage;
243
+ let responseMetadata;
244
+ controller.enqueue({
245
+ type: "stream-start",
246
+ warnings
247
+ });
248
+ try {
249
+ while(true){
250
+ const { done, value } = await reader.read();
251
+ if (done) {
252
+ break;
253
+ }
254
+ if (value.success === false) {
255
+ controller.enqueue({
256
+ type: "error",
257
+ error: value.error
258
+ });
259
+ continue;
260
+ }
261
+ const chunk = value.value;
262
+ if (options.includeRawChunks) {
263
+ controller.enqueue({
264
+ type: "raw",
265
+ rawValue: chunk
266
+ });
267
+ }
268
+ // Extract response metadata from first chunk
269
+ if (!responseMetadata && chunk.id) {
270
+ responseMetadata = getResponseMetadata(chunk);
271
+ controller.enqueue({
272
+ type: "response-metadata",
273
+ ...responseMetadata
274
+ });
275
+ }
276
+ const choice = chunk.choices?.[0];
277
+ if (!choice) {
278
+ // Handle usage in final chunk (when choices is empty)
279
+ if (chunk.usage != null) {
280
+ usage = convertVolcengineUsage(chunk.usage);
281
+ }
282
+ continue;
283
+ }
284
+ const delta = choice.delta;
285
+ // Handle reasoning content
286
+ if (delta.reasoning_content) {
287
+ if (!reasoningId) {
288
+ reasoningId = self.generateId();
289
+ controller.enqueue({
290
+ type: "reasoning-start",
291
+ id: reasoningId
292
+ });
293
+ }
294
+ controller.enqueue({
295
+ type: "reasoning-delta",
296
+ id: reasoningId,
297
+ delta: delta.reasoning_content
298
+ });
299
+ }
300
+ // Handle text content
301
+ if (delta.content) {
302
+ if (!textId) {
303
+ textId = self.generateId();
304
+ controller.enqueue({
305
+ type: "text-start",
306
+ id: textId
307
+ });
308
+ }
309
+ controller.enqueue({
310
+ type: "text-delta",
311
+ id: textId,
312
+ delta: delta.content
313
+ });
314
+ }
315
+ // Handle tool calls
316
+ if (delta.tool_calls) {
317
+ for (const toolCallDelta of delta.tool_calls){
318
+ const index = toolCallDelta.index;
319
+ let toolCall = toolCallState.get(index);
320
+ if (!toolCall) {
321
+ toolCall = {
322
+ id: toolCallDelta.id ?? self.generateId(),
323
+ name: toolCallDelta.function?.name ?? "",
324
+ arguments: ""
325
+ };
326
+ toolCallState.set(index, toolCall);
327
+ controller.enqueue({
328
+ type: "tool-input-start",
329
+ id: toolCall.id,
330
+ toolName: toolCall.name
331
+ });
332
+ }
333
+ if (toolCallDelta.function?.arguments) {
334
+ toolCall.arguments += toolCallDelta.function.arguments;
335
+ controller.enqueue({
336
+ type: "tool-input-delta",
337
+ id: toolCall.id,
338
+ delta: toolCallDelta.function.arguments
339
+ });
340
+ }
341
+ }
342
+ }
343
+ // Handle finish reason
344
+ if (choice.finish_reason) {
345
+ finishReason = mapVolcengineFinishReason(choice.finish_reason);
346
+ }
347
+ // Handle usage
348
+ if (chunk.usage != null) {
349
+ usage = convertVolcengineUsage(chunk.usage);
350
+ }
351
+ }
352
+ // Close open content parts
353
+ if (reasoningId) {
354
+ controller.enqueue({
355
+ type: "reasoning-end",
356
+ id: reasoningId
357
+ });
358
+ }
359
+ if (textId) {
360
+ controller.enqueue({
361
+ type: "text-end",
362
+ id: textId
363
+ });
364
+ }
365
+ // Close tool calls and emit tool-call events
366
+ toolCallState.forEach((toolCall)=>{
367
+ controller.enqueue({
368
+ type: "tool-input-end",
369
+ id: toolCall.id
370
+ });
371
+ controller.enqueue({
372
+ type: "tool-call",
373
+ toolCallId: toolCall.id,
374
+ toolName: toolCall.name,
375
+ input: toolCall.arguments
376
+ });
377
+ });
378
+ // Emit finish
379
+ controller.enqueue({
380
+ type: "finish",
381
+ finishReason: finishReason ?? {
382
+ unified: "other",
383
+ raw: undefined
384
+ },
385
+ usage: usage ?? convertVolcengineUsage(undefined)
386
+ });
387
+ } catch (error) {
388
+ controller.enqueue({
389
+ type: "error",
390
+ error
391
+ });
392
+ } finally{
393
+ controller.close();
394
+ }
395
+ }
396
+ });
397
+ return {
398
+ stream,
399
+ request: {
400
+ body: args
401
+ },
402
+ response: {
403
+ headers: responseHeaders
404
+ }
405
+ };
406
+ }
407
+ extractContent(message) {
408
+ const content = [];
409
+ // Extract reasoning content
410
+ if (message.reasoning_content) {
411
+ content.push({
412
+ type: "reasoning",
413
+ text: message.reasoning_content
414
+ });
415
+ }
416
+ // Extract text content
417
+ if (message.content) {
418
+ content.push({
419
+ type: "text",
420
+ text: message.content
421
+ });
422
+ }
423
+ // Extract tool calls
424
+ if (message.tool_calls) {
425
+ for (const toolCall of message.tool_calls){
426
+ content.push({
427
+ type: "tool-call",
428
+ toolCallId: toolCall.id,
429
+ toolName: toolCall.function.name,
430
+ input: toolCall.function.arguments
431
+ });
432
+ }
433
+ }
434
+ if (content.length === 0) {
435
+ throw new NoContentGeneratedError({
436
+ message: "No content in response message"
437
+ });
438
+ }
439
+ return content;
440
+ }
441
+ }
442
+
443
+ //# sourceMappingURL=volcengine-chat-language-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/chat/volcengine-chat-language-model.ts"],"sourcesContent":["import {\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamPart,\n LanguageModelV3StreamResult,\n LanguageModelV3ToolCall,\n LanguageModelV3Usage,\n NoContentGeneratedError,\n SharedV3Warning,\n} from \"@ai-sdk/provider\"\nimport {\n FetchFunction,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n injectJsonInstructionIntoMessages,\n parseProviderOptions,\n postJsonToApi,\n removeUndefinedEntries,\n} from \"@ai-sdk/provider-utils\"\nimport { z } from \"zod\"\nimport { convertToVolcengineChatMessages } from \"./convert-to-volcengine-chat-message\"\nimport { convertVolcengineUsage } from \"./convert-volcengine-chat-usage\"\nimport { getResponseMetadata } from \"./get-response-metadata\"\nimport { mapVolcengineFinishReason } from \"./map-volcengine-finish-reason\"\nimport { volcengineChatOptions, VolcengineChatOptions } from \"./volcengine-chat-options\"\nimport { volcengineFailedResponseHandler } from \"./volcengine-error\"\nimport { prepareTools } from \"./volcengine-prepare-tools\"\n\nexport type VolcengineChatConfig = {\n provider: string\n baseURL: string\n headers: () => Record<string, string>\n fetch?: FetchFunction\n generateId?: () => string\n}\n\n// Response schemas\nconst volcengineUsageSchema = z.object({\n prompt_tokens: z.number().optional(),\n completion_tokens: z.number().optional(),\n total_tokens: z.number().optional(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().optional(),\n })\n .optional(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().optional(),\n })\n .optional(),\n})\n\nconst volcengineToolCallSchema = z.object({\n id: z.string(),\n type: z.literal(\"function\"),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n})\n\nconst volcengineMessageSchema = z.object({\n role: z.literal(\"assistant\"),\n content: z.string().nullable().optional(),\n reasoning_content: z.string().nullable().optional(),\n tool_calls: z.array(volcengineToolCallSchema).optional(),\n})\n\nconst volcengineChoiceSchema = z.object({\n index: z.number(),\n message: volcengineMessageSchema,\n finish_reason: z.string().nullable().optional(),\n})\n\nconst volcengineChatResponseSchema = z.object({\n id: z.string().optional(),\n object: z.string().optional(),\n created: z.number().optional(),\n model: z.string().optional(),\n choices: z.array(volcengineChoiceSchema),\n usage: volcengineUsageSchema.optional(),\n})\n\n// Streaming schemas\nconst volcengineDeltaSchema = z.object({\n role: z.string().optional(),\n content: z.string().nullable().optional(),\n reasoning_content: z.string().nullable().optional(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().optional(),\n type: z.literal(\"function\").optional(),\n function: z\n .object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n })\n .optional(),\n })\n )\n .optional(),\n})\n\nconst volcengineChunkChoiceSchema = z.object({\n index: z.number(),\n delta: volcengineDeltaSchema,\n finish_reason: z.string().nullable().optional(),\n})\n\nconst volcengineChatChunkSchema = z.object({\n id: z.string().optional(),\n object: z.string().optional(),\n created: z.number().optional(),\n model: z.string().optional(),\n choices: z.array(volcengineChunkChoiceSchema).optional(),\n usage: volcengineUsageSchema.nullable().optional(),\n})\n\nexport class VolcengineChatLanguageModel implements LanguageModelV3 {\n readonly specificationVersion = \"v3\" as const\n readonly provider: string\n readonly modelId: string\n readonly supportedUrls: Record<string, RegExp[]> = {}\n\n private readonly config: VolcengineChatConfig\n private readonly generateId: () => string\n\n constructor(modelId: string, config: VolcengineChatConfig) {\n this.modelId = modelId\n this.provider = config.provider\n this.config = config\n this.generateId = config.generateId ?? generateId\n }\n\n private async getArgs({\n responseFormat,\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n stopSequences,\n seed,\n tools,\n toolChoice,\n providerOptions,\n }: LanguageModelV3CallOptions) {\n const warnings: SharedV3Warning[] = []\n\n // Parse provider options\n const options =\n (await parseProviderOptions<VolcengineChatOptions>({\n provider: \"volcengine\",\n providerOptions,\n schema: volcengineChatOptions,\n })) ?? {}\n\n // Unsupported features warnings\n if (topK != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"topK\",\n })\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"presencePenalty\",\n })\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: \"unsupported\",\n feature: \"frequencyPenalty\",\n })\n }\n\n if (stopSequences != null && stopSequences.length > 0) {\n warnings.push({\n type: \"unsupported\",\n feature: \"stopSequences\",\n })\n }\n\n // Handle response format\n let messages = convertToVolcengineChatMessages(prompt)\n let responseFormatConfig: Record<string, unknown> | undefined\n\n if (responseFormat?.type === \"json\") {\n if (responseFormat.schema != null && options.structuredOutputs !== false) {\n responseFormatConfig = {\n type: \"json_schema\",\n json_schema: {\n name: responseFormat.name ?? \"response\",\n description: responseFormat.description,\n schema: responseFormat.schema,\n strict: options.strictJsonSchema ?? false,\n },\n }\n } else {\n responseFormatConfig = { type: \"json_object\" }\n messages = convertToVolcengineChatMessages(\n injectJsonInstructionIntoMessages({\n messages: prompt,\n schema: responseFormat.schema,\n })\n )\n }\n }\n\n // Prepare tools\n const {\n tools: volcengineTools,\n toolChoice: volcengineToolChoice,\n toolWarnings,\n } = await prepareTools({ tools, toolChoice })\n\n // Convert boolean thinking option to Volcengine API format\n const thinkingConfig =\n options.thinking === true\n ? { type: \"enabled\" as const }\n : options.thinking === false\n ? { type: \"disabled\" as const }\n : undefined\n\n return {\n args: removeUndefinedEntries({\n model: this.modelId,\n messages,\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n response_format: responseFormatConfig,\n tools: volcengineTools,\n tool_choice: volcengineToolChoice,\n parallel_tool_calls: options.parallelToolCalls,\n thinking: thinkingConfig,\n }),\n warnings: [...warnings, ...toolWarnings],\n }\n }\n\n async doGenerate(options: LanguageModelV3CallOptions): Promise<LanguageModelV3GenerateResult> {\n const { args, warnings } = await this.getArgs(options)\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: volcengineFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(volcengineChatResponseSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const choice = response.choices[0]\n\n if (!choice) {\n throw new NoContentGeneratedError({\n message: \"No choices returned in response\",\n })\n }\n\n const content = this.extractContent(choice.message)\n const usage = convertVolcengineUsage(response.usage)\n const finishReason = mapVolcengineFinishReason(choice.finish_reason)\n\n return {\n content,\n usage,\n finishReason,\n warnings,\n request: {\n body: {\n ...args,\n stream: false,\n }\n },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: response,\n },\n }\n }\n\n async doStream(options: LanguageModelV3CallOptions): Promise<LanguageModelV3StreamResult> {\n const { args, warnings } = await this.getArgs(options)\n\n const { value: eventStream, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body: { ...args, stream: true, stream_options: { include_usage: true } },\n failedResponseHandler: volcengineFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(volcengineChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n })\n\n const self = this\n\n const stream = new ReadableStream<LanguageModelV3StreamPart>({\n async start(controller) {\n const reader = eventStream.getReader()\n let textId: string | undefined\n let reasoningId: string | undefined\n const toolCallState: Map<number, { id: string; name: string; arguments: string }> =\n new Map()\n let finishReason: LanguageModelV3FinishReason | undefined\n let usage: LanguageModelV3Usage | undefined\n let responseMetadata: { id?: string; modelId?: string; timestamp?: Date } | undefined\n\n controller.enqueue({ type: \"stream-start\", warnings })\n\n try {\n while (true) {\n const { done, value } = await reader.read()\n\n if (done) {\n break\n }\n\n if (value.success === false) {\n controller.enqueue({ type: \"error\", error: value.error })\n continue\n }\n\n const chunk = value.value\n\n if (options.includeRawChunks) {\n controller.enqueue({ type: \"raw\", rawValue: chunk })\n }\n\n // Extract response metadata from first chunk\n if (!responseMetadata && chunk.id) {\n responseMetadata = getResponseMetadata(chunk)\n controller.enqueue({\n type: \"response-metadata\",\n ...responseMetadata,\n })\n }\n\n const choice = chunk.choices?.[0]\n if (!choice) {\n // Handle usage in final chunk (when choices is empty)\n if (chunk.usage != null) {\n usage = convertVolcengineUsage(chunk.usage)\n }\n continue\n }\n\n const delta = choice.delta\n\n // Handle reasoning content\n if (delta.reasoning_content) {\n if (!reasoningId) {\n reasoningId = self.generateId()\n controller.enqueue({ type: \"reasoning-start\", id: reasoningId })\n }\n controller.enqueue({\n type: \"reasoning-delta\",\n id: reasoningId,\n delta: delta.reasoning_content,\n })\n }\n\n // Handle text content\n if (delta.content) {\n if (!textId) {\n textId = self.generateId()\n controller.enqueue({ type: \"text-start\", id: textId })\n }\n controller.enqueue({\n type: \"text-delta\",\n id: textId,\n delta: delta.content,\n })\n }\n\n // Handle tool calls\n if (delta.tool_calls) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index\n let toolCall = toolCallState.get(index)\n\n if (!toolCall) {\n toolCall = {\n id: toolCallDelta.id ?? self.generateId(),\n name: toolCallDelta.function?.name ?? \"\",\n arguments: \"\",\n }\n toolCallState.set(index, toolCall)\n controller.enqueue({\n type: \"tool-input-start\",\n id: toolCall.id,\n toolName: toolCall.name,\n })\n }\n\n if (toolCallDelta.function?.arguments) {\n toolCall.arguments += toolCallDelta.function.arguments\n controller.enqueue({\n type: \"tool-input-delta\",\n id: toolCall.id,\n delta: toolCallDelta.function.arguments,\n })\n }\n }\n }\n\n // Handle finish reason\n if (choice.finish_reason) {\n finishReason = mapVolcengineFinishReason(choice.finish_reason)\n }\n\n // Handle usage\n if (chunk.usage != null) {\n usage = convertVolcengineUsage(chunk.usage)\n }\n }\n\n // Close open content parts\n if (reasoningId) {\n controller.enqueue({ type: \"reasoning-end\", id: reasoningId })\n }\n\n if (textId) {\n controller.enqueue({ type: \"text-end\", id: textId })\n }\n\n // Close tool calls and emit tool-call events\n toolCallState.forEach((toolCall) => {\n controller.enqueue({\n type: \"tool-input-end\",\n id: toolCall.id,\n })\n controller.enqueue({\n type: \"tool-call\",\n toolCallId: toolCall.id,\n toolName: toolCall.name,\n input: toolCall.arguments,\n })\n })\n\n // Emit finish\n controller.enqueue({\n type: \"finish\",\n finishReason: finishReason ?? { unified: \"other\", raw: undefined },\n usage: usage ?? convertVolcengineUsage(undefined),\n })\n } catch (error) {\n controller.enqueue({ type: \"error\", error })\n } finally {\n controller.close()\n }\n },\n })\n\n return {\n stream,\n request: { body: args },\n response: { headers: responseHeaders },\n }\n }\n\n private extractContent(\n message: z.infer<typeof volcengineMessageSchema>\n ): LanguageModelV3Content[] {\n const content: LanguageModelV3Content[] = []\n\n // Extract reasoning content\n if (message.reasoning_content) {\n content.push({\n type: \"reasoning\",\n text: message.reasoning_content,\n })\n }\n\n // Extract text content\n if (message.content) {\n content.push({\n type: \"text\",\n text: message.content,\n })\n }\n\n // Extract tool calls\n if (message.tool_calls) {\n for (const toolCall of message.tool_calls) {\n content.push({\n type: \"tool-call\",\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n } as LanguageModelV3ToolCall)\n }\n }\n\n if (content.length === 0) {\n throw new NoContentGeneratedError({\n message: \"No content in response message\",\n })\n }\n\n return content\n }\n}\n"],"names":["NoContentGeneratedError","combineHeaders","createEventSourceResponseHandler","createJsonResponseHandler","generateId","injectJsonInstructionIntoMessages","parseProviderOptions","postJsonToApi","removeUndefinedEntries","z","convertToVolcengineChatMessages","convertVolcengineUsage","getResponseMetadata","mapVolcengineFinishReason","volcengineChatOptions","volcengineFailedResponseHandler","prepareTools","volcengineUsageSchema","object","prompt_tokens","number","optional","completion_tokens","total_tokens","prompt_tokens_details","cached_tokens","completion_tokens_details","reasoning_tokens","volcengineToolCallSchema","id","string","type","literal","function","name","arguments","volcengineMessageSchema","role","content","nullable","reasoning_content","tool_calls","array","volcengineChoiceSchema","index","message","finish_reason","volcengineChatResponseSchema","created","model","choices","usage","volcengineDeltaSchema","volcengineChunkChoiceSchema","delta","volcengineChatChunkSchema","VolcengineChatLanguageModel","specificationVersion","provider","modelId","supportedUrls","config","getArgs","responseFormat","prompt","maxOutputTokens","temperature","topP","topK","presencePenalty","frequencyPenalty","stopSequences","seed","tools","toolChoice","providerOptions","warnings","options","schema","push","feature","length","messages","responseFormatConfig","structuredOutputs","json_schema","description","strict","strictJsonSchema","volcengineTools","volcengineToolChoice","toolWarnings","thinkingConfig","thinking","undefined","args","max_tokens","top_p","response_format","tool_choice","parallel_tool_calls","parallelToolCalls","doGenerate","value","response","responseHeaders","url","baseURL","headers","body","failedResponseHandler","successfulResponseHandler","abortSignal","fetch","choice","extractContent","finishReason","request","stream","doStream","eventStream","stream_options","include_usage","self","ReadableStream","start","controller","reader","getReader","textId","reasoningId","toolCallState","Map","responseMetadata","enqueue","done","read","success","error","chunk","includeRawChunks","rawValue","toolCallDelta","toolCall","get","set","toolName","forEach","toolCallId","input","unified","raw","close","text"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { z } from "zod";
2
+ export type VolcengineModelId = 'doubao-seed-1-8-251228' | 'doubao-seed-code-preview-251028' | 'doubao-seed-1-6-lite-251015' | 'doubao-seed-1-6-flash-250828' | 'doubao-seed-1-6-vision-250815' | (string & {});
3
+ declare const volcengineChatOptionsSchema: z.ZodObject<{
4
+ structuredOutputs: z.ZodOptional<z.ZodBoolean>;
5
+ strictJsonSchema: z.ZodOptional<z.ZodBoolean>;
6
+ parallelToolCalls: z.ZodOptional<z.ZodBoolean>;
7
+ thinking: z.ZodOptional<z.ZodBoolean>;
8
+ }, z.core.$strip>;
9
+ export declare const volcengineChatOptions: import("@ai-sdk/provider-utils").LazySchema<{
10
+ structuredOutputs?: boolean | undefined;
11
+ strictJsonSchema?: boolean | undefined;
12
+ parallelToolCalls?: boolean | undefined;
13
+ thinking?: boolean | undefined;
14
+ }>;
15
+ export type VolcengineChatOptions = z.infer<typeof volcengineChatOptionsSchema>;
16
+ export {};
@@ -0,0 +1,29 @@
1
+ import { lazySchema, zodSchema } from "@ai-sdk/provider-utils";
2
+ import { z } from "zod";
3
+ const volcengineChatOptionsSchema = z.object({
4
+ /**
5
+ * Whether to use structured outputs.
6
+ *
7
+ * @default true
8
+ */ structuredOutputs: z.boolean().optional(),
9
+ /**
10
+ * Whether to use strict JSON schema validation.
11
+ *
12
+ * @default false
13
+ */ strictJsonSchema: z.boolean().optional(),
14
+ /**
15
+ * Whether to enable parallel function calling during tool use.
16
+ * When set to false, the model will use at most one tool per response.
17
+ *
18
+ * @default true
19
+ */ parallelToolCalls: z.boolean().optional(),
20
+ /**
21
+ * Whether to enable extended thinking mode.
22
+ * When enabled, the model will generate reasoning_content in response.
23
+ *
24
+ * @default false
25
+ */ thinking: z.boolean().optional()
26
+ });
27
+ export const volcengineChatOptions = lazySchema(()=>zodSchema(volcengineChatOptionsSchema));
28
+
29
+ //# sourceMappingURL=volcengine-chat-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/chat/volcengine-chat-options.ts"],"sourcesContent":["\n\nimport { lazySchema, zodSchema } from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod\";\n\nexport type VolcengineModelId =\n | 'doubao-seed-1-8-251228'\n | 'doubao-seed-code-preview-251028'\n | 'doubao-seed-1-6-lite-251015'\n | 'doubao-seed-1-6-flash-250828'\n | 'doubao-seed-1-6-vision-250815'\n | (string & {});\n\n\nconst volcengineChatOptionsSchema = z.object({\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\n * Whether to use strict JSON schema validation.\n *\n * @default false\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Whether to enable parallel function calling during tool use.\n * When set to false, the model will use at most one tool per response.\n *\n * @default true\n */\n parallelToolCalls: z.boolean().optional(),\n\n /**\n * Whether to enable extended thinking mode.\n * When enabled, the model will generate reasoning_content in response.\n *\n * @default false\n */\n thinking: z.boolean().optional(),\n});\n\nexport const volcengineChatOptions = lazySchema(\n () => zodSchema(volcengineChatOptionsSchema)\n);\n\nexport type VolcengineChatOptions = z.infer<typeof volcengineChatOptionsSchema>;"],"names":["lazySchema","zodSchema","z","volcengineChatOptionsSchema","object","structuredOutputs","boolean","optional","strictJsonSchema","parallelToolCalls","thinking","volcengineChatOptions"],"mappings":"AAEA,SAASA,UAAU,EAAEC,SAAS,QAAQ,yBAAyB;AAC/D,SAASC,CAAC,QAAQ,MAAM;AAWxB,MAAMC,8BAA8BD,EAAEE,MAAM,CAAC;IACzC;;;;KAIC,GACDC,mBAAmBH,EAAEI,OAAO,GAAGC,QAAQ;IAEvC;;;;KAIC,GACDC,kBAAkBN,EAAEI,OAAO,GAAGC,QAAQ;IAEtC;;;;;KAKC,GACDE,mBAAmBP,EAAEI,OAAO,GAAGC,QAAQ;IAEvC;;;;;KAKC,GACDG,UAAUR,EAAEI,OAAO,GAAGC,QAAQ;AAClC;AAEA,OAAO,MAAMI,wBAAwBX,WACjC,IAAMC,UAAUE,8BAClB"}
@@ -0,0 +1,49 @@
1
+ export type VolcengineChatPrompt = Array<VolcengineChatMessage>;
2
+ export type VolcengineChatMessage = VolcengineChatSystemMessage | VolcengineChatUserMessage | VolcengineChatAssistantMessage | VolcengineChatToolMessage;
3
+ export interface VolcengineChatSystemMessage {
4
+ role: 'system';
5
+ content: string;
6
+ }
7
+ export interface VolcengineChatUserMessage {
8
+ role: 'user';
9
+ content: Array<VolcengineChatUserMessageContent>;
10
+ }
11
+ export type VolcengineChatUserMessageContent = {
12
+ type: 'text';
13
+ text: string;
14
+ } | {
15
+ type: 'image_url';
16
+ image_url: {
17
+ url: string;
18
+ };
19
+ } | {
20
+ type: 'video_url';
21
+ video_url: {
22
+ url: string;
23
+ };
24
+ } | {
25
+ type: 'input_file';
26
+ file_url: string;
27
+ } | {
28
+ type: 'input_file';
29
+ file_data: string;
30
+ filename: string;
31
+ };
32
+ export interface VolcengineChatAssistantMessage {
33
+ role: 'assistant';
34
+ reasoning_content?: string;
35
+ content: string;
36
+ tool_calls?: Array<{
37
+ id: string;
38
+ type: 'function';
39
+ function: {
40
+ name: string;
41
+ arguments: string;
42
+ };
43
+ }>;
44
+ }
45
+ export interface VolcengineChatToolMessage {
46
+ role: 'tool';
47
+ content: string;
48
+ tool_call_id: string;
49
+ }
@@ -0,0 +1,4 @@
1
+ // export type MistralPrompt = Array<MistralMessage>;
2
+ export { };
3
+
4
+ //# sourceMappingURL=volcengine-chat-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/chat/volcengine-chat-prompt.ts"],"sourcesContent":["// export type MistralPrompt = Array<MistralMessage>;\nexport type VolcengineChatPrompt = Array<VolcengineChatMessage>;\n\nexport type VolcengineChatMessage =\n | VolcengineChatSystemMessage\n | VolcengineChatUserMessage\n | VolcengineChatAssistantMessage\n | VolcengineChatToolMessage;\n\nexport interface VolcengineChatSystemMessage {\n role: 'system';\n content: string;\n}\n\nexport interface VolcengineChatUserMessage {\n role: 'user';\n content: Array<VolcengineChatUserMessageContent>;\n}\n\nexport type VolcengineChatUserMessageContent =\n | { type: 'text'; text: string }\n | { type: 'image_url'; image_url: { url: string } }\n | { type: 'video_url'; video_url: { url: string } }\n | { type: 'input_file'; file_url: string }\n | { type: 'input_file'; file_data: string; filename: string }\n\nexport interface VolcengineChatAssistantMessage {\n role: 'assistant';\n reasoning_content?: string;\n content: string;\n tool_calls?: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }>;\n}\n\nexport interface VolcengineChatToolMessage {\n role: 'tool';\n content: string;\n tool_call_id: string;\n}"],"names":[],"mappings":"AAAA,qDAAqD;AAqCrD,WAIC"}
@@ -0,0 +1 @@
1
+ export declare const volcengineFailedResponseHandler: import("@ai-sdk/provider-utils").ResponseHandler<import("@ai-sdk/provider").APICallError>;
@@ -0,0 +1,16 @@
1
+ import { createJsonErrorResponseHandler } from "@ai-sdk/provider-utils";
2
+ import { z } from "zod";
3
+ const volcengineErrorSchema = z.object({
4
+ error: z.object({
5
+ message: z.string(),
6
+ type: z.string().optional(),
7
+ param: z.string().nullable().optional(),
8
+ code: z.string().nullable().optional()
9
+ })
10
+ });
11
+ export const volcengineFailedResponseHandler = createJsonErrorResponseHandler({
12
+ errorSchema: volcengineErrorSchema,
13
+ errorToMessage: (data)=>data.error.message
14
+ });
15
+
16
+ //# sourceMappingURL=volcengine-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/chat/volcengine-error.ts"],"sourcesContent":["import { createJsonErrorResponseHandler } from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod\";\n\nconst volcengineErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().optional(),\n param: z.string().nullable().optional(),\n code: z.string().nullable().optional()\n })\n});\n\nexport const volcengineFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: volcengineErrorSchema,\n errorToMessage: (data) => data.error.message\n});\n"],"names":["createJsonErrorResponseHandler","z","volcengineErrorSchema","object","error","message","string","type","optional","param","nullable","code","volcengineFailedResponseHandler","errorSchema","errorToMessage","data"],"mappings":"AAAA,SAASA,8BAA8B,QAAQ,yBAAyB;AACxE,SAASC,CAAC,QAAQ,MAAM;AAExB,MAAMC,wBAAwBD,EAAEE,MAAM,CAAC;IACrCC,OAAOH,EAAEE,MAAM,CAAC;QACdE,SAASJ,EAAEK,MAAM;QACjBC,MAAMN,EAAEK,MAAM,GAAGE,QAAQ;QACzBC,OAAOR,EAAEK,MAAM,GAAGI,QAAQ,GAAGF,QAAQ;QACrCG,MAAMV,EAAEK,MAAM,GAAGI,QAAQ,GAAGF,QAAQ;IACtC;AACF;AAEA,OAAO,MAAMI,kCAAkCZ,+BAA+B;IAC5Ea,aAAaX;IACbY,gBAAgB,CAACC,OAASA,KAAKX,KAAK,CAACC,OAAO;AAC9C,GAAG"}