mirror of
https://github.com/hanzoai/python-sdk.git
synced 2026-10-23 20:23:00 +00:00
27 lines
2.0 KiB
Python
27 lines
2.0 KiB
Python
"""How much of an option Kai reads: two options that differ only after a long shared opening, then one over 512 tokens."""
|
|
|
|
from hanzo_kai import Choice, Kai, RetryPolicy, UnprocessableEntityError
|
|
|
|
OPENING = ("Send the ticket to this queue when, after reading the whole message, any earlier replies in the thread "
|
|
"and the notes other agents left on it, and after checking the customer's plan, region and account "
|
|
"history, the main thing the customer needs from us is help from the team that looks after ")
|
|
LATE = Choice(instructions="Which queue should take this ticket?",
|
|
criteria={"q1": OPENING + "charges, invoices and refunds.", "q2": OPENING + "themes, colors and layout."})
|
|
EARLY = Choice(instructions="Which queue should take this ticket?",
|
|
criteria={"q1": "Charges, invoices and refunds. " + OPENING, "q2": "Themes, colors and layout. " + OPENING})
|
|
LONG = Choice(instructions="Which queue should take this ticket?",
|
|
criteria={"q1": "charges, invoices and refunds " * 150, "q2": "themes, colors and layout"})
|
|
TICKETS = [("q1", "I was charged twice for my March invoice."),
|
|
("q2", "How do I change the color theme of the dashboard?")]
|
|
|
|
with Kai(retry=RetryPolicy(max_retries=8)) as kai:
|
|
for want, ticket in TICKETS:
|
|
late = kai.decide(state=ticket, questions={"queue": LATE}).choices["queue"].probabilities
|
|
early = kai.decide(state=ticket, questions={"queue": EARLY}).choices["queue"].probabilities
|
|
print(f"{ticket:<50} want {want} difference last: P(q1) {late['q1']:.4f} first: P(q1) {early['q1']:.4f}")
|
|
try:
|
|
answer = kai.decide(state=TICKETS[0][1], questions={"queue": LONG}).choices["queue"]
|
|
print(f"an option of {len(LONG.criteria['q1']):,} characters: answered, P(q1) {answer.probabilities['q1']:.4f}")
|
|
except UnprocessableEntityError as error:
|
|
print(f"an option of {len(LONG.criteria['q1']):,} characters: {error.status} {error.code} {error.message}")
|