Create an agent
An agent is what you build in Hania: its prompt, model, knowledge, tools, and the places it is reachable. You create one in the dashboard with New agent, three different ways depending on how much you want Hania to do for you.
Three ways to start
- Guided wizard - name the agent, choose a type, and fill in the prompt and settings step by step. Best when you know what you want.
- AI-assist - describe what the agent should do (and optionally point it at your website or notes), and Hania drafts the system prompt and suggests tools. Review the draft, then save. The draft is generated, never auto-published.
- Blueprint - start from a pre-built template and customize it.
Agent types
There are two, and the difference is only whether the agent can act on its own:
- Agent - talks with people in real time, on your website, in messaging channels, or on the phone.
- Autonomous Agent - everything an Agent does, plus it runs on its own on a schedule or a trigger. It works through a goal, uses its tools, and reports back, and its work is checked against what the tools returned before a run counts as complete. See Scheduled agents.
You can switch an agent between the two at any time on its General tab. Switching to Autonomous asks for a goal; switching back stops any scheduled or triggered runs and leaves everything else untouched.
bot_type chatbot and an Autonomous Agent is bot_type agent. Only the names in the dashboard changed.Where it talks
Next to the type you pick Chat or Voice. This is not a third type. It does two things: it writes the system prompt in the right style, for speech or for text, and it decides how the website widget runs, as a voice call on Voice or as a text chat otherwise. Voice also adds the voice settings to the agent.
Voice is a capability, not a kind of agent. Give an agent a voice on its Voice tab and it can take calls in two places: on a phone number bound to it, and through the website widget, which needs a widget key but no number. There is no default voice, so an agent without one has its calls rejected either way. The Voice tab marks each surface Call-ready, or names what it is missing. A phone number can also carry its own voice override, which counts as that number's voice. See Voice agents and Voice numbers.
Where it is deployed
Deployments are separate from the type. The same agent can answer a phone number, a website widget, and your messaging channels at once, and the Agents list shows a badge for each surface an agent is live on, with the count when there is more than one.
- Voice - a phone number is bound to it. See Voice numbers.
- Widget - the embeddable widget is set up for it. It reads Voice widget when the agent is set to Voice, because the widget then takes calls instead of text chat. See Widget.
- Channels - a messaging channel such as WhatsApp, Messenger, Instagram, Telegram, Slack, or email is connected to it. See Messaging channels.
An agent with no badges is not reachable by customers yet. It still works in the dashboard, where you can chat with it and try it out.
What you configure
Whichever way you start, an agent brings together:
- System prompt - the instructions, persona, and guardrails (compose it directly or with the prompt builder).
- Model - the language model that powers it. See Choosing a model below.
- Knowledge - sources it can search to answer from. See Knowledge.
- Tools - actions it can take. See Tools.
- Voice settings - once the agent has voice: the speaking voice, greeting, and in-call controls (end call, transfer, outbound limits).
- Response quality - two optional graders that watch a bot's answers (confidence scoring and response validation), plus a review view to see where it's weak. All off by default. See Response quality below.
Choosing a model
Every agent runs on a language model, set on its General tab. There are two ready-made choices and the full list behind a link:
- Standard - the recommended model, and what a new agent starts on. Leave it here unless you have a reason to change it.
- Community (free) - a free model that doesn't draw on your usage credit. It runs on shared capacity, so it can slow down when demand is high and it isn't the one to put in front of customers. Useful for drafts, internal jobs, and trying an idea out.
- Show all models - the full list, for when you want to choose a specific model yourself.
On a chat agent, Standard keeps up with the recommendation: when the recommended model changes, agents left on Standard move to it and you don't have to do anything. On a voice agent, Standard stays on a model picked for how quickly it replies, since response time is part of how a call feels, and it changes only when you change it. Either way, choosing a specific model from the full list pins your agent to that model until you pick another.
You can change the model on an existing agent whenever you like. It applies to the next conversation, not to ones already open.
Cost marks and context
Each model in the full list carries a cost mark, from $ to $$$$, or free. It's a rough guide to how quickly that model spends your usage credit, not a price. A heavier model can earn its keep on difficult reasoning; for short, routine replies a lighter one usually does the same job for less. See Plans & usage for how credit works.
Under each name you'll also see the model's context window, which is how much conversation and knowledge it can hold in mind at once. Longer conversations and larger knowledge answers benefit from a bigger one.
Response quality
Two optional graders can watch a bot's answers. Both are off by default, opt-in per bot, and operator-only: nothing here is ever shown to your customers.
- Confidence scoring - grades each answer on the bot's own model before it's sent. If confidence falls below 0.3 the answer is replaced with a graceful "I don't have enough reliable information" message. This adds one extra model call and around 700 ms of latency per reply. The 0.3 threshold is fixed.
- Response validation - a passive check that runs after the reply is sent, and only when the turn used sources (knowledge or tool results). It records a verdict (verified, partial, or failed) and any unsupported claims, but never changes or blocks the answer.
Turn either one on from the bot's General tab. The only customer-facing effect is the low-confidence replacement above; scores and verdicts stay inside the console.
Both graders check an answer after it's written. For agents, the Verify Claim tool adds a preventive layer instead: the agent can independently fact-check a claim before it asserts it. Assign it like any other tool.
All three judge what the agent says. An Autonomous Agent gets one more check on what it did: before a run counts as complete, its goal is checked against what the tools actually returned. That one is always on and needs no setup. See how a run knows it's done.
Reviewing graded turns
The bot's Quality tab lists recent graded turns, newest first, so you can see where the bot answers with low confidence or makes unsupported claims and improve its prompt or knowledge. It opens filtered to just the turns worth attention (a refused answer, confidence below 0.5, or a validation result of partial or failed), and you can switch to the full list. Each row shows the confidence score and the grader's reasoning, whether the answer was refused, the validation status with any unsupported claims, and a link to the conversation it came from.
A turn appears only once one of the two graders was on for it, so a bot with both off shows an empty list - turn a grader on and have a conversation to populate it. A row may show only one grader's result when only that half was enabled for the turn.
GET /api/bots/{id}/evaluations with your session, scoped to the current workspace (a bot outside it returns 404). It takes only_problems=true (the default review filter) and limit (default 50, max 500). Evaluations live only in this view for now - they aren't retained or exported anywhere else.Test & deploy
Open your agent and use the built-in Test tab to talk to it as a user would - watch replies stream in, see tool calls execute, and inspect the trace.
Autonomous Agents are tried a different way, because the test panel runs the widget and cannot exercise the agent loop with its tool approvals and iterations. Chat with the agent in Conversations to work through a task turn by turn, or use Run now to watch it work on its goal by itself. Its Agent tab links to both. Runs use the saved configuration, so save your changes first.
When it behaves the way you want, deploy it: embed the chat widget on your site, bind a voice number, connect a messaging channel, or drive it from your backend with the Chat API.