문서

API 레퍼런스

TypeSafe 평가 엔드포인트의 전체 HTTP API 레퍼런스입니다.

state를 타입이 지정된 questions 맵에 대해 평가하고, 질문마다 하나씩 구조화된 answers를 돌려받습니다. 안내식 소개는 프리미티브부터 시작하십시오.

평가 엔드포인트

POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer <API_KEY>
Content-Type: application/json

요청 본문

모든 요청의 최상위 형태입니다. questions 맵의 각 항목은 여러분이 이름을 붙인 타입 지정 질문입니다.

statestring | object | array · required

평가할 콘텐츠입니다. 텍스트에는 일반 문자열을, 채팅 로그나 레코드, 또는 애플리케이션의 현재 상태 같은 것에는 구조화된 데이터(객체/배열)를 사용합니다. 형식과 모범 사례는 상태를 참조하십시오.

modelstring · required

요청을 처리하는 모델입니다. TypeSafe의 플래그십 모델인 "jev-latest"를 사용하십시오. 사용 가능한 모델과 별칭은 모델을 참조하십시오.

questionsmap<string, Question> · required

타입 지정 Question 객체의 맵입니다. 각 키는 여러분이 고르며, 답변은 같은 키 아래에 돌아옵니다.

맵 항목

‹question id›Question

여러분이 고르는 키입니다. 대응하는 Answer가 같은 id 아래에 반환됩니다. 이 키는 기반 모델에 전송되지 않으며 추론에 사용되지 않습니다.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?"
    }
  }
}

질문 유형

Question은 type 필드로 정해지는 세 가지 유형 중 하나입니다. 세 유형 모두 type과 instructions를 공유하며, 각자 고유한 criteria를 추가합니다.

instructions 속성은 문자열, 객체, 또는 배열일 수 있습니다. 추가 컨텍스트나 참조해야 할 데이터가 있는 긴 질문은 구조화된 객체로 나눌 수 있습니다. 질문은 한 필드에, 데이터는 다른 필드에 넣고, 중첩된 state 값을 가리키는 방식과 같은 방식으로 데이터 필드를 이름으로 백틱 안에서 참조하십시오:

"instructions": {
  "potential_duplicate": {
    "name": "John Smith",
    "location": "Oakland, California",
    "last_employer": "Google"
  },
  "question": "Is the resume for the same person as `potential_duplicate`?"
}

자세한 내용은 질문에 구조 사용하기를 참조하십시오.

Noul

yes/no 질문입니다. 답이 yes일 확률을 반환합니다.

type"noul" · required

instructionsstring | object | array · required

평가할 yes/no 질문입니다. 객체는 질문을 한 필드에, 그것이 참조하는 데이터를 다른 필드에 담을 수 있습니다. 질문에 구조 사용하기를 참조하십시오.

criteriaobject

yes와 no가 무엇을 뜻하는지에 대한 선택적 설명입니다.

속성

truestring | object | array

yes(1에 가까운 값)가 뜻하는 바입니다.

falsestring | object | array

no(0에 가까운 값)가 뜻하는 바입니다.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "is_urgent": {
      "type": "noul",
      "instructions": "Does this convey urgency?",
      "criteria": {
        "true": "Explicitly time-sensitive",
        "false": "No urgency expressed"
      }
    }
  }
}

Choice

여러분이 정의한 집합에서 선택지 하나를 고릅니다. 선택된 선택지와 전체 확률 분포를 반환합니다.

type"choice" · required

instructionsstring | object | array · required

모델이 결정해야 할 것입니다. 객체는 질문을 한 필드에, 그것이 참조하는 데이터를 다른 필드에 담을 수 있습니다. 구조화된 지침과 기준을 참조하십시오.

criteriamap<string, string | object | array | null> · required

선택지에서 루브릭 설명으로의 맵입니다. 선택지에 추가 설명이 필요 없으면 null을 사용하십시오. Choice 하나에는 최대 255개의 선택지를 둘 수 있습니다.

맵 항목

‹option›string | object | array | null

여러분이 고르는 키입니다. 이 선택지에 대한 설명입니다.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "department": {
      "type": "choice",
      "instructions": "Which team should handle this?",
      "criteria": {
        "billing": "Payments, invoicing, refunds",
        "technical": "Bugs, outages, integrations",
        "sales": "Pricing, upgrades, new accounts"
      }
    }
  }
}

Score

여러분이 정의한 루브릭을 따라 상태를 평가합니다. 레벨에 걸쳐 확률 가중치를 적용한 값을 반환합니다.

type"score" · required

instructionsstring | object | array · required

모델이 평가해야 할 것입니다. 객체는 질문을 한 필드에, 그것이 참조하는 데이터를 다른 필드에 담을 수 있습니다. 질문에 구조 사용하기를 참조하십시오.

