ChatGPT API in Django Integrieren: Praktischer Leitfaden

  • 01 Jan 2026
  • CODLAB Team
  • 4 min
  • 650

Warum ChatGPT Integrieren

Die OpenAI APIs ermöglichen es, künstliche Intelligenz zu Ihren Anwendungen hinzuzufügen: Chatbots, Content-Generierung, Textanalyse und vieles mehr.

1. Erste Einrichtung

pip install openai python-dotenv

Konfiguration settings.py

import os
from dotenv import load_dotenv

load_dotenv()

OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
OPENAI_MODEL = 'gpt-4-turbo-preview'  # oder gpt-3.5-turbo für geringere Kosten

2. OpenAI Service

# services/openai_service.py
from openai import OpenAI
from django.conf import settings

class OpenAIService:
    def __init__(self):
        self.client = OpenAI(api_key=settings.OPENAI_API_KEY)
        self.model = settings.OPENAI_MODEL

    def chat(self, messages, temperature=0.7, max_tokens=1000):
        """Basis-API-Aufruf"""
        response = self.client.chat.completions.create(
            model=self.model,
            messages=messages,
            temperature=temperature,
            max_tokens=max_tokens
        )
        return response.choices[0].message.content

    def chat_stream(self, messages, temperature=0.7):
        """Streaming-Antwort"""
        stream = self.client.chat.completions.create(
            model=self.model,
            messages=messages,
            temperature=temperature,
            stream=True
        )
        for chunk in stream:
            if chunk.choices[0].delta.content:
                yield chunk.choices[0].delta.content

    def generate_with_system_prompt(self, system_prompt, user_message):
        """Chat mit System-Prompt"""
        messages = [
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": user_message}
        ]
        return self.chat(messages)

openai_service = OpenAIService()

3. View für Chat-API

# views.py
from django.http import StreamingHttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_POST
import json
from .services.openai_service import openai_service

@csrf_exempt
@require_POST
def chat_api(request):
    """API-Endpunkt für Chat"""
    data = json.loads(request.body)
    messages = data.get('messages', [])

    try:
        response = openai_service.chat(messages)
        return JsonResponse({'response': response})
    except Exception as e:
        return JsonResponse({'error': str(e)}, status=500)

@csrf_exempt
@require_POST
def chat_stream_api(request):
    """Streaming-API-Endpunkt"""
    data = json.loads(request.body)
    messages = data.get('messages', [])

    def generate():
        try:
            for chunk in openai_service.chat_stream(messages):
                yield f"data: {json.dumps({'content': chunk})}\n\n"
            yield "data: [DONE]\n\n"
        except Exception as e:
            yield f"data: {json.dumps({'error': str(e)})}\n\n"

    return StreamingHttpResponse(
        generate(),
        content_type='text/event-stream'
    )

4. Konversationsverwaltung mit Kontext

# models.py
from django.db import models

class Conversation(models.Model):
    user = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    system_prompt = models.TextField(default="Du bist ein hilfreicher Assistent.")

class Message(models.Model):
    conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE)
    role = models.CharField(max_length=20)  # user, assistant, system
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    tokens_used = models.IntegerField(default=0)

    class Meta:
        ordering = ['created_at']

# services/conversation_service.py
class ConversationService:
    def __init__(self, conversation):
        self.conversation = conversation
        self.openai = openai_service

    def get_messages_for_api(self, limit=20):
        """Bereitet Nachrichten für API mit Kontext vor"""
        messages = [
            {"role": "system", "content": self.conversation.system_prompt}
        ]

        # Letzte N Nachrichten für Kontext
        recent = self.conversation.message_set.all()[:limit]
        for msg in recent:
            messages.append({
                "role": msg.role,
                "content": msg.content
            })

        return messages

    def send_message(self, user_message):
        """Sendet Nachricht und erhält Antwort"""
        # Benutzernachricht speichern
        Message.objects.create(
            conversation=self.conversation,
            role='user',
            content=user_message
        )

        # Kontext vorbereiten und API aufrufen
        messages = self.get_messages_for_api()
        response = self.openai.chat(messages)

        # Antwort speichern
        Message.objects.create(
            conversation=self.conversation,
            role='assistant',
            content=response
        )

        return response

