Tasks APIは、バックグラウンドタスク(再インデックス、エッジ再生成など)を管理するためのインターフェースです。
const client = new NdxClient({
apiKey: process.env.NEURADEX_API_KEY,
projectId: 'your-project-id',
});
// Tasks APIにアクセス
const tasks = await client.tasks.list();
await client.tasks.run('task-id');
メソッド一覧
| メソッド | 説明 |
|---|
list(options?) | タスク一覧を取得 |
get(taskId) | 特定のタスクを取得 |
run(taskId) | タスクを実行 |
cancel(taskId) | タスクをキャンセル |
registerReindex(input) | 再インデックスタスクを登録 |
registerEdgeRegeneration(input) | エッジ再生成タスクを登録 |
タスクタイプ
| タイプ | 説明 |
|---|
reindex | ナレッジの再インデックス(ベクトル再生成) |
edge_regeneration | ナレッジ間のエッジ再生成 |
knowledge_extraction | ドキュメントからのナレッジ抽出 |
source_parse | ソースドキュメントのパース |
chunking | テキストのチャンク分割 |
enrichment_processing | ナレッジのエンリッチメント |
タスクステータス
| ステータス | 説明 |
|---|
pending | 実行待ち |
in_progress | 実行中 |
done | 完了 |
failed | 失敗 |
list()
タスク一覧を取得します。
パラメータ
ステータスでフィルタ: 'pending' | 'in_progress' | 'done' | 'failed'
戻り値
interface ListTasksResponse {
data: BackgroundTask[];
total: number;
page: number;
limit: number;
}
interface BackgroundTask {
id: string;
type: string;
status: 'pending' | 'in_progress' | 'done' | 'failed';
title: string;
progress: number;
result: object | null;
error: string | null;
createdAt: string;
updatedAt: string;
}
使用例
// 全タスクを取得
const result = await client.tasks.list();
console.log(`タスク数: ${result.total}`);
// 保留中のタスクのみ
const pending = await client.tasks.list({ status: 'pending' });
// 再インデックスタスクのみ
const reindexTasks = await client.tasks.list({ type: 'reindex' });
get()
特定のタスクを取得します。
パラメータ
使用例
const task = await client.tasks.get('task-id');
console.log(`タスク: ${task.title}`);
console.log(`ステータス: ${task.status}`);
console.log(`進捗: ${task.progress}%`);
if (task.error) {
console.log(`エラー: ${task.error}`);
}
run()
保留中のタスクを実行します。
パラメータ
使用例
const result = await client.tasks.run('task-id');
if (result.success) {
console.log('タスクが正常に完了しました');
} else {
console.log('タスクが失敗しました:', result.error);
}
cancel()
実行中または保留中のタスクをキャンセルします。
パラメータ
使用例
await client.tasks.cancel('task-id');
console.log('タスクをキャンセルしました');
registerReindex()
ナレッジの再インデックスタスクを登録します。ナレッジの内容を変更した後、ベクトル検索の精度を向上させるために使用します。
パラメータ
使用例
// 再インデックスタスクを登録
const task = await client.tasks.registerReindex({
knowledgeId: 'knowledge-id',
title: 'Reindex: 製品マニュアル',
});
console.log(`タスクID: ${task.id}`);
// タスクを実行
await client.tasks.run(task.id);
registerEdgeRegeneration()
ナレッジ間のエッジ(関連性)を再生成するタスクを登録します。ナレッジを更新した後、関連性グラフを更新するために使用します。
パラメータ
使用例
// エッジ再生成タスクを登録
const task = await client.tasks.registerEdgeRegeneration({
knowledgeId: 'knowledge-id',
title: 'Edge Regeneration: 製品マニュアル',
});
// タスクを実行
await client.tasks.run(task.id);
ユースケース
一括更新後の再インデックス
async function bulkUpdateAndReindex(updates: Array<{id: string, content: string}>) {
const tasks = [];
for (const update of updates) {
// ナレッジを更新
await client.knowledge.update(update.id, {
content: update.content,
});
// 再インデックスタスクを登録
const task = await client.tasks.registerReindex({
knowledgeId: update.id,
title: `Reindex: ${update.id}`,
});
tasks.push(task);
}
// 全タスクを実行
for (const task of tasks) {
await client.tasks.run(task.id);
console.log(`完了: ${task.title}`);
}
}
タスク進捗のモニタリング
async function monitorTask(taskId: string) {
while (true) {
const task = await client.tasks.get(taskId);
console.log(`${task.title}: ${task.status} (${task.progress}%)`);
if (task.status === 'done') {
console.log('タスク完了:', task.result);
break;
}
if (task.status === 'failed') {
console.error('タスク失敗:', task.error);
break;
}
// 5秒待機
await new Promise(resolve => setTimeout(resolve, 5000));
}
}
失敗したタスクの再試行
async function retryFailedTasks() {
const failed = await client.tasks.list({ status: 'failed' });
console.log(`失敗したタスク: ${failed.total}件`);
for (const task of failed.data) {
console.log(`再試行: ${task.title}`);
// 新しいタスクを登録して実行
if (task.type === 'reindex') {
const newTask = await client.tasks.registerReindex({
knowledgeId: task.result?.knowledgeId,
title: task.title,
});
await client.tasks.run(newTask.id);
}
}
}
次のステップ