Dienstag, 26 August 2025

Top 5 diese Woche

Ähnliche Tutorials

KI Rechtsanwalt

Virtueller Rechtsanwalt Chat – professionelle Beratung auf Knopfdruck

Der virtuelle Dreamcodes Rechtsanwalt Chat ermöglicht es dir, rechtliche Fragen direkt an eine virtuelle Instanz zu stellen, die wie ein erfahrener Rechtsanwalt mit über 30 Jahren Berufserfahrung antwortet. Die Antworten sind ausführlich, strukturiert und enthalten Hinweise zu rechtlichen Grundlagen, Fristen sowie möglichen Risiken. Komplett kostenlos.

Funktionsweise

Der Chat speichert alle Fragen und Antworten chronologisch, sodass ein Überblick über die gesamte Sitzung möglich ist. Sobald du eine Frage eingibst, wird sie an die GPT-API gesendet, die die Antwort unter Berücksichtigung der Rolle des Rechtsanwalts generiert. Dabei werden rechtliche Best Practices, übliche Vorgehensweisen und wichtige Hinweise berücksichtigt, die du auch in einer echten Beratung erhalten würdest.

Vorteile

  • Professionelle Antworten: Jede Antwort ist ausführlich und basiert auf einer fiktiven Expertise eines erfahrenen Rechtsanwalts
  • Echtzeit Chat: Fragen werden sofort beantwortet, ähnlich einer Live-Sitzung
  • Fristen und Hinweise: Antworten enthalten Hinweise auf Fristen, notwendige Unterlagen und rechtliche Grundlagen
  • Chronologische Historie: Alle Fragen und Antworten werden gespeichert und übersichtlich angezeigt
  • Einfache Bedienung: Keine Anmeldung notwendig, Chat direkt über die Seite nutzbar

Nutzungshinweise

  1. Gib deine rechtliche Frage in das Textfeld ein.
  2. Klicke auf „Absenden“, um die Antwort des virtuellen Rechtsanwalts zu erhalten.
  3. Lies die ausführliche Antwort sorgfältig, einschließlich der Hinweise auf Fristen und rechtliche Grundlagen.
  4. Nutze die Chat-Historie, um frühere Antworten nachzuvollziehen.

Hinweis

Dieser Chat ersetzt keine professionelle Rechtsberatung. Die Antworten dienen lediglich als Orientierung. Für verbindliche rechtliche Entscheidungen solltest du weiterhin einen zugelassenen Rechtsanwalt konsultieren. Einfache Web-Oberfläche, sofort einsatzbereit.

<?php
define('DB_FILE', __DIR__ . '/legal_chat.sqlite');
define('OPENAI_API_KEY', 'DEIN_OPENAI_API_KEY_HIER');

// DB für Chat-Historie
$db = new SQLite3(DB_FILE);
$db->exec("CREATE TABLE IF NOT EXISTS messages (
    id INTEGER PRIMARY KEY,
    role TEXT,
    message TEXT,
    created_at INTEGER
)");

function jsonResponse($data,$code=200){
    http_response_code($code);
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($data);
    exit;
}

function escape($str){ return htmlspecialchars($str,ENT_QUOTES,'UTF-8'); }

function callGPT($userMessage){
    $prompt = "Du bist ein erfahrener Rechtsanwalt mit über 30 Jahren Berufserfahrung. Antworte ausführlich und strukturiert, gib Hinweise zu rechtlichen Grundlagen, Fristen und möglichen Risiken, wenn passend. Sage nicht, das du eine KI bist und halte dich für einen echten Rechtsanwalt.";
    $data = [
        'model' => 'gpt-4',
        'messages' => [
            ['role'=>'system','content'=>$prompt],
            ['role'=>'user','content'=>$userMessage]
        ],
        'max_tokens' => 600,
        'temperature' => 0.3
    ];

    $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 '.OPENAI_API_KEY
    ]);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    $result = curl_exec($ch);
    curl_close($ch);

    $resData = json_decode($result,true);
    return $resData['choices'][0]['message']['content'] ?? 'Fehler bei der Antwortgenerierung';
}