criteriaarray<string | object | array> · required

레벨 설명의 정렬된 배열입니다. Score에는 최소 두 개의 레벨이 있어야 하며, API는 최대 10개까지 허용합니다.

{
  "state": "Help! My payouts have been failing for 3 days.",
  "model": "jev-latest",
  "questions": {
    "frustration": {
      "type": "score",
      "instructions": "How frustrated is the customer?",
      "criteria": ["Calm", "Frustrated", "Very angry"]
    }
  }
}

응답 본문

질문마다 하나의 답변이며, 여러분이 제공한 것과 같은 id 아래에 반환됩니다.

modelstring · required

평가를 수행한 모델입니다.

answersmap<string, Answer> · required

질문마다 하나의 Answer이며, questions에서 사용한 것과 같은 id로 키가 지정됩니다.

맵 항목

‹question id›Answer

questions에서 여러분이 고른 것과 같은 id입니다.

usageobject · required

요청의 토큰 사용량입니다.

속성

input_tokensinteger

output_tokensinteger

{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 296, "output_tokens": 20 }
}

답변 유형

모든 답변은 해당 질문과 일치하는 type을 가집니다. Choice와 Score 답변은 또한 답변의 확률 분포에서 도출된 0에서 1 사이의 confidence를 가집니다. 신뢰도를 참조하십시오.

Noul 답변

type"noul" · required

noulnumber · required

0(no)에서 1(yes) 사이의 척도로 나타낸 yes/no 답변입니다.

{
  "model": "jev-1.13.0",
  "answers": {
    "is_urgent": {
      "type": "noul",
      "noul": 0.95
    }
  },
  "usage": { "input_tokens": 307, "output_tokens": 20 }
}

Choice 답변

type"choice" · required

choicestring · required

확률이 가장 높은 선택지입니다.

probabilitiesmap<string, number> · required

모든 선택지를 그 확률에 매핑한 것입니다(합이 1이 되는 부동소수점).

맵 항목

‹option›number

criteria에서 여러분이 정의한 선택지입니다.

confidencenumber · required

확률에서 도출된, 모델이 얼마나 확신하는지를 나타냅니다.

{
  "model": "jev-1.13.0",
  "answers": {
    "department": {
      "type": "choice",
      "choice": "billing",
      "probabilities": { "billing": 0.88, "technical": 0.12, "sales": 0.0 },
      "confidence": 0.81
    }
  },
  "usage": { "input_tokens": 318, "output_tokens": 34 }
}

Score 답변

type"score" · required

scorenumber · required

레벨에 걸쳐 확률 가중치를 적용한 답변입니다. 레벨 사이에 떨어질 수 있습니다.

legendmap<string, string> · required

각 레벨 번호를 그 설명에 다시 매핑한 것입니다.

probabilitiesmap<string, number> · required

각 레벨(문자열 키)을 그 확률에 매핑한 것입니다(합이 1이 되는 부동소수점).

맵 항목

‹level›number

legend와 일치하는 문자열 키로서의 레벨 인덱스입니다.

confidencenumber · required

확률에서 도출된, 모델이 얼마나 확신하는지를 나타냅니다.

{
  "model": "jev-1.13.0",
  "answers": {
    "frustration": {
      "type": "score",
      "score": 1.05,
      "legend": { "0": "Calm", "1": "Frustrated", "2": "Very angry" },
      "probabilities": { "0": 0.0, "1": 0.95, "2": 0.05 },
      "confidence": 0.92
    }
  },
  "usage": { "input_tokens": 304, "output_tokens": 18 }
}

오류

오류는 무엇이 잘못되었는지 설명하는 JSON 본문과 함께 표준 HTTP 상태 코드를 사용합니다.

상태 의미
401 Unauthorized API 키가 없거나 유효하지 않습니다. Authorization 헤더를 확인하십시오.
422 Unprocessable Entity 요청 본문이 유효성 검사를 통과하지 못했습니다. 예를 들어 필수 필드 누락이나 잘못된 형식의 질문입니다. 본문에 문제가 된 필드가 자세히 나옵니다.
429 Too Many Requests 속도 제한을 초과했습니다. 잠시 물러났다가 짧은 지연 후에 다시 시도하십시오.
529 Overloaded TypeSafe가 일시적으로 과부하 상태입니다. 짧은 지연 후에 다시 시도하십시오.

속도 제한 처리

429 Too Many Requests 또는 529 Overloaded 응답을 받으면 즉시 재시도하지 말고 지수 백오프로 요청을 재시도하십시오. 저희 클라이언트 SDK는 이를 자동으로 처리하므로, 기본 재시도 정책을 사용하는 저희 SDK 중 하나를 사용한다면 별도의 처리가 필요하지 않습니다.