coze-coding-dev-sdk 0.2.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 (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +881 -0
  3. package/bin/coze-coding-ai.js +3 -0
  4. package/dist/cli/commands/chat.d.ts +3 -0
  5. package/dist/cli/commands/chat.d.ts.map +1 -0
  6. package/dist/cli/commands/chat.js +58 -0
  7. package/dist/cli/commands/chat.js.map +1 -0
  8. package/dist/cli/commands/image.d.ts +3 -0
  9. package/dist/cli/commands/image.d.ts.map +1 -0
  10. package/dist/cli/commands/image.js +92 -0
  11. package/dist/cli/commands/image.js.map +1 -0
  12. package/dist/cli/commands/search.d.ts +3 -0
  13. package/dist/cli/commands/search.d.ts.map +1 -0
  14. package/dist/cli/commands/search.js +55 -0
  15. package/dist/cli/commands/search.js.map +1 -0
  16. package/dist/cli/commands/video.d.ts +4 -0
  17. package/dist/cli/commands/video.d.ts.map +1 -0
  18. package/dist/cli/commands/video.js +74 -0
  19. package/dist/cli/commands/video.js.map +1 -0
  20. package/dist/cli/commands/voice.d.ts +4 -0
  21. package/dist/cli/commands/voice.d.ts.map +1 -0
  22. package/dist/cli/commands/voice.js +112 -0
  23. package/dist/cli/commands/voice.js.map +1 -0
  24. package/dist/cli/constants.d.ts +4 -0
  25. package/dist/cli/constants.d.ts.map +1 -0
  26. package/dist/cli/constants.js +7 -0
  27. package/dist/cli/constants.js.map +1 -0
  28. package/dist/cli/index.d.ts +2 -0
  29. package/dist/cli/index.d.ts.map +1 -0
  30. package/dist/cli/index.js +22 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/cli/utils.d.ts +2 -0
  33. package/dist/cli/utils.d.ts.map +1 -0
  34. package/dist/cli/utils.js +29 -0
  35. package/dist/cli/utils.js.map +1 -0
  36. package/dist/core/client.d.ts +10 -0
  37. package/dist/core/client.d.ts.map +1 -0
  38. package/dist/core/client.js +62 -0
  39. package/dist/core/client.js.map +1 -0
  40. package/dist/core/config.d.ts +19 -0
  41. package/dist/core/config.d.ts.map +1 -0
  42. package/dist/core/config.js +24 -0
  43. package/dist/core/config.js.map +1 -0
  44. package/dist/core/exceptions.d.ts +21 -0
  45. package/dist/core/exceptions.d.ts.map +1 -0
  46. package/dist/core/exceptions.js +44 -0
  47. package/dist/core/exceptions.js.map +1 -0
  48. package/dist/core/index.d.ts +4 -0
  49. package/dist/core/index.d.ts.map +1 -0
  50. package/dist/core/index.js +14 -0
  51. package/dist/core/index.js.map +1 -0
  52. package/dist/image/client.d.ts +11 -0
  53. package/dist/image/client.d.ts.map +1 -0
  54. package/dist/image/client.js +34 -0
  55. package/dist/image/client.js.map +1 -0
  56. package/dist/image/index.d.ts +3 -0
  57. package/dist/image/index.d.ts.map +1 -0
  58. package/dist/image/index.js +19 -0
  59. package/dist/image/index.js.map +1 -0
  60. package/dist/image/models.d.ts +61 -0
  61. package/dist/image/models.d.ts.map +1 -0
  62. package/dist/image/models.js +100 -0
  63. package/dist/image/models.js.map +1 -0
  64. package/dist/index.d.ts +7 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +23 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/llm/client.d.ts +12 -0
  69. package/dist/llm/client.d.ts.map +1 -0
  70. package/dist/llm/client.js +75 -0
  71. package/dist/llm/client.js.map +1 -0
  72. package/dist/llm/index.d.ts +3 -0
  73. package/dist/llm/index.d.ts.map +1 -0
  74. package/dist/llm/index.js +8 -0
  75. package/dist/llm/index.js.map +1 -0
  76. package/dist/llm/models.d.ts +22 -0
  77. package/dist/llm/models.d.ts.map +1 -0
  78. package/dist/llm/models.js +11 -0
  79. package/dist/llm/models.js.map +1 -0
  80. package/dist/search/client.d.ts +21 -0
  81. package/dist/search/client.d.ts.map +1 -0
  82. package/dist/search/client.js +83 -0
  83. package/dist/search/client.js.map +1 -0
  84. package/dist/search/index.d.ts +3 -0
  85. package/dist/search/index.d.ts.map +1 -0
  86. package/dist/search/index.js +19 -0
  87. package/dist/search/index.js.map +1 -0
  88. package/dist/search/models.d.ts +52 -0
  89. package/dist/search/models.d.ts.map +1 -0
  90. package/dist/search/models.js +70 -0
  91. package/dist/search/models.js.map +1 -0
  92. package/dist/video/client.d.ts +26 -0
  93. package/dist/video/client.d.ts.map +1 -0
  94. package/dist/video/client.js +71 -0
  95. package/dist/video/client.js.map +1 -0
  96. package/dist/video/index.d.ts +3 -0
  97. package/dist/video/index.d.ts.map +1 -0
  98. package/dist/video/index.js +19 -0
  99. package/dist/video/index.js.map +1 -0
  100. package/dist/video/models.d.ts +44 -0
  101. package/dist/video/models.d.ts.map +1 -0
  102. package/dist/video/models.js +31 -0
  103. package/dist/video/models.js.map +1 -0
  104. package/dist/voice/asr.d.ts +22 -0
  105. package/dist/voice/asr.d.ts.map +1 -0
  106. package/dist/voice/asr.js +50 -0
  107. package/dist/voice/asr.js.map +1 -0
  108. package/dist/voice/index.d.ts +4 -0
  109. package/dist/voice/index.d.ts.map +1 -0
  110. package/dist/voice/index.js +20 -0
  111. package/dist/voice/index.js.map +1 -0
  112. package/dist/voice/models.d.ts +37 -0
  113. package/dist/voice/models.d.ts.map +1 -0
  114. package/dist/voice/models.js +52 -0
  115. package/dist/voice/models.js.map +1 -0
  116. package/dist/voice/tts.d.ts +9 -0
  117. package/dist/voice/tts.d.ts.map +1 -0
  118. package/dist/voice/tts.js +100 -0
  119. package/dist/voice/tts.js.map +1 -0
  120. package/package.json +79 -0
package/README.md ADDED
@@ -0,0 +1,881 @@
1
+ # Coze Coding Dev SDK - TypeScript
2
+
3
+ > 优雅、模块化的多功能 AI SDK,支持图片生成、视频生成、语音合成、语音识别、大语言模型和联网搜索
4
+
5
+ [![TypeScript](https://img.shields.io/badge/typescript-5.0+-blue.svg)](https://www.typescriptlang.org/)
6
+ [![npm](https://img.shields.io/npm/v/coze-coding-dev-sdk.svg)](https://www.npmjs.com/package/coze-coding-dev-sdk)
7
+ [![License](https://img.shields.io/badge/license-MIT-green.svg)](../../LICENSE)
8
+
9
+ ## ✨ 特性
10
+
11
+ - 🎨 **图片生成** - 基于豆包 SeeDream 模型的高质量图片生成
12
+ - 🎬 **视频生成** - 文本/图片生成视频,支持多种模型和配置
13
+ - 🤖 **大语言模型** - 支持流式对话、思考链、缓存机制
14
+ - 🔍 **联网搜索** - Web 搜索、AI 总结、图片搜索
15
+ - 🎙️ **语音合成 (TTS)** - 多音色、高质量的文本转语音
16
+ - 🎧 **语音识别 (ASR)** - 快速准确的语音转文字
17
+ - 🖥️ **CLI 工具** - 强大的命令行工具,支持所有功能
18
+ - 🏗️ **模块化设计** - 清晰的模块划分,易于扩展
19
+ - 🔒 **类型安全** - 完整的 TypeScript 类型定义
20
+ - 🔄 **自动重试** - 内置重试机制
21
+ - 📊 **Promise/Async** - 现代异步编程支持
22
+
23
+ ## 📦 安装
24
+
25
+ ### 作为 SDK 使用
26
+
27
+ ```bash
28
+ npm install coze-coding-dev-sdk
29
+ # 或
30
+ yarn add coze-coding-dev-sdk
31
+ # 或
32
+ pnpm add coze-coding-dev-sdk
33
+ ```
34
+
35
+ ### 作为 CLI 工具使用
36
+
37
+ ```bash
38
+ npm install -g coze-coding-dev-sdk
39
+ ```
40
+
41
+ 安装后可以使用 `coze-coding-ai` 命令:
42
+
43
+ ```bash
44
+ coze-coding-ai --version
45
+ coze-coding-ai --help
46
+ ```
47
+
48
+ ## 🚀 快速开始
49
+
50
+ ### 环境配置
51
+
52
+ ```bash
53
+ export COZE_WORKLOAD_IDENTITY_API_KEY="your_api_key"
54
+ export COZE_INTEGRATION_BASE_URL="https://api.coze.com"
55
+ export COZE_INTEGRATION_MODEL_BASE_URL="https://model.coze.com"
56
+ ```
57
+
58
+ ### 图片生成
59
+
60
+ ```typescript
61
+ import { ImageGenerationClient, Config } from 'coze-coding-dev-sdk';
62
+
63
+ const config = new Config({
64
+ apiKey: process.env.COZE_WORKLOAD_IDENTITY_API_KEY,
65
+ baseUrl: process.env.COZE_INTEGRATION_BASE_URL,
66
+ });
67
+
68
+ const client = new ImageGenerationClient(config);
69
+
70
+ const response = await client.generate({
71
+ prompt: 'A beautiful sunset over mountains',
72
+ size: '2K',
73
+ });
74
+
75
+ const helper = client.getResponseHelper(response);
76
+ console.log('Image URLs:', helper.imageUrls);
77
+ ```
78
+
79
+ ## 🎯 核心模块
80
+
81
+ ### 1. 图片生成 (Image)
82
+
83
+ ```typescript
84
+ import { ImageGenerationClient } from 'coze-coding-dev-sdk';
85
+
86
+ const client = new ImageGenerationClient();
87
+
88
+ const response = await client.generate({
89
+ prompt: 'A cute cat sitting on a windowsill',
90
+ size: '4K',
91
+ watermark: false,
92
+ });
93
+
94
+ const helper = client.getResponseHelper(response);
95
+ console.log('Success:', helper.success);
96
+ console.log('Image URLs:', helper.imageUrls);
97
+ ```
98
+
99
+ **功能特性:**
100
+
101
+ - 支持 2K/4K 或自定义尺寸 (WIDTHxHEIGHT)
102
+ - 文生图 (text-to-image)
103
+ - 图生图 (image-to-image)
104
+ - 批量生成
105
+ - 返回 URL 或 Base64 格式
106
+ - 组图生成功能
107
+ - 提示词优化
108
+
109
+ **参数说明:**
110
+
111
+ ```typescript
112
+ interface ImageGenerationRequest {
113
+ prompt: string; // 提示词(必需)
114
+ size?: string; // 尺寸:'2K' | '4K' | 'WIDTHxHEIGHT'
115
+ watermark?: boolean; // 是否添加水印
116
+ image?: string | string[]; // 参考图片(单个或多个)
117
+ responseFormat?: 'url' | 'b64_json'; // 返回格式
118
+ optimizePromptMode?: string; // 提示词优化模式
119
+ sequentialImageGeneration?: 'auto' | 'disabled'; // 组图功能
120
+ sequentialImageGenerationMaxImages?: number; // 最大图片数量 (1-15)
121
+ }
122
+ ```
123
+
124
+ **批量生成:**
125
+
126
+ ```typescript
127
+ const responses = await client.batchGenerate([
128
+ { prompt: 'A spring cherry blossom', size: '2K' },
129
+ { prompt: 'A summer beach scene', size: '4K' },
130
+ { prompt: 'An autumn forest', size: '2K' },
131
+ ]);
132
+
133
+ responses.forEach((response, index) => {
134
+ const helper = client.getResponseHelper(response);
135
+ console.log(`Image ${index + 1}:`, helper.imageUrls);
136
+ });
137
+ ```
138
+
139
+ **图生图:**
140
+
141
+ ```typescript
142
+ const response = await client.generate({
143
+ prompt: 'Transform into watercolor painting style',
144
+ image: 'https://example.com/reference-image.jpg',
145
+ size: '4K',
146
+ });
147
+ ```
148
+
149
+ **Base64 响应:**
150
+
151
+ ```typescript
152
+ const response = await client.generate({
153
+ prompt: 'A professional portrait',
154
+ size: '2K',
155
+ responseFormat: 'b64_json',
156
+ });
157
+
158
+ const helper = client.getResponseHelper(response);
159
+ console.log('Base64 data:', helper.imageB64List);
160
+ ```
161
+
162
+ ### 2. 联网搜索 (Search)
163
+
164
+ ```typescript
165
+ import { SearchClient } from 'coze-coding-dev-sdk';
166
+
167
+ const client = new SearchClient();
168
+
169
+ const response = await client.webSearch('AI 最新进展', 10);
170
+
171
+ console.log(`Found ${response.web_items.length} results`);
172
+ response.web_items.forEach(item => {
173
+ console.log(`${item.title}: ${item.url}`);
174
+ });
175
+ ```
176
+
177
+ **功能特性:**
178
+
179
+ - Web 搜索
180
+ - Web 搜索 + AI 智能摘要
181
+ - 图片搜索
182
+ - 高级过滤(站点、时间范围、内容要求)
183
+ - 结构化结果返回
184
+
185
+ **搜索类型:**
186
+
187
+ ```typescript
188
+ const response1 = await client.webSearch('Python 教程', 10);
189
+
190
+ const response2 = await client.webSearchWithSummary('量子计算原理', 10);
191
+
192
+ const response3 = await client.imageSearch('可爱的猫咪', 20);
193
+ ```
194
+
195
+ **高级搜索:**
196
+
197
+ ```typescript
198
+ const response = await client.advancedSearch('Python 教程', {
199
+ searchType: 'web',
200
+ count: 20,
201
+ needContent: true,
202
+ needUrl: true,
203
+ sites: 'python.org,github.com',
204
+ blockHosts: 'example.com',
205
+ timeRange: '1m',
206
+ needSummary: true,
207
+ });
208
+
209
+ console.log('Summary:', response.summary);
210
+ response.web_items.forEach(item => {
211
+ console.log(`${item.title}`);
212
+ console.log(` Site: ${item.site_name}`);
213
+ console.log(` Authority: ${item.auth_info_level}`);
214
+ });
215
+ ```
216
+
217
+ **自定义搜索请求:**
218
+
219
+ ```typescript
220
+ const response = await client.search({
221
+ query: '最新科技新闻',
222
+ search_type: 'web_summary',
223
+ count: 10,
224
+ filter: {
225
+ need_content: true,
226
+ need_url: true,
227
+ sites: 'techcrunch.com,wired.com',
228
+ block_hosts: 'spam.com',
229
+ },
230
+ need_summary: true,
231
+ time_range: '1d',
232
+ });
233
+ ```
234
+
235
+ **搜索结果结构:**
236
+
237
+ ```typescript
238
+ interface SearchResponse {
239
+ web_items: WebItem[];
240
+ image_items: ImageItem[];
241
+ summary?: string;
242
+ }
243
+
244
+ interface WebItem {
245
+ id: string;
246
+ sort_id: number;
247
+ title: string;
248
+ site_name?: string;
249
+ url?: string;
250
+ snippet: string;
251
+ summary?: string;
252
+ content?: string;
253
+ publish_time?: string;
254
+ logo_url?: string;
255
+ rank_score?: number;
256
+ auth_info_des: string;
257
+ auth_info_level: number;
258
+ }
259
+
260
+ interface ImageItem {
261
+ id: string;
262
+ sort_id: number;
263
+ title?: string;
264
+ site_name?: string;
265
+ url?: string;
266
+ publish_time?: string;
267
+ image: {
268
+ url: string;
269
+ width?: number;
270
+ height?: number;
271
+ shape: string;
272
+ };
273
+ }
274
+ ```
275
+
276
+ ### 3. 语音功能 (Voice)
277
+
278
+ #### 语音合成 (TTS)
279
+
280
+ ```typescript
281
+ import { TTSClient } from 'coze-coding-dev-sdk';
282
+
283
+ const client = new TTSClient();
284
+
285
+ const response = await client.synthesize({
286
+ uid: 'user123',
287
+ text: '你好,欢迎使用 Coze SDK!',
288
+ speaker: 'zh_female_xiaohe_uranus_bigtts',
289
+ audioFormat: 'mp3',
290
+ sampleRate: 24000,
291
+ });
292
+
293
+ console.log('Audio URI:', response.audioUri);
294
+ console.log('Audio Size:', response.audioSize, 'bytes');
295
+ ```
296
+
297
+ **功能特性:**
298
+
299
+ - 文本转语音 (TTS)
300
+ - 支持 SSML 格式
301
+ - 30+ 音色选择
302
+ - 可调节语速和音量
303
+ - 多种音频格式(MP3/PCM/OGG)
304
+ - 流式返回
305
+
306
+ **TTS 参数:**
307
+
308
+ ```typescript
309
+ interface TTSRequest {
310
+ uid: string; // 用户 ID(必需)
311
+ text?: string; // 文本内容
312
+ ssml?: string; // SSML 格式文本
313
+ speaker?: string; // 音色
314
+ audioFormat?: 'pcm' | 'mp3' | 'ogg_opus'; // 音频格式
315
+ sampleRate?: number; // 采样率
316
+ speechRate?: number; // 语速 (-5 到 5)
317
+ loudnessRate?: number; // 音量 (-5 到 5)
318
+ }
319
+ ```
320
+
321
+ **SSML 示例:**
322
+
323
+ ```typescript
324
+ const ssmlText = `
325
+ <speak>
326
+ <prosody rate="slow">慢速说话</prosody>
327
+ <break time="500ms"/>
328
+ <prosody rate="fast">快速说话</prosody>
329
+ </speak>
330
+ `;
331
+
332
+ const response = await client.synthesize({
333
+ uid: 'user123',
334
+ ssml: ssmlText,
335
+ speaker: 'zh_female_xiaohe_uranus_bigtts',
336
+ });
337
+ ```
338
+
339
+ **自定义参数:**
340
+
341
+ ```typescript
342
+ const response = await client.synthesize({
343
+ uid: 'user123',
344
+ text: '这是一段测试语音',
345
+ speaker: 'zh_female_xiaohe_uranus_bigtts',
346
+ audioFormat: 'mp3',
347
+ sampleRate: 24000,
348
+ speechRate: 1, // 加快语速
349
+ loudnessRate: 2, // 增大音量
350
+ });
351
+ ```
352
+
353
+ #### 语音识别 (ASR)
354
+
355
+ ```typescript
356
+ import { ASRClient } from 'coze-coding-dev-sdk';
357
+
358
+ const client = new ASRClient();
359
+
360
+ const response = await client.recognize({
361
+ uid: 'user123',
362
+ url: 'https://example.com/audio.mp3',
363
+ });
364
+
365
+ console.log('Recognized Text:', response.text);
366
+ console.log('Duration:', response.duration, 'seconds');
367
+ ```
368
+
369
+ **功能特性:**
370
+
371
+ - 语音转文字 (ASR)
372
+ - 支持 URL 和 Base64 输入
373
+ - 多种音频格式
374
+ - 详细的时间戳信息
375
+ - 最长 2 小时音频
376
+
377
+ **音频要求:**
378
+
379
+ - 音频时长 ≤ 2小时
380
+ - 音频大小 ≤ 100MB
381
+ - 支持编码: PCM/WAV/MP3/OGG OPUS
382
+
383
+ **ASR 参数:**
384
+
385
+ ```typescript
386
+ interface ASRRequest {
387
+ uid?: string; // 用户 ID
388
+ url?: string; // 音频 URL
389
+ base64Data?: string; // Base64 编码的音频数据
390
+ }
391
+ ```
392
+
393
+ **从 URL 识别:**
394
+
395
+ ```typescript
396
+ const response = await client.recognize({
397
+ uid: 'user123',
398
+ url: 'https://example.com/audio.mp3',
399
+ });
400
+ ```
401
+
402
+ **从 Base64 识别:**
403
+
404
+ ```typescript
405
+ const response = await client.recognize({
406
+ uid: 'user123',
407
+ base64Data: 'base64_encoded_audio_data',
408
+ });
409
+ ```
410
+
411
+ **TTS + ASR 完整流程:**
412
+
413
+ ```typescript
414
+ const ttsClient = new TTSClient();
415
+ const asrClient = new ASRClient();
416
+
417
+ const originalText = '这是一段测试文本';
418
+
419
+ const ttsResponse = await ttsClient.synthesize({
420
+ uid: 'user123',
421
+ text: originalText,
422
+ });
423
+
424
+ const asrResponse = await asrClient.recognize({
425
+ uid: 'user123',
426
+ url: ttsResponse.audioUri,
427
+ });
428
+
429
+ console.log('Original:', originalText);
430
+ console.log('Recognized:', asrResponse.text);
431
+ ```
432
+
433
+ ### 4. 视频生成 (Video)
434
+
435
+ ```typescript
436
+ import { VideoGenerationClient } from 'coze-coding-dev-sdk';
437
+
438
+ const client = new VideoGenerationClient();
439
+
440
+ const task = await client.textToVideo('一只可爱的小猫在草地上玩耍', {
441
+ config: {
442
+ resolution: '720p',
443
+ ratio: '16:9',
444
+ duration: 5,
445
+ },
446
+ });
447
+
448
+ console.log('Video URL:', task.video_url);
449
+ ```
450
+
451
+ **功能特性:**
452
+
453
+ - 文本生成视频 (text-to-video)
454
+ - 图片生成视频 (image-to-video)
455
+ - 支持首帧、尾帧、参考图片
456
+ - 异步任务轮询
457
+ - 多种分辨率和比例
458
+ - 可配置时长、水印等
459
+
460
+ **视频配置:**
461
+
462
+ ```typescript
463
+ interface VideoGenerationConfig {
464
+ resolution?: '720p' | '1080p'; // 分辨率
465
+ ratio?: '16:9' | '9:16' | '1:1'; // 宽高比
466
+ duration?: number; // 时长 (5-10秒)
467
+ watermark?: boolean; // 水印
468
+ seed?: number; // 随机种子
469
+ camerafixed?: boolean; // 固定镜头
470
+ }
471
+ ```
472
+
473
+ **文生视频:**
474
+
475
+ ```typescript
476
+ const task = await client.textToVideo('一只可爱的小猫在草地上玩耍', {
477
+ config: {
478
+ resolution: '1080p',
479
+ ratio: '16:9',
480
+ duration: 5,
481
+ },
482
+ pollInterval: 5,
483
+ maxWaitTime: 300,
484
+ });
485
+ ```
486
+
487
+ **图生视频(首帧):**
488
+
489
+ ```typescript
490
+ const task = await client.imageToVideo('小猫从坐着到站起来', {
491
+ firstFrameUrl: 'https://example.com/cat_sitting.jpg',
492
+ config: {
493
+ resolution: '720p',
494
+ ratio: '16:9',
495
+ duration: 5,
496
+ },
497
+ });
498
+ ```
499
+
500
+ **图生视频(首帧+尾帧):**
501
+
502
+ ```typescript
503
+ const task = await client.imageToVideo('小猫的动作变化', {
504
+ firstFrameUrl: 'https://example.com/cat_sitting.jpg',
505
+ lastFrameUrl: 'https://example.com/cat_standing.jpg',
506
+ config: {
507
+ resolution: '720p',
508
+ ratio: '16:9',
509
+ duration: 5,
510
+ },
511
+ });
512
+ ```
513
+
514
+ **参考图片生成:**
515
+
516
+ ```typescript
517
+ const task = await client.imageToVideo('根据参考图片生成视频', {
518
+ referenceImages: ['https://example.com/reference1.jpg', 'https://example.com/reference2.jpg'],
519
+ config: {
520
+ resolution: '720p',
521
+ ratio: '9:16',
522
+ duration: 5,
523
+ },
524
+ });
525
+ ```
526
+
527
+ **检查任务状态:**
528
+
529
+ ```typescript
530
+ const task = await client.checkTask('task_id');
531
+
532
+ console.log('Status:', task.status);
533
+ if (task.status === 'completed') {
534
+ console.log('Video URL:', task.video_url);
535
+ } else if (task.status === 'failed') {
536
+ console.log('Error:', task.error_message);
537
+ }
538
+ ```
539
+
540
+ ### 配置 (Config)
541
+
542
+ ```typescript
543
+ import { Config } from 'coze-coding-dev-sdk';
544
+
545
+ const config = new Config({
546
+ apiKey: process.env.COZE_WORKLOAD_IDENTITY_API_KEY,
547
+ baseUrl: process.env.COZE_INTEGRATION_BASE_URL,
548
+ modelBaseUrl: process.env.COZE_INTEGRATION_MODEL_BASE_URL,
549
+ retryTimes: 5,
550
+ retryDelay: 2,
551
+ timeout: 120000,
552
+ });
553
+ ```
554
+
555
+ ### 异常处理
556
+
557
+ ```typescript
558
+ import {
559
+ CozeSDKError,
560
+ APIError,
561
+ NetworkError,
562
+ ValidationError,
563
+ ConfigurationError,
564
+ } from 'coze-coding-dev-sdk';
565
+
566
+ try {
567
+ // SDK 调用
568
+ } catch (error) {
569
+ if (error instanceof ValidationError) {
570
+ console.error(`参数错误: ${error.field} = ${error.value}`);
571
+ } else if (error instanceof APIError) {
572
+ console.error(`API 错误: ${error.message}, 状态码: ${error.statusCode}`);
573
+ } else if (error instanceof NetworkError) {
574
+ console.error(`网络错误: ${error.message}`);
575
+ } else if (error instanceof ConfigurationError) {
576
+ console.error(`配置错误: ${error.missingKey}`);
577
+ }
578
+ }
579
+ ```
580
+
581
+ ## 📁 项目结构
582
+
583
+ ```
584
+ typescript/
585
+ ├── src/
586
+ │ ├── core/ # 核心层
587
+ │ │ ├── config.ts # 配置管理
588
+ │ │ ├── client.ts # 基础客户端
589
+ │ │ └── exceptions.ts # 异常定义
590
+ │ ├── image/ # 图片生成模块 ✅
591
+ │ │ ├── client.ts # ImageGenerationClient
592
+ │ │ ├── models.ts # 数据模型
593
+ │ │ └── index.ts # 导出
594
+ │ ├── search/ # 搜索模块 ✅
595
+ │ │ ├── client.ts # SearchClient
596
+ │ │ ├── models.ts # 数据模型
597
+ │ │ └── index.ts # 导出
598
+ │ ├── voice/ # 语音模块 ✅
599
+ │ │ ├── tts.ts # TTSClient
600
+ │ │ ├── asr.ts # ASRClient
601
+ │ │ ├── models.ts # 数据模型
602
+ │ │ └── index.ts # 导出
603
+ │ ├── video/ # 视频生成模块 ✅
604
+ │ │ ├── client.ts # VideoGenerationClient
605
+ │ │ ├── models.ts # 数据模型
606
+ │ │ └── index.ts # 导出
607
+ │ ├── llm/ # 大语言模型模块 ✅
608
+ │ │ ├── client.ts # LLMClient
609
+ │ │ ├── models.ts # 数据模型
610
+ │ │ └── index.ts # 导出
611
+ │ ├── cli/ # CLI 工具 ✅
612
+ │ │ ├── index.ts # CLI 入口
613
+ │ │ └── commands/ # 命令实现
614
+ │ │ ├── image.ts
615
+ │ │ ├── video.ts
616
+ │ │ ├── search.ts
617
+ │ │ ├── voice.ts
618
+ │ │ └── chat.ts
619
+ │ └── index.ts # 主入口
620
+ ├── bin/
621
+ │ └── coze-coding-ai.js # CLI 可执行文件
622
+ ├── examples/ # 使用示例
623
+ │ ├── image-generation-example.ts
624
+ │ ├── search-example.ts
625
+ │ ├── voice-example.ts
626
+ │ ├── video-example.ts
627
+ │ └── llm-example.ts
628
+ ├── dist/ # 编译输出
629
+ ├── package.json # npm 配置
630
+ ├── tsconfig.json # TypeScript 配置
631
+ ├── CLI.md # CLI 使用指南
632
+ └── PUBLISHING.md # 发布指南
633
+ ```
634
+
635
+ ### 5. 大语言模型 (LLM)
636
+
637
+ ```typescript
638
+ import { LLMClient } from 'coze-coding-dev-sdk';
639
+
640
+ const client = new LLMClient();
641
+
642
+ const response = await client.invoke(
643
+ [
644
+ { role: 'system', content: '你是一个有帮助的AI助手。' },
645
+ { role: 'user', content: '介绍一下Python编程语言的特点' },
646
+ ],
647
+ { temperature: 0.7 }
648
+ );
649
+
650
+ console.log(response.content);
651
+ ```
652
+
653
+ **功能特性:**
654
+
655
+ - 流式对话 (stream)
656
+ - 非流式对话 (invoke)
657
+ - 支持 thinking 模式
658
+ - 支持 caching 机制
659
+ - 可配置温度、模型等参数
660
+ - 多轮对话支持
661
+
662
+ **流式对话:**
663
+
664
+ ```typescript
665
+ const stream = client.stream([{ role: 'user', content: '介绍一下TypeScript' }], {
666
+ temperature: 0.7,
667
+ });
668
+
669
+ for await (const chunk of stream) {
670
+ if (chunk.content) {
671
+ process.stdout.write(chunk.content.toString());
672
+ }
673
+ }
674
+ ```
675
+
676
+ **LLM 配置:**
677
+
678
+ ```typescript
679
+ interface LLMConfig {
680
+ model?: string; // 模型名称
681
+ thinking?: 'enabled' | 'disabled'; // 思考链
682
+ caching?: 'enabled' | 'disabled'; // 缓存
683
+ temperature?: number; // 温度 (0-2)
684
+ streaming?: boolean; // 是否流式
685
+ }
686
+ ```
687
+
688
+ ## 🖥️ CLI 工具
689
+
690
+ 除了作为 SDK 使用,本包还提供了强大的命令行工具。
691
+
692
+ ### 全局安装
693
+
694
+ ```bash
695
+ npm install -g coze-coding-dev-sdk
696
+ ```
697
+
698
+ ### 环境配置
699
+
700
+ ```bash
701
+ export COZE_CODING_API_KEY="your-api-key-here"
702
+ export COZE_CODING_BASE_URL="https://api.coze.cn" # 可选
703
+ export COZE_CODING_MODEL_BASE_URL="https://ark.cn-beijing.volces.com/api/v3" # 可选
704
+ ```
705
+
706
+ ### CLI 命令
707
+
708
+ #### 1. 图片生成
709
+
710
+ ```bash
711
+ # 基本用法
712
+ coze-coding-ai image -p "a beautiful sunset over the ocean"
713
+
714
+ # 指定尺寸并保存
715
+ coze-coding-ai image -p "a cat" --size 4K -o output.jpg
716
+ ```
717
+
718
+ #### 2. 视频生成
719
+
720
+ ```bash
721
+ # 生成视频
722
+ coze-coding-ai video -p "a cat playing with a ball" --duration 5
723
+
724
+ # 查询状态
725
+ coze-coding-ai video-status --task-id <task-id>
726
+ ```
727
+
728
+ #### 3. 联网搜索
729
+
730
+ ```bash
731
+ # 网页搜索
732
+ coze-coding-ai search -q "TypeScript 最新特性" --count 10
733
+
734
+ # 图片搜索
735
+ coze-coding-ai search -q "sunset" --type image
736
+ ```
737
+
738
+ #### 4. 语音合成
739
+
740
+ ```bash
741
+ coze-coding-ai tts -t "你好,世界" --speaker zh_female_xiaohe_uranus_bigtts
742
+ ```
743
+
744
+ #### 5. 语音识别
745
+
746
+ ```bash
747
+ # 使用 URL
748
+ coze-coding-ai asr -u "https://example.com/audio.mp3"
749
+
750
+ # 使用本地文件
751
+ coze-coding-ai asr -f ./audio.mp3
752
+ ```
753
+
754
+ #### 6. AI 对话
755
+
756
+ ```bash
757
+ # 基本对话
758
+ coze-coding-ai chat -p "什么是人工智能?"
759
+
760
+ # 流式输出
761
+ coze-coding-ai chat -p "写一首诗" --stream
762
+
763
+ # 带系统提示
764
+ coze-coding-ai chat -p "解释量子计算" -s "你是一个物理学教授"
765
+ ```
766
+
767
+ ### CLI 使用场景
768
+
769
+ **场景 1: 快速生成产品图片**
770
+
771
+ ```bash
772
+ coze-coding-ai image \
773
+ -p "A modern smartphone with sleek design" \
774
+ --size 4K \
775
+ -o product.jpg
776
+ ```
777
+
778
+ **场景 2: 内容研究**
779
+
780
+ ```bash
781
+ # 搜索信息
782
+ coze-coding-ai search -q "AI trends 2024" --count 20
783
+
784
+ # AI 总结
785
+ coze-coding-ai chat \
786
+ -p "总结一下 AI 在 2024 年的主要趋势" \
787
+ -s "你是一个 AI 研究专家"
788
+ ```
789
+
790
+ **场景 3: 自动化工作流**
791
+
792
+ ```bash
793
+ #!/bin/bash
794
+ # 生成图片
795
+ coze-coding-ai image -p "logo design" -o logo.jpg
796
+
797
+ # 生成描述
798
+ coze-coding-ai chat -p "为这个 logo 写一段营销文案" -o description.txt
799
+
800
+ # 转语音
801
+ coze-coding-ai tts -t "$(cat description.txt)"
802
+ ```
803
+
804
+ 查看完整的 CLI 文档:[CLI.md](./CLI.md)
805
+
806
+ ## 🛠️ 开发
807
+
808
+ ### 安装依赖
809
+
810
+ ```bash
811
+ npm install
812
+ ```
813
+
814
+ ### 构建
815
+
816
+ ```bash
817
+ npm run build
818
+ ```
819
+
820
+ ### 开发模式
821
+
822
+ ```bash
823
+ npm run dev
824
+ ```
825
+
826
+ ### 本地测试 CLI
827
+
828
+ ```bash
829
+ # 构建并链接
830
+ npm run build
831
+ npm link
832
+
833
+ # 测试命令
834
+ coze-coding-ai --version
835
+ coze-coding-ai --help
836
+
837
+ # 取消链接
838
+ npm unlink -g coze-coding-dev-sdk
839
+ ```
840
+
841
+ ### 代码检查
842
+
843
+ ```bash
844
+ npm run lint
845
+ ```
846
+
847
+ ### 格式化
848
+
849
+ ```bash
850
+ npm run format
851
+ ```
852
+
853
+ ### 测试
854
+
855
+ ```bash
856
+ npm test
857
+ ```
858
+
859
+ ## 📊 版本历史
860
+
861
+ 查看 [../../CHANGELOG.md](../../CHANGELOG.md) 了解详细的版本变更记录。
862
+
863
+ ## 🤝 贡献
864
+
865
+ 欢迎提交 Issue 和 Pull Request!
866
+
867
+ 查看 [../../CONTRIBUTING.md](../../CONTRIBUTING.md) 了解如何参与贡献。
868
+
869
+ ## 📄 许可证
870
+
871
+ 本项目采用 [MIT License](../../LICENSE) 开源协议。
872
+
873
+ ## 🙏 致谢
874
+
875
+ 基于 Coze AI Integrations 和豆包大模型构建。
876
+
877
+ ## 📞 联系方式
878
+
879
+ - 项目主页: https://github.com/coze/coze-sdk
880
+ - 问题反馈: https://github.com/coze/coze-sdk/issues
881
+ - 邮箱: support@coze.com