Slide 19
Slide 19 text
カスタムデータのストリーミング
19
WorkflowでLLMに複数回問い合わせをすると、
インタラクションがなく体験が悪化 😭
→ typeにdata prefixをつけて細かくインタラク
ションを返却可能 🤩
参考: https://ai-sdk.dev/docs/ai-sdk-ui/streaming-data
writer.write({
type: 'data-notify-plan-started',
id: 'plan-start',
data: {
message: '計画を作成中
==.',
},
transient: true,
});
const plan = await planNode({
question,
pastMessages,
});
writer.write({
type: 'data-notify-subtasks-started',
id: 'subtasks-start',
data: {
totalTasks: plan.subTasks.length,
message: '検索中==.',
},
transient: true,
});
const subTaskResults = await execSubTaskListNode({
plan,
question,
pastMessages,
});
writer.write({
type: 'data-notify-answer-started',
id: 'answer-start',
data: {
message: '最終回答を作成中
==.',
},
transient: true,
});
const streamResult = await finalAnswerNode({
subTaskResults,
question,
pastMessages,
});
writer.merge(streamResult.toUIMessageStream());
※ 通知目的なら会話履歴に含めない設定
が必要!