anoman
Kapabilitas baru

Anoman Decision Models

Model keputusan bertipe — didukung oleh JEV / TypeSafe "System One" — yang menjawab pertanyaan ya/tidak, pilihan, dan penilaian yang sempit dengan probabilitas terkalibrasi. Bukan model chat: tidak ada teks bebas, tidak ada bentuk output yang berhalusinasi.

Konsep

Apa itu Decision Models?

Decision Models adalah juri keputusan bertipe (typed-decision judges), bukan model chat — model ini tidak menghasilkan teks bebas sama sekali.

Anda mengirim konten yang akan dinilai sebagai state, ditambah sekumpulan questions bertipe yang ingin Anda jawab tentang konten tersebut, dan model mengembalikan jawaban bertipe dengan probabilitas terkalibrasi untuk masing-masing, dalam satu proses paralel. Model ini tidak bisa mengembalikan apa pun di luar skema yang Anda minta — tidak ada bidang teks bebas untuk berhalusinasi.

noul

Penilaian ya/tidak

Probabilitas 0–1 yang menjawab pertanyaan bersifat boolean (mis. "apakah ini mendesak?"). Tidak ada bidang confidence — probabilitas itu sendiri adalah tingkat keyakinannya.

choice

Pilih satu dari N label

Mengklasifikasikan ke salah satu opsi berlabel Anda dan mengembalikan distribusi probabilitas atas semua opsi, sehingga Anda bisa melihat seberapa dekat opsi runner-up.

score

Beri nilai pada skala berurutan

Menempatkan konten pada skala berurutan yang Anda definisikan (2–10 tingkat), dengan distribusi probabilitas di tiap tingkat — cocok untuk penilaian tingkat keparahan, sentimen, atau kualitas.

Dibandingkan model chat: Decision Models cepat (biasanya di bawah satu detik), ditagih hanya berdasarkan token input (output gratis), dan deterministik dalam bentuk output. Model chat ditagih untuk input dan output, menghasilkan prosa, dan bisa menyimpang dari format yang diminta — Decision Models tidak bisa.

Kasus penggunaan

Kasus penggunaan umum

Decision Models paling kuat pada penilaian yang sempit, terurai, dan bervolume tinggi — bukan generasi teks terbuka. Pola umum:

  • Routing tiket dan intent — mengklasifikasikan pesan masuk ke tim atau cabang alur kerja.
  • Klasifikasi konten dan tingkat keparahan — menandai konten yang berisiko, sensitif, atau relevan dengan kebijakan.
  • Menilai output model LLM itu sendiri — menilai kualitas, nada, atau keakuratan sebuah chat completion sebelum ditampilkan ke pengguna.
  • Gating risiko pemanggilan tool oleh agent — memutuskan apakah sebuah tool call yang diusulkan perlu persetujuan manusia.
  • Klasifikasi PII dan sensitivitas — pemeriksaan awal sebelum konten mencapai sistem hilir.
  • Penyaring murah di depan model chat yang mahal — hanya bayar untuk model besar pada request yang benar-benar membutuhkannya.
Praktik terbaik: uraikan satu penilaian yang kabur ("apakah tiket ini boleh ditutup otomatis?") menjadi beberapa pertanyaan bertipe yang sempit, lalu confidence-gate keputusan routing berdasarkan probabilitas yang dikembalikan, bukan mempercayai satu jawaban begitu saja.

API

Endpoint decisions — POST /anoman/v1/decisions

Satu endpoint. Request mengikuti bentuk asli JEV {model, state, questions}, response mengikuti bentuk asli JEV {answers, usage} yang dibungkus dalam amplop standar Anoman.

Request

curl https://api.anoman.io/anoman/v1/decisions \
  -H "Authorization: Bearer anm-sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "Customer: My invoice charged me twice this month and I need this fixed today.",
    "questions": {
      "is_urgent": {
        "type": "noul",
        "instructions": "Is this ticket urgent and time-sensitive?"
      },
      "category": {
        "type": "choice",
        "instructions": "Which team should this ticket route to?",
        "criteria": {
          "billing": "Billing",
          "technical": "Technical issue",
          "account": "Account access"
        }
      },
      "tone": {
        "type": "score",
        "instructions": "Rate the customer's tone.",
        "criteria": ["Very negative", "Negative", "Neutral", "Positive", "Very positive"]
      }
    }
  }'

Response — 200 OK

{
  "data": {
    "model": "jev-1.13.0",
    "answers": {
      "is_urgent": { "type": "noul", "noul": 0.94 },
      "category": {
        "type": "choice",
        "choice": "billing",
        "confidence": 0.91,
        "probabilities": { "billing": 0.91, "technical": 0.06, "account": 0.03 }
      },
      "tone": {
        "type": "score",
        "score": 0.18,
        "confidence": 0.77,
        "probabilities": { "Very negative": 0.31, "Negative": 0.46, "Neutral": 0.17, "Positive": 0.05, "Very positive": 0.01 }
      }
    },
    "usage": { "input_tokens": 142, "output_tokens": 0 }
  },
  "error": null,
  "meta": { "request_id": "req_...", "timestamp": "2026-09-22T10:00:00Z", "region": "id" }
}

