هذا هو التنفيذ الرسمي للرسوم البيانية للأفكار: حل المشكلات المتقنة مع نماذج اللغة الكبيرة.
يمنحك هذا الإطار القدرة على حل المشكلات المعقدة من خلال نمذجةها كرسومات للعمليات (GOO) ، والتي يتم تنفيذها تلقائيًا باستخدام نموذج لغة كبير (LLM) كمحرك.
تم تصميم هذا الإطار ليكون مرنًا وقابلًا للتوسع ، مما يتيح لك ليس فقط حل المشكلات باستخدام نهج GOT الجديد ، ولكن أيضًا لتنفيذ Goos تشبه الأساليب السابقة مثل 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. يرجى اتباع الإرشادات الواردة في وحدة التحكم في ReadMe لتكوين LLM من اختيارك.
يوضح مقتطف الكود التالي كيفية استخدام الإطار لحل مشكلة الفرز لقائمة من 32 رقمًا باستخدام نهج يشبه COT.
تأكد من اتباع دليل الإعداد قبل تشغيل الرمز.
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 }
}