Decisions
Stellen Sie strukturierte Fragen zu einem Text (welches Team, wie verärgert, stimmt das?) und erhalten Sie Antworten in fester Form statt Fließtext. Zum Zuordnen von Tickets, Bewerten von Feedback und Prüfen von E-Mails oder Formularen.
Decisions ist für die Fragen gedacht, die Sie immer wieder zur gleichen Art von Text stellen: Welches Team soll dieses Ticket bearbeiten? Wie verärgert ist dieser Kunde? Bittet diese E-Mail um eine Rückerstattung? Fügen Sie den Text ein, schreiben Sie die Fragen, und jede Antwort kommt in der Form zurück, die Sie festgelegt haben: als eine Ihrer Optionen, als Stufe auf Ihrer Skala oder als Wert zwischen falsch und wahr. Sie erhalten Antworten, mit denen Sie direkt weiterarbeiten können, statt Absätze, die Sie erst lesen müssen.
Bei Auswahl- und Skalenantworten sehen Sie, wie sicher sich das Modell ist (die Konfidenz) und wie sich die Wahrscheinlichkeit auf Ihre Optionen verteilt. So erkennen Sie auf einen Blick, ob eine Einschätzung eindeutig oder knapp war. Decisions läuft mit Jev 1.13 von TypeSafe AI, einem Entscheidungsmodell: Statt Fließtext zu schreiben, beantwortet es Ihre Fragen in der Form, die Sie vorgeben.
Fragetypen
Decisions finden Sie unter Apps, auf der Karte mit der Beschreibung Classify, score and check text with structured questions. Eine Entscheidung kann mehrere Fragen zum selben Text stellen, und jede Frage hat einen von drei Typen:
| Typ | Was Sie eingeben | Was Sie zurückbekommen |
|---|---|---|
| Choice | Eine Frage und ihre Optionen. Jede Option hat einen Namen und unter When it applies eine Beschreibung, wann sie zutrifft. | Die vom Modell gewählte Option, eine Konfidenz und die Wahrscheinlichkeit jeder Option. |
| Score | Eine Frage und ihre Stufen, von der niedrigsten bis zur höchsten, jede in einem Satz beschrieben. Die Stufen sind mit 0, 1, 2 und so weiter nummeriert. | Die Stufe, einen Wert auf dieser Skala wie 1.9 / 2, eine Konfidenz und die Wahrscheinlichkeit jeder Stufe. |
| True / false | Eine Aussage, dazu optional Kriterien dafür, wann sie zutrifft und wann nicht. | Einen Wert von 0 (falsch) bis 1 (wahr), etwa 0.97. |
Eine Entscheidung erstellen
- Eine neue Entscheidung beginnen
Gehen Sie zu Apps und wählen Sie Decisions. Die Seite listet Ihre bisherigen Entscheidungen auf. Wählen Sie New decision.
- Den Text einfügen
Fügen Sie unter TEXT ein, was Sie prüfen möchten: ein Support-Ticket, eine Rezension, eine E-Mail, eine Formulareingabe.
- Ihre Fragen hinzufügen
Fügen Sie unter QUESTIONS eine Frage vom Typ Choice, Score oder True / false hinzu.
- Choice. Schreiben Sie die Frage, zum Beispiel Welches Team soll sich darum kümmern? Geben Sie jeder Option einen Namen und beschreiben Sie unter When it applies, wann sie zutrifft. Mit Add option fügen Sie eine weitere hinzu.
- Score. Schreiben Sie die Frage, zum Beispiel Wie verärgert ist der Kunde? Beschreiben Sie jede Stufe, von der niedrigsten bis zur höchsten. Mit Add level fügen Sie eine Stufe hinzu, mit den Pfeilen nach oben und unten ändern Sie die Reihenfolge.
- True / false. Schreiben Sie die Aussage, zum Beispiel Der Kunde droht mit Kündigung. Optional füllen Sie die Criteria aus, beantwortet auf einer Skala von 0 (falsch) bis 1 (wahr): unter TRUE, wann die Aussage zutrifft (Erwähnt einen früheren Versuch oder ein früheres Ticket), und unter FALSE, wann nicht.
- Das Modell prüfen
Der Bereich MODEL zeigt, welches Modell antworten wird. Voreingestellt ist Jev 1.13 von TypeSafe AI.
- Ausführen
Wählen Sie Run decision. Die Antworten erscheinen im Bereich ANSWERS. Möchten Sie eine andere Formulierung ausprobieren, bearbeiten Sie den Text oder die Fragen und wählen Sie Run again.
Beispiel: ein Support-Ticket einordnen
Das ist der Durchlauf aus der Aufnahme oben. Text und Fragen stehen deshalb auf Englisch. Das Support-Team von Northwind erhält eine Nachricht wie diese von einer Kundin namens Marta:
Hi, I ordered a merino throw (order NW-4471) and it still hasn't arrived.
This is the second order from you that has gone missing. I'm seriously
thinking about cancelling my membership. - Marta
Marta schreibt, dass ihre Merino-Decke (Bestellung NW-4471) immer noch nicht angekommen ist, dass dies schon die zweite verloren gegangene Bestellung ist und dass sie ernsthaft überlegt, ihre Mitgliedschaft zu kündigen. Dazu stellen wir drei Fragen:
| Frage | Typ | Optionen oder Stufen | Antwort |
|---|---|---|---|
| Which team should handle this? (Welches Team soll sich darum kümmern?) | Choice | billing (Abrechnung): Payments, refunds and invoices. shipping (Versand): Delivery, tracking and missing parcels. product (Produkt): Questions about our products. | shipping, Konfidenz 100 % |
| How frustrated is the customer? (Wie verärgert ist der Kunde?) | Score | 0 Calm (ruhig), 1 Frustrated but civil (verärgert, aber höflich), 2 Angry, ready to leave (wütend, kurz vor dem Absprung) | Angry, ready to leave: 1.9 / 2, Konfidenz 79 % (0 %, 14 % und 86 % für die drei Stufen) |
| The customer is threatening to cancel (Der Kunde droht mit Kündigung) | True / false | Keine Kriterien | 0.97 |
Jede Antwort führt zu einer Maßnahme: Das Ticket geht in die Versand-Warteschlange, und der Frustrationswert sowie das Kündigungssignal markieren es für eine schnelle, umsichtige Antwort, bevor Marta abspringt.
Die Antworten lesen
- Choice. Die vom Modell gewählte Option mit einer Konfidenz wie 100% confidence sowie die Wahrscheinlichkeit jeder Option als Balken mit Prozentangabe. Die Balken zeigen, wie knapp die Einschätzung war: Liegen zwei Optionen fast gleichauf, lohnt sich ein menschlicher Blick, bei einem klaren Sieger meist nicht.
- Score. Die Stufe, auf der der Text gelandet ist, ein Wert auf Ihrer Skala wie 1.9 / 2, eine Konfidenz wie 79% confidence und die Wahrscheinlichkeit jeder Stufe. Der Wert kann zwischen zwei Stufen liegen. Er eignet sich daher zum Sortieren ebenso wie zum Einordnen.
- True / false. Ein Wert zwischen 0 und 1 auf einem Balken von False bis True. Je näher an 1, desto eindeutiger trifft die Aussage zu. Je näher an 0, desto eindeutiger trifft sie nicht zu.
Gespeicherte Entscheidungen
Jede Entscheidung wird mit ihrem Text, ihren Fragen und ihren Antworten gespeichert. Die Seite Decisions listet Ihre Entscheidungen in einer Tabelle mit den Spalten Text, Model, Status und Created auf, und New decision startet eine neue.
Eine gespeicherte Entscheidung hält genau fest, was gefragt wurde und was zurückkam. Das hilft, wenn später jemand wissen möchte, warum ein Ticket dort gelandet ist, wo es gelandet ist.
Guardrails und Zugriff
Für Decisions gelten dieselben Workspace-Regeln wie für den Chat:
- Guardrails. Die Guardrails Ihres Workspace prüfen den Text sowie jede Frage und Beschreibung, bevor das Modell sie sieht. Je nach Einrichtung werden sensible Angaben geschwärzt oder der Durchlauf wird blockiert.
- Modellzugriff und Datenresidenz. Die Einstellungen für Modellzugriff und Datenresidenz in Ihrem Workspace gelten für Jev wie für jedes andere Modell. Schließen sie Jev für Sie aus, können Sie damit keine Entscheidung ausführen.
Über die API
Für Decisions gibt es eigene REST-Endpunkte. So können Sie aus Ihrem eigenen Code dieselben Fragen zu jedem neuen Ticket, jeder Rezension oder jeder E-Mail stellen. Alle Pfade sind relativ zu https://api.stickyprompts.com/api/v1, und jede Anfrage sendet Ihren API-Schlüssel als Bearer-Token im Header Authorization. Neu bei der API? Beginnen Sie mit dem Schnellstart.
Der Schlüssel braucht diese Berechtigungen (im Schlüssel-Editor der App heißen sie Decision Get, Decision Manage und Decision Delete):
decision_get- Entscheidungsmodelle auflisten, Ihre Entscheidungen auflisten und abrufendecision_manage- eine Entscheidung ausführendecision_delete- eine Entscheidung löschen
Decisions gibt es nicht als MCP-Tool. Verwenden Sie die REST-Endpunkte.
Die Entscheidungsmodelle auflisten
/api/v1/decision_model Gibt die Entscheidungsmodelle als JSON-Array zurück (gekürzt):
[
{
"ID": 1,
"name": "Jev 1.13",
"selectable": true
}
]
Übergeben Sie die ID des Modells als decision_model_id. Jedes Modell hat außerdem version, powered_by, description und default. Wie bei Chat-Modellen bedeutet selectable: false, dass die Regeln Ihres Workspace für Modellzugriff oder Datenresidenz das Modell für Sie sperren. restriction_reason nennt den Grund. Die Beispiele unten verwenden 1, die ID, die Jev 1.13 hatte, als diese Seite geschrieben wurde. Fragen Sie die ID ab, statt sie fest in Ihren Code zu schreiben.
Eine Entscheidung ausführen
/api/v1/decision Führt die Entscheidung synchron aus (der Aufruf kehrt erst zurück, wenn die Antworten vorliegen) und speichert sie bei Ihren anderen Entscheidungen.
-
decision_model_idinteger erforderlich IDdes Modells ausGET /decision_model.-
statestring erforderlich - Der zu prüfende Text.
-
questionsobject erforderlich - Mindestens eine Frage, jeweils unter einem Schlüssel Ihrer Wahl, etwa
teamoderurgent. Die Antworten kommen unter denselben Schlüsseln zurück.
Jede Frage hat einen type, ihre instructions (die Frage oder Aussage) und ihre criteria:
type | In der App | criteria |
|---|---|---|
choice | Choice | Pflicht. Ein Objekt, das jedem Optionsnamen zuordnet, wann die Option zutrifft. |
score | Score | Pflicht. Ein Array von Stufenbeschreibungen, die niedrigste zuerst. Die erste ist Stufe 0. |
noul | True / false | Optional. Ein Objekt mit einem Schlüssel true (wann die Aussage zutrifft), einem Schlüssel false (wann nicht) oder beiden. Andere Schlüssel sind nicht erlaubt. |
Diese Anfrage stellt eine Frage vom Typ Choice und eine vom Typ True / false:
curl -X POST https://api.stickyprompts.com/api/v1/decision \
-H "Authorization: Bearer $STICKY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"decision_model_id": 1,
"state": "My parcel never arrived and the tracking link is broken. Second time this month!",
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments and refunds",
"shipping": "Delivery and tracking"
}
},
"urgent": {
"type": "noul",
"instructions": "The customer needs a fast reply"
}
}
}'import os
import requests
BASE = "https://api.stickyprompts.com/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['STICKY_API_KEY']}"}
r = requests.post(
f"{BASE}/decision",
headers=HEADERS,
json={
"decision_model_id": 1,
"state": "My parcel never arrived and the tracking link is broken. Second time this month!",
"questions": {
"team": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments and refunds",
"shipping": "Delivery and tracking",
},
},
"urgent": {
"type": "noul",
"instructions": "The customer needs a fast reply",
},
},
},
)
r.raise_for_status()
decision = r.json()
if decision["status"] != "done":
raise RuntimeError(decision["error"])
answers = decision["answers"]
print(answers["team"]["choice"], answers["urgent"]["noul"])const BASE = "https://api.stickyprompts.com/api/v1";
const headers = { Authorization: `Bearer ${process.env.STICKY_API_KEY}` };
const res = await fetch(`${BASE}/decision`, {
method: "POST",
headers: { ...headers, "Content-Type": "application/json" },
body: JSON.stringify({
decision_model_id: 1,
state: "My parcel never arrived and the tracking link is broken. Second time this month!",
questions: {
team: {
type: "choice",
instructions: "Which team should handle this?",
criteria: {
billing: "Payments and refunds",
shipping: "Delivery and tracking",
},
},
urgent: {
type: "noul",
instructions: "The customer needs a fast reply",
},
},
}),
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const decision = await res.json();
if (decision.status !== "done") throw new Error(decision.error);
console.log(decision.answers.team.choice, decision.answers.urgent.noul);Die Antwort ist 201 mit der gespeicherten Entscheidung. Gekürzt, mit beispielhaften Werten für ID und slug:
{
"ID": 27,
"slug": "q4m8x2kd",
"decision_model_id": 1,
"state": "My parcel never arrived and the tracking link is broken. Second time this month!",
"status": "done",
"error": "",
"answers": {
"team": {
"type": "choice",
"choice": "shipping",
"confidence": 1,
"probabilities": { "billing": 0, "shipping": 1 }
},
"urgent": {
"type": "noul",
"noul": 0.87
}
}
}
Die Antwort enthält außerdem questions so, wie sie an das Modell gesendet wurden (also nach einer eventuellen Schwärzung durch Guardrails), das eingebettete decision_model und resolved_model, die genaue Modellversion, die geantwortet hat.
Score-Fragen
Eine Score-Frage sendet ihre Stufen als Array, die niedrigste zuerst:
{
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm", "Frustrated but civil", "Angry, ready to leave"]
}
}
Ihre Antwort enthält den score, eine confidence, eine legend, die jeder Stufennummer Ihre Beschreibung zuordnet, und die probabilities jeder Stufe, mit der Stufennummer als Schlüssel. So sieht die Struktur aus (Beispielwerte):
{
"frustration": {
"type": "score",
"score": 1,
"confidence": 1,
"legend": { "0": "Calm", "1": "Frustrated but civil", "2": "Angry, ready to leave" },
"probabilities": { "0": 0, "1": 1, "2": 0 }
}
}
Wenn eine Entscheidung fehlschlägt
400-statefehlt, eine Frage ist ungültig (keineinstructions, einchoiceoderscoreohnecriteria,noul-Kriterien mit anderen Schlüsseln alstrueundfalseoder ein unbekanntertype), oderdecision_model_idpasst zu keinem Modell.400mit einemcode- Guardrails haben den Text oder eine Frage blockiert.403- die Regeln Ihres Workspace für den Modellzugriff schränken das Modell ein.429- das Kontingent oder das Tariflimit des Workspace ist erreicht. Siehe Fehler, Paginierung und Kontingente.
Entscheidungen auflisten, abrufen und löschen
/api/v1/decision Listet Ihre Entscheidungen auf, die neuesten zuerst. Unterstützt page und size sowie status (processing, done oder error) als Filter. Die Gesamtzahl steht im Header X-Total-Count, siehe Paginierung.
/api/v1/decision/:id Eine einzelne Entscheidung nach ID oder slug, mit Text, Fragen und Antworten. Für eine Entscheidung, die nicht existiert oder nicht Ihnen gehört, kommt 404 {"error":"Decision not found"} zurück.
/api/v1/decision/:id Löscht eine Entscheidung anhand ihrer numerischen ID. Gibt 204 zurück, auch wenn nichts gefunden wurde.
Ideen
- Tickets zuordnen. Eine Choice-Frage mit Ihren Teams als Optionen schickt jedes Ticket in die richtige Warteschlange.
- Die Stimmung in Rezensionen bewerten. Eine Score-Frage von Unzufrieden bis Begeistert macht aus einem Stapel Rezensionen eine Zahl, die Sie sortieren und als Diagramm darstellen können.
- E-Mails und Formulare auf eine Bedingung prüfen. Eine Aussage vom Typ True / false wie Die E-Mail bittet um eine Rückerstattung oder Das Formular enthält eine Bestellnummer markiert die Fälle, bei denen etwas zu tun ist.
- Alle drei auf einmal fragen. Eine Entscheidung kann denselben Text zuordnen, bewerten und prüfen, wie im Beispiel oben.