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.
- package/LICENSE +21 -0
- package/README.md +881 -0
- package/bin/coze-coding-ai.js +3 -0
- package/dist/cli/commands/chat.d.ts +3 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +58 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/image.d.ts +3 -0
- package/dist/cli/commands/image.d.ts.map +1 -0
- package/dist/cli/commands/image.js +92 -0
- package/dist/cli/commands/image.js.map +1 -0
- package/dist/cli/commands/search.d.ts +3 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +55 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/video.d.ts +4 -0
- package/dist/cli/commands/video.d.ts.map +1 -0
- package/dist/cli/commands/video.js +74 -0
- package/dist/cli/commands/video.js.map +1 -0
- package/dist/cli/commands/voice.d.ts +4 -0
- package/dist/cli/commands/voice.d.ts.map +1 -0
- package/dist/cli/commands/voice.js +112 -0
- package/dist/cli/commands/voice.js.map +1 -0
- package/dist/cli/constants.d.ts +4 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/constants.js +7 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +22 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils.d.ts +2 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +29 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/core/client.d.ts +10 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +62 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/config.d.ts +19 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +24 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/exceptions.d.ts +21 -0
- package/dist/core/exceptions.d.ts.map +1 -0
- package/dist/core/exceptions.js +44 -0
- package/dist/core/exceptions.js.map +1 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/image/client.d.ts +11 -0
- package/dist/image/client.d.ts.map +1 -0
- package/dist/image/client.js +34 -0
- package/dist/image/client.js.map +1 -0
- package/dist/image/index.d.ts +3 -0
- package/dist/image/index.d.ts.map +1 -0
- package/dist/image/index.js +19 -0
- package/dist/image/index.js.map +1 -0
- package/dist/image/models.d.ts +61 -0
- package/dist/image/models.d.ts.map +1 -0
- package/dist/image/models.js +100 -0
- package/dist/image/models.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/client.d.ts +12 -0
- package/dist/llm/client.d.ts.map +1 -0
- package/dist/llm/client.js +75 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/index.d.ts +3 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +8 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/models.d.ts +22 -0
- package/dist/llm/models.d.ts.map +1 -0
- package/dist/llm/models.js +11 -0
- package/dist/llm/models.js.map +1 -0
- package/dist/search/client.d.ts +21 -0
- package/dist/search/client.d.ts.map +1 -0
- package/dist/search/client.js +83 -0
- package/dist/search/client.js.map +1 -0
- package/dist/search/index.d.ts +3 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +19 -0
- package/dist/search/index.js.map +1 -0
- package/dist/search/models.d.ts +52 -0
- package/dist/search/models.d.ts.map +1 -0
- package/dist/search/models.js +70 -0
- package/dist/search/models.js.map +1 -0
- package/dist/video/client.d.ts +26 -0
- package/dist/video/client.d.ts.map +1 -0
- package/dist/video/client.js +71 -0
- package/dist/video/client.js.map +1 -0
- package/dist/video/index.d.ts +3 -0
- package/dist/video/index.d.ts.map +1 -0
- package/dist/video/index.js +19 -0
- package/dist/video/index.js.map +1 -0
- package/dist/video/models.d.ts +44 -0
- package/dist/video/models.d.ts.map +1 -0
- package/dist/video/models.js +31 -0
- package/dist/video/models.js.map +1 -0
- package/dist/voice/asr.d.ts +22 -0
- package/dist/voice/asr.d.ts.map +1 -0
- package/dist/voice/asr.js +50 -0
- package/dist/voice/asr.js.map +1 -0
- package/dist/voice/index.d.ts +4 -0
- package/dist/voice/index.d.ts.map +1 -0
- package/dist/voice/index.js +20 -0
- package/dist/voice/index.js.map +1 -0
- package/dist/voice/models.d.ts +37 -0
- package/dist/voice/models.d.ts.map +1 -0
- package/dist/voice/models.js +52 -0
- package/dist/voice/models.js.map +1 -0
- package/dist/voice/tts.d.ts +9 -0
- package/dist/voice/tts.d.ts.map +1 -0
- package/dist/voice/tts.js +100 -0
- package/dist/voice/tts.js.map +1 -0
- 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
|
+
[](https://www.typescriptlang.org/)
|
|
6
|
+
[](https://www.npmjs.com/package/coze-coding-dev-sdk)
|
|
7
|
+
[](../../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
|