Django Polly enhances Django with Language Learning Model (LLM) capabilities, enabling AI-powered conversations, task automation, and other intelligent features in your Django projects. It uses familiar Django patterns and provides a flexible framework for customizing AI behaviors and supporting various LLM backends.
- LLM Management: Create and configure LLM instances (parrots)
- SmartConversations: Engage in AI-powered conversations
- WebSocket Support: Real-time communication for chat interfaces
- Admin Interface: Easily manage parrots and conversations
- Extensible: Designed to work with various LLM backends
To interact with Parrots in real-time using the built-in Chat UI, navigate to:
https://[hostname:port]/polly/smart-gpt-chat/<int:conversation_id>
Replace [hostname:port]
with your server's hostname and port, and <int:conversation_id>
with the ID of the conversation you want to interact with.
For full documentation, visit: https://django-polly.readthedocs.io
Install django-polly and its dependencies:
pip install django-polly
Add "django_polly" and its dependencies to your INSTALLED_APPS setting in settings.py:
INSTALLED_APPS = [ 'daphne', # Add this before all django apps 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django_polly', # Add this after all django apps 'rest_framework', # Required for API views 'django_json_widget', # Required for JSON widget in admin (optional) # ... your other apps ... ]
Configure ASGI in your project's asgi.py:
import os from django.core.asgi import get_asgi_application from channels.routing import ProtocolTypeRouter from django_polly.routing import polly_asgi_routes os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings') # Get the Django ASGI application django_asgi_app = get_asgi_application() # Use the Django ASGI application for HTTP requests polly_asgi_routes["http"] = django_asgi_app # Create the final ASGI application application = ProtocolTypeRouter(polly_asgi_routes)
Update your settings.py with the following:
# Add this to specify the ASGI application ASGI_APPLICATION = 'your_project.asgi.application' WSGI_APPLICATION = 'your_project.wsgi.application' # Add this for daphne CHANNEL_LAYERS = { 'default': { 'BACKEND': 'channels.layers.InMemoryChannelLayer' } } AI_MODELS_PATH = BASE_DIR / 'ai_models' # Add this to specify the path to store AI models
Include the django-polly URLconf in your project urls.py:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('polly/', include('django_polly.urls')), # ... other URL patterns ... ]
Run migrations:
python manage.py migrate
Download an AI model (example using Qwen2):
python manage.py download_model "Qwen2-500M-Instruct-Q8_0.gguf" "https://huggingface.co/lmstudio-community/Qwen2-500M-Instruct-GGUF/resolve/main/Qwen2-500M-Instruct-Q8_0.gguf"
Start the development server:
python manage.py runserver
Visit http://127.0.0.1:8000/admin/ to create parrots and http://127.0.0.1:8000/polly/ to use django-polly.
Django Polly supports Python 3.8 and up, and is compatible with Django 4.2 and 5.0.
We welcome contributions! To learn more about contributing, please read our contributing docs.
If you're having issues, please let us know by opening an issue on our GitHub repository.
For larger discussions, join our mailing list.
The project is licensed under the AGPL-3.0 license.