Skip to main content

@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