Nia

Nia

Nozomio Labs가 만든 Nia는 최신의 기술적 컨텍스트를 제공하는 API예요. 문서, 저장소(repo), PDF, 데이터셋을 인덱싱한 뒤 AI로 검색할 수 있어서, 에이전트가 환각 대신 실제 답변을 얻도록 도와줘요. @nozomioai/nia-ai-sdk 패키지는 tools, middleware, 직접 streaming 헬퍼를 통해 Nia를 AI SDK와 연동해 줘요.

다음 같은 워크플로에서 쓰기 좋게 설계됐어요:

  • 공개 GitHub 및 문서 리서치를 위해 Nia Tracer를 tool로 호출
  • 인덱싱된 저장소, 문서, PDF, 데이터셋 위에서 근거 기반 리서치를 위해 Nia Oracle을 tool로 호출
  • 깊은 문서 분석과 구조화된 추출을 위해 Nia Document Agent를 tool로 호출
  • 기존 AI SDK 모델에 Nia 기반 middleware를 더해 보강
  • Tracer, Oracle, Document Agent 이벤트를 앱에서 직접 스트리밍

더 자세한 내용은 Nia 문서에서 확인하세요.

출처: 문서

본문

설정 (Setup)

Nia 어댑터는 @nozomioai/nia-ai-sdk 패키지에 들어 있어요. 다음과 같이 설치할 수 있어요:

Nia middleware를 모델 프로바이더와 함께 쓰고 싶다면 그 프로바이더도 함께 설치하세요. 예를 들어:

pnpm add @ai-sdk/openai

Nia API 키를 설정하세요:

export NIA_API_KEY=nia_your_api_key

API 키는 Nia 대시보드에서 받을 수 있어요.

Tool 사용법

Nia는 generateText 나 streamText 에 전달하는 AI SDK tools 세트로 잘 동작해요.

generateText

import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { createNiaResearchTools } from '@nozomioai/nia-ai-sdk';

const tools = createNiaResearchTools({
  apiKey: proces...EY!,
  tracer: {
    defaultRequest: {
      mode: 'tracer-deep',
    },
  },
  oracle: {
    defaultRequest: {
      repositories: ['vercel/ai'],
      dataSources: ['Vercel AI SDK'],
    },
  },
  documentAgent: {
    defaultRequest: {
      sourceId: 'src_abc123',
    },
  },
});

const result = await generateText({
  model: openai('gpt-4.1'),
  prompt:
    'Research how AI SDK middleware works, then summarize the best integration pattern.',
  tools,
});

console.log(result.text);

어떤 서비스 키에 false 를 전달하면 그 서비스를 완전히 끌 수 있어요. 예를 들어 Tracer만 필요하다면 oracle: false 로 쓰면 되죠. 서비스별 transport 옵션(예: 별도 apiKey)은 제공되면 최상위 옵션보다 우선해요.

SDK는 tool 하나만 필요할 때 쓸 수 있는 createTracerTool(), createOracleTool(), createDocumentAgentTool() 도 내보내요.

Middleware 사용법

기본 모델이 실행되기 전에 Nia가 마지막 사용자 메시지를 보강하길 원할 때 middleware를 사용하세요.

withOracleContext

import { generateText } from 'ai';
import { openai } from '@ai-sdk/openai';
import { withOracleContext } from '@nozomioai/nia-ai-sdk';

const model = withOracleContext(openai('gpt-4.1'), {
  apiKey: proces...EY!,
  defaultRequest: {
    repositories: ['vercel/ai'],
    dataSources: ['Vercel AI SDK'],
  },
});

const result = await generateText({
  model,
  prompt: 'How should I think about AI SDK middleware for retrieval?',
});

console.log(result.text);

공개 GitHub 리서치에는 withTracerContext() 를, 인덱싱된 PDF나 문서와 작업할 때는 withDocumentAgentContext() 를 같은 방식으로 사용할 수 있어요.

더 세밀한 제어가 필요하다면, 저수준의 createTracerMiddleware(), createOracleMiddleware(), createDocumentAgentMiddleware() 내보내기가 직접 조합할 수 있는 원시 LanguageModelMiddleware 객체를 반환해요.

직접 스트리밍 헬퍼

Nia의 원시 job 이벤트가 필요하다면 직접 스트리밍 헬퍼를 사용하세요:

  • streamTracer()
  • streamOracle()
  • streamOracleSessionChat()
  • streamDocumentAgent()
import { streamTracer } from '@nozomioai/nia-ai-sdk';

const session = await streamTracer(
  {
    apiKey: proces...EY!,
  },
  {
    query: 'How does generateText stream responses?',
    repositories: ['vercel/ai'],
    mode: 'tracer-fast',
  },
);

for await (const event of session.events) {
  console.log(event.event, event.data);
}

추가 자료

더 알아보기 (Learn more)

전체 사이트맵