30 lines
1.1 KiB
JavaScript
30 lines
1.1 KiB
JavaScript
// ai.js
|
|
import { COMMANDS } from './commands.js';
|
|
|
|
export async function translateToCommand(userInput) {
|
|
const availableKeys = COMMANDS.map(c => c.key).join(', ');
|
|
const systemPrompt = `你是一个助手。将输入映射到以下关键词之一:${availableKeys}。只输出关键词,不要其他字。无法匹配则输出 UNKNOWN。`;
|
|
|
|
return new Promise((resolve) => {
|
|
// 1. 监听结果
|
|
const handler = (event) => {
|
|
const response = event.detail;
|
|
window.removeEventListener("AI_RESULT", handler);
|
|
|
|
if (response.success) {
|
|
const content = response.data.choices[0].message.content.trim();
|
|
console.log("📥 AI 识别结果:", content);
|
|
resolve(content === "UNKNOWN" ? null : content);
|
|
} else {
|
|
console.error("AI 失败:", response.error);
|
|
resolve(null);
|
|
}
|
|
};
|
|
window.addEventListener("AI_RESULT", handler);
|
|
|
|
// 2. 触发请求
|
|
window.dispatchEvent(new CustomEvent("DO_AI_REQUEST", {
|
|
detail: { userInput, systemPrompt }
|
|
}));
|
|
});
|
|
} |