핵심 가이드
Decisions
의사결정 모델로부터 타입이 지정된 확률, 선택지, 점수를 가져옵니다.
POST /v1/systemone은 하나의 state를 명명된 질문들에 대해 평가하고 질문당 하나의 타입이 지정된 답변을 반환합니다. 응답은 동기식 JSON 형식입니다: 코드에서 비교하고 분기할 수 있는 확률, 옵션 이름 또는 점수를 포함합니다. 생성된 텍스트는 반환하지 않습니다.
Decisions와 Chat 비교
| Decisions 사용 시 | Chat 사용 시 |
|---|---|
| 코드가 동작을 위해 숫자나 레이블이 필요한 경우 | 사람이나 다른 모델이 답변을 읽어야 하는 경우 |
| 요청을 라우팅, 분류 또는 게이트 처리해야 하는 경우: 환불 여부, 담당 팀, 긴급도 등 | 설명, 요약 또는 초안 텍스트가 필요한 경우 |
| 한 번의 호출로 동일한 입력에 대해 여러 고정된 질문을 하는 경우 | 도구, 스트리밍, 이미지 또는 다중 턴 메시지가 필요한 경우 |
Decision 엔드포인트는 messages, tools, stream 또는 기타 채팅 제어 기능을 허용하지 않으며, Batch에서는 사용할 수 없습니다. 메인 채팅 모델은 별도로 구성하십시오.
모델 선택
curl "https://api.tokenlab.sh/v1/models?recommended_for=decision" \
-H "Authorization: Bearer sk-your-api-key"category=decision으로 필터링할 수도 있습니다. 요청을 보내기 전에 선택한 모델에 대해 GET /v1/models/{model}을 읽고, 모델 ID를 명시적으로 보내십시오. 이 페이지의 예제는 jev-1.13을 사용합니다.
요청 형태
| 필드 | 타입 | 참고 |
|---|---|---|
model | string | Decision 모델 ID |
state | string, JSON object, or JSON array | 평가할 입력(티켓, 대화 기록, 레코드 등) |
questions | object | 최소 하나의 질문. 각 키는 질문 이름이며, 각 값은 type, instructions, criteria를 포함합니다 |
instructions와 각 기준(criterion)은 문자열, JSON 객체 또는 JSON 배열도 허용합니다. 요청 시 알 수 없는 필드는 거부됩니다.
type | criteria | 답변 |
|---|---|---|
noul | 선택 사항. true와 false 지침을 모두 포함하는 객체 | noul: 진술이 참일 확률(0에서 1 사이) |
choice | 필수. 1~255개의 옵션 이름으로 구성된 객체, 각 옵션은 지침 또는 null에 매핑됨 | choice: 옵션 이름 중 하나. probabilities와 confidence를 포함할 수 있음 |
score | 필수. 2~10단계 설명으로 구성된 정렬된 배열 | score: 0부터 마지막 배열 인덱스까지의 숫자(소수점 포함 가능). legend, probabilities, confidence를 포함할 수 있음 |
티켓 평가
curl https://api.tokenlab.sh/v1/systemone \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "jev-1.13",
"state": "I was charged twice. Please refund the duplicate payment.",
"questions": {
"refund_requested": {"type": "noul", "instructions": "Is a refund requested?"},
"department": {
"type": "choice", "instructions": "Which team should handle this?",
"criteria": {"refunds": "Charges and refunds", "technical": "Software bugs"}
},
"urgency": {
"type": "score", "instructions": "Rate urgency",
"criteria": ["Routine enquiry", "Money affected", "Safety emergency"]
}
}
}'응답은 질문 이름을 answers 아래에 유지합니다. 아래 값은 예시입니다:
{
"model": "jev-1.13",
"answers": {
"refund_requested": {"type": "noul", "noul": 0.97},
"department": {"type": "choice", "choice": "refunds"},
"urgency": {"type": "score", "score": 1}
},
"usage": {"input_tokens": 96, "output_tokens": 12}
}답변 사용
- 모든 질문은 동일한 이름 아래 동일한
type의 답변을 받습니다. noul답변은 Boolean이 아닌 확률입니다. 각 작업에 대해 고유한 임계값을 선택하십시오.choice답변은 항상 전송한 옵션 이름 중 하나입니다.score답변은criteria배열을 인덱싱합니다: 위 예시에서1은 'Money affected'를 의미합니다.- 환불, 에스컬레이션 또는 기타 작업을 수행하기 전에 자체 레이블이 지정된 케이스를 대상으로 Decision을 테스트하십시오.
MCP에서 사용
TokenLab MCP server는 core 및 full 프로필에서 evaluate_decisions를 노출합니다. 먼저 {"category":"decision"}과 함께 list_models를 호출하고 get_model을 호출한 다음, 동일한 model, state, questions를 도구 인수로 전달하십시오. 결과에서 structuredContent.answers와 structuredContent.usage를 읽으십시오. 이 도구는 동기식 결과를 반환하며 비동기 작업 폴링을 사용하지 않습니다.
SDK에서 사용
TokenLab JavaScript SDK 0.1.2+는 evaluateDecisions(body)를 제공하며, Python SDK 0.1.2+는 evaluate_decisions(body)를 제공합니다. 본문(body)은 HTTP 요청과 동일한 JSON입니다. 두 SDK 모두 타입이 지정된 답변과 사용량을 유지하며 실패한 요청을 자동으로 재시도하지 않습니다. SDKs를 참조하십시오.
비용 및 재시도
- Decision은 응답의
usage.input_tokens및usage.output_tokens를 기준으로 모델의 현재 토큰 가격에 따라 과금됩니다. - 가격은 변경될 수 있습니다. 가격을 하드코딩하는 대신 모델의 가격 세부 정보나 Pricing API를 확인하십시오.
- 모델은 출력 가격이 0인 경우에도 출력 토큰을 보고할 수 있습니다.
- 요청은 귀하의 배송 옵션을 따릅니다. 청구 및 가격 책정을 참조하십시오.
- 타임아웃 발생 시 결과가 불확실할 수 있습니다. 유료 요청을 다시 보내기 전에 로그나 콘솔에서 요청 상태를 확인하십시오.
일반적인 오류
| 증상 | 원인 | 해결 방법 |
|---|---|---|
messages 또는 stream과 같은 필드에서 400 오류 발생 | 채팅 필드는 이 엔드포인트에 포함되지 않음 | model, state, questions만 전송하십시오 |
criteria에서 400 오류 발생 | choice에 옵션이 0개이거나 255개를 초과함, score에 레벨이 2개 미만이거나 10개를 초과함, 또는 noul 객체에 true나 false가 없음 | 질문 정의를 수정하십시오 |
| 약한 신호에서 작업이 실행됨 | noul 확률이 true 또는 false로 처리됨 | 테스트한 임계값과 비교하십시오 |
API 참조
| 주제 | 참조 |
|---|---|
| Evaluate Decisions | 의사결정 평가 |
| List Models | 모델 목록 조회 |
| Pricing | Pricing API |
| Billing & Pricing | Billing & Pricing |