การใช้ LogicGuide นี้นำมาให้คุณโดย Agora เราได้ทุ่มเทเพื่อพัฒนามนุษยชาติด้วยการวิจัยโอเพนซอร์สที่มีความหมาย
เข้าร่วม 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 เปิดตัวภายใต้ใบอนุญาต MIT ดูไฟล์ใบอนุญาตสำหรับรายละเอียดเพิ่มเติม
หมายเหตุ: 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)
: วิธีการเริ่มต้นสร้างพจนานุกรมที่ว่างเปล่าสำหรับการจัดเก็บคู่ของตัวแปร -ymbol__call__(self, history)
: วิธีนี้โต้ตอบกับ history
สตริงอินพุตตามสมการและแก้ทริกเกอร์ คลาสนี้ทำหน้าที่เป็นคู่มือตรรกะหลักที่ใช้ไลบรารี Hugging Face Transformers เพื่อสร้างการตอบสนองตามฟังก์ชันคู่มือ
วิธีการ
__init__(self, model_id, guide_function=None, device="cuda:0")
: วิธีการเริ่มต้นตั้งค่าโมเดล Transformers และ tokenizer ตาม model_id
และตั้งค่าฟังก์ชันคู่มือเป็น guide_function
หรือ A ฟังก์ชั่นเริ่มต้นถ้า 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
กับโมเดล Transformers เฉพาะ มันสร้างการตอบสนองต่ออินพุต "ทฤษฎีของคุณทุกอย่างคืออะไร" การใช้พฤติกรรมเริ่มต้นของโมเดลเนื่องจากไม่มีฟังก์ชั่นคู่มือ