kurz
ReAct (Reasoning and Acting) ist ein Rahmenwerk, das logisches Denken und Handeln kombiniert, um die Leistung von Intelligenzen bei komplexen Aufgaben zu verbessern. Der Rahmen ermöglicht es Intelligenzen, Aufgaben in dynamischen Umgebungen effektiver auszuführen, indem logisches Denken und praktisches Handeln eng miteinander verbunden werden.
Quelle:ReAct: Reasoning und Action arbeiten in einem großen Sprachmodell zusammen
In diesem Dokument wird beschrieben, wie Sie die ReAct Der Rahmen ist in Ollama Der lokale Agent (Agent) ist in Ollama implementiert. Durch die Kombination der Leistungsfähigkeit von Ollama mit der Flexibilität von ReAct können Benutzer einen effizienten interaktiven Agenten in ihrer lokalen Umgebung erstellen. Diese Implementierung ist in der Lage, komplexe Aufgaben zu bewältigen, unterstützt mehrere Interaktionsmodi und optimiert die Aufgabenautomatisierung und das Benutzererlebnis für lokale Anwendungen, die eine hohe Echtzeitleistung erfordern.
Hinweis: Dieses Dokument enthält wichtige Codeschnipsel und ausführliche Erläuterungen. Der vollständige Code ist zu finden unter Notizbuch .
1. importierte Abhängigkeiten
from langchain_core.tools importieren Werkzeug
from langchain.pydantic_v1 importieren BaseModel, Feld
from langchain_core.tools import render_text_description
from langchain.agents import AgentExecutor, create_react_agent
from langchain importieren hub
from langchain_community.chat_models import ChatOllama
2. initialisieren Sie das Agententool
definieren. Sucheingabe
Klassenvererbung BaseModel
die dazu dient, den Modus der Eingabedaten zu definieren.
@tool(args_schema=SearchInput)
Dekorieren mit Werkzeugdekoratoren wetter_vorhersage
Funktion und geben Sie deren Eingabemodus als Sucheingabe
.
class SearchInput(BaseModel).
Location: str = Field(description="Ort, nach dem gesucht werden soll") # Definieren Sie ein Pydantic-Modell, das das Eingabeschema mit Beschreibungsinformationen beschreibt
@tool(args_schema=SearchInput)
def wetter_vorhersage(ort: str).
"""Weather_forecast_tool.""""
print(f "Wetter für {Ort}") # gibt den Ort aus, für den das Wetter vorhergesagt werden soll
return f "Eine Dummy-Vorhersage für {Ort}" # Gibt eine Dummy-Wettervorhersage für den angegebenen Ort zurück.
3. lokaler Betrieb
In diesem Beispiel verwenden Sie gemma:2b
Modellen kann das Ergebnis bei verschiedenen Modelltypen sehr unterschiedlich ausfallen (mehr Zufälligkeit).
llm = ChatOllama(model="gemma:2b") # Initialisierung des ChatOllama-Modells, unter Verwendung von "gemma:2b"
tools = [weather_forecast] # Verwendung des Tools weather_forecast
prompt = hub.pull("hwchase17/react-json") # Abrufen bestimmter Prompts aus dem Hub
prompt = prompt.partial(
tools=render_text_description(tools), # Rendering einer Textbeschreibung der Tools für den Prompt
tool_names=", ".join([t.name for t in tools]), # Verkettung von Tool-Namen zu einer kommagetrennten Zeichenkette
)
agent = create_react_agent(llm, tools, prompt) # Erstellen eines Agenten mit llm, tools und benutzerdefinierten Prompts
agent_executor = AgentExecutor(agent=agent, tools=tools, handle_parsing_errors=True, verbose=False, format="json") # Initialisieren des AgentExecutor
print(agent_executor.invoke({"input": "Wie ist das Wetter in Paris?"})) # Rufen Sie den Agenten mit einer Testeingabe auf und geben Sie die Ergebnisse aus
Dialogverlauf verwenden
Wenn Sie den Dialogverlauf verwenden, müssen Sie die react-chat
Aufforderungsvorlage. Fügen Sie zum Zeitpunkt des Aufrufs die chat_history
.
# ruft eine bestimmte Eingabeaufforderung ab; beachten Sie, dass hier react-chat verwendet wird
prompt = hub.pull("hwchase17/react-chat")
# Erstellen Sie den ReAct-Agenten
agent_history = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent_history, tools=tools, verbose=False)
agent_executor.invoke(
{
"input": "Wie heiße ich? Verwenden Sie nur bei Bedarf ein Tool, ansonsten antworten Sie mit Final Answer",
"chat_history": "Mensch: Hi! Mein Name ist Bob\nAI: Hallo Bob! Schön, dich kennenzulernen", }
Freut mich, Sie kennenzulernen", }
Freut mich, Sie kennenzulernen", }
bibliographie
https://react-lm.github.io/
https://python.langchain.com/v0.1/docs/modules/agents/agent_types/react/