5. Prompt Engineering

# prompts.py

BLOG_WRITER_PROMPT = """
Du bist ein erfahrener Copywriter und Blogger.
Schreibe SEO-freundliche, ansprechende und gut strukturierte Inhalte.
Verwende Zwischenüberschriften, Aufzählungen und kurze Absätze.
Füge praktische Beispiele ein, wenn möglich.
"""

CODE_REVIEWER_PROMPT = """
Du bist ein erfahrener Senior-Entwickler für Code-Reviews.
Analysiere den bereitgestellten Code und:
1. Identifiziere potenzielle Bugs
2. Schlage Performance-Verbesserungen vor
3. Überprüfe Best Practices
4. Kontrolliere die Sicherheit
Gib konstruktives und spezifisches Feedback.
"""

TRANSLATOR_PROMPT = """
Du bist ein professioneller Übersetzer.
Übersetze den Text unter Beibehaltung von:
- Originalem Ton und Stil
- Formatierung (HTML, Markdown)
- Angemessener technischer Terminologie
Übersetze keinen Code oder Eigennamen.
"""

def get_content_generator_prompt(topic, keywords):
    return f"""
Schreibe einen vollständigen Blog-Artikel über: {topic}

Einzuschließende Keywords: {', '.join(keywords)}

Erforderliche Struktur:
- Ansprechende Einleitung
- 3-5 Hauptabschnitte mit H2
- Praktische Beispiele mit Code wenn relevant
- Fazit mit Call-to-Action

Länge: 1500-2000 Wörter
Ton: professionell aber zugänglich
"""

6. Rate Limiting und Caching

from django.core.cache import cache
from functools import wraps
import hashlib
import time

def rate_limit(max_calls, period):
    """Decorator für Rate-Limiting"""
    def decorator(func):
        @wraps(func)
        def wrapper(request, *args, **kwargs):
            user_id = request.user.id if request.user.is_authenticated else 'anon'
            key = f"ratelimit:{func.__name__}:{user_id}"

            calls = cache.get(key, 0)
            if calls >= max_calls:
                return JsonResponse(
                    {'error': 'Rate-Limit überschritten'},
                    status=429
                )

            cache.set(key, calls + 1, period)
            return func(request, *args, **kwargs)
        return wrapper
    return decorator

def cache_ai_response(timeout=3600):
    """Cache Antworten basierend auf Eingabe"""
    def decorator(func):
        @wraps(func)
        def wrapper(messages, *args, **kwargs):
            # Hash des Inhalts erstellen
            content_hash = hashlib.md5(
                str(messages).encode()
            ).hexdigest()
            cache_key = f"ai_response:{content_hash}"

            # Im Cache suchen
            cached = cache.get(cache_key)
            if cached:
                return cached

            # Generieren und speichern
            response = func(messages, *args, **kwargs)
            cache.set(cache_key, response, timeout)
            return response
        return wrapper
    return decorator

Best Practices

  • Verwenden Sie immer Umgebungsvariablen für API-Schlüssel
  • Implementieren Sie Rate-Limiting pro Benutzer
  • Cachen Sie Antworten für identische Prompts
  • Überwachen Sie Kosten durch Token-Logging
  • Behandeln Sie API-Fehler mit Retry und Fallback

Fazit

Die Integration von ChatGPT in Django eröffnet unendliche Möglichkeiten. Mit den richtigen Sicherheits- und Optimierungspraktiken können Sie leistungsstarke und zuverlässige KI-Anwendungen erstellen.

Teilen Sie diesen Artikel

Kunden

Noch keine Kommentare. Seien Sie der Erste!

Einen Kommentar hinterlassen

Wird nicht veröffentlicht

Verwandte Artikel

Projekt im Kopf?

Wir entwickeln maßgeschneiderte Software und KI-Lösungen. Lassen Sie uns gemeinsam Ihr nächstes Projekt starten.

Kostenloses Erstgespräch