메인 콘텐츠로 건너뛰기
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

컨텍스트 조립