Kode error

HTTPKode errorArti
401auth_invalidAPI key hilang atau tidak valid.
402token_quota_exceeded / insufficient_balancePendanaan akun Anda untuk request ini — kredit signup, bucket token pass, pool alokasi Pro, atau saldo top-up — telah habis.
422invalid_requestRequest melanggar batas skema: questions kosong, terlalu banyak questions, daftar criteria di luar rentang, atau body terlalu besar.
429rate_limit_exceededBatas laju per-key atau batas request bersamaan Anda tercapai.
502provider_errorJEV mengembalikan error, atau mengembalikan 200 dengan bentuk answer yang rusak sehingga tidak bisa diuraikan Anoman.
503decisions_unavailableDecision Models sementara tidak tersedia (feature flag mati, timeout provider, atau cost breaker sedang terbuka).
Ini adalah endpoint asli Anoman (Anoman-native). Endpoint ini tidak menerima pesan chat dan tidak dapat diakses melalui /v1/chat/completions.

Agent

Integrasi dengan AI agent

Panggil endpoint decisions sebagai langkah routing atau guard dalam alur kendali sebuah agent: kirim konten yang akan ditindaklanjuti agent sebagai state, ajukan pertanyaan routing, lalu cabangkan berdasarkan choice dan confidence yang dikembalikan sebelum membiarkan agent melanjutkan.

import httpx

async def route_ticket(ticket_text: str) -> str:
    async with httpx.AsyncClient(timeout=10) as client:
        resp = await client.post(
            "https://api.anoman.io/anoman/v1/decisions",
            headers={
                "Authorization": "Bearer anm-sk-...",
                "Content-Type": "application/json",
            },
            json={
                "model": "jev-latest",
                "state": ticket_text,
                "questions": {
                    "route": {
                        "type": "choice",
                        "instructions": "Which team should handle this ticket?",
                        "criteria": {
                            "billing": "Billing",
                            "eng": "Engineering",
                            "cs": "General support",
                        },
                    }
                },
            },
        )
        resp.raise_for_status()
        answer = resp.json()["data"]["answers"]["route"]

    # Confidence-gate the routing decision before acting on it.
    if answer["confidence"] < 0.6:
        return "escalate_to_human"
    return answer["choice"]

Klien

Integrasi dengan klien AI umum

Decisions adalah endpoint asli Anoman, bukan endpoint chat yang kompatibel dengan OpenAI — panggil langsung lewat HTTP dengan klien standar bahasa pemrograman Anda, bukan SDK chat OpenAI atau Anthropic.

# Direct HTTP call — decisions is Anoman-native, not chat-shaped.
curl https://api.anoman.io/anoman/v1/decisions \
  -H "Authorization: Bearer anm-sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jev-latest",
    "state": "...",
    "questions": { "is_spam": { "type": "noul", "instructions": "Is this spam?" } }
  }'
SDK chat OpenAI dan Anthropic tidak berlaku di sini. Tidak ada shim chat-completions untuk decisions — ini mencerminkan cara OpenRouter mengekspos JEV di endpoint decisions terpisahnya sendiri, bukan lewat /chat/completions. Gunakan klien HTTP biasa (curl, httpx, fetch, atau padanan di bahasa Anda) seperti dicontohkan di atas.

Untuk menyambungkan lapisan HTTP sebuah agent (header auth, base URL, retry), lihat panduan integrasi AI agent — pola API key dan Bearer-token yang sama berlaku untuk endpoint decisions.

Penanganan data

Penanganan data & residensi

Perutean ke AS. Berbeda dari sisa gateway Anoman (single-region Jakarta), Decision Models merutekan request Anda ke API JEV di Amerika Serikat. Jika konten Anda harus tetap berada dalam kawasan, jangan kirim ke endpoint ini.

Hanya state yang diredaksi. PII yang terdeteksi dalam state dimasking sebelum meninggalkan Anoman. questions/instructions Anda dikirim ke JEV persis seperti yang Anda tulis dan tidak dipindai atau diredaksi — jangan menaruh rahasia atau identitas sensitif di teks pertanyaan Anda.

Keputusan bersifat probabilistik. Setiap jawaban adalah probabilitas terkalibrasi, bukan kepastian. Tinjau keputusan penting sebelum menindaklanjutinya, terutama saat confidence yang dikembalikan rendah.

Coba Decision Models

Skema request dan response lengkap, plus setiap endpoint Anoman, tersedia di API reference.