Learn ARC ADL in 15 Minutes
ADL (Agent Definition Language) gives you a structured way to define how an agent behaves—without needing to master prompt engineering.
Instead of writing complex prompts, you create use cases: clear, reusable definitions of customer scenarios and how the agent should respond.
1. ADL Basics
Each use case follows the same structure:
- UseCase Name → short, unique id (lowercase, underscores).
- Description → explain the customer’s situation or query.
- Steps (optional) → instructions the agent should follow before giving a solution.
- Solution → the main resolution the agent provides.
- Alternative Solution (optional) → backup if the main solution doesn’t work.
- Fallback Solution (optional) → safety net if all else fails (avoids loops).
- Examples (optional) → customer queries that trigger this use case.
2. Quick Example
### UseCase: password_reset
#### Description
Customer has forgotten their password and needs to reset it.
#### Steps
- Ask for the registered email address.
- Send a password reset link.
#### Solution
Guide the customer through the password reset process at https://www.example.com/reset-password.
#### Fallback Solution
If the customer cannot access email, escalate to higher-tier support.
#### Examples
- I forgot my password
3. Guidelines
- Be consistent: always refer to the person as “customer” (not “user”).
- Add examples only if needed (when the agent struggles to classify).
- Always define a fallback solution to prevent loops.
4. Conditionals
Conditionals let you change responses based on context.
Syntax: <condition1, condition2>
### UseCase: password_reset
#### Solution
<isBusinessCustomer>Provide https://www.example.com/business/reset-password.
Provide https://www.example.com/reset-password.<isPrivateCustomer>
-
Engineers pass conditions into the system:
useCases("use_cases.md", conditions = setOf("isBusinessCustomer"))
-
Only the matching line is shown to the agent.
5. Tool Calls
Agents can call tools or functions inline.
- Syntax:
@tool_name()
- Add
!
to enforce execution:@tool_name()!
### UseCase: password_reset
#### Solution
Call @password_reset_link()! to generate a reset link.
Provide the link and guide the customer through the process.
Benefits:
- Dynamically loads tools.
- Validates availability.
- Ensures execution.
6. Use Case References
Use cases can reference others with #use_case_id
:
### UseCase: password_reset
#### Solution
Call @password_reset_link() to obtain a link.
If the customer is a business customer, follow #business_customer_support.
This keeps logic modular and reusable.
✅ Summary: Learn ADL in 15 Minutes
- Write a Use Case with description, steps, and solutions.
- Add conditionals for personalization.
- Use tool calls for dynamic actions.
- Reference other use cases for modularity.
- Test → iterate → deploy.
👉 With ADL, defining agent behavior is as structured and predictable as writing a product spec—simple enough for business teams, powerful enough for engineers.