A public-facing AI agent (WhatsApp/Chatwoot bot) managed from the
admin — README_AI_AGENTS.md §2.1. The agent acts "as a user": `user` is
a dedicated non-human account (is_staff=False, is_admin=False) whose
Django permissions decide which tools the agent's LLM even sees
(bots/capabilities.py), and whose identity signs every LogEntry and
invoice the agent creates. `agent_type` points at the code-side scaffold
(non-negotiable prompt rules + capability catalog + post-processing) in
bots/agent_types.py; `system_prompt` only carries the editable
personality/business rules on top of that scaffold.
| Field |
Description |
| Key |
Routes the Chatwoot webhook URL (bots///). Must match an entry in ai_chat_s.bots.routing.AGENT_TENANTS. |
| Name |
|
| Agent type |
Code-side scaffold: prompt rules, tool catalog and post-processing. |
|
Agent user
|
Non-human account this agent acts as: its Django permissions decide which tools the agent can use, and audit/invoices are signed with it. Must NEVER be an admin user. |
| Enabled |
Emergency off-switch: a disabled agent ignores every webhook event. |
| Shadow mode |
The agent drafts its reply as a PRIVATE note on the conversation instead of answering the contact — a human decides whether to send it. Required stage between the offline benchmark and real auto-replies. |
| Tenant API token |
Required for tenant assistants: paste this account's API token to prove ownership. |
Prompt
| Field |
Description |
| System prompt |
Editable personality and business rules. Appended to the non-negotiable scaffold of the agent type — it cannot override the scaffold's safety rules. |
| LLM model |
Model key from ai_chat_s.llm_providers.PROVIDER_REGISTRY. |
Channels
| Field |
Description |
|
Chatwoot channel
|
The Chatwoot connection this agent listens/replies on. Several agents may share one. |
Business hours
| Field |
Description |
| Enforce business hours |
ON: outside the configured hours the agent only sends the closed message. OFF: the agent attends 24/7 and the configured hours are injected into its prompt as information (e.g. to schedule deliveries) — one single place to maintain them. |
| Business weekdays |
Comma-separated weekday numbers, Monday=0 ... Sunday=6 (e.g. "2,3,4,5,6"). Empty means every day. |
| Opens at |
Empty means always open. |
| Closes at |
|
| Closed message |
Reply sent outside business hours. Empty uses the generic default. |
Humanization
| Field |
Description |
| Minimum reply delay (seconds) |
Humanization: the agent waits a random time between the minimum and maximum before sending its reply on real channels (Chatwoot). 0/0 replies immediately. The iframe test channel is never delayed. |
| Maximum reply delay (seconds) |
|
Escalation
| Field |
Description |
| Escalation assignee ID |
Chatwoot agent ID conversations are assigned to when the agent escalates. |
| Fallback message |
Reply sent when the agent hits an unexpected error. Empty uses the generic default. |
Capability parameters
| Field |
Description |
| Capability parameters |
Per-type parameters, e.g. {"menu_category_id": 1723, "delivery_element_id": 123185}. |
AI agents
It has the following related modules and may be of interest to you:
Déjanos tus comentarios