Benutzerdefiniertes Werkzeug für LangChain Agenten erstellen
Lernt, wie man eine beliebige Python-Funktion in ein LangChain-Werkzeug umwandelt, das ein AI-Agent nutzen kann. Dies ist entscheidend, um die Fähigkeiten eines Agenten auf spezifische, nicht standardisierte Aufgaben oder proprietäre Systeme zu erweitern.
Originalvideo ansehen: The Two Best AI Models/Enemies Just Got Released Simultaneou...Eine Python-Funktion definieren.
Erstellen Sie eine beliebige Python-Funktion, die eine bestimmte Aufgabe ausführt. Diese Funktion wird später als Werkzeug für den Agenten dienen.
def get_word_length(word: str) -> int:
"""Returns the length of a word."""
return len(word)Die Funktion als LangChain Tool wrappen.
Verwenden Sie die `Tool`-Klasse von LangChain, um Ihre Python-Funktion in ein vom Agenten nutzbares Werkzeug zu verwandeln. Geben Sie einen `name`, die `func` (Ihre Python-Funktion) und eine klare `description` an. Die Beschreibung ist entscheidend, damit der LLM versteht, wann und wie das Werkzeug zu verwenden ist.
from langchain.agents import Tool
word_length_tool = Tool(
name="WordLength",
func=get_word_length,
description="useful for when you need to find the length of a word. The input should be a word."
)Das neue Werkzeug zur Agenten-Toolliste hinzufügen.
Fügen Sie das neu erstellte benutzerdefinierte Werkzeug zur Liste der Werkzeuge hinzu, die dem Agenten zur Verfügung stehen, bevor Sie den Agenten initialisieren.
# Angenommen, 'tools' ist Ihre bestehende Liste von Werkzeugen
tools.append(word_length_tool)Agent mit dem neuen Werkzeug ausführen.
Initialisieren Sie den Agenten mit der aktualisierten Werkzeugliste und geben Sie ihm eine Anfrage, die die Nutzung Ihres benutzerdefinierten Werkzeugs erfordert. Beobachten Sie im `verbose`-Modus, wie der Agent das neue Werkzeug einsetzt.
# (Vorausgesetzt, 'llm' ist bereits initialisiert)
from langchain.agents import initialize_agent, AgentType
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
agent.run("What is the length of the word 'supercalifragilisticexpialidocious'?")