import { SentencePerfect } from '../src/module/sentence-perfect.ts'; import { readFileSync, writeFileSync } from 'node:fs'; import { join, dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; import { Kevisual } from '@kevisual/ai'; import { config } from '../src/module/config.ts'; const __dirname = dirname(fileURLToPath(import.meta.url)); // 配置 const INPUT_PATH = join(__dirname, '../data/sentence-01.json'); const OUTPUT_PATH = join(__dirname, '../data/sentence-01-optimized.json'); // 读取原始句子 const data = JSON.parse(readFileSync(INPUT_PATH, 'utf-8')); const sentences = data.sentences || data; console.log(`📖 加载了 ${sentences.length} 条句子\n`); // 创建 AI 实例 const ai = new Kevisual({ apiKey: config.KEVISUAL_NEW_API_KEY || '', model: 'qwen-turbo' }); // 创建优化器 const perfect = new SentencePerfect({ ai, concurrency: 3, // 并发数 retryTimes: 2, // 重试次数 // 进度回调 onProgress: (progress) => { const { current, total, percentage, successCount, errorCount } = progress; process.stdout.write(`\r🔄 进度: ${current}/${total} (${percentage}%) | 成功: ${successCount} | 失败: ${errorCount}`); }, // 成功回调 onSuccess: (result) => { if (result.index % 10 === 0) { console.log(`\n✅ ${result.index}: "${result.text}"`); console.log(` → "${result.optimized}"`); } }, // 失败回调 onError: (error) => { console.log(`\n❌ ${error.index}: ${error.error}`); } }); // 准备数据 - 只处理前20条作为测试 // const items = sentences.slice(0, 2).map((s: any, i: number) => ({ // ...s, // index: s.index || i + 1 // })); const items = sentences; console.log('🚀 开始优化句子...\n'); // 执行优化 const startTime = Date.now(); const results = await perfect.perfectBatch(items); const elapsed = Date.now() - startTime; console.log(`\n\n✅ 完成!耗时: ${(elapsed / 1000).toFixed(2)}秒`); // 统计 const successResults = results.filter(r => r.optimized !== r.text); console.log(` 成功: ${successResults.length}/${results.length}`); // 保存结果 const output = { meta: { total: results.length, success: successResults.length, optimizedAt: new Date().toISOString() }, sentences: results }; writeFileSync(OUTPUT_PATH, JSON.stringify(output, null, 2), 'utf-8'); console.log(`📁 结果已保存到: ${OUTPUT_PATH}`); // 显示示例 console.log('\n📝 优化示例:'); successResults.slice(0, 5).forEach((r, i) => { console.log(`\n${i + 1}. [${r.theme}]`); console.log(` 原: ${r.text}`); console.log(` 优: ${r.optimized}`); });