ReAct von Grund auf implementieren
Schreiben Sie eine 100-zeilige Python-Implementierung ohne LangChain: Parsen Sie Action-Zeilen, führen Sie Tools aus und wiederholen Sie dies bis zur Final Answer.
ReAct von Grund auf implementieren ist eine kostenlose AI Agents-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Agents-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Erstellen Sie die Schleife selbst
Sie können ReAct in etwa 100 Zeilen Python schreiben – ganz ohne Framework. Wenn Sie das einmal selbst tun, entwickeln Sie ein besseres Verständnis dafür, was Frameworks abstrahieren.
Step 1: Define Tools
import json, math
def calculator(expression: str) -> str:
try:
return str(eval(expression, {'__builtins__': {}}, vars(math)))
except Exception as e:
return f'Error: {e}'
def search_wikipedia(query: str) -> str:
# placeholder — call a real search API
return f'Wikipedia summary for: {query}'
TOOLS = {
'calculator': calculator,
'search_wikipedia': search_wikipedia,
}
print(calculator('2 + 2 * sqrt(16)'))
print(search_wikipedia('agents'))
Step 2: Tool Schemas
schemas = [
{'type': 'function', 'function': {
'name': 'calculator',
'description': 'Evaluate a math expression like 2 + 2 * sqrt(16)',
'parameters': {'type': 'object', 'properties': {'expression': {'type': 'string'}}, 'required': ['expression']}
}},
{'type': 'function', 'function': {
'name': 'search_wikipedia',
'description': 'Search Wikipedia and return a summary',
'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}
}}
]
import json
print(json.dumps(schemas, indent=2))
Step 3: System Prompt
system = '''
You are a research assistant. Use the available tools when needed.
Think step by step. If you have enough information, give a final answer.
'''
print(system.strip())
Step 4: The Loop
from openai import OpenAI
client = OpenAI()
def react(question, max_steps=10):
messages = [
{'role': 'system', 'content': system},
{'role': 'user', 'content': question}
]
for step in range(max_steps):
r = client.chat.completions.create(
model='gpt-4o-mini',
messages=messages,
tools=schemas,
)
msg = r.choices[0].message
messages.append(msg)
if not msg.tool_calls:
return msg.content
for tc in msg.tool_calls:
args = json.loads(tc.function.arguments)
try:
result = TOOLS[tc.function.name](**args)
except Exception as e:
result = f'Tool error: {e}'
messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': str(result)})
return 'Step limit reached.'Step 5: Run It
answer = react('What is the population of Tokyo times the square root of pi?')
print(answer)Schritt 6: Logging hinzufügen
Protokollieren Sie jeden Schritt für das Debugging:
def react_verbose(question, max_steps=10):
messages = [...]
for step in range(max_steps):
r = client.chat.completions.create(model='gpt-4o-mini', messages=messages, tools=schemas)
msg = r.choices[0].message
print(f'[step {step}] thought: {msg.content}')
if msg.tool_calls:
for tc in msg.tool_calls:
print(f'[step {step}] action: {tc.function.name}({tc.function.arguments})')
...Schritt 7: Schrittzähler als Tool
Manche Agenten nehmen die Schrittzahl in den System-Prompt auf, damit das Modell weiß, wann es zu einem Ergebnis kommen soll:
system = f'You have at most {MAX_STEPS} steps. Step {current_step}/{MAX_STEPS}. ...'Schritt 8: Format der finalen Antwort
Wenn Sie eine strukturierte Ausgabe wünschen, erzwingen Sie einen abschließenden Tool-Aufruf:
tools.append({'type': 'function', 'function': {
'name': 'final_answer',
'description': 'Submit the final answer to the user.',
'parameters': {'type': 'object', 'properties': {'answer': {'type': 'string'}}, 'required': ['answer']}
}})
# Loop terminates when final_answer is called.Schritt 9: Tool-Fehler
Geben Sie Fehler immer als Tool-Ergebnisse zurück, damit sich der Agent davon erholen kann:
try:
result = TOOLS[name](**args)
except Exception as e:
result = f'TOOL ERROR: {type(e).__name__}: {e}'
# Model sees the error and can try a different approach.Schritt 10: Parallele Tool-Aufrufe
Wenn msg.tool_calls mehrere Einträge enthält, führen Sie sie parallel aus:
import asyncio
async def run_tools(tool_calls):
async def run_one(tc):
args = json.loads(tc.function.arguments)
return tc.id, TOOLS[tc.function.name](**args)
return await asyncio.gather(*[run_one(tc) for tc in tool_calls])Schritt 11: Unterhaltung begrenzen
Selbst innerhalb von MAX_STEPS können Nachrichtenlisten stark anwachsen. Kürzen Sie sie zwischen den Durchläufen anhand der Token-Anzahl:
if total_tokens(messages) > 6000:
messages = trim_messages(messages)Schritt 12: Für den Produktionseinsatz härten
Für den Produktionseinsatz sollten Sie Folgendes hinzufügen: Timeouts für Tool-Aufrufe, Quoten pro Tool, Wiederholungsversuche mit Backoff bei API-Fehlern und vollständige Trace-Protokollierung. Die obige Schleife ist jedoch Ihr Grundgerüst.
Behandlung von Tool-Fehlern
Was sollten Sie tun, wenn ein Tool eine Ausnahme auslöst?
Zusammenfassung
ReAct in etwa 80 Zeilen: Nachrichtenliste + While-Schleife + Dispatch-Tabelle. Frameworks sorgen für zusätzlichen Komfort, aber der Kern besteht daraus.
Häufig gestellte Fragen
Ist die Lektion „ReAct von Grund auf implementieren“ kostenlos?
Ja — der vollständige Text von „ReAct von Grund auf implementieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Agents-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Agents-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „ReAct von Grund auf implementieren“?
Schreiben Sie eine 100-zeilige Python-Implementierung ohne LangChain: Parsen Sie Action-Zeilen, führen Sie Tools aus und wiederholen Sie dies bis zur Final Answer. Du übst AI Agents mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Agents zu starten?
Keine Vorkenntnisse erforderlich. AI Agents auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „ReAct von Grund auf implementieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Agents-Lektion Code schreiben und ausführen?
Ja. Jede AI Agents-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- ReAct: Muster aus Schlussfolgern und Handeln
- ReAct von Grund auf implementieren
- Gängige Tool-Sets (Web, Taschenrechner, RAG)
- Tool-Fehler erkennen und beheben