Dies ist die offizielle Implementierung von Gedankengrafiken: Lösung von ausgeklügelten Problemen mit großen Sprachmodellen.
In diesem Framework können Sie komplexe Probleme lösen, indem Sie sie als GOO -Graphen (Operations) modellieren, das automatisch mit einem großen Sprachmodell (LLM) als Engine ausgeführt wird.
Dieses Framework ist so konzipiert, dass es flexibel und erweiterbar ist und es Ihnen ermöglicht, nicht nur Probleme mit dem neuen GOT -Ansatz zu lösen, sondern auch GoOs zu implementieren, die früheren Ansätzen wie COT oder TOT ähneln.
Um dieses Framework zu verwenden, müssen Sie eine funktionierende Installation von Python 3.8 oder neuer haben.
Achten Sie darauf, dass Sie Ihre Python -Umgebung (falls vorhanden) (falls vorhanden) ausführen.
Wenn Sie ein Benutzer sind und nur graph_of_thoughts verwenden möchten, können Sie es direkt von PYPI installieren:
pip install graph_of_thoughtsWenn Sie Entwickler sind und den Code ändern möchten, können Sie ihn im bearbeitbaren Modus von Quelle installieren:
git clone https://github.com/spcl/graph-of-thoughts.git
cd graph-of-thoughts
pip install -e .Um das Framework zu verwenden, müssen Sie Zugriff auf ein LLM haben. Bitte befolgen Sie die Anweisungen im Controller Readme, um die LLM Ihrer Wahl zu konfigurieren.
Das folgende Code-Snippet zeigt, wie das Framework verwendet wird, um das Sortierproblem für eine Liste von 32 Zahlen mit einem Cot-artigen-Ansatz zu lösen.
Stellen Sie sicher, dass Sie dem Setup -Handbuch befolgt sind, bevor Sie den Code ausführen.
from examples . sorting . sorting_032 import SortingPrompter , SortingParser , utils
from graph_of_thoughts import controller , language_models , operations
# Problem input
to_be_sorted = "[0, 2, 6, 3, 8, 7, 1, 1, 6, 7, 7, 7, 7, 9, 3, 0, 1, 7, 9, 1, 3, 5, 1, 3, 6, 4, 5, 4, 7, 3, 5, 7]"
# Create the Graph of Operations
gop = operations . GraphOfOperations ()
gop . append_operation ( operations . Generate ())
gop . append_operation ( operations . Score ( scoring_function = utils . num_errors ))
gop . append_operation ( operations . GroundTruth ( utils . test_sorting ))
# Configure the Language Model (Assumes config.json is in the current directory with OpenAI API key)
lm = language_models . ChatGPT ( "config.json" , model_name = "chatgpt" )
# Create the Controller
ctrl = controller . Controller (
lm ,
gop ,
SortingPrompter (),
SortingParser (),
# The following dictionary is used to configure the initial thought state
{
"original" : to_be_sorted ,
"current" : "" ,
"method" : "cot"
}
)
# Run the Controller and generate the output graph
ctrl . run ()
ctrl . output_graph ( "output_cot.json" )Um den anspruchsvolleren Got -Ansatz auszuführen, können Sie das folgende Code -Snippet verwenden.
from examples . sorting . sorting_032 import SortingPrompter , SortingParser , got , utils
from graph_of_thoughts import controller , language_models , operations
# Problem input
to_be_sorted = "[0, 2, 6, 3, 8, 7, 1, 1, 6, 7, 7, 7, 7, 9, 3, 0, 1, 7, 9, 1, 3, 5, 1, 3, 6, 4, 5, 4, 7, 3, 5, 7]"
# Retrieve the Graph of Operations
gop = got ()
# Configure the Language Model (Assumes config.json is in the current directory with OpenAI API key)
lm = language_models . ChatGPT ( "config.json" , model_name = "chatgpt" )
# Create the Controller
ctrl = controller . Controller (
lm ,
gop ,
SortingPrompter (),
SortingParser (),
# The following dictionary is used to configure the initial thought state
{
"original" : to_be_sorted ,
"current" : "" ,
"phase" : 0 ,
"method" : "got"
}
)
# Run the Controller and generate the output graph
ctrl . run ()
ctrl . output_graph ( "output_got.json" ) Sie können die beiden Ergebnisse vergleichen, indem Sie die Ausgabediagramme output_cot.json und output_got.json inspizieren.
Die Ergebnisse der letzten Gedankenstände geben die Anzahl der Fehler in der sortierten Liste an.
Das Papier gibt einen hohen Überblick über das Gerüst und seine Komponenten.
Um den Framework ausführlicher zu verstehen, können Sie die Dokumentation der einzelnen Module lesen.
Insbesondere die Controller- und Operations -Module sind wichtig, um zu verstehen, wie das Beste aus dem Rahmen herausholen kann.
Wir haben uns besonders darauf achtet, den Code vollständig zu dokumentieren, damit Sie leicht verstehen können, wie er funktioniert und wie er erweitert wird.
Das Beispielverzeichnis enthält mehrere Beispiele für Probleme, die mit dem Framework gelöst werden können, einschließlich der in der Arbeit vorgestellten.
Es ist ein großartiger Ausgangspunkt, um zu lernen, wie man das Framework nutzt, um echte Probleme zu lösen.
Jedes Beispiel enthält eine README.md -Datei mit Anweisungen zum Ausführen und Spielen. Der Code ist vollständig dokumentiert und sollte leicht zu befolgen sein. Sie können die Beispiele auch direkt aus dem Hauptverzeichnis ausführen. Beachten Sie, dass die Ergebnisse in den jeweiligen Beispielen unter dem Unterverzeichnis gespeichert werden.
Versuchen Sie zum Beispiel:
python -m examples.sorting.sorting_032
python -m examples.keyword_counting.keyword_counting Sie können die Experimente aus dem Papier ausführen, indem Sie die Anweisungen im Beispielverzeichnis folgen.
Wenn Sie jedoch nur die Ergebnisse inspizieren und wiederholen möchten, können Sie das Papierverzeichnis verwenden.
Wenn Sie dieses Repository wertvoll finden, geben Sie ihm bitte einen Stern!
Haben Sie Fragen oder Feedback? Wenden Sie sich gerne an [email protected] oder eröffnen Sie ein Problem.
Verwenden Sie dies in Ihrer Arbeit? Bitte verweisen Sie uns mit dem angegebenen Zitat:
@article { besta2024got ,
title = { {Graph of Thoughts: Solving Elaborate Problems with Large Language Models} } ,
author = { Besta, Maciej and Blach, Nils and Kubicek, Ales and Gerstenberger, Robert and Gianinazzi, Lukas and Gajda, Joanna and Lehmann, Tomasz and Podstawski, Micha{l} and Niewiadomski, Hubert and Nyczyk, Piotr and Hoefler, Torsten } ,
year = 2024 ,
month = { Mar } ,
journal = { Proceedings of the AAAI Conference on Artificial Intelligence } ,
volume = 38 ,
number = 16 ,
pages = { 17682-17690 } ,
publisher = { AAAI Press } ,
doi = { 10.1609/aaai.v38i16.29720 } ,
url = { https://ojs.aaai.org/index.php/AAAI/article/view/29720 }
}