@sweetretry/ai-sdk-volcengine-adapter 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +190 -0
- package/dist/convert-to-volcengine-chat-message.d.ts +3 -0
- package/dist/convert-to-volcengine-chat-message.js +157 -0
- package/dist/convert-to-volcengine-chat-message.js.map +1 -0
- package/dist/convert-volcengine-usage.d.ts +28 -0
- package/dist/convert-volcengine-usage.js +51 -0
- package/dist/convert-volcengine-usage.js.map +1 -0
- package/dist/get-response-metadata.d.ts +9 -0
- package/dist/get-response-metadata.js +9 -0
- package/dist/get-response-metadata.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/map-volcengine-finish-reason.d.ts +2 -0
- package/dist/map-volcengine-finish-reason.js +32 -0
- package/dist/map-volcengine-finish-reason.js.map +1 -0
- package/dist/tool/index.d.ts +1 -0
- package/dist/tool/index.js +3 -0
- package/dist/tool/index.js.map +1 -0
- package/dist/tool/web-search.d.ts +20 -0
- package/dist/tool/web-search.js +39 -0
- package/dist/tool/web-search.js.map +1 -0
- package/dist/version.d.ts +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/dist/volcengine-chat-language-model.d.ts +22 -0
- package/dist/volcengine-chat-language-model.js +445 -0
- package/dist/volcengine-chat-language-model.js.map +1 -0
- package/dist/volcengine-chat-options.d.ts +9 -0
- package/dist/volcengine-chat-options.js +27 -0
- package/dist/volcengine-chat-options.js.map +1 -0
- package/dist/volcengine-chat-prompt.d.ts +42 -0
- package/dist/volcengine-chat-prompt.js +4 -0
- package/dist/volcengine-chat-prompt.js.map +1 -0
- package/dist/volcengine-error.d.ts +1 -0
- package/dist/volcengine-error.js +16 -0
- package/dist/volcengine-error.js.map +1 -0
- package/dist/volcengine-prepare-tools.d.ts +23 -0
- package/dist/volcengine-prepare-tools.js +74 -0
- package/dist/volcengine-prepare-tools.js.map +1 -0
- package/dist/volcengine-provider.d.ts +48 -0
- package/dist/volcengine-provider.js +51 -0
- package/dist/volcengine-provider.js.map +1 -0
- package/dist/volcengine-tools.d.ts +42 -0
- package/dist/volcengine-tools.js +43 -0
- package/dist/volcengine-tools.js.map +1 -0
- package/package.json +54 -0
package/README.md
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
# AI SDK Volcengine Adapter
|
|
2
|
+
|
|
3
|
+
[Volcengine](https://www.volcengine.com/) (Doubao) provider for the [AI SDK](https://sdk.vercel.ai/).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install ai-sdk-volcengine-adapter
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Setup
|
|
12
|
+
|
|
13
|
+
Set your Volcengine API key as an environment variable:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
export ARK_API_KEY=your-api-key
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Or pass it directly when creating the provider:
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
import { createVolcengine } from 'ai-sdk-volcengine-adapter';
|
|
23
|
+
|
|
24
|
+
const volcengine = createVolcengine({
|
|
25
|
+
apiKey: 'your-api-key',
|
|
26
|
+
});
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
### Basic Text Generation
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
import { generateText } from 'ai';
|
|
35
|
+
import { volcengine } from 'ai-sdk-volcengine-adapter';
|
|
36
|
+
|
|
37
|
+
const { text } = await generateText({
|
|
38
|
+
model: volcengine('doubao-seed-1-8-251228'),
|
|
39
|
+
prompt: 'What is the meaning of life?',
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
console.log(text);
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Streaming
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
import { streamText } from 'ai';
|
|
49
|
+
import { volcengine } from 'ai-sdk-volcengine-adapter';
|
|
50
|
+
|
|
51
|
+
const result = streamText({
|
|
52
|
+
model: volcengine('doubao-seed-1-8-251228'),
|
|
53
|
+
prompt: 'Write a short story about a robot.',
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
for await (const chunk of result.textStream) {
|
|
57
|
+
process.stdout.write(chunk);
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Extended Thinking Mode
|
|
62
|
+
|
|
63
|
+
Enable extended thinking to get reasoning content from the model:
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { streamText } from 'ai';
|
|
67
|
+
import { volcengine } from 'ai-sdk-volcengine-adapter';
|
|
68
|
+
|
|
69
|
+
const result = streamText({
|
|
70
|
+
model: volcengine('doubao-seed-1-8-251228'),
|
|
71
|
+
prompt: 'Solve this step by step: What is 23 * 47?',
|
|
72
|
+
providerOptions: {
|
|
73
|
+
volcengine: {
|
|
74
|
+
thinking: true,
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
for await (const part of result.fullStream) {
|
|
80
|
+
if (part.type === 'reasoning-delta') {
|
|
81
|
+
process.stdout.write(`[Thinking] ${part.text}`);
|
|
82
|
+
} else if (part.type === 'text-delta') {
|
|
83
|
+
process.stdout.write(part.text);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Tool Calling
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
import { generateText } from 'ai';
|
|
92
|
+
import { volcengine } from 'ai-sdk-volcengine-adapter';
|
|
93
|
+
import { z } from 'zod';
|
|
94
|
+
|
|
95
|
+
const { text, toolCalls } = await generateText({
|
|
96
|
+
model: volcengine('doubao-seed-1-8-251228'),
|
|
97
|
+
prompt: 'What is the weather in San Francisco?',
|
|
98
|
+
tools: {
|
|
99
|
+
getWeather: {
|
|
100
|
+
description: 'Get the weather for a location',
|
|
101
|
+
parameters: z.object({
|
|
102
|
+
location: z.string().describe('The city name'),
|
|
103
|
+
}),
|
|
104
|
+
execute: async ({ location }) => {
|
|
105
|
+
return { temperature: 72, condition: 'sunny' };
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Web Search Tool
|
|
113
|
+
|
|
114
|
+
Use the built-in web search tool:
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
import { generateText } from 'ai';
|
|
118
|
+
import { volcengine, volcengineTools } from 'ai-sdk-volcengine-adapter';
|
|
119
|
+
|
|
120
|
+
const { text } = await generateText({
|
|
121
|
+
model: volcengine('doubao-seed-1-8-251228'),
|
|
122
|
+
prompt: 'What are the latest news about AI?',
|
|
123
|
+
tools: {
|
|
124
|
+
webSearch: volcengineTools.webSearch(),
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Supported Models
|
|
130
|
+
|
|
131
|
+
- `doubao-seed-1-8-251228` - Latest Doubao Seed model
|
|
132
|
+
- `doubao-seed-code-preview-251028` - Code-optimized model
|
|
133
|
+
- `doubao-seed-1-6-lite-251015` - Lightweight model
|
|
134
|
+
- `doubao-seed-1-6-flash-250828` - Fast inference model
|
|
135
|
+
- `doubao-seed-1-6-vision-250815` - Vision-capable model
|
|
136
|
+
|
|
137
|
+
You can also use any model ID string for custom endpoints.
|
|
138
|
+
|
|
139
|
+
## Provider Options
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
import { createVolcengine } from 'ai-sdk-volcengine-adapter';
|
|
143
|
+
|
|
144
|
+
const volcengine = createVolcengine({
|
|
145
|
+
// Custom base URL (default: https://ark.cn-beijing.volces.com/api/v3)
|
|
146
|
+
baseURL: 'https://your-custom-endpoint.com/api/v3',
|
|
147
|
+
|
|
148
|
+
// API key (default: ARK_API_KEY env variable)
|
|
149
|
+
apiKey: 'your-api-key',
|
|
150
|
+
|
|
151
|
+
// Custom headers
|
|
152
|
+
headers: {
|
|
153
|
+
'X-Custom-Header': 'value',
|
|
154
|
+
},
|
|
155
|
+
|
|
156
|
+
// Custom fetch implementation
|
|
157
|
+
fetch: customFetch,
|
|
158
|
+
});
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Model Options
|
|
162
|
+
|
|
163
|
+
```typescript
|
|
164
|
+
import { generateText } from 'ai';
|
|
165
|
+
import { volcengine } from 'ai-sdk-volcengine-adapter';
|
|
166
|
+
|
|
167
|
+
const { text } = await generateText({
|
|
168
|
+
model: volcengine('doubao-seed-1-8-251228'),
|
|
169
|
+
prompt: 'Hello!',
|
|
170
|
+
providerOptions: {
|
|
171
|
+
volcengine: {
|
|
172
|
+
// Enable extended thinking mode
|
|
173
|
+
thinking: true,
|
|
174
|
+
|
|
175
|
+
// Enable structured outputs
|
|
176
|
+
structuredOutputs: true,
|
|
177
|
+
|
|
178
|
+
// Enable strict JSON schema validation
|
|
179
|
+
strictJsonSchema: false,
|
|
180
|
+
|
|
181
|
+
// Enable parallel tool calls
|
|
182
|
+
parallelToolCalls: true,
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
});
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## License
|
|
189
|
+
|
|
190
|
+
MIT
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { UnsupportedFunctionalityError } from "@ai-sdk/provider";
|
|
2
|
+
import { convertToBase64 } from "@ai-sdk/provider-utils";
|
|
3
|
+
function formatDataUrl(data, mediaType) {
|
|
4
|
+
if (data instanceof URL) {
|
|
5
|
+
return data.toString();
|
|
6
|
+
}
|
|
7
|
+
if (typeof data === "string") {
|
|
8
|
+
return data.startsWith("data:") ? data : `data:${mediaType};base64,${data}`;
|
|
9
|
+
}
|
|
10
|
+
return `data:${mediaType};base64,${convertToBase64(data)}`;
|
|
11
|
+
}
|
|
12
|
+
export function convertToVolcengineChatMessages(prompt) {
|
|
13
|
+
const messages = [];
|
|
14
|
+
for (const message of prompt){
|
|
15
|
+
switch(message.role){
|
|
16
|
+
case "system":
|
|
17
|
+
{
|
|
18
|
+
messages.push({
|
|
19
|
+
role: "system",
|
|
20
|
+
content: message.content
|
|
21
|
+
});
|
|
22
|
+
break;
|
|
23
|
+
}
|
|
24
|
+
case "user":
|
|
25
|
+
{
|
|
26
|
+
messages.push({
|
|
27
|
+
role: "user",
|
|
28
|
+
content: message.content.map((part)=>{
|
|
29
|
+
switch(part.type){
|
|
30
|
+
case "text":
|
|
31
|
+
return {
|
|
32
|
+
type: "text",
|
|
33
|
+
text: part.text
|
|
34
|
+
};
|
|
35
|
+
case "file":
|
|
36
|
+
{
|
|
37
|
+
const { mediaType, data } = part;
|
|
38
|
+
if (mediaType.startsWith("image/")) {
|
|
39
|
+
return {
|
|
40
|
+
type: "image_url",
|
|
41
|
+
image_url: {
|
|
42
|
+
url: formatDataUrl(data, mediaType)
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
if (mediaType.startsWith("video/")) {
|
|
47
|
+
return {
|
|
48
|
+
type: "video_url",
|
|
49
|
+
video_url: {
|
|
50
|
+
url: formatDataUrl(data, mediaType)
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
throw new UnsupportedFunctionalityError({
|
|
55
|
+
functionality: `File type: ${mediaType}`
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
default:
|
|
59
|
+
{
|
|
60
|
+
const _exhaustiveCheck = part;
|
|
61
|
+
throw new UnsupportedFunctionalityError({
|
|
62
|
+
functionality: `User message part type: ${_exhaustiveCheck.type}`
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
case "assistant":
|
|
71
|
+
{
|
|
72
|
+
let text = "";
|
|
73
|
+
let reasoningContent;
|
|
74
|
+
const toolCalls = [];
|
|
75
|
+
for (const part of message.content){
|
|
76
|
+
switch(part.type){
|
|
77
|
+
case "text":
|
|
78
|
+
text += part.text;
|
|
79
|
+
break;
|
|
80
|
+
case "reasoning":
|
|
81
|
+
reasoningContent = (reasoningContent ?? "") + part.text;
|
|
82
|
+
break;
|
|
83
|
+
case "tool-call":
|
|
84
|
+
toolCalls.push({
|
|
85
|
+
id: part.toolCallId,
|
|
86
|
+
type: "function",
|
|
87
|
+
function: {
|
|
88
|
+
name: part.toolName,
|
|
89
|
+
arguments: typeof part.input === "string" ? part.input : JSON.stringify(part.input)
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
break;
|
|
93
|
+
case "file":
|
|
94
|
+
case "tool-result":
|
|
95
|
+
break;
|
|
96
|
+
default:
|
|
97
|
+
{
|
|
98
|
+
const _exhaustiveCheck = part;
|
|
99
|
+
throw new UnsupportedFunctionalityError({
|
|
100
|
+
functionality: `Assistant message part type: ${_exhaustiveCheck.type}`
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
messages.push({
|
|
106
|
+
role: "assistant",
|
|
107
|
+
content: text,
|
|
108
|
+
reasoning_content: reasoningContent,
|
|
109
|
+
tool_calls: toolCalls.length > 0 ? toolCalls : undefined
|
|
110
|
+
});
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
case "tool":
|
|
114
|
+
{
|
|
115
|
+
for (const toolResponse of message.content){
|
|
116
|
+
if (toolResponse.type === "tool-approval-response") {
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
const { output } = toolResponse;
|
|
120
|
+
let content;
|
|
121
|
+
switch(output.type){
|
|
122
|
+
case "text":
|
|
123
|
+
case "error-text":
|
|
124
|
+
content = output.value;
|
|
125
|
+
break;
|
|
126
|
+
case "json":
|
|
127
|
+
case "error-json":
|
|
128
|
+
content = JSON.stringify(output.value);
|
|
129
|
+
break;
|
|
130
|
+
case "execution-denied":
|
|
131
|
+
content = output.reason ?? "Tool execution denied.";
|
|
132
|
+
break;
|
|
133
|
+
case "content":
|
|
134
|
+
content = output.value.map((v)=>v.type === "text" ? v.text : JSON.stringify(v)).join("\n");
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
messages.push({
|
|
138
|
+
role: "tool",
|
|
139
|
+
tool_call_id: toolResponse.toolCallId,
|
|
140
|
+
content
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
default:
|
|
146
|
+
{
|
|
147
|
+
const _exhaustiveCheck = message;
|
|
148
|
+
throw new UnsupportedFunctionalityError({
|
|
149
|
+
functionality: `Message role: ${_exhaustiveCheck.role}`
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return messages;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
//# sourceMappingURL=convert-to-volcengine-chat-message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/convert-to-volcengine-chat-message.ts"],"sourcesContent":["import {\n LanguageModelV3DataContent,\n LanguageModelV3Prompt,\n UnsupportedFunctionalityError\n} from \"@ai-sdk/provider\";\nimport { convertToBase64 } from \"@ai-sdk/provider-utils\";\nimport {\n VolcengineChatAssistantMessage,\n VolcengineChatPrompt,\n VolcengineChatUserMessageContent\n} from \"./volcengine-chat-prompt\";\n\nfunction formatDataUrl(data: LanguageModelV3DataContent, mediaType: string): string {\n if (data instanceof URL) {\n return data.toString();\n }\n if (typeof data === \"string\") {\n return data.startsWith(\"data:\") ? data : `data:${mediaType};base64,${data}`;\n }\n return `data:${mediaType};base64,${convertToBase64(data)}`;\n}\n\n\nexport function convertToVolcengineChatMessages(\n prompt: LanguageModelV3Prompt\n): VolcengineChatPrompt {\n const messages: VolcengineChatPrompt = [];\n\n for (const message of prompt) {\n switch (message.role) {\n case \"system\": {\n messages.push({\n role: \"system\",\n content: message.content\n });\n break;\n }\n\n case \"user\": {\n messages.push({\n role: \"user\",\n content: message.content.map((part): VolcengineChatUserMessageContent => {\n switch (part.type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n\n case \"file\": {\n const { mediaType, data } = part;\n\n if (mediaType.startsWith(\"image/\")) {\n return {\n type: \"image_url\",\n image_url: { url: formatDataUrl(data, mediaType) }\n };\n }\n if (mediaType.startsWith(\"video/\")) {\n return {\n type: \"video_url\",\n video_url: { url: formatDataUrl(data, mediaType) }\n };\n }\n throw new UnsupportedFunctionalityError({\n functionality: `File type: ${mediaType}`\n });\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n throw new UnsupportedFunctionalityError({\n functionality: `User message part type: ${(_exhaustiveCheck as { type: string }).type}`\n });\n }\n }\n })\n });\n break;\n }\n\n case \"assistant\": {\n let text = \"\";\n let reasoningContent: string | undefined;\n const toolCalls: VolcengineChatAssistantMessage[\"tool_calls\"] = [];\n\n for (const part of message.content) {\n switch (part.type) {\n case \"text\":\n text += part.text;\n break;\n case \"reasoning\":\n reasoningContent = (reasoningContent ?? \"\") + part.text;\n break;\n case \"tool-call\":\n toolCalls.push({\n id: part.toolCallId,\n type: \"function\",\n function: {\n name: part.toolName,\n arguments:\n typeof part.input === \"string\"\n ? part.input\n : JSON.stringify(part.input)\n }\n });\n break;\n case \"file\":\n case \"tool-result\":\n // Skip file and tool-result in assistant messages\n break;\n default: {\n const _exhaustiveCheck: never = part;\n throw new UnsupportedFunctionalityError({\n functionality: `Assistant message part type: ${(_exhaustiveCheck as { type: string }).type}`\n });\n }\n }\n }\n\n messages.push({\n role: \"assistant\",\n content: text,\n reasoning_content: reasoningContent,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined\n });\n break;\n }\n\n case \"tool\": {\n for (const toolResponse of message.content) {\n if (toolResponse.type === \"tool-approval-response\") {\n continue;\n }\n\n const { output } = toolResponse;\n let content: string;\n\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n content = output.value;\n break;\n case \"json\":\n case \"error-json\":\n content = JSON.stringify(output.value);\n break;\n case \"execution-denied\":\n content = output.reason ?? \"Tool execution denied.\";\n break;\n case \"content\":\n content = output.value\n .map((v) => (v.type === \"text\" ? v.text : JSON.stringify(v)))\n .join(\"\\n\");\n break;\n }\n\n messages.push({\n role: \"tool\",\n tool_call_id: toolResponse.toolCallId,\n content\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = message;\n throw new UnsupportedFunctionalityError({\n functionality: `Message role: ${(_exhaustiveCheck as { role: string }).role}`\n });\n }\n }\n }\n\n return messages;\n}\n"],"names":["UnsupportedFunctionalityError","convertToBase64","formatDataUrl","data","mediaType","URL","toString","startsWith","convertToVolcengineChatMessages","prompt","messages","message","role","push","content","map","part","type","text","image_url","url","video_url","functionality","_exhaustiveCheck","reasoningContent","toolCalls","id","toolCallId","function","name","toolName","arguments","input","JSON","stringify","reasoning_content","tool_calls","length","undefined","toolResponse","output","value","reason","v","join","tool_call_id"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { LanguageModelV3Usage } from "@ai-sdk/provider";
|
|
2
|
+
/**
|
|
3
|
+
* Volcengine API usage response structure
|
|
4
|
+
* @see https://www.volcengine.com/docs/82379/1494384
|
|
5
|
+
*/
|
|
6
|
+
export type VolcengineUsage = {
|
|
7
|
+
prompt_tokens?: number;
|
|
8
|
+
completion_tokens?: number;
|
|
9
|
+
total_tokens?: number;
|
|
10
|
+
prompt_tokens_details?: {
|
|
11
|
+
cached_tokens?: number;
|
|
12
|
+
};
|
|
13
|
+
completion_tokens_details?: {
|
|
14
|
+
reasoning_tokens?: number;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Converts Volcengine usage data to the AI SDK's LanguageModelV3Usage format.
|
|
19
|
+
*
|
|
20
|
+
* Field mappings:
|
|
21
|
+
* - prompt_tokens → inputTokens.total
|
|
22
|
+
* - prompt_tokens - cached_tokens → inputTokens.noCache
|
|
23
|
+
* - cached_tokens → inputTokens.cacheRead
|
|
24
|
+
* - completion_tokens → outputTokens.total
|
|
25
|
+
* - completion_tokens - reasoning_tokens → outputTokens.text
|
|
26
|
+
* - reasoning_tokens → outputTokens.reasoning
|
|
27
|
+
*/
|
|
28
|
+
export declare function convertVolcengineUsage(usage: VolcengineUsage | undefined | null): LanguageModelV3Usage;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts Volcengine usage data to the AI SDK's LanguageModelV3Usage format.
|
|
3
|
+
*
|
|
4
|
+
* Field mappings:
|
|
5
|
+
* - prompt_tokens → inputTokens.total
|
|
6
|
+
* - prompt_tokens - cached_tokens → inputTokens.noCache
|
|
7
|
+
* - cached_tokens → inputTokens.cacheRead
|
|
8
|
+
* - completion_tokens → outputTokens.total
|
|
9
|
+
* - completion_tokens - reasoning_tokens → outputTokens.text
|
|
10
|
+
* - reasoning_tokens → outputTokens.reasoning
|
|
11
|
+
*/ export function convertVolcengineUsage(usage) {
|
|
12
|
+
if (usage == null) {
|
|
13
|
+
return {
|
|
14
|
+
inputTokens: {
|
|
15
|
+
total: undefined,
|
|
16
|
+
noCache: undefined,
|
|
17
|
+
cacheRead: undefined,
|
|
18
|
+
cacheWrite: undefined
|
|
19
|
+
},
|
|
20
|
+
outputTokens: {
|
|
21
|
+
total: undefined,
|
|
22
|
+
text: undefined,
|
|
23
|
+
reasoning: undefined
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
const promptTokens = usage.prompt_tokens;
|
|
28
|
+
const completionTokens = usage.completion_tokens;
|
|
29
|
+
const cachedTokens = usage.prompt_tokens_details?.cached_tokens;
|
|
30
|
+
const reasoningTokens = usage.completion_tokens_details?.reasoning_tokens;
|
|
31
|
+
// Calculate non-cached input tokens
|
|
32
|
+
const noCacheTokens = promptTokens != null && cachedTokens != null ? promptTokens - cachedTokens : promptTokens;
|
|
33
|
+
// Calculate text output tokens (completion minus reasoning)
|
|
34
|
+
const textTokens = completionTokens != null && reasoningTokens != null ? completionTokens - reasoningTokens : completionTokens;
|
|
35
|
+
return {
|
|
36
|
+
inputTokens: {
|
|
37
|
+
total: promptTokens,
|
|
38
|
+
noCache: noCacheTokens,
|
|
39
|
+
cacheRead: cachedTokens,
|
|
40
|
+
cacheWrite: undefined
|
|
41
|
+
},
|
|
42
|
+
outputTokens: {
|
|
43
|
+
total: completionTokens,
|
|
44
|
+
text: textTokens,
|
|
45
|
+
reasoning: reasoningTokens
|
|
46
|
+
},
|
|
47
|
+
raw: usage
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=convert-volcengine-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/convert-volcengine-usage.ts"],"sourcesContent":["import { LanguageModelV3Usage } from \"@ai-sdk/provider\"\n\n/**\n * Volcengine API usage response structure\n * @see https://www.volcengine.com/docs/82379/1494384\n */\nexport type VolcengineUsage = {\n prompt_tokens?: number\n completion_tokens?: number\n total_tokens?: number\n prompt_tokens_details?: {\n cached_tokens?: number\n }\n completion_tokens_details?: {\n reasoning_tokens?: number\n }\n}\n\n/**\n * Converts Volcengine usage data to the AI SDK's LanguageModelV3Usage format.\n *\n * Field mappings:\n * - prompt_tokens → inputTokens.total\n * - prompt_tokens - cached_tokens → inputTokens.noCache\n * - cached_tokens → inputTokens.cacheRead\n * - completion_tokens → outputTokens.total\n * - completion_tokens - reasoning_tokens → outputTokens.text\n * - reasoning_tokens → outputTokens.reasoning\n */\nexport function convertVolcengineUsage(\n usage: VolcengineUsage | undefined | null\n): LanguageModelV3Usage {\n if (usage == null) {\n return {\n inputTokens: {\n total: undefined,\n noCache: undefined,\n cacheRead: undefined,\n cacheWrite: undefined,\n },\n outputTokens: {\n total: undefined,\n text: undefined,\n reasoning: undefined,\n },\n }\n }\n\n const promptTokens = usage.prompt_tokens\n const completionTokens = usage.completion_tokens\n const cachedTokens = usage.prompt_tokens_details?.cached_tokens\n const reasoningTokens = usage.completion_tokens_details?.reasoning_tokens\n\n // Calculate non-cached input tokens\n const noCacheTokens =\n promptTokens != null && cachedTokens != null\n ? promptTokens - cachedTokens\n : promptTokens\n\n // Calculate text output tokens (completion minus reasoning)\n const textTokens =\n completionTokens != null && reasoningTokens != null\n ? completionTokens - reasoningTokens\n : completionTokens\n\n return {\n inputTokens: {\n total: promptTokens,\n noCache: noCacheTokens,\n cacheRead: cachedTokens,\n cacheWrite: undefined, // Volcengine API doesn't report cache write tokens\n },\n outputTokens: {\n total: completionTokens,\n text: textTokens,\n reasoning: reasoningTokens,\n },\n raw: usage,\n }\n}\n"],"names":["convertVolcengineUsage","usage","inputTokens","total","undefined","noCache","cacheRead","cacheWrite","outputTokens","text","reasoning","promptTokens","prompt_tokens","completionTokens","completion_tokens","cachedTokens","prompt_tokens_details","cached_tokens","reasoningTokens","completion_tokens_details","reasoning_tokens","noCacheTokens","textTokens","raw"],"mappings":"AAkBA;;;;;;;;;;CAUC,GACD,OAAO,SAASA,uBACdC,KAAyC;IAEzC,IAAIA,SAAS,MAAM;QACjB,OAAO;YACLC,aAAa;gBACXC,OAAOC;gBACPC,SAASD;gBACTE,WAAWF;gBACXG,YAAYH;YACd;YACAI,cAAc;gBACZL,OAAOC;gBACPK,MAAML;gBACNM,WAAWN;YACb;QACF;IACF;IAEA,MAAMO,eAAeV,MAAMW,aAAa;IACxC,MAAMC,mBAAmBZ,MAAMa,iBAAiB;IAChD,MAAMC,eAAed,MAAMe,qBAAqB,EAAEC;IAClD,MAAMC,kBAAkBjB,MAAMkB,yBAAyB,EAAEC;IAEzD,oCAAoC;IACpC,MAAMC,gBACJV,gBAAgB,QAAQI,gBAAgB,OACpCJ,eAAeI,eACfJ;IAEN,4DAA4D;IAC5D,MAAMW,aACJT,oBAAoB,QAAQK,mBAAmB,OAC3CL,mBAAmBK,kBACnBL;IAEN,OAAO;QACLX,aAAa;YACXC,OAAOQ;YACPN,SAASgB;YACTf,WAAWS;YACXR,YAAYH;QACd;QACAI,cAAc;YACZL,OAAOU;YACPJ,MAAMa;YACNZ,WAAWQ;QACb;QACAK,KAAKtB;IACP;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/get-response-metadata.ts"],"sourcesContent":["export function getResponseMetadata(response: {\n id?: string;\n model?: string;\n created?: number;\n}) {\n return {\n id: response.id,\n modelId: response.model,\n timestamp: response.created != null ? new Date(response.created * 1000) : undefined\n };\n}\n"],"names":["getResponseMetadata","response","id","modelId","model","timestamp","created","Date","undefined"],"mappings":"AAAA,OAAO,SAASA,oBAAoBC,QAInC;IACC,OAAO;QACLC,IAAID,SAASC,EAAE;QACfC,SAASF,SAASG,KAAK;QACvBC,WAAWJ,SAASK,OAAO,IAAI,OAAO,IAAIC,KAAKN,SAASK,OAAO,GAAG,QAAQE;IAC5E;AACF"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { createVolcengine, volcengine } from "./volcengine-provider";
|
|
2
|
+
export type { VolcengineProvider, VolcengineProviderSettings } from "./volcengine-provider";
|
|
3
|
+
export type { VolcengineChatOptions } from './volcengine-chat-options';
|
|
4
|
+
export { convertVolcengineUsage } from './convert-volcengine-usage';
|
|
5
|
+
export type { VolcengineUsage } from './convert-volcengine-usage';
|
|
6
|
+
export { volcengineTools } from './volcengine-tools';
|
|
7
|
+
export { VERSION } from './version';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { createVolcengine, volcengine } from "./volcengine-provider";
|
|
2
|
+
export { convertVolcengineUsage } from './convert-volcengine-usage';
|
|
3
|
+
export { volcengineTools } from './volcengine-tools';
|
|
4
|
+
export { VERSION } from './version';
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { createVolcengine, volcengine } from \"./volcengine-provider\";\nexport type {\n VolcengineProvider,\n VolcengineProviderSettings\n} from \"./volcengine-provider\";\nexport type { VolcengineChatOptions } from './volcengine-chat-options';\nexport { convertVolcengineUsage } from './convert-volcengine-usage';\nexport type { VolcengineUsage } from './convert-volcengine-usage';\nexport { volcengineTools } from './volcengine-tools';\nexport { VERSION } from './version';"],"names":["createVolcengine","volcengine","convertVolcengineUsage","volcengineTools","VERSION"],"mappings":"AAAA,SAASA,gBAAgB,EAAEC,UAAU,QAAQ,wBAAwB;AAMrE,SAASC,sBAAsB,QAAQ,6BAA6B;AAEpE,SAASC,eAAe,QAAQ,qBAAqB;AACrD,SAASC,OAAO,QAAQ,YAAY"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export function mapVolcengineFinishReason(finishReason) {
|
|
2
|
+
switch(finishReason){
|
|
3
|
+
case "stop":
|
|
4
|
+
return {
|
|
5
|
+
unified: "stop",
|
|
6
|
+
raw: finishReason
|
|
7
|
+
};
|
|
8
|
+
case "length":
|
|
9
|
+
return {
|
|
10
|
+
unified: "length",
|
|
11
|
+
raw: finishReason
|
|
12
|
+
};
|
|
13
|
+
case "tool_calls":
|
|
14
|
+
case "function_call":
|
|
15
|
+
return {
|
|
16
|
+
unified: "tool-calls",
|
|
17
|
+
raw: finishReason
|
|
18
|
+
};
|
|
19
|
+
case "content_filter":
|
|
20
|
+
return {
|
|
21
|
+
unified: "content-filter",
|
|
22
|
+
raw: finishReason
|
|
23
|
+
};
|
|
24
|
+
default:
|
|
25
|
+
return {
|
|
26
|
+
unified: "other",
|
|
27
|
+
raw: finishReason ?? undefined
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=map-volcengine-finish-reason.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/map-volcengine-finish-reason.ts"],"sourcesContent":["import { LanguageModelV3FinishReason } from \"@ai-sdk/provider\";\n\nexport function mapVolcengineFinishReason(\n finishReason: string | null | undefined\n): LanguageModelV3FinishReason {\n switch (finishReason) {\n case \"stop\":\n return { unified: \"stop\", raw: finishReason };\n case \"length\":\n return { unified: \"length\", raw: finishReason };\n case \"tool_calls\":\n case \"function_call\":\n return { unified: \"tool-calls\", raw: finishReason };\n case \"content_filter\":\n return { unified: \"content-filter\", raw: finishReason };\n default:\n return { unified: \"other\", raw: finishReason ?? undefined };\n }\n}\n"],"names":["mapVolcengineFinishReason","finishReason","unified","raw","undefined"],"mappings":"AAEA,OAAO,SAASA,0BACdC,YAAuC;IAEvC,OAAQA;QACN,KAAK;YACH,OAAO;gBAAEC,SAAS;gBAAQC,KAAKF;YAAa;QAC9C,KAAK;YACH,OAAO;gBAAEC,SAAS;gBAAUC,KAAKF;YAAa;QAChD,KAAK;QACL,KAAK;YACH,OAAO;gBAAEC,SAAS;gBAAcC,KAAKF;YAAa;QACpD,KAAK;YACH,OAAO;gBAAEC,SAAS;gBAAkBC,KAAKF;YAAa;QACxD;YACE,OAAO;gBAAEC,SAAS;gBAASC,KAAKF,gBAAgBG;YAAU;IAC9D;AACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { webSearch } from "./web-search";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tool/index.ts"],"sourcesContent":["export { webSearch } from \"./web-search\";\n"],"names":["webSearch"],"mappings":"AAAA,SAASA,SAAS,QAAQ,eAAe"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface WebSearchInput {
|
|
2
|
+
maxKeyword?: number;
|
|
3
|
+
limit?: number;
|
|
4
|
+
maxToolCalls?: number;
|
|
5
|
+
sources?: string[];
|
|
6
|
+
userLocation?: {
|
|
7
|
+
type?: "approximate";
|
|
8
|
+
country?: string;
|
|
9
|
+
region?: string;
|
|
10
|
+
city?: string;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Volcengine Web Search Tool
|
|
15
|
+
*
|
|
16
|
+
* Enables the model to perform web searches to retrieve up-to-date information.
|
|
17
|
+
*
|
|
18
|
+
* @see https://www.volcengine.com/docs/82379/1756990
|
|
19
|
+
*/
|
|
20
|
+
export declare const webSearch: import("@ai-sdk/provider-utils").ProviderToolFactory<WebSearchInput, WebSearchInput>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { createProviderToolFactory, lazySchema, zodSchema } from "@ai-sdk/provider-utils";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
/**
|
|
4
|
+
* User location for optimizing search results.
|
|
5
|
+
*/ const userLocationSchema = z.object({
|
|
6
|
+
/**
|
|
7
|
+
* Location type.
|
|
8
|
+
* @default "approximate"
|
|
9
|
+
*/ type: z.enum([
|
|
10
|
+
"approximate"
|
|
11
|
+
]).default("approximate"),
|
|
12
|
+
/**
|
|
13
|
+
* Country name (e.g., "中国").
|
|
14
|
+
*/ country: z.string().optional(),
|
|
15
|
+
/**
|
|
16
|
+
* Region/Province name (e.g., "浙江").
|
|
17
|
+
*/ region: z.string().optional(),
|
|
18
|
+
/**
|
|
19
|
+
* City name (e.g., "杭州").
|
|
20
|
+
*/ city: z.string().optional()
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Volcengine Web Search Tool
|
|
24
|
+
*
|
|
25
|
+
* Enables the model to perform web searches to retrieve up-to-date information.
|
|
26
|
+
*
|
|
27
|
+
* @see https://www.volcengine.com/docs/82379/1756990
|
|
28
|
+
*/ export const webSearch = createProviderToolFactory({
|
|
29
|
+
id: "volcengine.web_search",
|
|
30
|
+
inputSchema: lazySchema(()=>zodSchema(z.object({
|
|
31
|
+
maxKeyword: z.number().min(1).max(50).optional(),
|
|
32
|
+
limit: z.number().min(1).max(50).default(10),
|
|
33
|
+
maxToolCalls: z.number().min(1).max(10).default(3),
|
|
34
|
+
sources: z.array(z.string()).optional(),
|
|
35
|
+
userLocation: userLocationSchema.optional()
|
|
36
|
+
})))
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
//# sourceMappingURL=web-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tool/web-search.ts"],"sourcesContent":["import {\n createProviderToolFactory,\n lazySchema,\n zodSchema,\n} from \"@ai-sdk/provider-utils\";\nimport { z } from \"zod\";\n\n/**\n * User location for optimizing search results.\n */\nconst userLocationSchema = z.object({\n /**\n * Location type.\n * @default \"approximate\"\n */\n type: z.enum([\"approximate\"]).default(\"approximate\"),\n /**\n * Country name (e.g., \"中国\").\n */\n country: z.string().optional(),\n /**\n * Region/Province name (e.g., \"浙江\").\n */\n region: z.string().optional(),\n /**\n * City name (e.g., \"杭州\").\n */\n city: z.string().optional(),\n});\n\nexport interface WebSearchInput {\n maxKeyword?: number;\n limit?: number;\n maxToolCalls?: number;\n sources?: string[];\n userLocation?: {\n type?: \"approximate\";\n country?: string;\n region?: string;\n city?: string;\n };\n}\n\n/**\n * Volcengine Web Search Tool\n *\n * Enables the model to perform web searches to retrieve up-to-date information.\n *\n * @see https://www.volcengine.com/docs/82379/1756990\n */\nexport const webSearch = createProviderToolFactory<\n WebSearchInput,\n WebSearchInput\n>({\n id: \"volcengine.web_search\",\n inputSchema: lazySchema(() =>\n zodSchema(\n z.object({\n maxKeyword: z.number().min(1).max(50).optional(),\n limit: z.number().min(1).max(50).default(10),\n maxToolCalls: z.number().min(1).max(10).default(3),\n sources: z.array(z.string()).optional(),\n userLocation: userLocationSchema.optional(),\n })\n )\n ),\n});\n"],"names":["createProviderToolFactory","lazySchema","zodSchema","z","userLocationSchema","object","type","enum","default","country","string","optional","region","city","webSearch","id","inputSchema","maxKeyword","number","min","max","limit","maxToolCalls","sources","array","userLocation"],"mappings":"AAAA,SACEA,yBAAyB,EACzBC,UAAU,EACVC,SAAS,QACJ,yBAAyB;AAChC,SAASC,CAAC,QAAQ,MAAM;AAExB;;CAEC,GACD,MAAMC,qBAAqBD,EAAEE,MAAM,CAAC;IAClC;;;GAGC,GACDC,MAAMH,EAAEI,IAAI,CAAC;QAAC;KAAc,EAAEC,OAAO,CAAC;IACtC;;GAEC,GACDC,SAASN,EAAEO,MAAM,GAAGC,QAAQ;IAC5B;;GAEC,GACDC,QAAQT,EAAEO,MAAM,GAAGC,QAAQ;IAC3B;;GAEC,GACDE,MAAMV,EAAEO,MAAM,GAAGC,QAAQ;AAC3B;AAeA;;;;;;CAMC,GACD,OAAO,MAAMG,YAAYd,0BAGvB;IACAe,IAAI;IACJC,aAAaf,WAAW,IACtBC,UACEC,EAAEE,MAAM,CAAC;YACPY,YAAYd,EAAEe,MAAM,GAAGC,GAAG,CAAC,GAAGC,GAAG,CAAC,IAAIT,QAAQ;YAC9CU,OAAOlB,EAAEe,MAAM,GAAGC,GAAG,CAAC,GAAGC,GAAG,CAAC,IAAIZ,OAAO,CAAC;YACzCc,cAAcnB,EAAEe,MAAM,GAAGC,GAAG,CAAC,GAAGC,GAAG,CAAC,IAAIZ,OAAO,CAAC;YAChDe,SAASpB,EAAEqB,KAAK,CAACrB,EAAEO,MAAM,IAAIC,QAAQ;YACrCc,cAAcrB,mBAAmBO,QAAQ;QAC3C;AAGN,GAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const VERSION: string;
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';"],"names":["VERSION","__PACKAGE_VERSION__"],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,MAAMA,UACT,OAAOC,wBAAwB,cACzBA,sBACA,aAAa"}
|