README: - Remove duplicated agent config, safety, security sections (covered by docs) - Add ux_design_system.md and safety.py to project structure and doc links - Convert doc links to descriptive table agent-config-guide.md: - Replace fictional agents/tools with real ones from agents.yaml - Remove nonexistent 'admin' permission level (only read/write) - Fix template names (e-commerce, saas, fintech) - List all available built-in tools openapi-import-guide.md: - Fix /result -> /classifications endpoint - Fix POST /approve to show no request body - Remove nonexistent 'admin' access type - Update response examples to match actual API demo-script.md: - Fix agent names (order_agent -> order_lookup) - Replace fictional refund scenario with real lookup+cancel flow ARCHITECTURE.md: - Fix langgraph-supervisor version (v1.1 -> 0.0.12+) docker-compose.yml: - Expose postgres on port 5433 for local dev
3.6 KiB
Agent Configuration Guide
Overview
Smart Support agents are defined in backend/agents.yaml. Each agent is a
specialist with a specific role, permission level, and set of tools it can call.
agents.yaml Structure
agents:
- name: order_lookup
description: "Looks up order status and tracking information."
permission: read
tools:
- get_order_status
- get_tracking_info
personality:
tone: "friendly and informative"
greeting: "I can help you check your order status!"
escalation_message: "Let me connect you with our support team."
- name: order_actions
description: "Performs order modifications like cancellations."
permission: write
tools:
- cancel_order
personality:
tone: "careful and reassuring"
greeting: "I can help you with order changes."
escalation_message: "I'll connect you with a specialist."
- name: discount
description: "Applies discounts and generates coupon codes."
permission: write
tools:
- apply_discount
- generate_coupon
- name: fallback
description: "Handles general questions and unclear requests."
permission: read
tools:
- fallback_respond
Fields
name (required)
Unique identifier used for routing. Must be alphanumeric with underscores.
description (required)
Plain-text description of what this agent handles. Used by the supervisor to route user messages to the right agent. Be specific.
permission (required)
Controls the interrupt threshold:
read-- no interrupt required. Agent can act immediately.write-- requires human approval via interrupt before executing tools.
tools (required)
List of tool names this agent can use. Tools are registered in backend/app/agents/.
Each tool name must match a registered LangChain tool.
Available built-in tools:
get_order_status-- look up order detailsget_tracking_info-- get shipping/tracking infocancel_order-- cancel an order (write)apply_discount-- apply a discount code (write)generate_coupon-- generate a new coupon (write)fallback_respond-- generic fallback response
personality (optional)
Customizes agent behavior:
tone-- free-text description of the agent's communication stylegreeting-- opening message injected at session startescalation_message-- message sent when the agent escalates
Built-in Templates
Use TEMPLATE_NAME environment variable to load a pre-built agent configuration:
| Template | Filename | Description |
|---|---|---|
e-commerce |
templates/e-commerce.yaml |
Orders, shipping, discounts |
saas |
templates/saas.yaml |
Account management, billing, support |
fintech |
templates/fintech.yaml |
Financial services support |
Example:
TEMPLATE_NAME=e-commerce uvicorn app.main:app
Adding New Agents
- Add agent definition to
agents.yaml. - Register any new tools in
backend/app/agents/. - Restart the backend.
The supervisor will automatically route to the new agent when the user's intent matches the agent's description.
Agent Routing Logic
- User sends a message.
- The LLM supervisor classifies the intent against all agent descriptions.
- If unambiguous, the matching agent is invoked directly.
- If ambiguous (multiple plausible agents), the system asks a clarification question.
- If multi-intent, agents are invoked sequentially.
Escalation
Any agent can trigger escalation. This:
- Sends a webhook notification (if
WEBHOOK_URLis configured). - Marks the conversation with
resolution_type = escalated. - Sends the agent's
escalation_messageto the user.