TypeSafe 프로바이더

TypeSafe 프로바이더

TypeSafe의 실험적 평가(evaluation) API를 AI SDK에서 쓸 수 있게 해주는 프로바이더예요. 네이티브 Choice, Score, Boolean 답변을 지원하며, 모든 질문을 같은 상태에 대해 하나의 요청으로 보내요.

출처: 문서

본문

TypeSafe 프로바이더는 네이티브 Choice, Score, Boolean 답변을 가진 실험적 평가 API를 지원해요. 모든 질문을 같은 상태에 대해 하나의 요청으로 보내요.

설정 (Setup)

프로바이더를 설치하세요:

pnpm add @ai-sdk/typesafe-ai

TYPESAFE_AI_API_KEY 환경 변수를 설정하세요. 기본 프로바이더를 import 하거나 인스턴스를 구성하세요:

import { createTypeSafeAi, typeSafeAi } from '@ai-sdk/typesafe-ai';

const customTypeSafe = createTypeSafeAi({
  apiKey: ***
});

createTypeSafeAi는 다음을 받아요:

설정 설명
apiKey API 키; 기본값은 TYPESAFE_AI_API_KEY.
baseURL 기본값은 https://api.typesafe.ai/v1.
headers 추가 요청 헤더.
fetch 커스텀 fetch 구현.

평가 (Evaluation)

import { typeSafeAi } from '@ai-sdk/typesafe-ai';
import { experimental_evaluate } from 'ai';

const result = await experimental_evaluate({
  model: typeSafeAi.evaluationModel('jev-latest'),
  state: {
    message: 'I was charged twice. Please refund the duplicate.',
  },
  questions: {
    department: {
      type: 'choice',
      instructions: 'Which team should handle this?',
      criteria: {
        billing: { includes: ['Charges', 'Invoices', 'Refunds'] },
        technical: ['Bugs', 'Outages'],
        other: null,
      },
    },
    severity: {
      type: 'score',
      instructions: 'How severe is the issue?',
      criteria: ['Cosmetic', 'Workaround exists', 'Blocking; no workaround'],
    },
    requestsRefund: {
      type: 'boolean',
      instructions: 'Is the customer requesting money back?',
    },
  },
});

console.log(result.answers.department.choice);
console.log(result.answers.severity.score);
console.log(result.answers.requestsRefund.probability);
console.log(result.usage);

jev-latest 또는 다른 TypeSafe 모델 ID를 사용하세요. 응답에는 별칭 뒤의 해석된 버전 같은 실제 모델 ID가 포함돼요. 모델 인스턴스, 커스텀 별칭 또는 등록된 프로바이더를 사용하세요. typeSafeAi를 globalThis.AI_SDK_DEFAULT_PROVIDER로 명시적으로 구성하면 model: 'jev-latest'를 직접 전달할 수 있어요. 모델 별칭 및 레지스트리를 참고하세요.

질문 네이티브 TypeSafe 프리미티브 한도 및 의미
choice Choice 1–255 옵션; 선택된 옵션과 전체 확률.
score Score 2–10 순서화된 루브릭 레벨; 부분 점수와 전체 확률.
boolean Noul 요구되는 모델 추정 true 확률.

상태(state), 지시(instructions), 설명(descriptions)은 문자열 외에도 JSON 객체와 배열을 받아요. 설명은 null일 수 있어요. Boolean true/false 기준은 선택 사항이에요. SDK는 중립적인 이름 boolean을 사용하고 TypeSafe의 noul 필드에 매핑해요.

반올림된 값과 신뢰도 (Rounded values and confidence)

TypeSafe는 점수와 확률을 소수 둘째 자리로 반올림해 반환해요. result.rounding은 이 정밀도를 보고해서, SDK가 분포 합과 가중 평균을 확인할 때 반올림을 고려할 수 있게 해줘요. 반환된 값은 변경 없이 보존돼요. 반올림 때문에 확률의 합이 정확히 1이 안 될 수 있어요.

신뢰도(confidence)는 Choice와 Score 답변에 대해 result.providerMetadata.typesafe.confidence[questionId]에서 사용할 수 있는 별도의 TypeSafe 통계예요. Boolean 확률은 항상 P(true)를 의미하며 어느 쪽 결과에 대한 신뢰도가 아니에요. 결정 임계값은 애플리케이션 코드에서 선택하세요.

오류 및 재시도 (Errors and retries)

프로바이더 실패는 검증 및 인증 오류를 포함해 APICallError를 사용해요. 코어는 maxRetries(기본값: 2)에 따라 429와 529 같은 일시적 실패를 재시도해요. abortSignal, 요청 헤더, 커스텀 fetch는 전달돼요. 프로바이더 측 재시도 루프는 없어요.

현재 정의된 프로바이더별 옵션은 없어요. providerOptions.typesafe 아래의 알 수 없는 항목은 지원되지 않는 옵션 경고를 생성해요. 언어, 임베딩, 이미지 모델 팩토리는 NoSuchModelError를 던져요.

평가 모델은 워크플로 직렬화를 지원해요. 커스텀 fetch 함수는 직렬화되지 않으며, 복원된 모델은 기본 fetch 구현을 사용해요.

더 알아보기 (Learn more)

전체 사이트맵