Это официальная реализация графика мыслей: решение сложных проблем с большими языковыми моделями.
Эта структура дает вам возможность решать сложные задачи, моделируя их как график операций (GOO), который автоматически выполняется с помощью большой языковой модели (LLM) в качестве двигателя.
Эта структура предназначена для того, чтобы быть гибкой и расширяемой, что позволяет вам не только решать проблемы с использованием нового подхода Got, но и для реализации GOO, напоминающих предыдущие подходы, такие как Cot или Tot.
Чтобы использовать эту структуру, вам необходимо иметь рабочую установку Python 3.8 или новее.
Прежде чем запустить любой из следующих двух методов установки, обязательно активируйте свою среду Python (если есть) заранее.
Если вы пользователь, и вы просто хотите использовать graph_of_thoughts , вы можете установить его непосредственно из PYPI:
pip install graph_of_thoughtsЕсли вы разработчик и хотите изменить код, вы можете установить его в редактируемом режиме из источника:
git clone https://github.com/spcl/graph-of-thoughts.git
cd graph-of-thoughts
pip install -e .Чтобы использовать структуру, вам необходимо иметь доступ к LLM. Пожалуйста, следуйте инструкциям в Controller Readme, чтобы настроить LLM по вашему выбору.
Следующий фрагмент кода показывает, как использовать структуру для решения проблемы сортировки для списка из 32 чисел, используя подход, похожий на котенок.
Убедитесь, что вы следовали руководству по настройке перед запуском кода.
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" )Чтобы запустить более сложный подход Got, вы можете использовать следующий фрагмент кода.
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" ) Вы можете сравнить два результата, осмотрев выходные графики output_cot.json и output_got.json .
Окончательные показатели мышления указывают на количество ошибок в списке отсортированного списка.
В статье дается обзор каркаса и ее компонентов высокого уровня.
Чтобы понять структуру более подробно, вы можете прочитать документацию отдельных модулей.
Особенно контроллер и операционные модули важны для понимания того, как максимально использовать из структуры.
Мы очень заботились о том, чтобы полностью документировать код, чтобы вы могли легко понять, как он работает и как его расширить.
Справочник примеров содержит несколько примеров задач, которые можно решить с использованием структуры, в том числе представленных в статье.
Это отличная отправная точка для изучения того, как использовать структуру для решения реальных проблем.
Каждый пример содержит файл README.md с инструкциями о том, как его запустить и играть с ним. Код полностью задокументирован и должен быть легко следовать. Вы также можете запустить примеры прямо из основного каталога. Обратите внимание, что результаты будут храниться в соответствующих примерах подканализации.
Попробуйте, например:
python -m examples.sorting.sorting_032
python -m examples.keyword_counting.keyword_counting Вы можете запустить эксперименты из статьи, следуя инструкциям в каталоге примеров.
Однако, если вы просто хотите осмотреть и переполнить результаты, вы можете использовать бумажный каталог.
Если вы найдете это хранилище ценным, пожалуйста, дайте ему звезду!
Есть вопросы или отзывы? Не стесняйтесь обратиться к [email protected] или откройте проблему.
Используете это в своей работе? Пожалуйста, обращайтесь на нас, используя предоставленную цитату:
@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 }
}