يتم تقديم هذا التنفيذ الخاص بـ LogicGuide لك من قبل Agora ، ونحن نكرس لتطوير الإنسانية مع أبحاث AI ذات المصادر المفتوحة ذات مغزى
انضم إلى Discord للمساعدة في المساهمة في هذا المشروع أو 40+ مشاريع أخرى
رابط الورق هنا
LogicGuide هي إضافة مبتكرة يمكن توصيلها بأي نموذج لتعزيز قدرات التفكير المنطقي بنسبة 40 ٪. تم تصميم LogicGuide للسماح لنموذجك بتسخير قوة خوارزميات ووظائف التفكير المنطقي المتقدم ، مما يسمح له بإنشاء استجابات أكثر دقة وعقولة وذات مغزى. الأمر بسيط مثل التوصيل والتشغيل!
أولاً ، استنساخ هذا المستودع:
git clone https://github.com/kyegomez/LOGICGUIDE.git
cd LOGICGUIDE
ثم ، قم بتثبيت التبعيات اللازمة:
pip install -r requirements.txt
فيما يلي دليل الاستخدام لـ LogicGuide:
from logicguide import MemoryGuide , QuoteGuide , AlgebraGuide , LogicGuide ,
model_id = "tiiuae/falcon-40b"
device = "cuda:0" # Change to "cpu" if you don't have a CUDA-compatible GPU.
# Memory Guide
memory_guide = MemoryGuide ()
logic_guide = LogicGuide ( model_id = model_id , guide_function = memory_guide , device = device )
text = "[[set:name=OpenAI]] What is your name?"
print ( logic_guide . generate ( text )) # Output: "My name is OpenAI."
text = "[[get:name=]] What is your name?"
print ( logic_guide . generate ( text )) # Output: "My name is OpenAI."
# Quote Guide (for this example, we're using Project Gutenberg's "The Adventures of Sherlock Holmes")
quote_guide = QuoteGuide ( source = "https://www.gutenberg.org/files/1661/1661-h/1661-h.htm" )
logic_guide = LogicGuide ( model_id = model_id , guide_function = quote_guide , device = device )
text = "[[quote:]] What is a quote from Sherlock Holmes?"
print ( logic_guide . generate ( text )) # Output: A quote from "The Adventures of Sherlock Holmes" (random quote from the source)
# Algebra Guide
algebra_guide = AlgebraGuide ()
logic_guide = LogicGuide ( model_id = model_id , guide_function = algebra_guide , device = device )
text = "[[eq]] x^2 + 3x + 2 = 0"
print ( logic_guide . generate ( text )) # Output: "x^2 + 3x + 2 = 0" (and stores the equation for later)
text = "[[solve:x=]] What is the value of x?"
print ( logic_guide . generate ( text )) # Output: "The value of x is ..." (the solutions of the equation)
نحن نحب مدخلاتك! نريد أن نجعل المساهمة في LogicGuide سهلة وشفافة قدر الإمكان. يرجى مراجعة دليل المساهمة لدينا لمزيد من المعلومات.
إنشاء وظائف التعريف السياق الرسمية التي تزيد من استجابة LLM الأساسية
وضع جناح اختبار القياس من الأوراق
إنشاء المزيد من وظائف الدليل
يتم إصدار LogicGuide تحت رخصة معهد ماساتشوستس للتكنولوجيا. انظر ملف الترخيص لمزيد من التفاصيل.
ملاحظة: تم إنشاء LogicGuide ويتم الحفاظ عليه بواسطة Kye Gomez.
هذه فئة دليل أساسية لا تغير المدخلات.
طُرق
__call__(self, history)
: عندما تسمى مثيل الفصل مثل وظيفة ، فإنه ببساطة يعيد history
سلسلة الإدخال دون تغيير. تم تصميم فئة الدليل هذه للتفاعل مع العمليات المتعلقة بالأرقام في سلسلة الإدخال.
طُرق
__init__(self)
: في طريقة التهيئة ، يتم إنشاء كائن تعبير منتظم يطابق رقمًا أو أكثر.__call__(self, history)
: إذا كان history
سلسلة الإدخال يطابق التعبير العادي (أي ، فهو تسلسل من الأرقام) ، فإن الطريقة تُرجع كائن التعبير العادي. خلاف ذلك ، فإنه لا يعود لا شيء. هذا فئة لإنشاء وظائف دليل بناءً على أداة مقدمة.
طُرق
__init__(self, tool)
: تقبل طريقة التهيئة كائن tool
يتم تخزينه للاستخدام لاحقًا.__call__(self, model_output)
: عندما يتم استدعاء المثيل كدالة مع model_output
كوسيطة ، فإنه يطبق طريقة tool_check
لكائن tool
إلى model_output
. يتم استخدام هذه الوظيفة للتحقق من تكافؤ السلسلة الثنائية.
binary_string
: هذه الوظيفة تأخذ سلسلة ثنائية كوسيطة.1
إذا كانت السلسلة الثنائية لديها عدد زوجي من 1 (ينتمي إلى لغة التكافؤ) ، و 0
إذا لم يكن كذلك. تم تصميم هذه الفئات لتوفير فحص منطقي وتحقق من حقيقة نص الإدخال على التوالي.
طُرق
check(self, text)
: تقبل هذه الطرق text
السلسلة كمدخل وإرجاع صحيح. في التنفيذ الكامل ، ستستخدم هذه الأساليب أنظمة المنطق المعقدة ، والتحليل الدلالي ، وأنظمة الاستدلال المنطقي ، وأنظمة فحص الحقائق للتحقق من الاتساق المنطقي والدقة الواقعية للنص. تعمل هذه الفئة كمدير ذاكرة ، وتخزين واسترداد القيم بناءً على بعض المشغلات في سلسلة الإدخال.
طُرق
__init__(self)
: في طريقة التهيئة ، يتم إنشاء قاموس فارغ ليكون بمثابة متجر الذاكرة.__call__(self, history)
: تعدل هذه الطريقة history
سلسلة الإدخال بناءً على مجموعة/الحصول على محفزات الذاكرة. هذه الفئة تجلب اقتباسات من عنوان URL المصدر وتسمح باستبدال مشغل اقتباس في نص الإدخال مع اقتباس من المصدر.
طُرق
__init__(self, source)
: تقبل طريقة التهيئة عنوان URL المصدر ويخزن قائمة عروض الأسعار التي تم جلبها من المصدر.get_quotes_from_source(self)
: تجلب هذه الطريقة جميع الفقرات من صفحة الويب المصدر وإرجاعها كقائمة.__call__(self, history)
: تحل هذه الطريقة محل مشغل اقتباس في history
سلسلة الإدخال مع اقتباس من المصدر. تتفاعل هذه الفئة مع المعادلات الجبرية في سلسلة الإدخال.
طُرق
__init__(self)
: تنشئ طريقة التهيئة قاموسًا فارغًا لتخزين أزواج متغير symbol.__call__(self, history)
: تتفاعل هذه الطريقة مع history
سلسلة الإدخال بناءً على المعادلة وحل المشغلات. تعمل هذه الفئة كدليل منطقي رئيسي يستخدم مكتبة Hugging Face Transformers لإنشاء ردود بناءً على وظيفة دليل.
طُرق
__init__(self, model_id, guide_function=None, device="cuda:0")
: تقوم طريقة التهيئة بإعداد نموذج المحولات والرمز المميز على أساس model_id
، وتعيين وظيفة الدليل إلى guide_function
أو أ الوظيفة الافتراضية إذا كان guide_function
لا شيء.
default_guide_function(self, S)
S
تقوم هذه الطريقة بإرجاع سلسلة الإدخال دون تغيير.get_bnb_config(self)
: هذه الطريقة تُرجع كائن BitsAndBytesConfig
لتحديد كمية النموذج.guide(self, S)
: تطبق هذه الطريقة وظيفة الدليل على سلسلة الإدخال S
.get_blocks(self, s)
: هذه الطريقة تُرجع قائمة بجميع كتل التوجيه في s
الإدخال.generate(self, text, max_new_tokens=20)
: تقوم هذه الطريقة بإنشاء استجابة تعتمد على text
سلسلة الإدخال ، باستخدام نموذج Transformers وتطبيق وظيفة الدليل إذا لزم الأمر. يوضح استخدام المثال كيفية استخدام فئة LogicGuide
مع نموذج محولات محدد. يولد استجابة للمدخلات "ما هي نظريتك في كل شيء؟" باستخدام السلوك الافتراضي للنموذج ، حيث لا يتم توفير وظيفة دليل.