メインコンテンツへスキップ
Librarian APIは、Neuradexの組み込みAIアシスタント(Librarian)とのセッションを管理するためのインターフェースです。Librarianは、ナレッジベースを参照しながら質問に回答するRAG機能を提供します。

概要

const client = new NdxClient({
  apiKey: process.env.NEURADEX_API_KEY,
  projectId: 'your-project-id',
});

// Librarian APIにアクセス
const sessions = await client.librarian.listSessions();
const session = await client.librarian.getSession('session-id');

メソッド一覧

メソッド説明
listSessions()セッション一覧を取得
getSession(id, options?)セッションの詳細(メッセージ履歴)を取得
getSessionAsYaml(id)YAML形式でセッションを取得
getSessionAsJson(id)JSON形式でセッションを取得
deleteSession(id)セッションを削除

listSessions()

プロジェクト内のLibrarianセッション一覧を取得します。

戻り値

interface LibrarianSession {
  id: string;
  title: string;
  messageCount: number;
  createdAt: string;
  updatedAt: string;
}

使用例

const sessions = await client.librarian.listSessions();

for (const session of sessions) {
  console.log(`${session.title} (${session.messageCount}件のメッセージ)`);
  console.log(`  作成日: ${session.createdAt}`);
}

getSession()

セッションの詳細情報とメッセージ履歴を取得します。

パラメータ

id
string
必須
セッションID
options.format
string
デフォルト:"json"
出力形式: 'json' | 'yaml'

戻り値

interface LibrarianSessionWithMessages {
  id: string;
  title: string;
  messages: LibrarianMessage[];
  metadata: object;
  createdAt: string;
  updatedAt: string;
}

interface LibrarianMessage {
  role: 'user' | 'assistant';
  content: string;
  sources?: KnowledgeSource[];
  timestamp: string;
}

使用例

const session = await client.librarian.getSession('session-id');

console.log(`セッション: ${session.title}`);

for (const message of session.messages) {
  const prefix = message.role === 'user' ? 'User' : 'Librarian';
  console.log(`${prefix}: ${message.content}`);

  // 参照したナレッジを表示
  if (message.sources) {
    for (const source of message.sources) {
      console.log(`  参照: ${source.title}`);
    }
  }
}

getSessionAsYaml() / getSessionAsJson()

セッションを特定の形式で取得します。LLMへの入力やエクスポートに便利です。

使用例

// YAML形式で取得(人間が読みやすい)
const yamlData = await client.librarian.getSessionAsYaml('session-id');
console.log(yamlData);

// JSON形式で取得(プログラムで処理しやすい)
const jsonData = await client.librarian.getSessionAsJson('session-id');
const parsed = JSON.parse(jsonData);

deleteSession()

セッションを削除します。

パラメータ

id
string
必須
セッションID

使用例

await client.librarian.deleteSession('session-id');
console.log('セッションを削除しました');

ユースケース

セッション履歴の分析

async function analyzeLibrarianUsage() {
  const sessions = await client.librarian.listSessions();

  let totalMessages = 0;
  const topicsMap = new Map<string, number>();

  for (const session of sessions) {
    totalMessages += session.messageCount;

    // セッションの詳細を取得してトピックを分析
    const detail = await client.librarian.getSession(session.id);
    for (const message of detail.messages) {
      if (message.role === 'user') {
        // 質問のキーワードを抽出(簡易例)
        const keywords = extractKeywords(message.content);
        for (const keyword of keywords) {
          topicsMap.set(keyword, (topicsMap.get(keyword) || 0) + 1);
        }
      }
    }
  }

  console.log(`総メッセージ数: ${totalMessages}`);
  console.log('よく聞かれるトピック:');
  for (const [topic, count] of topicsMap) {
    console.log(`  ${topic}: ${count}回`);
  }
}

セッションのエクスポート

import fs from 'fs';

async function exportSessions() {
  const sessions = await client.librarian.listSessions();

  const exportData = [];
  for (const session of sessions) {
    const detail = await client.librarian.getSession(session.id);
    exportData.push(detail);
  }

  fs.writeFileSync(
    'librarian-sessions-backup.json',
    JSON.stringify(exportData, null, 2)
  );

  console.log(`${sessions.length}件のセッションをエクスポートしました`);
}

次のステップ

Knowledge API

ナレッジの管理

Memory API

コンテキスト組み立て