@volcengine/ark-runtime 1.0.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.
Files changed (123) hide show
  1. package/LICENSE.txt +202 -0
  2. package/README.md +104 -0
  3. package/dist/cjs/index.js +1717 -0
  4. package/dist/esm/client.d.ts +97 -0
  5. package/dist/esm/client.d.ts.map +1 -0
  6. package/dist/esm/config.d.ts +46 -0
  7. package/dist/esm/config.d.ts.map +1 -0
  8. package/dist/esm/encryption/encrypt-chat.d.ts +24 -0
  9. package/dist/esm/encryption/encrypt-chat.d.ts.map +1 -0
  10. package/dist/esm/encryption/index.d.ts +4 -0
  11. package/dist/esm/encryption/index.d.ts.map +1 -0
  12. package/dist/esm/encryption/key-agreement.d.ts +73 -0
  13. package/dist/esm/encryption/key-agreement.d.ts.map +1 -0
  14. package/dist/esm/index.d.ts +11 -0
  15. package/dist/esm/index.d.ts.map +1 -0
  16. package/dist/esm/index.mjs +1476 -0
  17. package/dist/esm/rslib-runtime.mjs +37 -0
  18. package/dist/esm/types/bot.d.ts +109 -0
  19. package/dist/esm/types/bot.d.ts.map +1 -0
  20. package/dist/esm/types/chat-completion.d.ts +167 -0
  21. package/dist/esm/types/chat-completion.d.ts.map +1 -0
  22. package/dist/esm/types/common.d.ts +29 -0
  23. package/dist/esm/types/common.d.ts.map +1 -0
  24. package/dist/esm/types/content-generation.d.ts +118 -0
  25. package/dist/esm/types/content-generation.d.ts.map +1 -0
  26. package/dist/esm/types/context.d.ts +49 -0
  27. package/dist/esm/types/context.d.ts.map +1 -0
  28. package/dist/esm/types/embeddings.d.ts +44 -0
  29. package/dist/esm/types/embeddings.d.ts.map +1 -0
  30. package/dist/esm/types/error.d.ts +45 -0
  31. package/dist/esm/types/error.d.ts.map +1 -0
  32. package/dist/esm/types/file.d.ts +66 -0
  33. package/dist/esm/types/file.d.ts.map +1 -0
  34. package/dist/esm/types/http-request-error.d.ts +13 -0
  35. package/dist/esm/types/http-request-error.d.ts.map +1 -0
  36. package/dist/esm/types/images.d.ts +78 -0
  37. package/dist/esm/types/images.d.ts.map +1 -0
  38. package/dist/esm/types/index.d.ts +13 -0
  39. package/dist/esm/types/index.d.ts.map +1 -0
  40. package/dist/esm/types/multimodal-embedding.d.ts +56 -0
  41. package/dist/esm/types/multimodal-embedding.d.ts.map +1 -0
  42. package/dist/esm/types/responses/enums.d.ts +38 -0
  43. package/dist/esm/types/responses/enums.d.ts.map +1 -0
  44. package/dist/esm/types/responses/helpers.d.ts +22 -0
  45. package/dist/esm/types/responses/helpers.d.ts.map +1 -0
  46. package/dist/esm/types/responses/index.d.ts +4 -0
  47. package/dist/esm/types/responses/index.d.ts.map +1 -0
  48. package/dist/esm/types/responses/types.d.ts +906 -0
  49. package/dist/esm/types/responses/types.d.ts.map +1 -0
  50. package/dist/esm/types/tokenization.d.ts +22 -0
  51. package/dist/esm/types/tokenization.d.ts.map +1 -0
  52. package/dist/esm/utils/breaker-provider.d.ts +9 -0
  53. package/dist/esm/utils/breaker-provider.d.ts.map +1 -0
  54. package/dist/esm/utils/breaker.d.ts +28 -0
  55. package/dist/esm/utils/breaker.d.ts.map +1 -0
  56. package/dist/esm/utils/normalize.d.ts +51 -0
  57. package/dist/esm/utils/normalize.d.ts.map +1 -0
  58. package/dist/esm/utils/request-builder.d.ts +15 -0
  59. package/dist/esm/utils/request-builder.d.ts.map +1 -0
  60. package/dist/esm/utils/request-id.d.ts +5 -0
  61. package/dist/esm/utils/request-id.d.ts.map +1 -0
  62. package/dist/esm/utils/retry.d.ts +11 -0
  63. package/dist/esm/utils/retry.d.ts.map +1 -0
  64. package/dist/esm/utils/sse-decoder.d.ts +23 -0
  65. package/dist/esm/utils/sse-decoder.d.ts.map +1 -0
  66. package/dist/esm/utils/stream-reader.d.ts +67 -0
  67. package/dist/esm/utils/stream-reader.d.ts.map +1 -0
  68. package/dist/tsconfig.tsbuildinfo +1 -0
  69. package/example/README.md +118 -0
  70. package/example/batch-chat.ts +64 -0
  71. package/example/bot-chat.ts +66 -0
  72. package/example/chat-completion-function-call.ts +141 -0
  73. package/example/chat-completion-reasoning.ts +64 -0
  74. package/example/chat-completion-vision.ts +70 -0
  75. package/example/chat-completion.ts +62 -0
  76. package/example/content-generation.ts +70 -0
  77. package/example/context.ts +69 -0
  78. package/example/embeddings.ts +31 -0
  79. package/example/file-upload.ts +53 -0
  80. package/example/images.ts +74 -0
  81. package/example/list-input-items.ts +34 -0
  82. package/example/multimodal-embeddings.ts +36 -0
  83. package/example/responses/basic.ts +75 -0
  84. package/example/responses/doubao-app.ts +53 -0
  85. package/example/responses/mcp.ts +66 -0
  86. package/example/responses/streaming.ts +45 -0
  87. package/example/responses/video.ts +74 -0
  88. package/example/responses/web-search.ts +52 -0
  89. package/example/structured-outputs.ts +71 -0
  90. package/example/tokenization.ts +30 -0
  91. package/package.json +47 -0
  92. package/src/client.ts +1199 -0
  93. package/src/config.ts +68 -0
  94. package/src/encryption/encrypt-chat.ts +146 -0
  95. package/src/encryption/index.ts +21 -0
  96. package/src/encryption/key-agreement.ts +270 -0
  97. package/src/index.ts +10 -0
  98. package/src/types/ark.d.ts +9 -0
  99. package/src/types/bot.ts +127 -0
  100. package/src/types/chat-completion.ts +228 -0
  101. package/src/types/common.ts +37 -0
  102. package/src/types/content-generation.ts +135 -0
  103. package/src/types/context.ts +59 -0
  104. package/src/types/embeddings.ts +74 -0
  105. package/src/types/error.ts +93 -0
  106. package/src/types/file.ts +76 -0
  107. package/src/types/http-request-error.ts +34 -0
  108. package/src/types/images.ts +102 -0
  109. package/src/types/index.ts +12 -0
  110. package/src/types/multimodal-embedding.ts +67 -0
  111. package/src/types/responses/enums.ts +163 -0
  112. package/src/types/responses/helpers.ts +67 -0
  113. package/src/types/responses/index.ts +3 -0
  114. package/src/types/responses/types.ts +1335 -0
  115. package/src/types/tokenization.ts +24 -0
  116. package/src/utils/breaker-provider.ts +17 -0
  117. package/src/utils/breaker.ts +56 -0
  118. package/src/utils/normalize.ts +154 -0
  119. package/src/utils/request-builder.ts +51 -0
  120. package/src/utils/request-id.ts +17 -0
  121. package/src/utils/retry.ts +76 -0
  122. package/src/utils/sse-decoder.ts +140 -0
  123. package/src/utils/stream-reader.ts +270 -0
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Response Input Items 分页列表示例
3
+ * 对齐 Go SDK: example/listinputitems/main.go
4
+ */
5
+ import { ArkRuntimeClient } from "@volcengine/ark-runtime";
6
+
7
+ const client = ArkRuntimeClient.withApiKey(process.env.ARK_API_KEY!);
8
+ const MODEL = "doubao-seed-2-0-pro-260215";
9
+
10
+ async function listInputItems() {
11
+ // 先创建一个 Response
12
+ console.log("----- 创建 Response -----");
13
+ const response = await client.createResponses({
14
+ model: MODEL,
15
+ input: "Hello world",
16
+ });
17
+ console.log("Response ID:", response.id);
18
+
19
+ // 列出该 Response 的 input items
20
+ console.log("\n----- List Input Items -----");
21
+ const items = await client.listResponseInputItems(response.id as string);
22
+ console.log("Input Items:", JSON.stringify(items, null, 2));
23
+
24
+ // 删除 Response
25
+ console.log("\n----- 删除 Response -----");
26
+ await client.deleteResponse(response.id as string);
27
+ console.log("Deleted.");
28
+ }
29
+
30
+ async function main() {
31
+ await listInputItems();
32
+ }
33
+
34
+ main().catch(console.error);
@@ -0,0 +1,36 @@
1
+ /**
2
+ * 多模态 Embedding 示例
3
+ * 对齐 Go SDK: example/multimodalembeddings/main.go
4
+ */
5
+ import { ArkRuntimeClient } from "@volcengine/ark-runtime";
6
+
7
+ const client = ArkRuntimeClient.withApiKey(process.env.ARK_API_KEY!);
8
+ const MODEL = process.env.ARK_MULTIMODAL_EMBEDDING_MODEL ?? "doubao-embedding-vision";
9
+
10
+ async function multimodalEmbedding() {
11
+ console.log("----- 多模态 Embedding -----");
12
+
13
+ const response = await client.createMultiModalEmbeddings({
14
+ model: MODEL,
15
+ input: [
16
+ {
17
+ type: "image_url",
18
+ image_url: {
19
+ url: "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png",
20
+ },
21
+ },
22
+ {
23
+ type: "text",
24
+ text: "一个彩色的logo",
25
+ },
26
+ ],
27
+ });
28
+
29
+ console.log("Response:", JSON.stringify(response, null, 2));
30
+ }
31
+
32
+ async function main() {
33
+ await multimodalEmbedding();
34
+ }
35
+
36
+ main().catch(console.error);
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Responses API 基础示例
3
+ * 对齐 Go SDK: example/responses/basic/main.go
4
+ */
5
+ import { ArkRuntimeClient } from "@volcengine/ark-runtime";
6
+
7
+ const client = ArkRuntimeClient.withApiKey(process.env.ARK_API_KEY!);
8
+ const MODEL = "doubao-seed-2-0-pro-260215";
9
+
10
+ async function basicResponse() {
11
+ console.log("----- Responses API (非流式) -----");
12
+
13
+ const response = await client.createResponses({
14
+ model: MODEL,
15
+ input: "解释什么是量子计算",
16
+ });
17
+
18
+ console.log("Response ID:", response.id);
19
+ console.log("Status:", response.status);
20
+ console.log("Output:", JSON.stringify(response.output, null, 2));
21
+ }
22
+
23
+ async function responseWithImageInput() {
24
+ console.log("\n----- Responses API (图片输入) -----");
25
+
26
+ const response = await client.createResponses({
27
+ model: MODEL,
28
+ input: [
29
+ {
30
+ role: "user",
31
+ content: [
32
+ { type: "input_text", text: "这张图片是什么?" },
33
+ {
34
+ type: "input_image",
35
+ image_url: "https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png",
36
+ },
37
+ ],
38
+ } as any,
39
+ ],
40
+ });
41
+
42
+ console.log("Response:", JSON.stringify(response, null, 2));
43
+ }
44
+
45
+ async function multiTurnResponse() {
46
+ console.log("\n----- Responses API (多轮对话) -----");
47
+
48
+ // 第一轮
49
+ const resp1 = await client.createResponses({
50
+ model: MODEL,
51
+ input: "记住数字42",
52
+ });
53
+ console.log("Turn 1 ID:", resp1.id);
54
+
55
+ // 第二轮:引用前一轮
56
+ const resp2 = await client.createResponses({
57
+ model: MODEL,
58
+ input: [
59
+ { type: "response", id: resp1.id } as any,
60
+ {
61
+ role: "user",
62
+ content: [{ type: "input_text", text: "我刚才让你记住的数字是什么?" }],
63
+ } as any,
64
+ ],
65
+ });
66
+ console.log("Turn 2 Output:", JSON.stringify(resp2.output, null, 2));
67
+ }
68
+
69
+ async function main() {
70
+ await basicResponse();
71
+ await responseWithImageInput();
72
+ await multiTurnResponse();
73
+ }
74
+
75
+ main().catch(console.error);
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Responses API Doubao App 功能示例
3
+ * 对齐 Go SDK: example/responses/doubao_app/main.go
4
+ *
5
+ * 支持 Doubao 平台特定功能:chat, deepChat, aiSearch, reasoningSearch
6
+ */
7
+ import { ArkRuntimeClient } from "@volcengine/ark-runtime";
8
+ import { getEventType, isDelta, isResponseDone } from "@volcengine/ark-runtime";
9
+
10
+ const client = ArkRuntimeClient.withApiKey(process.env.ARK_API_KEY!);
11
+ const MODEL = "doubao-seed-2-0-pro-260215";
12
+
13
+ async function doubaoFeatureChat(featureType: string) {
14
+ console.log(`\n----- Doubao Feature: ${featureType} -----`);
15
+
16
+ const stream = await client.createResponsesStream({
17
+ model: MODEL,
18
+ input: [
19
+ {
20
+ role: "user",
21
+ content: [{ type: "input_text", text: "解释什么是人工智能" }],
22
+ } as any,
23
+ ],
24
+ tools: [
25
+ {
26
+ type: "doubao_feature",
27
+ doubao_feature: { type: featureType },
28
+ },
29
+ ],
30
+ } as any);
31
+
32
+ for await (const event of stream) {
33
+ if (isDelta(event)) {
34
+ const delta = event as any;
35
+ if (delta.delta) {
36
+ process.stdout.write(delta.delta);
37
+ }
38
+ }
39
+ if (isResponseDone(event)) {
40
+ console.log(`\n[Done] ${getEventType(event)}`);
41
+ }
42
+ }
43
+ }
44
+
45
+ async function main() {
46
+ // 测试不同的 Doubao 功能类型
47
+ await doubaoFeatureChat("chat");
48
+ await doubaoFeatureChat("deepChat");
49
+ await doubaoFeatureChat("aiSearch");
50
+ await doubaoFeatureChat("reasoningSearch");
51
+ }
52
+
53
+ main().catch(console.error);
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Responses API MCP (Model Context Protocol) 工具示例
3
+ * 对齐 Go SDK: example/responses/mcp/main.go
4
+ */
5
+ import { ArkRuntimeClient } from "@volcengine/ark-runtime";
6
+ import { getEventType } from "@volcengine/ark-runtime";
7
+
8
+ const client = ArkRuntimeClient.withApiKey(process.env.ARK_API_KEY!);
9
+ const MODEL = "doubao-seed-2-0-pro-260215";
10
+
11
+ async function mcpNonStream() {
12
+ console.log("----- MCP Tool (非流式) -----");
13
+
14
+ const response = await client.createResponses({
15
+ model: MODEL,
16
+ input: "查询今天北京的天气",
17
+ tools: [
18
+ {
19
+ type: "mcp",
20
+ server_label: "weather",
21
+ server_url: "https://example.com/mcp/weather",
22
+ require_approval: "never",
23
+ },
24
+ ],
25
+ } as any);
26
+
27
+ console.log("Response:", JSON.stringify(response, null, 2));
28
+ }
29
+
30
+ async function mcpStream() {
31
+ console.log("\n----- MCP Tool (流式) -----");
32
+
33
+ const stream = await client.createResponsesStream({
34
+ model: MODEL,
35
+ input: "查询上海的天气",
36
+ tools: [
37
+ {
38
+ type: "mcp",
39
+ server_label: "weather",
40
+ server_url: "https://example.com/mcp/weather",
41
+ require_approval: "never",
42
+ },
43
+ ],
44
+ } as any);
45
+
46
+ for await (const event of stream) {
47
+ const eventType = getEventType(event);
48
+
49
+ if (eventType.includes("mcp")) {
50
+ console.log(`[MCP] ${eventType}`, JSON.stringify(event, null, 2));
51
+ }
52
+
53
+ const delta = event as any;
54
+ if (delta.delta && typeof delta.delta === "string") {
55
+ process.stdout.write(delta.delta);
56
+ }
57
+ }
58
+ console.log();
59
+ }
60
+
61
+ async function main() {
62
+ await mcpNonStream();
63
+ await mcpStream();
64
+ }
65
+
66
+ main().catch(console.error);
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Responses API 流式示例
3
+ * 对齐 Go SDK: example/responses/web_search/main.go (streaming 部分)
4
+ */
5
+ import { ArkRuntimeClient } from "@volcengine/ark-runtime";
6
+ import {
7
+ getEventType,
8
+ isDelta,
9
+ isDeltaDone,
10
+ isResponseDone,
11
+ } from "@volcengine/ark-runtime";
12
+
13
+ const client = ArkRuntimeClient.withApiKey(process.env.ARK_API_KEY!);
14
+ const MODEL = "doubao-seed-2-0-pro-260215";
15
+
16
+ async function responsesStream() {
17
+ console.log("----- Responses API 流式 -----");
18
+
19
+ const stream = await client.createResponsesStream({
20
+ model: MODEL,
21
+ input: "写一首关于春天的诗",
22
+ });
23
+
24
+ for await (const event of stream) {
25
+ const eventType = getEventType(event);
26
+
27
+ if (isDelta(event)) {
28
+ // 增量文本
29
+ const delta = event as any;
30
+ if (delta.delta) {
31
+ process.stdout.write(delta.delta);
32
+ }
33
+ } else if (isDeltaDone(event)) {
34
+ console.log(`\n[Delta Done] type=${eventType}`);
35
+ } else if (isResponseDone(event)) {
36
+ console.log(`[Response Done] type=${eventType}`);
37
+ }
38
+ }
39
+ }
40
+
41
+ async function main() {
42
+ await responsesStream();
43
+ }
44
+
45
+ main().catch(console.error);
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Responses API 视频理解示例
3
+ * 对齐 Go SDK: example/responses/video/main.go
4
+ *
5
+ * 支持 file:// URL 自动上传:SDK 会自动上传本地文件并替换为 file_id
6
+ */
7
+ import { ArkRuntimeClient } from "@volcengine/ark-runtime";
8
+ import { getEventType, isDelta } from "@volcengine/ark-runtime";
9
+
10
+ const client = ArkRuntimeClient.withApiKey(process.env.ARK_API_KEY!);
11
+ const MODEL = "doubao-seed-2-0-pro-260215";
12
+
13
+ async function videoUnderstanding() {
14
+ console.log("----- 视频理解 (Responses API) -----");
15
+
16
+ // 使用远程视频 URL
17
+ const response = await client.createResponses({
18
+ model: MODEL,
19
+ input: [
20
+ {
21
+ role: "user",
22
+ content: [
23
+ { type: "input_text", text: "描述这个视频的内容" },
24
+ {
25
+ type: "input_video",
26
+ video_url: "https://example.com/sample-video.mp4",
27
+ },
28
+ ],
29
+ } as any,
30
+ ],
31
+ });
32
+
33
+ console.log("Response:", JSON.stringify(response, null, 2));
34
+ }
35
+
36
+ async function videoUnderstandingLocalFile() {
37
+ console.log("\n----- 视频理解 (本地文件自动上传) -----");
38
+
39
+ // 使用 file:// URL,SDK 会自动上传并替换为 file_id
40
+ const stream = await client.createResponsesStream({
41
+ model: MODEL,
42
+ input: [
43
+ {
44
+ role: "user",
45
+ content: [
46
+ { type: "input_text", text: "这个视频讲了什么?" },
47
+ {
48
+ type: "input_video",
49
+ // file:// URL 会被 SDK 自动上传
50
+ video_url: "file:///path/to/local/video.mp4",
51
+ },
52
+ ],
53
+ } as any,
54
+ ],
55
+ });
56
+
57
+ for await (const event of stream) {
58
+ if (isDelta(event)) {
59
+ const delta = event as any;
60
+ if (delta.delta) {
61
+ process.stdout.write(delta.delta);
62
+ }
63
+ }
64
+ }
65
+ console.log();
66
+ }
67
+
68
+ async function main() {
69
+ await videoUnderstanding();
70
+ // 取消注释下面一行来测试本地文件上传
71
+ // await videoUnderstandingLocalFile();
72
+ }
73
+
74
+ main().catch(console.error);
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Responses API Web Search 示例
3
+ * 对齐 Go SDK: example/responses/web_search/main.go
4
+ */
5
+ import { ArkRuntimeClient } from "@volcengine/ark-runtime";
6
+ import { getEventType } from "@volcengine/ark-runtime";
7
+
8
+ const client = ArkRuntimeClient.withApiKey(process.env.ARK_API_KEY!);
9
+ const MODEL = "doubao-seed-2-0-pro-260215";
10
+
11
+ async function webSearchNonStream() {
12
+ console.log("----- Web Search (非流式) -----");
13
+
14
+ const response = await client.createResponses({
15
+ model: MODEL,
16
+ input: "2024年诺贝尔物理学奖获得者是谁?",
17
+ tools: [{ type: "web_search_call" }],
18
+ } as any);
19
+
20
+ console.log("Response:", JSON.stringify(response, null, 2));
21
+ }
22
+
23
+ async function webSearchStream() {
24
+ console.log("\n----- Web Search (流式) -----");
25
+
26
+ const stream = await client.createResponsesStream({
27
+ model: MODEL,
28
+ input: "今天的最新科技新闻是什么?",
29
+ tools: [{ type: "web_search_call" }],
30
+ } as any);
31
+
32
+ for await (const event of stream) {
33
+ const eventType = getEventType(event);
34
+
35
+ if (eventType.includes("web_search")) {
36
+ console.log(`[WebSearch] ${eventType}`);
37
+ }
38
+
39
+ const delta = event as any;
40
+ if (delta.delta && typeof delta.delta === "string") {
41
+ process.stdout.write(delta.delta);
42
+ }
43
+ }
44
+ console.log();
45
+ }
46
+
47
+ async function main() {
48
+ await webSearchNonStream();
49
+ await webSearchStream();
50
+ }
51
+
52
+ main().catch(console.error);
@@ -0,0 +1,71 @@
1
+ /**
2
+ * 结构化输出示例 (JSON Schema Response Format)
3
+ * 对齐 Go SDK: example/structured_outputs/main.go
4
+ */
5
+ import { ArkRuntimeClient } from "@volcengine/ark-runtime";
6
+
7
+ const client = ArkRuntimeClient.withApiKey(process.env.ARK_API_KEY!);
8
+ const MODEL = "doubao-seed-2-0-pro-260215";
9
+
10
+ // 定义期望输出的 JSON Schema
11
+ const personSchema = {
12
+ type: "object",
13
+ properties: {
14
+ name: { type: "string", description: "人物名称" },
15
+ age: { type: "integer", description: "年龄" },
16
+ occupation: { type: "string", description: "职业" },
17
+ hobbies: {
18
+ type: "array",
19
+ items: { type: "string" },
20
+ description: "爱好列表",
21
+ },
22
+ },
23
+ required: ["name", "age", "occupation", "hobbies"],
24
+ };
25
+
26
+ async function structuredOutput() {
27
+ console.log("----- 结构化输出 -----");
28
+
29
+ const response = await client.createChatCompletion({
30
+ model: MODEL,
31
+ messages: [
32
+ {
33
+ role: "user",
34
+ content: "请生成一个虚构人物的信息,包含姓名、年龄、职业和爱好。",
35
+ },
36
+ ],
37
+ response_format: {
38
+ type: "json_schema",
39
+ json_schema: {
40
+ name: "person_info",
41
+ description: "人物信息",
42
+ schema: personSchema,
43
+ strict: true,
44
+ },
45
+ },
46
+ });
47
+
48
+ const content = response.choices[0].message.content;
49
+ console.log("Raw response:", content);
50
+
51
+ // 解析为类型化对象
52
+ if (typeof content === "string") {
53
+ const person = JSON.parse(content) as {
54
+ name: string;
55
+ age: number;
56
+ occupation: string;
57
+ hobbies: string[];
58
+ };
59
+ console.log("Parsed person:", person);
60
+ console.log(" Name:", person.name);
61
+ console.log(" Age:", person.age);
62
+ console.log(" Occupation:", person.occupation);
63
+ console.log(" Hobbies:", person.hobbies.join(", "));
64
+ }
65
+ }
66
+
67
+ async function main() {
68
+ await structuredOutput();
69
+ }
70
+
71
+ main().catch(console.error);
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Tokenization(分词计数)示例
3
+ * 对齐 Go SDK: example/tokenization/main.go
4
+ */
5
+ import { ArkRuntimeClient } from "@volcengine/ark-runtime";
6
+
7
+ const client = ArkRuntimeClient.withApiKey(process.env.ARK_API_KEY!);
8
+ const MODEL = "doubao-seed-2-0-pro-260215";
9
+
10
+ async function tokenize() {
11
+ console.log("----- Tokenization -----");
12
+
13
+ const response = await client.createTokenization({
14
+ model: MODEL,
15
+ text: "hello world, 你好世界!",
16
+ });
17
+
18
+ console.log("Response:", JSON.stringify(response, null, 2));
19
+
20
+ for (const item of response.data) {
21
+ console.log(` Total tokens: ${item.total_tokens}`);
22
+ console.log(` Token IDs: [${item.token_ids.join(", ")}]`);
23
+ }
24
+ }
25
+
26
+ async function main() {
27
+ await tokenize();
28
+ }
29
+
30
+ main().catch(console.error);
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@volcengine/ark-runtime",
3
+ "version": "1.0.0",
4
+ "files": [
5
+ "dist",
6
+ "src",
7
+ "example",
8
+ "package.json"
9
+ ],
10
+ "description": "Ark runtime data-plane client for model inference",
11
+ "license": "Apache-2.0",
12
+ "main": "./dist/cjs/index.js",
13
+ "module": "./dist/esm/index.mjs",
14
+ "types": "./dist/esm/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/esm/index.d.ts",
18
+ "import": "./dist/esm/index.mjs",
19
+ "require": "./dist/cjs/index.js"
20
+ },
21
+ "./package.json": "./package.json"
22
+ },
23
+ "engines": {
24
+ "node": ">=18"
25
+ },
26
+ "dependencies": {
27
+ "axios": "^1.13.6",
28
+ "@volcengine/ark": "1.0.1"
29
+ },
30
+ "devDependencies": {
31
+ "@types/jest": "^30.0.0",
32
+ "@types/node": "^20.8.0",
33
+ "@types/uuid": "^10.0.0",
34
+ "axios-mock-adapter": "^2.1.0",
35
+ "jest": "^30.2.0",
36
+ "ts-jest": "^29.4.5",
37
+ "typescript": "^5.2.2"
38
+ },
39
+ "sideEffects": false,
40
+ "scripts": {
41
+ "build": "rslib build",
42
+ "dev": "rslib build --watch",
43
+ "clean": "rm -rf dist",
44
+ "test": "jest",
45
+ "test:e2e": "ARK_E2E=1 jest --testPathPattern=e2e"
46
+ }
47
+ }