Signals

djangosdk fires Django signals at key points in the agent lifecycle. Connect to them for logging, metrics, billing, alerting, or custom side effects.

Available Signals

agent_started

Fired when an agent begins processing a request.

kwargs: agent, prompt, model, provider

from django.dispatch import receiver
from djangosdk.signals import agent_started

@receiver(agent_started)
def on_agent_started(sender, agent, prompt, model, provider, **kwargs):
    print(f"[{provider}/{model}] Starting: {prompt[:50]}")

agent_completed

Fired when an agent successfully completes a request.

kwargs: agent, response, model, provider

from djangosdk.signals import agent_completed

@receiver(agent_completed)
def on_agent_completed(sender, agent, response, model, provider, **kwargs):
    print(f"Completed. Tokens used: {response.usage.total_tokens}")

agent_failed

Fired when an agent raises an exception.

kwargs: agent, exception, model, provider

agent_failed_over

Fired when the failover mechanism switches providers.

kwargs: agent, from_provider, to_provider, reason

cache_hit

Fired when a prompt cache hit occurs.

kwargs: agent, cache_read_tokens

cache_miss

Fired when no cache hit occurs.

kwargs: agent

Connecting Signals in AppConfig

The recommended place to connect signals is in your app's AppConfig.ready():

Example: Usage Tracking

Last updated

Was this helpful?