API リファレンス
API リファレンス
TypeSafe 評価エンドポイントの完全な HTTP API リファレンス。
型付きの questions マップに対して state を評価し、質問ごとに 1 つずつ構造化された answers を返します。入門ガイドはプリミティブから始めてください。
評価エンドポイント
POST https://api.typesafe.ai/v1/systemone
Authorization: Bearer <API_KEY>
Content-Type: application/json
リクエストボディ
すべてのリクエストの最上位の形です。questions マップの各エントリは、自分で名前を付けた型付きの質問です。
state
評価する内容です。テキストなら通常の文字列を、チャットログ・記録・アプリケーションの現在の状態などなら構造化データ(オブジェクト/配列)を使います。形式とベストプラクティスは状態を参照してください。
model
リクエストを処理するモデルです。TypeSafe のフラッグシップモデルである "jev-latest" を使います。利用できるモデルと別名はモデルを参照してください。
questions
{
"state": "Help! My payouts have been failing for 3 days.",
"model": "jev-latest",
"questions": {
"is_urgent": {
"type": "noul",
"instructions": "Does this convey urgency?"
}
}
}
質問の種類
Question は 3 つの型のいずれかで、type フィールドで決まります。3 つとも type と instructions を共有し、それぞれが独自の criteria を追加します。
instructions プロパティは文字列・オブジェクト・配列のいずれかです。追加のコンテキストや、参照が必要なデータを伴う長い質問は、構造化オブジェクトに分割できます。質問を 1 つのフィールドに、データを他のフィールドに置き、データフィールドをバッククォートで名前参照します。入れ子になった 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
はい/いいえの質問です。答えが「はい」である確率を返します。
type
instructions
評価するはい/いいえの質問です。オブジェクトでは、質問を 1 つのフィールドに、それが参照するデータを他のフィールドに置けます。詳しくは質問で構造を使うを参照してください。
criteria
任意です。「はい」と「いいえ」がそれぞれ何を意味するかの説明です。
プロパティ
true
「はい」(値が 1 に近い)が意味するもの。
false
「いいえ」(値が 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
自分で定義した選択肢の集合から 1 つを選びます。選ばれた選択肢と完全な確率分布を返します。
type
instructions
モデルに判断させる内容です。オブジェクトでは、質問を 1 つのフィールドに、それが参照するデータを他のフィールドに置けます。詳しくは構造化された instructions と criteriaを参照してください。
criteria
選択肢からルーブリックの説明へのマップです。選択肢に追加の説明が不要なときは null を使います。1 つの Choice には最大 255 個の選択肢を置けます。
マップのエントリ
‹option›
自分で選ぶキーです。この選択肢の説明。
{
"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
instructions
モデルに評価させる内容です。オブジェクトでは、質問を 1 つのフィールドに、それが参照するデータを他のフィールドに置けます。詳しくは質問で構造を使うを参照してください。
criteria
レベルの説明を並べた順序付きの配列です。Score には少なくとも 2 つのレベルが必要です。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"]
}
}
}
レスポンスボディ
質問ごとに 1 つの答えを、指定したものと同じ id で返します。
model
この評価を実行したモデルです。
answers
質問ごとに 1 つの Answer を、questions で使ったものと同じ id をキーにして返します。
マップのエントリ
‹question id›
questions で選んだものと同じ id です。
usage
このリクエストの token 使用量です。
プロパティ
input_tokens
output_tokens
{
"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
0(いいえ)から 1(はい)の尺度でのはい/いいえの答えです。
{
"model": "jev-1.13.0",
"answers": {
"is_urgent": {
"type": "noul",
"noul": 0.95
}
},
"usage": { "input_tokens": 307, "output_tokens": 20 }
}
Choice の答え
type
choice
最も確率の高い選択肢です。
probabilities
各選択肢をその確率に対応付けたもの(合計が 1 になる浮動小数点数)です。
マップのエントリ
‹option›
criteria で定義した選択肢です。
confidence
モデルがどれだけ確信しているか。確率分布から導かれます。
{
"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
各レベルにまたがる、確率で重み付けした答えです。レベルの間に落ちることもあります。
legend
各レベルの番号をその説明に対応付けたものです。
probabilities
各レベル(文字列キー)をその確率に対応付けたもの(合計が 1 になる浮動小数点数)です。
マップのエントリ
‹level›
legend と対応する文字列キーとしてのレベルインデックスです。
confidence
モデルがどれだけ確信しているか。確率分布から導かれます。
{
"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 }
}
エラー
エラーは標準の HTTP ステータスコードを使い、何が問題だったかを説明する JSON ボディを伴います。
| ステータス | 意味 |
|---|---|
401 Unauthorized |
API key が欠けているか無効です。Authorization ヘッダーを確認してください。 |
422 Unprocessable Entity |
リクエストボディが検証に通りませんでした。たとえば必須フィールドの欠落や質問の形式の誤りです。ボディに問題のあるフィールドが詳しく書かれます。 |
429 Too Many Requests |
レート制限を超えました。少し待ってから再試行してください。 |
529 Overloaded |
TypeSafe が一時的に過負荷です。少し待ってから再試行してください。 |
レート制限の扱い
429 Too Many Requests または 529 Overloaded のレスポンスを受け取ったときは、すぐに再試行せず、指数バックオフでリクエストを再試行してください。当社のクライアント SDK はこれを自動で処理するので、当社の SDK をその既定の再試行ポリシーで使っているなら追加の対応は不要です。