Donnerstag, 11 Dezember 2025

Diese Woche am beliebtesten

Vertiefendes Material

Fertiger Assi Chat Bot

Chat Bot für Chat GPT mit Chat Historie via Session. Gibt Assi Deutsch aus. Einfach als zB. Assi-Chat.php abspeichern.

<?php
session_start();

// Dein API-Schlüssel von OpenAI
$apiKey = "DEIN_OPENAI_API_SCHLUESSEL";

// Falls es noch keine Chat-Historie gibt, initialisieren
if (!isset($_SESSION["chat_history"])) {
    $_SESSION["chat_history"] = [
        [
            "role" => "system",
            "content" => "Du bist ein Chatbot, der in Assi-Deutsch antwortet. Sprich locker, direkt, frech, mit Straßen-Slang, aber ohne beleidigend zu werden."
        ]
    ];
}

$responseText = "";

// Wenn Nachricht gesendet wurde
if (!empty($_POST["userMessage"])) {
    $userMessage = trim($_POST["userMessage"]);

    // Nachricht des Users speichern
    $_SESSION["chat_history"][] = [
        "role" => "user",
        "content" => $userMessage
    ];

    // Anfrage-Daten
    $data = [
        "model" => "gpt-4o-mini",
        "messages" => $_SESSION["chat_history"]
    ];

    // API-Anfrage
    $ch = curl_init("https://api.openai.com/v1/chat/completions");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Content-Type: application/json",
        "Authorization: " . "Bearer " . $apiKey
    ]);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

    $response = curl_exec($ch);
    if (curl_errno($ch)) {
        $responseText = "Fehler: " . curl_error($ch);
    } else {
        $result = json_decode($response, true);
        $responseText = $result["choices"][0]["message"]["content"];

        // Bot-Antwort auch in der Session speichern
        $_SESSION["chat_history"][] = [
            "role" => "assistant",
            "content" => $responseText
        ];
    }
    curl_close($ch);
}

// Chat leeren
if (isset($_POST["reset"])) {
    session_destroy();
    header("Location: " . $_SERVER["PHP_SELF"]);
    exit;
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>Assi-Chat mit ChatGPT</title>
    <style>
        body { font-family: Arial, sans-serif; max-width: 600px; margin: auto; background: #f4f4f4; padding: 20px; }
        h1 { text-align: center; }
        .chat-box { background: white; padding: 15px; border-radius: 8px; }
        .message { padding: 10px; margin-bottom: 10px; border-radius: 5px; }
        .user { background: #d0e6ff; }
        .assistant { background: #e2ffe2; }
        textarea { width: 100%; height: 80px; padding: 10px; border-radius: 5px; border: 1px solid #ccc; }
        button { padding: 10px 15px; border: none; background: #333; color: white; border-radius: 5px; cursor: pointer; }
        button:hover { background: #555; }
        .btn-reset { background: #a00; }
        .btn-reset:hover { background: #c00; }
    </style>
</head>
<body>

<h1>Assi-Chat mit ChatGPT</h1>

<div class="chat-box">
    <?php
    // Verlauf anzeigen (ohne system-Prompt)
    foreach ($_SESSION["chat_history"] as $msg) {
        if ($msg["role"] === "user") {
            echo '<div class="message user"><strong>Du:</strong> ' . nl2br(htmlspecialchars($msg["content"])) . '</div>';
        } elseif ($msg["role"] === "assistant") {
            echo '<div class="message assistant"><strong>Assi-Bot:</strong> ' . nl2br(htmlspecialchars($msg["content"])) . '</div>';
        }
    }
    ?>

    <form method="post">
        <textarea name="userMessage" placeholder="Schreib was..." required></textarea>
        <br><br>
        <button type="submit">Abschicken</button>
        <button type="submit" name="reset" class="btn-reset">Chat löschen</button>
    </form>
</div>

</body>
</html>

Funktionen in diesem Codeschnipsel

  • Komplette Chat-Historie bleibt erhalten, solange die Session aktiv ist
  • „Chat löschen“-Button setzt den Verlauf zurück
  • Slang/Assi-Deutsch ist durch den Systemprompt fest im Ton verankert
  • Benutzer- und Bot-Nachrichten werden farblich unterschieden

Vorheriges Tutorial
Nächstes Tutorial
Dreamcodes Redaktion
Dreamcodes Redaktion
Seit 1999 bewegt sich Dreamcodes in der Welt der digitalen Entwicklung, zwischen Codezeilen, Designentscheidungen und technischen Herausforderungen, die manchmal kleiner aussehen, als sie wirklich sind. Die Herausforderung besteht darin, komplexe Themen wie Webentwicklung, SEO, SEA, GEO, IT-Strukturen, Softwareentwicklung und moderne Technologien so aufzubereiten, dass sie verständlich, nachvollziehbar und vor allem praktisch nutzbar werden. Der Fokus liegt dabei darauf, Wissen nicht nur zu erklären, sondern es für reale Projekte anwendbar zu machen. Egal ob ein einfaches Script, ein umfangreicher Leitfaden oder ein tiefes technisches Tutorial: Das oberste Ziel dabei ist, dass Leser am Ende wirklich weiterkommen und ein Thema greifbarer wird als vorher. Über die Jahre gab es viele verschiedene Ansätze, Tools und Trends die kammen und auch wieder gingen. Genau das hilft neben Jahrelanger IT Erfahrung und mehrjähriger Tätigkeit im IT Bereich heute dabei, Inhalte mit Tiefe zu schreiben, die nicht nur Grundlagen vermitteln, sondern auch Hintergründe, Zusammenhänge und Best Practices erklären. Dreamcodes teilt diese Erfahrungen, mit dem Ziel, digitale Bildung für alle zugänglich zu machen, die neugierig sind, nach Lösungen suchen oder eigene digitale Projekte erfolgreich voranbringen möchten. Wenn dieses Wissen jemandem Zeit spart, ein Problem löst oder eine neue Idee auslöst, hat sich der Aufwand dahinter gelohnt. ;)

Vielleicht einen Blick wert