Ini adalah implementasi resmi grafik pemikiran: memecahkan masalah rumit dengan model bahasa besar.
Kerangka kerja ini memberi Anda kemampuan untuk memecahkan masalah kompleks dengan memodelkannya sebagai grafik operasi (Goo), yang secara otomatis dieksekusi dengan model bahasa besar (LLM) sebagai mesin.
Kerangka kerja ini dirancang agar fleksibel dan dapat diperluas, memungkinkan Anda untuk tidak hanya memecahkan masalah menggunakan pendekatan GOT baru, tetapi juga untuk mengimplementasikan goos yang menyerupai pendekatan sebelumnya seperti COT atau TOT.
Untuk menggunakan kerangka kerja ini, Anda harus memiliki pemasangan Python 3.8 atau yang lebih baru.
Sebelum menjalankan salah satu dari dua metode instalasi berikut, pastikan untuk mengaktifkan lingkungan Python Anda (jika ada) sebelumnya.
Jika Anda seorang pengguna dan Anda hanya ingin menggunakan graph_of_thoughts , Anda dapat menginstalnya langsung dari PYPI:
pip install graph_of_thoughtsJika Anda seorang pengembang dan Anda ingin memodifikasi kode, Anda dapat menginstalnya dalam mode yang dapat diedit dari sumber:
git clone https://github.com/spcl/graph-of-thoughts.git
cd graph-of-thoughts
pip install -e .Untuk menggunakan kerangka kerja, Anda harus memiliki akses ke LLM. Harap ikuti instruksi di controller readme untuk mengonfigurasi llm pilihan Anda.
Cuplikan kode berikut menunjukkan cara menggunakan kerangka kerja untuk menyelesaikan masalah penyortiran untuk daftar 32 angka menggunakan pendekatan seperti cot.
Pastikan Anda telah mengikuti panduan pengaturan sebelum menjalankan kode.
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" )Untuk menjalankan pendekatan GOT yang lebih canggih, Anda dapat menggunakan cuplikan kode berikut.
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" ) Anda dapat membandingkan dua hasil dengan memeriksa grafik output output_cot.json dan output_got.json .
Skor pemikiran akhir menunjukkan jumlah kesalahan dalam daftar yang diurutkan.
Makalah ini memberikan gambaran tingkat tinggi dari kerangka kerja dan komponennya.
Untuk memahami kerangka kerja secara lebih rinci, Anda dapat membaca dokumentasi modul individual.
Terutama modul pengontrol dan operasi penting untuk memahami bagaimana memanfaatkan kerangka kerja.
Kami sangat berhati -hati untuk mendokumentasikan kode sepenuhnya, sehingga Anda dapat dengan mudah memahami cara kerjanya dan cara memperpanjangnya.
Direktori Contoh berisi beberapa contoh masalah yang dapat diselesaikan dengan menggunakan kerangka kerja, termasuk yang disajikan dalam makalah.
Ini adalah titik awal yang bagus untuk mempelajari cara menggunakan kerangka kerja untuk menyelesaikan masalah nyata.
Setiap contoh berisi file README.md dengan instruksi tentang cara menjalankannya dan bermain dengannya. Kode ini sepenuhnya didokumentasikan dan harus mudah diikuti. Anda juga dapat menjalankan contoh langsung dari direktori utama. Perhatikan bahwa hasilnya akan disimpan di masing-masing contoh sub-direktori.
Coba misalnya:
python -m examples.sorting.sorting_032
python -m examples.keyword_counting.keyword_counting Anda dapat menjalankan percobaan dari kertas dengan mengikuti instruksi di direktori contoh.
Namun, jika Anda hanya ingin memeriksa dan mengganti hasilnya, Anda dapat menggunakan direktori kertas.
Jika Anda menemukan repositori ini berharga, tolong beri bintang!
Punya pertanyaan atau umpan balik? Jangan ragu untuk menghubungi [email protected] atau buka masalah.
Menggunakan ini dalam pekerjaan Anda? Harap referensi kami menggunakan kutipan yang disediakan:
@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 }
}