Asynchronous Cleaning
Asynchronous cleaning allows you to offload the time-consuming LLM API calls to a background worker. This ensures your application remains responsive.
Prerequisites
You must have Celery installed and configured in your Django project.
- Install Celery:
pip install celery - Configure Celery in your project (see Celery Django docs).
How to Use
Simply set use_async=True on your AICleanedField.
content = AICleanedField(
cleaning_prompt="...",
use_async=True
)
The ai_clean_model_instance Task
The library provides a shared task django_ai_validator.tasks.ai_clean_model_instance.
When use_async=True, this task is called with:
- app_label
- model_name
- instance_id
- field_name
- prompt_template
The task fetches the instance, calls the LLM, updates the field, and saves the instance.
Considerations
- Race Conditions: Be aware that the field will contain the "dirty" value until the task completes.
- Error Handling: If the task fails (e.g., API error), the field will remain dirty. You should monitor your Celery worker logs.