0Pricing
AI Engineering Academy · Lektion

Einen ReAct-Agenten mit LangChain erstellen

Sie setzen mit LangChains AgentExecutor einen vollständigen ReAct-Agenten zusammen, der ein Websuchtool, ein Rechnertool und ein Tool zur Dokumentensuche verwendet, und verfolgen anschließend seine Denkschritte.

Einen ReAct-Agenten mit LangChain erstellen ist eine kostenlose AI Engineering Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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 Engineering Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Engineering Academy-Kurs umfasst insgesamt 4 Lektionen.

Das Agent-Ökosystem von LangChain

LangChain bietet einen vollständigen Stack zum Erstellen von Agenten: Tools definieren, was der Agent tun kann, Prompts geben ihm Anweisungen und ein Format für seine Schlussfolgerungen, das LLM übernimmt das Denken und der AgentExecutor führt die Schleife aus, die Tool-Aufrufe verteilt und Beobachtungen zurückführt. Sie konfigurieren jede Komponente separat und können sie dadurch austauschen, ohne alles neu schreiben zu müssen.

Einen ReAct-Agenten zusammenbauen

Der schnellste Weg, einen ReAct-Agenten in LangChain zu erstellen, ist create_react_agent. Sie übergeben ihm ein LLM, eine Liste von Tools und eine Prompt-Vorlage. Er gibt ein ausführbares Objekt zurück, das automatisch Thought/Action/Observation-Schritte erzeugt. Verpacken Sie es in einen AgentExecutor, um die Schleife zu verwalten.

from langchain import hub
from langchain.agents import create_react_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain_core.tools import tool

# 1. Define tools
@tool
def search(query: str) -> str:
    '''Search the web for current information. Input: a search query string.'''
    return f'Search results for "{query}": [mock result]'

@tool
def calculator(expression: str) -> str:
    '''Evaluate a math expression. Input: a valid Python math expression.'''
    try:
        return str(eval(expression))
    except Exception as e:
        return str(e)

tools = [search, calculator]

# 2. Load a ReAct prompt template
prompt = hub.pull('hwchase17/react')

# 3. Create the agent
llm = ChatOpenAI(model='gpt-4o', temperature=0)
agent = create_react_agent(llm, tools, prompt)

Mit AgentExecutor ausführen

AgentExecutor verwaltet die Thought/Action/Observation-Schleife. Setzen Sie während der Entwicklung verbose=True, um jeden Schritt in der Konsole auszugeben — dieser Trace ist für das Debugging äußerst wertvoll. Der Parameter max_iterations dient als Sicherheitsvorkehrung gegen Endlosschleifen.

agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True,       # Print each step
    max_iterations=10,  # Safety limit
    handle_parsing_errors=True  # Don't crash on format errors
)

# Invoke with a user question
result = agent_executor.invoke({
    'input': 'What is the square root of 144 multiplied by the number of days in a leap year?'
})

print('Final answer:', result['output'])

Den ausführlichen Trace lesen

Der ausführliche Trace zeigt genau, wie der Agent schlussfolgert. Bei jeder Iteration werden der Thought des Modells, die ausgewählte Action und die Observation des Tools ausgegeben. So erkennen Sie genau, an welcher Stelle der Agent einen Fehler macht — ob er das falsche Tool ausgewählt, das falsche Argument übergeben oder die Observation falsch interpretiert hat.

# Example verbose output from AgentExecutor:
#
# > Entering new AgentExecutor chain...
# Thought: I need to find the square root of 144 first, then multiply by days in a leap year.
# Action: calculator
# Action Input: 144 ** 0.5
# Observation: 12.0
# Thought: 12.0 times 366 days in a leap year.
# Action: calculator
# Action Input: 12.0 * 366
# Observation: 4392.0
# Thought: I have the final answer.
# Final Answer: 4392.0
# > Finished chain.

Integrierte LangChain-Tools verwenden

