Put GLM on the desk
Support repeats itself. The same refund question, the same "where is my order," the same policy that already exists in a doc nobody opens.

A first run
three commandsExport TIYUVTA_KEY from the consoleconsole. The runnable pack is avifenesh/tiyuvta-use-cases.
export TIYUVTA_KEY="YOUR_KEY"
pip install -r requirements.txt
python examples/support_desk.py "Hi, order A1842 still is not here. Can I get a refund?"The example makes OpenAI-compatible calls to https://api.tiyuvta.ai/v1. When the model returns tool_calls, you run them against your store and send the results back. Same shape as any tools loop. No product-specific SDK.
client.chat.completions.create(
model="zai/glm-5.3-flash",
messages=[{"role": "user", "content": ticket}],
tools=[
{"type": "function", "function": {"name": "lookup_order", "...": "..."}},
{"type": "function", "function": {"name": "lookup_policy", "...": "..."}},
{"type": "function", "function": {"name": "escalate", "...": "..."}},
],
# reasoning is always on; it bills as output
extra_body={"reasoning_effort": "low"},
max_tokens=32768,
)Use reasoning_effort: low so a first run does not spend the default (max) thinking budget. Raise it when the ticket is the work. Leave tool choice on auto; the endpoint does not accept tool_choice: required for this model.
You do not need a second vendor for that. You need a model cheap enough to leave on, and strong enough to close the ticket. On this roster that is GLM-5.3-Flash. It is the cheapest model we serve, and the strongest.
This page is a working shape: an incoming ticket, a few tools intoyour store, a reply or a handoff. The store stays on your side. The endpoint only sees the text and the tool results you send.
Get a keyGet a key and run the example. Or read the story first.
Why GLM
cheapest · strongest we serveGLM-5.3-Flash is not the "good enough" model here. It is the cheapest on the roster, and the strongest we serve.
It has tools. It has vision if the ticket is a screenshot. It has a 262K window if the thread is long. It also does structured JSON when you want a triage object before the reply. Reasoning stays on. You see it, and you pay for it as output, so send a real max_tokens and keep the effort low for everyday tickets.
That is the product pitch. The desk is yours. The model is a prepaid call.
What you do
store · tools · hand offKeep the store local. Orders, policy, who already refunded whom. A dict is enough to start.
Give the model three tools. Look up an order. Look up a policy. Escalate when the store has no answer.
Do not let it invent. If the order is missing, it should hand off. A confident wrong refund is worse than a slow human.
What this is not
honest limitsThis is inference. It is not a hosted helpdesk. We do not store your tickets, your orders, or your policy. You bring the thin workflow. You decide where the store lives.
It is also not a handle-time bake-off. We have run the shape against the live endpoint. We have not published a "percent of tickets closed" for your queue.
A clean reply can still carry a wrong status, refund, or policy line. Read high-stakes answers before they leave the business.
What it costs
one balanceYou pay GLM for input and output, including reasoning tokens. Tool results you send back are input on the next turn. Repeated policy text may get the cached-input rate when the response reports cached tokens. Prices are on Pricing.
Next
- Use cases: the rest of this section
- Write the work for rewrite, notes, and structured briefs
- Give your tools a memory if the desk should remember last quarter
- GLM-5.3-Flash
- Example repo: avifenesh/tiyuvta-use-cases