Dokumentasjon_
Alt du trenger for å bruke Ramsey fra egen kode. API-et er kompatibelt med Jev, så klienter skrevet for
/v1/systemone virker ved å bytte adresse og nøkkel.
Kom i gang Forespørsel Svar Feil Gode råd
Kom i gang_
1. Lag en konto og bekreft e-posten. Du får $25 i credits.
2. Lag en API-nøkkel under Konto. Den vises bare én gang, så lagre den som en hemmelighet.
3. Send nøkkelen i Authorization: Bearer tk_… på hvert kall.
curl
curl https://one.tenki.no/v1/systemone \ -H "Authorization: Bearer tk_..." \ -H "Content-Type: application/json" \ -d @request.json
Python
import requests
r = requests.post(
"https://one.tenki.no/v1/systemone",
headers={"Authorization": "Bearer tk_..."},
json={
"model": "ramsey-1",
"state": "Kunden vil endre leveringsadresse på ordre 123.",
"questions": {
"intent": {"type": "choice", "instructions": "Hva vil kunden?",
"criteria": {"endre_adresse": "", "kansellere": "", "faktura": ""}},
"urgent": {"type": "noul", "instructions": "Haster det?"},
},
},
timeout=30,
)
r.raise_for_status()
a = r.json()["answers"]
if a["intent"]["probabilities"][a["intent"]["choice"]] >= 0.9:
route_to(a["intent"]["choice"]) # sikker nok: avgjør automatisk
else:
send_to_human() # usikker: send videre
JavaScript
const r = await fetch("https://one.tenki.no/v1/systemone", {
method: "POST",
headers: { "Authorization": "Bearer tk_...", "Content-Type": "application/json" },
body: JSON.stringify({
model: "ramsey-1",
state: { ticket: 4711, text: "Appen krasjer når jeg logger inn" },
questions: {
team: { type: "choice", instructions: "Hvem tar saken?",
criteria: { support: "", utvikling: "", salg: "" } },
severity: { type: "score", instructions: "Hvor alvorlig?",
criteria: ["Lav", "Middels", "Høy", "Kritisk"] }
}
})
});
const { answers } = await r.json();
Forespørsel_
POST https://one.tenki.no/v1/systemone med Content-Type: application/json.
| Felt | Type | Beskrivelse |
|---|---|---|
state | string, objekt eller liste | Det modellen skal vurdere: en e-post, en samtale, et JSON-objekt. Objekter sendes som formatert JSON. |
questions | objekt | Navngitte spørsmål, opptil 32. Navnet er nøkkelen du får svaret under. |
model | string | Valgfritt. ramsey-1. |
Spørsmål
| Type | instructions | criteria |
|---|---|---|
noul | Ja/nei-spørsmålet | Valgfritt: {"true": "når ja", "false": "når nei"} |
choice | Hva det skal velges mellom | {"navn": "beskrivelse"}, 2–26 alternativer. Beskrivelsen kan være tom. |
score | Hva som måles | ["laveste nivå", …, "høyeste nivå"], 2–10 nivåer i stigende rekkefølge |
Gode beskrivelser i criteria gir bedre svar enn korte navn. Skriv dem som du ville forklart det for en ny kollega.
Svar_
{ "model": "ramsey-1", "answers": { "team": { "type": "choice", "choice": "faktura", "probabilities": { "faktura": 0.986, "teknisk": 0.011, "salg": 0.003 }, "confidence": 0.9 }, "urgent": { "type": "noul", "noul": 0.93 }, "anger": { "type": "score", "score": 1.62, "median": 2, "interval": [ 1, 2 ], "probabilities": { "0": 0.04, "1": 0.3, "2": 0.66 } } }, "usage": { "input_tokens": 354, "output_tokens": 0 } }
| Felt | Beskrivelse |
|---|---|
answers.<navn>.noul | Sannsynligheten for ja, 0–1. |
answers.<navn>.choice | Alternativet med høyest sannsynlighet. |
answers.<navn>.probabilities | Sannsynlighet for hvert alternativ. Summerer til 1. |
answers.<navn>.confidence | Hvor samlet fordelingen er: 0 = jevnt fordelt, 1 = alt på ett alternativ. Ikke det samme som sannsynligheten for å ha rett. |
answers.<navn>.score | Forventet nivå (0 = laveste). |
answers.<navn>.median, interval | Mest sannsynlige nivå og et 80 %-intervall. Ikke i Jev. |
usage.input_tokens | Tokens som belastes. Output er gratis. |
Feil og grenser_
Feil har alltid formen {"error": {"code": "…", "message": "…"}}.
| Status | code | Betyr |
|---|---|---|
400 | invalid_json | Kroppen er ikke gyldig UTF-8-JSON. |
401 | unauthorized | Mangler eller feil API-nøkkel. |
402 | out_of_credits | Kontoen er tom for credits. |
413 | too_large | Forespørselen er større enn 256 KB. |
422 | invalid_request | Mangler state eller questions, eller et spørsmål er ugyldig. |
422 | too_many_questions | Mer enn 32 spørsmål i én forespørsel. |
429 | rate_limited / daily_limit | For mange kall. Vent så mange sekunder som Retry-After sier. |
529 | overloaded | Alle maskiner er opptatt. Prøv igjen om noen sekunder. |
503 | no_backend | Ingen maskin svarer akkurat nå. |
Grenser per nøkkel: 300 kall i minuttet og 200 000 i døgnet. Ved 429 og 529: vent og prøv igjen,
gjerne med økende pause (1 s, 2 s, 4 s …).
Gode råd_
Bruk sannsynligheten, ikke bare svaret. La Ramsey avgjøre automatisk når sannsynligheten er høy, for eksempel over 0,9, og send resten til en større modell eller et menneske. Velg terskelen ut fra hvor dyrt en feil er hos deg, og sjekk den mot noen hundre ekte eksempler.
Spør flere ting i samme kall. Flere spørsmål om samme tilstand i én forespørsel er raskere enn mange enkeltkall.
Hold tilstanden til det som trengs. Ramsey leser opptil rundt 6000 tokens, men korte tilstander gir raskere svar.
Ramsey er sterk på klassifisering, ruting, triage, sjekk av svar mot krav og avgjørelser med klare regler. Den er svakere på regning, datoer og lange resonnementer i mange steg. Der bør usikre svar sendes videre.
Jev-kompatibilitet_
Forespørsels- og svarformatet følger Jevs /v1/systemone. Har du kode for Jev, bytt adressen til https://one.tenki.no og nøkkelen til en
Tenki One-nøkkel. Feltene median og interval på score-svar er tillegg som Jev-klienter bare ignorerer.