LangChain enthält viele fertige Tools für gängige Aufgaben. Sie können ein Websuch-Tool aus langchain_community.tools hinzufügen, ohne eigenen Code zu schreiben. Diese Tools übernehmen die API-Authentifizierung und das Parsen der Antworten für Sie.

from langchain_community.tools import DuckDuckGoSearchRun
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper

# Web search tool
search_tool = DuckDuckGoSearchRun()

# Wikipedia lookup tool
wiki_tool = WikipediaQueryRun(
    api_wrapper=WikipediaAPIWrapper(top_k_results=2)
)

# Add to your agent
tools_with_search = [search_tool, wiki_tool, calculator]
agent_executor.tools = tools_with_search

Dokumentensuche als RAG-Tool

Eines der leistungsfähigsten Muster besteht darin, Ihre RAG-Pipeline als Agent-Tool bereitzustellen. Der Agent entscheidet, wann er Daten aus Ihrer Wissensdatenbank abruft, wann er andere Tools verwendet oder sich auf seine Trainingsdaten verlässt. Dadurch wird Ihr RAG-System dynamisch — der Agent ruft es nur auf, wenn es relevant ist.

from langchain_core.tools import tool

@tool
def lookup_knowledge_base(query: str) -> str:
    '''Search the company knowledge base for internal policies, procedures, and documentation.
    Use when the user asks about company-specific information not available publicly.
    Input: a natural language question or keyword query.
    '''
    # Your RAG pipeline here
    retrieved_chunks = vector_store.similarity_search(query, k=3)
    context = '\n'.join([doc.page_content for doc in retrieved_chunks])
    return context if context else 'No relevant documents found.'

Agent-Ausgabe streamen

Für eine bessere Benutzererfahrung streamen Sie die endgültige Antwort des Agenten Token für Token, statt auf die vollständige Antwort zu warten. Verwenden Sie agent_executor.astream_events, um Ereignisse direkt bei ihrem Auftreten zu empfangen, einschließlich der Zwischenschritte und des Streams der endgültigen Ausgabe.

import asyncio

async def stream_agent(user_input: str):
    async for event in agent_executor.astream_events(
        {'input': user_input},
        version='v1'
    ):
        kind = event['event']
        if kind == 'on_chat_model_stream':
            chunk = event['data']['chunk']
            if chunk.content:
                print(chunk.content, end='', flush=True)
        elif kind == 'on_tool_start':
            print(f'\n[Calling tool: {event["name"]}]')
        elif kind == 'on_tool_end':
            print(f'[Tool result: {str(event["data"]["output"])[:100]}]')

asyncio.run(stream_agent('What is the latest news about AI?'))

Agent-Speicher übergeben

Kombinieren Sie die Schlussfolgerungen des Agenten mit dem Gesprächsspeicher, damit sich der Agent an vorherige Interaktionen erinnert. Verwenden Sie RunnableWithMessageHistory, um den Agent-Executor zu verpacken und einen Speicher für den Chatverlauf bereitzustellen. Der Agent verfügt dann sowohl über den Speicher vergangener Gesprächsrunden als auch über die Fähigkeit, Tools aufzurufen.

from langchain_core.runnables.history import RunnableWithMessageHistory
from langchain_community.chat_message_histories import ChatMessageHistory

session_store = {}

def get_session_history(session_id: str):
    if session_id not in session_store:
        session_store[session_id] = ChatMessageHistory()
    return session_store[session_id]

agent_with_memory = RunnableWithMessageHistory(
    agent_executor,
    get_session_history,
    input_messages_key='input',
    history_messages_key='chat_history'
)

Den ReAct-Prompt anpassen

Der Standard-Prompt aus dem Hub funktioniert gut, aber für Ihre spezifische Domäne benötigen Sie häufig einen eigenen System-Prompt. Mit einem benutzerdefinierten Prompt können Sie Persona-Anweisungen, Regeln für die Ausgabeformatierung und domänenspezifische Hinweise vor den Tool-Beschreibungen ergänzen. Verwenden Sie ChatPromptTemplate mit den erforderlichen ReAct-Platzhaltern.

