Langchain: Eine leistungsstarke Python -Bibliothek zum Aufbau, Experimentieren und Analysieren von Sprachmodellen und Agenten
Kernpunkte:
Langchain ist eine leistungsstarke Python -Bibliothek, mit der Entwickler und Forscher Sprachmodelle und -agenten erstellen, experimentieren und analysieren können. Es bietet natürliche Sprachverarbeitung (NLP) Enthusiasten mit einer Vielzahl von Funktionen, vom Erstellen benutzerdefinierter Modelle bis hin zum effizienten Manipulieren von Textdaten. In diesem umfassenden Leitfaden werden wir uns mit den grundlegenden Komponenten von Langchain befassen und zeigen, wie sie seine Kraft in Python ausnutzen können.
Umgebungseinstellungen:
Um diesen Artikel zu lernen, erstellen Sie einen neuen Ordner und installieren Sie Langchain und OpenAI mit PIP:
pip3 install langchain openai
Agenten:
In Langchain ist ein Agent eine Entität, die Text verstehen und generieren kann. Diese Agenten können bestimmte Verhaltensweisen und Datenquellen konfigurieren und sind geschult, um verschiedene sprachbezogene Aufgaben auszuführen, wodurch sie zu einem multifunktionalen Tool für eine Vielzahl von Anwendungen sind.
Erstellen Sie Langchain -Agent:
Agenturen können so konfiguriert werden, dass "Tools" verwendet werden, um die erforderlichen Daten zu sammeln und eine gute Antwort zu entwickeln. Bitte beachten Sie das Beispiel unten. Es verwendet die SERP -API (eine Internet -Such -API), um nach Informationen zu suchen, die sich auf eine Frage oder Eingabe beziehen und antworten. Es verwendet auch das LLM-Math-Tool, um mathematische Operationen auszuführen-zum Beispiel um Konvertieren von Einheiten oder das Finden einer prozentualen Änderung zwischen zwei Werten:
from langchain.agents import load_tools from langchain.agents import initialize_agent from langchain.agents import AgentType from langchain.llms import OpenAI import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" os.environ["SERPAPI_API_KEY"] = "YOUR_SERP_API_KEY" # 获取你的Serp API密钥:https://serpapi.com/ OpenAI.api_key = "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" llm = OpenAI(model="gpt-3.5-turbo", temperature=0) tools = load_tools(["serpapi", "llm-math"], llm=llm) agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) agent.run("How much energy did wind turbines produce worldwide in 2022?")
Wie Sie sehen können, verwendet der Code nach Abschluss aller grundlegenden Importe und Initialisierung von LLM (LLM = OpenAi (Modell = "GPT-3,5-Turbo", Temperatur = 0)). , "LLM-Math"], LLM = LLM) Laden Sie die Tools, die der Agent benötigt, um zu arbeiten. Anschließend wird die Funktion "Initialize_agent" verwendet, um einen Agenten zu erstellen, es mit dem angegebenen Tool bereitzustellen, und bietet ihm eine Beschreibung von Zero_Shot_react_Description, was bedeutet, dass es sich nicht an das vorherige Problem erinnert.
Agentur -Testbeispiel 1:
Testen wir diesen Agenten mit der folgenden Eingabe:
<code>"How much energy did wind turbines produce worldwide in 2022?"</code>
Wie Sie sehen können, verwendet es die folgende Logik:
Agentur -Testbeispiel 2:
Langchain -Agent ist nicht darauf beschränkt, das Internet zu durchsuchen. Wir können fast jede Datenquelle (einschließlich unserer) mit dem Langchain -Agenten verbinden und Fragen zu den Daten stellen. Versuchen wir, einen auf einem CSV -Datensatz trainierten Agenten zu erstellen.Laden Sie diesen Netflix -Film- und TV -Show -Datensatz von Shivam Bansal auf Kaggle herunter und verschieben Sie ihn in Ihr Verzeichnis. Fügen Sie diesen Code nun einer neuen Python -Datei hinzu:
pip3 install langchain openai
Wir können auch einen Pandas DataFrame -Agenten wie folgt erstellen:
from langchain.agents import load_tools from langchain.agents import initialize_agent from langchain.agents import AgentType from langchain.llms import OpenAI import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" os.environ["SERPAPI_API_KEY"] = "YOUR_SERP_API_KEY" # 获取你的Serp API密钥:https://serpapi.com/ OpenAI.api_key = "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" llm = OpenAI(model="gpt-3.5-turbo", temperature=0) tools = load_tools(["serpapi", "llm-math"], llm=llm) agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) agent.run("How much energy did wind turbines produce worldwide in 2022?")
Modelle:
Es gibt drei Arten von Modellen in Langchain: LLM (Language Language Model), Chat -Modell und Texteinbettungsmodell. Erforschen wir jeden Modelltyp mit einigen Beispielen.
großes Sprachmodell:
Langchain bietet eine Möglichkeit, Großsprachmodelle in Python zu verwenden, um die Textausgabe basierend auf der Texteingabe zu generieren. Es ist nicht so komplex wie das Chat-Modell und eignet sich am besten für einfache Sprachaufgaben in Eingabe-Output. Hier ist ein Beispiel mit OpenAI:
<code>"How much energy did wind turbines produce worldwide in 2022?"</code>
Chat -Modell:
Es macht Spaß, das LLM -Modell Rap -Namen zu entwickeln. Wenn wir jedoch komplexere Antworten und Gespräche wünschen, müssen wir das Chat -Modell verwenden, um unsere Fähigkeiten zu verbessern. Wie unterscheidet sich das Chat -Modell technisch von einem großen Sprachmodell? In den Worten des Langchain -Dokuments:Das Chat -Modell ist eine Variante des großen Sprachmodells. Obwohl Chat -Modelle große Sprachmodelle im Hintergrund verwenden, verwenden sie leicht unterschiedliche Schnittstellen. Sie verwenden nicht die API "Texteingabe, Textausgabe", sondern "Chat -Nachrichten" als Schnittstelle für Eingabe und Ausgabe.
Dies ist ein einfaches Python -Chat -Modellskript:
pip3 install langchain openai
Wie oben gezeigt, sendet der Code zunächst eine Systemmessage und fordert den Chatbot an, freundlich und informell zu sein. Anschließend sendet er eine HumanMessage und fordert den Chatbot an, uns davon zu überzeugen, dass Djokovich besser ist als Federer.
Wenn Sie dieses Chatbot -Modell ausführen, sehen Sie die unten gezeigten Ergebnisse.
Einbettungen:
Einbindung bietet eine Möglichkeit, Wörter und Zahlen in Textblöcken in Vektoren umzuwandeln, die dann mit anderen Wörtern oder Zahlen zugeordnet werden können. Dies mag abstrakt klingen. Schauen wir uns also ein Beispiel an:
from langchain.agents import load_tools from langchain.agents import initialize_agent from langchain.agents import AgentType from langchain.llms import OpenAI import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" os.environ["SERPAPI_API_KEY"] = "YOUR_SERP_API_KEY" # 获取你的Serp API密钥:https://serpapi.com/ OpenAI.api_key = "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" llm = OpenAI(model="gpt-3.5-turbo", temperature=0) tools = load_tools(["serpapi", "llm-math"], llm=llm) agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) agent.run("How much energy did wind turbines produce worldwide in 2022?")
Dies gibt eine Liste der schwimmenden Punktzahlen zurück: [0,022762885317206383, -0.01276398915797472, 0,004815981723368168, -0.00943539291682545, 0.010824922068. So sieht ein Einbettung aus.
Verwendungsfälle von eingebetteten Modellen:
Wenn wir einen Chatbot oder eine LLM trainieren möchten, um Fragen zu unseren Daten oder bestimmten Textproben zu beantworten, müssen wir die Einbettung verwenden. Erstellen wir eine einfache CSV -Datei (EMBS.CSV) mit einer "Text" -Spalte mit drei Informationen:
<code>"How much energy did wind turbines produce worldwide in 2022?"</code>
Nun, dies ist ein Skript, das Einbettungen verwendet, um die Frage zu erhalten: "Wer war der höchste Mensch aller Zeiten?"
from langchain.llms import OpenAI from langchain.chat_models import ChatOpenAI from langchain.agents.agent_types import AgentType from langchain.agents import create_csv_agent import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" agent = create_csv_agent( OpenAI(temperature=0), "netflix_titles.csv", verbose=True, agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION, ) agent.run("In how many movies was Christian Bale casted")
Stücke:
Langchain -Modelle können große Texte nicht gleichzeitig verarbeiten und sie verwenden, um Antworten zu generieren. Hier kommen Block- und Textsegmentierung ins Spiel. Schauen wir uns zwei einfache Möglichkeiten an, Textdaten in Blöcke aufzuteilen, bevor wir sie an Langchain füttern.
Segmentblöcke nach Zeichen:
Um plötzliche Unterbrechungen in Blöcken zu vermeiden, können wir den Text per Absatz aufteilen, indem wir den Text bei jedem Auftreten einer neuen Linie oder einer doppelten neuen Linie teilen:
from langchain.agents import create_pandas_dataframe_agent from langchain.chat_models import ChatOpenAI from langchain.agents.agent_types import AgentType from langchain.llms import OpenAI import pandas as pd import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_KEY" df = pd.read_csv("netflix_titles.csv") agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True) agent.run("In what year were the most comedy movies released?")
rekursives Segmentierungsblock:
Wenn wir den Text durch Zeichen einer bestimmten Länge streng teilen möchten, können wir recursivecharactertextSPSPLITTER verwenden:
from langchain.llms import OpenAI import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" llm = OpenAI(model="gpt-3.5-turbo", temperature=0.9) print(llm("Come up with a rap name for Matt Nikonorov"))
Blockgröße und Überlappung:
Wenn Sie sich das obige Beispiel ansehen, möchten Sie vielleicht genau wissen, was die Blockgröße und die überlappenden Parameter bedeuten und wie sie die Leistung beeinflussen. Dies kann auf zwei Arten erklärt werden:Ketten:
Kapitel sind im Grunde mehrerer LLM-Funktionen, die miteinander verbunden sind, um komplexere Aufgaben auszuführen, die nicht durch einfache LLM-Eingabe- & GT-Ausgabe erfüllt werden können. Schauen wir uns ein cooles Beispiel an:
pip3 install langchain openai
Dieser Code gibt zwei Variablen in seine Eingabeaufforderungen ein und entwickelt eine kreative Antwort (Temperatur = 0,9). In diesem Beispiel bitten wir es, einen guten Titel für einen Horrorfilm über Mathematik zu finden. Die Ausgabe nach dem Ausführen dieses Codes ist "der berechnende Fluch", aber dies zeigt nicht wirklich die volle Funktionalität der Kette.
Schauen wir uns ein praktischere Beispiel an:
from langchain.agents import load_tools from langchain.agents import initialize_agent from langchain.agents import AgentType from langchain.llms import OpenAI import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" os.environ["SERPAPI_API_KEY"] = "YOUR_SERP_API_KEY" # 获取你的Serp API密钥:https://serpapi.com/ OpenAI.api_key = "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" llm = OpenAI(model="gpt-3.5-turbo", temperature=0) tools = load_tools(["serpapi", "llm-math"], llm=llm) agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True) agent.run("How much energy did wind turbines produce worldwide in 2022?")
Dieser Code mag verwirrend erscheinen. Erklären wir ihn also Schritt für Schritt.
Dieser Code liest eine kurze Biographie von NAS (Hip -Hop -Künstler) und extrahiert die folgenden Werte aus dem Text und formatiert sie als JSON -Objekte:
In der Eingabeaufforderung haben wir auch angegeben "Achten Sie darauf, dass Sie im richtigen Format antworten", damit wir die Ausgabe immer im JSON -Format erhalten. Hier ist die Ausgabe dieses Codes:
<code>"How much energy did wind turbines produce worldwide in 2022?"</code>
Durch die Bereitstellung des JSON -Musters für die Funktion create_structed_output_chain lassen wir die Kette in das JSON -Format einfügen.
Beyond OpenAI:
Obwohl ich das OpenAI -Modell als Beispiel für verschiedene Funktionen von Langchain verwendet habe, ist es nicht auf das OpenAI -Modell beschränkt. Wir können Langchain mit vielen anderen LLM- und KI -Diensten nutzen. (Dies ist die vollständige Liste der integrierten LLMs von Langchain.)
Zum Beispiel können wir Cohere mit Langchain verwenden. Dies ist die Dokumentation für die Integration von Langchain Cohere. Um jedoch ein praktisches Beispiel zu geben, können wir nach der Installation von Cohere mit PIP3 -Installation CoHERE einen einfachen Q & A -Code mit Langchain und Cohere wie folgt schreiben:
from langchain.llms import OpenAI from langchain.chat_models import ChatOpenAI from langchain.agents.agent_types import AgentType from langchain.agents import create_csv_agent import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY" agent = create_csv_agent( OpenAI(temperature=0), "netflix_titles.csv", verbose=True, agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION, ) agent.run("In how many movies was Christian Bale casted")
Der obige Code erzeugt die folgende Ausgabe:
from langchain.agents import create_pandas_dataframe_agent from langchain.chat_models import ChatOpenAI from langchain.agents.agent_types import AgentType from langchain.llms import OpenAI import pandas as pd import os os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_KEY" df = pd.read_csv("netflix_titles.csv") agent = create_pandas_dataframe_agent(OpenAI(temperature=0), df, verbose=True) agent.run("In what year were the most comedy movies released?")
Schlussfolgerung:
In diesem Leitfaden haben Sie verschiedene Aspekte und Funktionen von Langchain gesehen. Sobald Sie dieses Wissen gemeistert haben, können Sie Langchains Fähigkeiten zur Durchführung von NLP -Arbeiten nutzen, unabhängig davon, ob Sie Forscher, Entwickler oder Enthusiast sind.
Sie können ein Repository auf GitHub finden, das in diesem Artikel alle Bilder und Nas.txt -Dateien enthält.
Ich wünsche Ihnen ein glückliches Codieren und experimentiert mit Langchain in Python!
Das obige ist der detaillierte Inhalt vonEine vollständige Anleitung zu Langchain in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!