Open1
ai-sdk めも

export const exec = async (question: string) => {
try {
const response = createUIMessageStreamResponse({
status: 200,
stream: createUIMessageStream({
async execute({ writer }) {
// 進捗メッセージのバリエーション
const progressMessages = [
"まだ考えてるよ...",
"もうちょっと待って...",
"分析中です...",
"計画を練っています...",
"最適な方法を検討中...",
];
let messageIndex = 0;
// 一定間隔で進捗メッセージを送信
const progressInterval = setInterval(() => {
writer.write({
type: "text-delta",
id: "plan",
delta:
progressMessages[messageIndex % progressMessages.length] + "\n",
});
messageIndex++;
}, 1000); // 1秒ごとに送信
try {
// 計画を作成
const plan = await createPlan(question);
// インターバルをクリア
clearInterval(progressInterval);
// 計画完了メッセージ
writer.write({
type: "text-delta",
id: "plan",
delta: "\n計画が完成しました!実行中...\n",
});
// 最終回答を生成
const response = await createAnswer(question, plan);
writer.merge(response.toUIMessageStream());
} catch (error) {
// エラー時もインターバルをクリア
clearInterval(progressInterval);
throw error;
}
},
}),
});
return response;
} catch (error) {
console.error("エラーが発生しました:", error);
throw error;
}
};