|
@@ -16,22 +16,61 @@ class CozeService {
|
16
|
16
|
* @param {string} config.baseURL - Coze API的基础URL,默认为'https://api.coze.cn'
|
17
|
17
|
*/
|
18
|
18
|
constructor(config) {
|
19
|
|
- if (!config || !config.token) {
|
20
|
|
- throw new Error('必须提供Coze API的访问令牌');
|
21
|
|
- }
|
22
|
|
-
|
23
|
|
- this.token = config.token;
|
24
|
|
- this.baseURL = config.baseURL || 'https://api.coze.cn';
|
25
|
|
-
|
26
|
|
- // 初始化Coze API客户端
|
27
|
|
- this.apiClient = new CozeAPI({
|
28
|
|
- token: this.token,
|
29
|
|
- baseURL: this.baseURL,
|
30
|
|
- allowPersonalAccessTokenInBrowser: true // 允许在浏览器环境中使用个人访问令牌
|
31
|
|
- });
|
|
19
|
+ this.token = config?.token || '';
|
|
20
|
+ this.baseURL = config?.baseURL || 'https://api.coze.cn';
|
|
21
|
+
|
|
22
|
+ // 延迟初始化标志
|
|
23
|
+ this.apiClientInitialized = false;
|
32
|
24
|
|
33
|
25
|
// 用于存储工作流ID与名称的映射
|
34
|
26
|
this.workflows = {};
|
|
27
|
+
|
|
28
|
+ // 如果有token,立即初始化API客户端
|
|
29
|
+ if (this.token) {
|
|
30
|
+ this.initApiClient();
|
|
31
|
+ }
|
|
32
|
+ }
|
|
33
|
+
|
|
34
|
+ /**
|
|
35
|
+ * 初始化API客户端
|
|
36
|
+ * @returns {boolean} 初始化是否成功
|
|
37
|
+ */
|
|
38
|
+ initApiClient() {
|
|
39
|
+ try {
|
|
40
|
+ if (!this.token) {
|
|
41
|
+ return false;
|
|
42
|
+ }
|
|
43
|
+
|
|
44
|
+ // 初始化Coze API客户端
|
|
45
|
+ this.apiClient = new CozeAPI({
|
|
46
|
+ token: this.token,
|
|
47
|
+ baseURL: this.baseURL,
|
|
48
|
+ allowPersonalAccessTokenInBrowser: true // 允许在浏览器环境中使用个人访问令牌
|
|
49
|
+ });
|
|
50
|
+
|
|
51
|
+ this.apiClientInitialized = true;
|
|
52
|
+ return true;
|
|
53
|
+ } catch (error) {
|
|
54
|
+ console.error('初始化Coze API客户端失败:', error);
|
|
55
|
+ return false;
|
|
56
|
+ }
|
|
57
|
+ }
|
|
58
|
+
|
|
59
|
+ /**
|
|
60
|
+ * 检查API客户端是否已初始化,如果未初始化则尝试初始化
|
|
61
|
+ * @throws {Error} 如果无法初始化API客户端则抛出错误
|
|
62
|
+ */
|
|
63
|
+ checkApiClient() {
|
|
64
|
+ if (!this.apiClientInitialized) {
|
|
65
|
+ if (!this.token) {
|
|
66
|
+ throw new Error('必须提供Coze API的访问令牌');
|
|
67
|
+ }
|
|
68
|
+
|
|
69
|
+ const initialized = this.initApiClient();
|
|
70
|
+ if (!initialized) {
|
|
71
|
+ throw new Error('Coze API客户端初始化失败');
|
|
72
|
+ }
|
|
73
|
+ }
|
35
|
74
|
}
|
36
|
75
|
|
37
|
76
|
/**
|
|
@@ -74,6 +113,9 @@ class CozeService {
|
74
|
113
|
* @returns {Promise<Object>} - 返回API调用的响应
|
75
|
114
|
*/
|
76
|
115
|
async runWorkflowStream(workflowNameOrId, parameters = {}, options = {}) {
|
|
116
|
+ // 检查API客户端初始化
|
|
117
|
+ this.checkApiClient();
|
|
118
|
+
|
77
|
119
|
// 获取工作流ID
|
78
|
120
|
const workflowId = this.workflows[workflowNameOrId] || workflowNameOrId;
|
79
|
121
|
|
|
@@ -101,6 +143,9 @@ class CozeService {
|
101
|
143
|
* @returns {Promise<Object>} - 返回API调用的响应
|
102
|
144
|
*/
|
103
|
145
|
async runWorkflow(workflowNameOrId, parameters = {}, options = {}) {
|
|
146
|
+ // 检查API客户端初始化
|
|
147
|
+ this.checkApiClient();
|
|
148
|
+
|
104
|
149
|
// 获取工作流ID
|
105
|
150
|
const workflowId = this.workflows[workflowNameOrId] || workflowNameOrId;
|
106
|
151
|
|
|
@@ -129,6 +174,9 @@ class CozeService {
|
129
|
174
|
* @returns {Promise<Object>} - 返回工作流运行的状态
|
130
|
175
|
*/
|
131
|
176
|
async getWorkflowRunStatus(runId) {
|
|
177
|
+ // 检查API客户端初始化
|
|
178
|
+ this.checkApiClient();
|
|
179
|
+
|
132
|
180
|
if (!runId) {
|
133
|
181
|
throw new Error('必须提供工作流运行ID');
|
134
|
182
|
}
|
|
@@ -149,6 +197,9 @@ class CozeService {
|
149
|
197
|
* @returns {Promise<Object>} - 返回取消操作的结果
|
150
|
198
|
*/
|
151
|
199
|
async cancelWorkflowRun(runId) {
|
|
200
|
+ // 检查API客户端初始化
|
|
201
|
+ this.checkApiClient();
|
|
202
|
+
|
152
|
203
|
if (!runId) {
|
153
|
204
|
throw new Error('必须提供工作流运行ID');
|
154
|
205
|
}
|
|
@@ -169,6 +220,9 @@ class CozeService {
|
169
|
220
|
* @returns {Promise<Object>} - 返回工作流列表
|
170
|
221
|
*/
|
171
|
222
|
async listWorkflows(options = {}) {
|
|
223
|
+ // 检查API客户端初始化
|
|
224
|
+ this.checkApiClient();
|
|
225
|
+
|
172
|
226
|
try {
|
173
|
227
|
return await this.apiClient.workflows.list(options);
|
174
|
228
|
} catch (error) {
|
|
@@ -183,6 +237,9 @@ class CozeService {
|
183
|
237
|
* @returns {Promise<Array>} - 返回可用的画风列表
|
184
|
238
|
*/
|
185
|
239
|
async getStyleList(options = {}) {
|
|
240
|
+ // 检查API客户端初始化
|
|
241
|
+ this.checkApiClient();
|
|
242
|
+
|
186
|
243
|
try {
|
187
|
244
|
// 使用runWorkflow方法调用画风列表API
|
188
|
245
|
console.log('获取画风列表...');
|
|
@@ -211,6 +268,9 @@ class CozeService {
|
211
|
268
|
* @returns {Promise<Object>} - 返回生成的图片信息
|
212
|
269
|
*/
|
213
|
270
|
async generateImage(prompt, style = '', options = {}) {
|
|
271
|
+ // 检查API客户端初始化
|
|
272
|
+ this.checkApiClient();
|
|
273
|
+
|
214
|
274
|
try {
|
215
|
275
|
if (!prompt) {
|
216
|
276
|
throw new Error('必须提供画图的文本提示');
|