Decisions
Strukturált kérdéseket tehetsz fel egy szövegről (melyik csapatra tartozik, mennyire bosszús az ügyfél, igaz-e valami), és folyó szöveg helyett pontosan meghatározott formájú válaszokat kapsz. Jegyek szétosztására, visszajelzések pontozására, e-mailek és űrlapok ellenőrzésére.
A Decisions azokra a kérdésekre való, amelyeket újra és újra felteszel ugyanolyan típusú szövegekről: melyik csapat foglalkozzon ezzel a jeggyel, mennyire bosszús ez az ügyfél, visszatérítést kér-e ez az e-mail. Illeszd be a szöveget, írd meg a kérdéseket, és mindegyikre abban a formában kapod meg a választ, amelyet megadtál: a lehetőségeid egyikeként, a skálád egy szintjeként, vagy egy hamis és igaz közötti értékként. Olyan válaszokat kapsz, amelyek alapján rögtön tehetsz valamit, nem pedig végigolvasandó bekezdéseket.
A Choice és a Score típusú válaszok azt is megmutatják, mennyire biztos a dolgában a modell, és hogyan oszlik meg a valószínűség a lehetőségeid között, így egy pillantásból látod, hogy egyértelmű volt-e a döntés, vagy szoros. A Decisions a TypeSafe AI Jev 1.13 modelljén fut. Ez egy döntési modell: folyó szöveg helyett az általad meghatározott formában válaszol a kérdéseidre.
Kérdéstípusok
A Decisions az Apps oldalon található, azon a kártyán, amelyen ez áll: Classify, score and check text with structured questions (szöveg osztályozása, pontozása és ellenőrzése strukturált kérdésekkel). Egy döntésben több kérdést is feltehetsz ugyanarról a szövegről, és minden kérdés a három típus egyikébe tartozik:
| Típus | Amit megadsz | Amit visszakapsz |
|---|---|---|
| Choice | Egy kérdést és a válaszlehetőségeit. Minden lehetőségnek van egy neve és egy When it applies leírása (mikor érvényes). | A modell által választott lehetőséget, a bizonyosságot és minden lehetőség valószínűségét. |
| Score | Egy kérdést és a szintjeit a legalacsonyabbtól a legmagasabbig, mindegyiket egy mondattal leírva. A szintek számozása 0, 1, 2 és így tovább. | A szintet, egy értéket ezen a skálán (például 1.9 / 2), a bizonyosságot és minden szint valószínűségét. |
| True / false | Egy állítást, és ha szeretnéd, feltételeket arra, mikor igaz és mikor nem. | Egy 0 (hamis) és 1 (igaz) közötti értéket, például 0.97. |
Döntés létrehozása
- Indíts új döntést
Nyisd meg az Apps oldalt, és válaszd a Decisions kártyát. Az oldalon a korábbi döntéseid listáját látod; kattints a New decision gombra.
- Illeszd be a szöveget
A TEXT részbe illeszd be, amit ellenőrizni szeretnél: egy ügyfélszolgálati jegyet, egy értékelést, egy e-mailt vagy egy beküldött űrlapot.
- Add meg a kérdéseidet
A QUESTIONS részben adj hozzá egy kérdést, és válaszd ki a típusát: Choice, Score vagy True / false.
- Choice. Írd be a kérdést, például: Melyik csapat foglalkozzon ezzel? Adj nevet minden lehetőségnek, és a When it applies mezőben írd le, mikor érvényes. Az Add option gombbal újabb lehetőséget adhatsz hozzá.
- Score. Írd be a kérdést, például: Mennyire bosszús az ügyfél? Írd le az egyes szinteket a legalacsonyabbtól a legmagasabbig. Az Add level gombbal újabb szintet adhatsz hozzá, a fel és le mutató nyilakkal pedig átrendezheted őket.
- True / false. Írd be az állítást, például: Az ügyfél lemondással fenyeget. Ha szeretnéd, töltsd ki a Criteria részt is, amelyre a válasz egy 0 (hamis) és 1 (igaz) közötti érték: a TRUE mezőbe azt írd, mikor igaz az állítás (Korábbi próbálkozást vagy jegyet említ), a FALSE mezőbe pedig azt, mikor nem.
- Ellenőrizd a modellt
A MODEL panel mutatja, melyik modell fog válaszolni. Alapértelmezés szerint ez a TypeSafe AI Jev 1.13 modellje.
- Futtasd
Kattints a Run decision gombra. A válaszok az ANSWERS panelen jelennek meg. Ha más megfogalmazást is kipróbálnál, módosítsd a szöveget vagy a kérdéseket, és kattints a Run again gombra.
Példa: ügyfélszolgálati jegy osztályozása
Ez a fenti felvételen látható futtatás, ezért a szöveg és a kérdések angolul szerepelnek. A Northwind ügyfélszolgálata ehhez hasonló üzenetet kap egy Marta nevű vásárlótól:
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 azt írja, hogy a merinó takaró (NW-4471-es rendelés) még mindig nem érkezett meg, már a második rendelése veszett el, és komolyan fontolgatja, hogy lemondja a tagságát. Három kérdést teszünk fel az üzenetről:
| Kérdés | Típus | Lehetőségek vagy szintek | Válasz |
|---|---|---|---|
| Which team should handle this? (Melyik csapat foglalkozzon vele?) | Choice | billing (számlázás): Payments, refunds and invoices. shipping (szállítás): Delivery, tracking and missing parcels. product (termék): Questions about our products. | shipping, 100%-os bizonyosság |
| How frustrated is the customer? (Mennyire bosszús az ügyfél?) | Score | 0 Calm (nyugodt), 1 Frustrated but civil (bosszús, de udvarias), 2 Angry, ready to leave (dühös, kész továbbállni) | Angry, ready to leave: 1.9 / 2, 79%-os bizonyosság (a három szintre 0%, 14% és 86%) |
| The customer is threatening to cancel (Az ügyfél lemondással fenyeget) | True / false | Nincsenek feltételek | 0.97 |
Mindegyik válaszhoz tartozik egy teendő: a jegy a szállítási (shipping) sorba kerül, a bosszússági pontszám és a lemondásjelzés pedig gyors, gondos válaszra jelöli meg, mielőtt Marta továbbállna.
A válaszok értelmezése
- Choice. A modell által választott lehetőség a bizonyossággal együtt (például 100% confidence), valamint minden lehetőség valószínűsége sávként, százalékkal. A sávokból látszik, mennyire volt szoros a döntés: ha két lehetőség között szinte fele-fele az arány, érdemes emberi szemmel is ránézni, egy egyértelmű győztesnél általában nem.
- Score. A szint, amelyre a szöveg került, egy érték a skáládon (például 1.9 / 2), a bizonyosság (például 79% confidence) és az egyes szintek valószínűsége. Az érték két szint közé is eshet, így nemcsak címkézésre, hanem sorba rendezésre is jól használható.
- True / false. Egy 0 és 1 közötti érték egy sávon, amelynek egyik vége False, a másik True. Minél közelebb van az 1-hez, annál egyértelműbben igaz az állítás; minél közelebb van a 0-hoz, annál egyértelműbben nem igaz.
Mentett döntések
Minden döntés elmentődik a szövegével, a kérdéseivel és a válaszaival együtt. A Decisions oldal táblázatban listázza az eddigi döntéseidet Text, Model, Status és Created oszlopokkal, a New decision gombbal pedig újat indíthatsz.
Egy mentett döntés pontosan rögzíti, mit kérdeztél, és mi jött vissza. Ez jól jön, ha később valaki megkérdezi, miért oda került egy jegy, ahová.
Védőkorlátok és hozzáférés
A Decisions ugyanazokat a munkaterületi szabályokat követi, mint a chat:
- Védőkorlátok. A munkaterület védőkorlátai a szöveget, minden kérdést és minden leírást ellenőriznek, mielőtt a modell látná őket. A beállításuktól függően az érzékeny adatokat kitakarják, vagy letiltják a futtatást.
- Modellhozzáférés és adatrezidencia. A munkaterület modellhozzáférési beállításai és adatrezidencia-szabályai ugyanúgy vonatkoznak a Jev modellre, mint bármely más modellre. Ha ezek kizárják számodra a modellt, nem futtathatsz vele döntést.
Használat az API-ból
A Decisions saját REST-végpontokkal rendelkezik, így a saját kódodból is feltehetsz ugyanazokat a kérdéseket minden új jegyről, értékelésről vagy e-mailről. Minden útvonal a https://api.stickyprompts.com/api/v1 címhez képest értendő, és minden kérés bearer tokenként küldi az API-kulcsodat az Authorization fejlécben. Most ismerkedsz az API-val? Kezdd a Gyors kezdés oldallal.
A kulcsnak ezekre a jogosultságokra van szüksége (az alkalmazás kulcsszerkesztőjében Decision Get, Decision Manage és Decision Delete néven szerepelnek):
decision_get- a döntési modellek listázása, a saját döntéseid listázása és lekérésedecision_manage- döntés futtatásadecision_delete- döntés törlése
A Decisions MCP-eszközként nem érhető el, ehhez a REST-végpontokat használd.
A döntési modellek listázása
/api/v1/decision_model JSON-tömbként adja vissza a döntési modelleket (rövidítve):
[
{
"ID": 1,
"name": "Jev 1.13",
"selectable": true
}
]
A modell ID értékét a decision_model_id mezőben add át. Minden modellnek van version, powered_by, description és default mezője is. A chatmodellekhez hasonlóan a selectable: false azt jelenti, hogy a munkaterület modellhozzáférési vagy adatrezidencia-szabályai letiltják számodra a modellt; az okát a restriction_reason mező adja meg. Az alábbi példák az 1 értéket használják, ez volt a Jev 1.13 ID értéke az oldal írásakor. Ne írd be fixen a kódba, hanem mindig kérdezd le.
Döntés futtatása
/api/v1/decision Szinkron módon futtatja a döntést (a hívás akkor tér vissza, amikor elkészültek a válaszok), és elmenti a többi döntésed mellé.
-
decision_model_idinteger kötelező - A modell
IDértéke aGET /decision_modelválaszából. -
statestring kötelező - Az ellenőrizendő szöveg.
-
questionsobject kötelező - Legalább egy kérdés, mindegyik egy általad választott kulcs alatt, például
teamvagyurgent. A válaszok ugyanezek alatt a kulcsok alatt érkeznek vissza.
Minden kérdésnek van egy type, egy instructions (maga a kérdés vagy állítás) és egy criteria mezője:
type | Az alkalmazásban | criteria |
|---|---|---|
choice | Choice | Kötelező. Egy objektum, amely minden lehetőség nevéhez hozzárendeli, mikor érvényes. |
score | Score | Kötelező. A szintek leírásainak tömbje, a legalacsonyabbal kezdve. Az első elem a 0 szintnek felel meg. |
noul | True / false | Nem kötelező. Egy objektum true kulccsal (mikor igaz), false kulccsal (mikor nem), vagy mindkettővel. Más kulcs nem megengedett. |
Ez a kérés egy Choice és egy True / false típusú kérdést tesz fel:
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);A válasz 201 státuszkóddal érkezik, és a mentett döntést tartalmazza. Rövidítve, szemléltető ID és slug értékkel:
{
"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
}
}
}
A válasz tartalmazza még a questions mezőt abban a formában, ahogy a modell megkapta (az esetleges védőkorlát-kitakarás után), a beágyazott decision_model objektumot, valamint a resolved_model mezőt, vagyis annak a modellverziónak a pontos nevét, amely válaszolt.
Score típusú kérdések
A Score típusú kérdés tömbként küldi el a szintjeit, a legalacsonyabbal kezdve:
{
"frustration": {
"type": "score",
"instructions": "How frustrated is the customer?",
"criteria": ["Calm", "Frustrated but civil", "Angry, ready to leave"]
}
}
A válaszban szerepel a score, a confidence, a legend, amely minden szintszámhoz hozzárendeli a te leírásodat, valamint a szintek probabilities értékei, szintszám szerinti kulcsokkal. A szerkezete így néz ki (szemléltető értékekkel):
{
"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 }
}
}
Ha a döntés hibára fut
400- hiányzik astate, egy kérdés érvénytelen (nincsinstructionsmezője, egychoicevagyscorekérdésnek nincscriteriamezője, anoulfeltételei között atrueés afalsekulcson kívül más is szerepel, vagy ismeretlen atype), vagy adecision_model_idegyik modellhez sem tartozik.400egycodemezővel - egy védőkorlát letiltotta a szöveget vagy egy kérdést.403- a munkaterület modellhozzáférési szabályai korlátozzák a modellt.429- a munkaterület elérte a kvótáját vagy a csomagja korlátját. Lásd: Hibák, lapozás és kvóták.
Döntések listázása, lekérése és törlése
/api/v1/decision Kilistázza a döntéseidet, a legújabbal kezdve. Támogatja a page és a size paramétert, szűréshez pedig a status paramétert (processing, done vagy error). Az összes találat száma az X-Total-Count fejlécben van, lásd: lapozás.
/api/v1/decision/:id Egyetlen döntés ID vagy slug alapján, a szövegével, kérdéseivel és válaszaival együtt. Ha a döntés nem létezik, vagy nem a tiéd, a válasz 404 {"error":"Decision not found"}.
/api/v1/decision/:id Töröl egy döntést a numerikus ID alapján. A válasz 204, akkor is, ha egyetlen döntés sem egyezett.
Ötletek
- Jegyek szétosztása. Egy Choice kérdés, amelynek a lehetőségei a csapataid, minden jegyet a megfelelő sorba juttat.
- Értékelések hangulatának pontozása. Egy Elégedetlen szinttől Lelkes szintig tartó Score kérdés egy halom értékelést sorba rendezhető, diagramon ábrázolható számmá alakít.
- E-mailek és űrlapok ellenőrzése egy feltételre. Egy True / false állítás, például Az e-mail visszatérítést kér vagy Az űrlapon szerepel rendelésszám, megjelöli azokat, amelyekkel tenni kell valamit.
- Mindhárom egyszerre. Egyetlen döntés ugyanazt a szöveget szétoszthatja, pontozhatja és ellenőrizheti, ahogy a fenti példában.