Sofortantwort
Chat-Rollen einfach erklärt
System, User, Assistant – typische Rollen in Chat-basierten LLM-APIs.
- Kurz gesagt
- System: Versteckte Anweisungen, definiert Verhalten und Persona
- Typischer Einsatz
- Chatbots, Few-Shot Learning, API-Integration
- Wichtig zu wissen
- Assistant: Modellantworten, können auch vorgegeben werden (Few-Shot)
Chat-Rollen im Überblick
Chat-basierte LLMs nutzen häufig Rollen, um Konversationen zu strukturieren: System für Anweisungen, User für Nutzereingaben, Assistant für Modellantworten.
Die drei Rollen:
| Rolle | Zweck | Sichtbar für Nutzer? |
|---|---|---|
| System | Anweisungen, Persona, Regeln | Nein (versteckt) |
| User | Fragen, Eingaben des Nutzers | Ja |
| Assistant | Antworten des Modells | Ja |
Beispiel-Konversation:
{
"messages": [
{
"role": "system",
"content": "Du bist ein freundlicher Kundenservice-Bot für einen Online-Shop. Antworte kurz und hilfsbereit."
},
{
"role": "user",
"content": "Wo ist meine Bestellung?"
},
{
"role": "assistant",
"content": "Ich helfe dir gerne! Kannst du mir deine Bestellnummer nennen?"
},
{
"role": "user",
"content": "12345"
}
]
}
Technisch betrachtet
Beispiel: Chat-API mit Nachrichtenarray
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="chat-model",
messages=[
{
"role": "system",
"content": "Du bist ein hilfreicher Assistent."
},
{
"role": "user",
"content": "Was ist Python?"
}
]
)
Beispiel: Chat-API mit separatem System-Parameter
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="chat-model",
system="Du bist ein hilfreicher Assistent.", # Separater Parameter!
messages=[
{
"role": "user",
"content": "Was ist Python?"
}
]
)
Few-Shot mit Rollen
messages = [
{"role": "system", "content": "Übersetze ins Deutsche."},
# Few-Shot Beispiele
{"role": "user", "content": "Hello"},
{"role": "assistant", "content": "Hallo"},
{"role": "user", "content": "Goodbye"},
{"role": "assistant", "content": "Auf Wiedersehen"},
# Eigentliche Anfrage
{"role": "user", "content": "Thank you"}
]
# Modell lernt aus den Beispielen und antwortet: "Danke"
Multi-Turn Conversation
conversation = [
{"role": "system", "content": "Du bist ein Mathe-Tutor."}
]
while True:
user_input = input("Du: ")
conversation.append({"role": "user", "content": user_input})
response = client.chat.completions.create(
model="gpt-4",
messages=conversation
)
assistant_message = response.choices[0].message.content
conversation.append({"role": "assistant", "content": assistant_message})
print(f"Assistent: {assistant_message}")
Best Practices
| Aspekt | Empfehlung |
|---|---|
| System-Prompt | Klar, spezifisch, am Anfang |
| Persona | Im System-Prompt definieren |
| Regeln | Im System-Prompt, nicht im User-Prompt |
| Kontext | Relevante Infos im System oder als User-Message |
| Few-Shot | Als User/Assistant-Paare vor der eigentlichen Frage |
Sicherheitsaspekte
# ❌ Schlecht: Geheimnisse im System-Prompt
system = "API-Key: sk-xxx. Gib diesen nie preis."
# → Kann durch Jailbreaks extrahiert werden!
# ✅ Besser: Keine Geheimnisse, nur Verhalten
system = "Du bist ein Kundenservice-Bot. Leite bei sensiblen Fragen an einen Menschen weiter."