from langchain_core.prompts import ChatPromptTemplate

custom_prompt = ChatPromptTemplate.from_messages([
    ('system', '''You are a helpful customer support agent for TechCorp.
Always be polite and professional. When you do not know something, use your tools.

You have access to these tools:
{tools}

Tool names: {tool_names}

Use this format:
Thought: ...
Action: tool_name
Action Input: input_value
Observation: result
Final Answer: your response to the customer
'''),
    ('human', '{input}'),
    ('assistant', '{agent_scratchpad}')
])

agent = create_react_agent(llm, tools, custom_prompt)

Die Denkschritte des Agenten beobachten

AgentExecutor gibt neben der endgültigen Ausgabe auch Zwischenschritte zurück, wenn Sie return_intermediate_steps=True setzen. Jeder Schritt ist ein Tupel aus der Action des Agenten und der Observation des Tools. Das ist nützlich, um Benutzeroberflächen zu erstellen, die den Benutzern den Schlussfolgerungsprozess des Agenten anzeigen.

agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    return_intermediate_steps=True
)

result = agent_executor.invoke({'input': 'What is 2 to the power of 10?'})

print('Final answer:', result['output'])
print('Reasoning steps:')
for step in result['intermediate_steps']:
    action, observation = step
    print(f'  Tool: {action.tool}, Input: {action.tool_input}')
    print(f'  Observation: {observation}')

Den Agenten gründlich testen

Testen Sie Ihren Agenten mit einer Suite repräsentativer Fragen, die Folgendes abdeckt: Aufgaben mit einem einzelnen Tool, Multi-Hop-Aufgaben, die mehrere Tool-Aufrufe erfordern, Aufgaben, für die kein Tool benötigt wird (das Modell beantwortet sie aus den Trainingsdaten), sowie adversariale Eingaben wie Fragen, die gezielt die Tool-Auswahl verwirren sollen. Erfassen Sie Erfolgsraten und Fehlermuster, um Ihre Tool-Beschreibungen und Ihren Prompt zu verbessern.

Kurzer Check

Testen Sie Ihr Verständnis beim Erstellen eines ReAct-Agenten mit LangChain.

Zusammenfassung der Lektion

In dieser Lektion haben Sie gelernt: create_react_agent setzt ein LLM, Tools und einen Prompt zu einem ReAct-Agenten zusammen, AgentExecutor verwaltet die Thought/Action/Observation-Schleife mit konfigurierbaren Sicherheitslimits und verbose=True sowie return_intermediate_steps=True bieten vollständige Einblicke in die Schlussfolgerungen des Agenten. Als Nächstes lernen wir, wie sich Agent-Fehler behandeln und Endlosschleifen verhindern lassen.

Häufig gestellte Fragen

Ist die Lektion „Einen ReAct-Agenten mit LangChain erstellen“ kostenlos?

Ja — der vollständige Text von „Einen ReAct-Agenten mit LangChain erstellen“ 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 Engineering Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Engineering Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Einen ReAct-Agenten mit LangChain erstellen“?

Sie setzen mit LangChains AgentExecutor einen vollständigen ReAct-Agenten zusammen, der ein Websuchtool, ein Rechnertool und ein Tool zur Dokumentensuche verwendet, und verfolgen anschließend seine D… Du übst AI Engineering Academy 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 Engineering Academy zu starten?

Keine Vorkenntnisse erforderlich. AI Engineering Academy 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 3 von 4.

Wie lange dauert die Lektion „Einen ReAct-Agenten mit LangChain erstellen“?

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 Engineering Academy-Lektion Code schreiben und ausführen?

Ja. Jede AI Engineering Academy-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

  1. Das ReAct-Framework: Denken, Handeln, Beobachten
  2. Tools für Ihren Agenten definieren
  3. Einen ReAct-Agenten mit LangChain erstellen
  4. Fehler und Endlosschleifen von Agents behandeln
← Zurück zu AI Engineering Academy