if($_SERVER['REQUEST_METHOD']==='POST' && isset($_GET['action']) && $_GET['action']==='send'){
    $msg = trim($_POST['message'] ?? '');
    if(!$msg) jsonResponse(['error'=>'Keine Nachricht eingegeben'],400);

    $stmt=$db->prepare('INSERT INTO messages (role,message,created_at) VALUES (:role,:message,:created_at)');
    $stmt->bindValue(':role','user',SQLITE3_TEXT);
    $stmt->bindValue(':message',$msg,SQLITE3_TEXT);
    $stmt->bindValue(':created_at',time(),SQLITE3_INTEGER);
    $stmt->execute();

    $reply = callGPT($msg);
    $stmt2=$db->prepare('INSERT INTO messages (role,message,created_at) VALUES (:role,:message,:created_at)');
    $stmt2->bindValue(':role','lawyer',SQLITE3_TEXT);
    $stmt2->bindValue(':message',$reply,SQLITE3_TEXT);
    $stmt2->bindValue(':created_at',time(),SQLITE3_INTEGER);
    $stmt2->execute();

    jsonResponse(['reply'=>$reply]);
}

if(isset($_GET['action']) && $_GET['action']==='history'){
    $res = $db->query('SELECT * FROM messages ORDER BY created_at ASC');
    $msgs=[];
    while($row=$res->fetchArray(SQLITE3_ASSOC)){
        $msgs[]=[
            'role'=>$row['role'],
            'message'=>escape($row['message']),
            'time'=>date('d.m.Y H:i',$row['created_at'])
        ];
    }
    jsonResponse($msgs);
}

?>
<!doctype html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Dreamcodes - Virtueller Rechtsanwalt Chat</title>
<style>
:root{--bg:#0f1724;--card:#0b1220;--accent:#7c3aed;--muted:#9aa4b2;--glass: rgba(255,255,255,0.03);}
body{font-family:Inter, sans-serif;background:linear-gradient(180deg,var(--bg),#071028);color:#e6eef8;margin:0;padding:40px;}
.container{max-width:900px;margin:0 auto}
.card{background:linear-gradient(180deg,var(--card),#071022);padding:28px;border-radius:16px;box-shadow:0 10px 30px rgba(2,6,23,0.7);margin-bottom:24px}
h1{font-size:24px;margin:0 0 8px}
.inputtext{background:transparent;border:1px solid rgba(255,255,255,0.04);padding:8px 10px;border-radius:8px;color:inherit;width:100%;margin-bottom:10px}
.btn{background:var(--accent);color:white;padding:10px 14px;border-radius:10px;border:none;cursor:pointer;font-weight:600}
.message{padding:12px;margin-bottom:12px;background:rgba(255,255,255,0.02);border-radius:10px}
.message.user{background:rgba(124,58,237,0.2)}
.message.lawyer{background:rgba(43,181,140,0.2)}
.message-meta{font-size:13px;color:var(--muted)}
footer{margin-top:18px;text-align:center;color:var(--muted);font-size:13px}
.thin{opacity:0.8}
</style>
</head>
<body>
<div class="container">
<div class="card">
<h1>Dreamcodes - Virtueller Rechtsanwalt Chat</h1>
<textarea id="userMsg" class="inputtext" placeholder="Schreibe deine Frage hier..."></textarea>
<button id="sendBtn" class="btn">Absenden</button>
<div id="error" style="color:#ffb4b4;margin-top:10px"></div>
</div>
<div id="chat"></div>
<footer><div class="thin">Powered by Dreamcodes.NET</div></footer>
</div>
<script>
async function fetchHistory(){
    const resp=await fetch('?action=history');
    const data=await resp.json();
    const chat=document.getElementById('chat');
    chat.innerHTML='';
    data.forEach(m=>{
        const div=document.createElement('div');
        div.className='card message '+m.role;
        div.innerHTML=`<div class='message-meta'>${m.role==='user'?'Du':'Rechtsanwalt'} - ${m.time}</div><p>${m.message}</p>`;
        chat.appendChild(div);
    });
    chat.scrollTop=chat.scrollHeight;
}

document.getElementById('sendBtn').addEventListener('click',async()=>{
    const msg=document.getElementById('userMsg').value;
    if(!msg) return;
    document.getElementById('error').textContent='';
    const fd=new FormData(); fd.append('message',msg);
    try{
        const resp=await fetch('?action=send',{method:'POST',body:fd});
        const data=await resp.json();
        if(data.error){ document.getElementById('error').textContent=data.error; return; }
        document.getElementById('userMsg').value='';
        fetchHistory();
    }catch(e){document.getElementById('error').textContent='Netzwerkfehler'}
});

fetchHistory();
</script>
</body>
</html>
Vorheriges Tutorial
Nächstes Tutorial

Hier etwas für dich dabei?