メインコンテンツへスキップ
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()

タスク一覧を取得します。

パラメータ

options.status
string
ステータスでフィルタ: 'pending' | 'in_progress' | 'done' | 'failed'
options.type
string
タスクタイプでフィルタ
options.page
number
デフォルト:"1"
ページ番号
options.limit
number
デフォルト:"50"
取得件数

戻り値

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()

特定のタスクを取得します。

パラメータ

taskId
string
必須
タスクID

使用例

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()

保留中のタスクを実行します。

パラメータ

taskId
string
必須
タスクID

使用例

const result = await client.tasks.run('task-id');

if (result.success) {
  console.log('タスクが正常に完了しました');
} else {
  console.log('タスクが失敗しました:', result.error);
}

cancel()

実行中または保留中のタスクをキャンセルします。

パラメータ

taskId
string
必須
タスクID

使用例

await client.tasks.cancel('task-id');
console.log('タスクをキャンセルしました');

registerReindex()

ナレッジの再インデックスタスクを登録します。ナレッジの内容を変更した後、ベクトル検索の精度を向上させるために使用します。

パラメータ

knowledgeId
string
必須
対象のナレッジID
title
string
必須
タスクのタイトル

使用例

// 再インデックスタスクを登録
const task = await client.tasks.registerReindex({
  knowledgeId: 'knowledge-id',
  title: 'Reindex: 製品マニュアル',
});

console.log(`タスクID: ${task.id}`);

// タスクを実行
await client.tasks.run(task.id);

registerEdgeRegeneration()

ナレッジ間のエッジ(関連性)を再生成するタスクを登録します。ナレッジを更新した後、関連性グラフを更新するために使用します。

パラメータ

knowledgeId
string
必須
対象のナレッジID
title
string
必須
タスクのタイトル

使用例

// エッジ再生成タスクを登録
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);
    }
  }
}

次のステップ

Knowledge API

ナレッジの管理

Memory API

コンテキスト組み立て