@capability Decorator
The @capability decorator bundles related workflows, decisions, and tools into reusable units. Capabilities promote code reuse and consistent patterns across agents.
Basic Usage
from waxell_sdk import capability, workflow, decision
@capability(
name="email-support",
description="Email handling capabilities"
)
class EmailSupport:
@workflow
def handle_email(self, ctx):
intent = ctx.call(self.classify_email)
response = ctx.call(self.generate_response, intent=intent)
return ctx.call(self.send_response, response=response)
@decision
def classify_email(self, ctx):
return ctx.llm.classify(
ctx.input.email_body,
categories=["inquiry", "complaint", "feedback"]
)
@decision
def generate_response(self, ctx, intent: str):
return ctx.llm.generate(
prompt=f"Generate {intent} response for: {ctx.input.email_body}"
)
Using Capabilities
Capabilities are composed into agents:
from waxell_sdk import agent
@agent(
name="support-agent",
capabilities=[EmailSupport, ChatSupport, TicketSupport]
)
class SupportAgent:
pass
Capability Inheritance
Capabilities can extend other capabilities:
@capability(name="premium-email-support", extends=EmailSupport)
class PremiumEmailSupport:
@decision
def generate_response(self, ctx, intent: str):
# Override with premium response generation
return ctx.llm.generate(
prompt=f"Generate premium {intent} response",
model="gpt-4"
)
Next Steps
- Architecture Guide - Understand the full system
- Best Practices - Capability design patterns