このLogicGuideの実装はAgoraによってもたらされます。私たちは、意味のあるオープンソースAI研究で人類を前進させることに専念しています
私たちの不一致に参加して、このプロジェクトまたは他の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)
:初期化方法では、1桁以上に一致する正規表現オブジェクトが作成されます。__call__(self, history)
:入力文字列history
正規表現(つまり、桁のシーケンス)と一致する場合、メソッドは正規表現オブジェクトを返します。それ以外の場合、それは何も返されません。 これは、提供されたツールに基づいてガイド関数を作成するためのクラスです。
方法
__init__(self, tool)
:初期化方法は、後で使用するために保存されるtool
オブジェクトを受け入れます。__call__(self, model_output)
:インスタンスtool
model_output
を引数としてfunctionとして呼び出されると、 tool_check
メソッドをmodel_output
に適用します。 この関数は、バイナリ文字列のパリティを確認するために使用されます。
binary_string
:この関数は、引数としてバイナリ文字列を取得します。1
バイナリ文字列に偶数の1(パリティ言語に属する)があり、そうでない場合は0
場合。 これらのクラスは、それぞれロジックチェックと入力テキストのファクトチェックを提供するように設計されています。
方法
check(self, text)
:これらのメソッドは、文字列text
入力として受け入れ、trueを返します。完全な実装では、これらのメソッドは、複雑な論理システム、セマンティック分析、論理推論システム、およびファクトチェックシステムを使用して、テキストの論理的一貫性と事実の正確性を検証します。 このクラスはメモリマネージャーとして機能し、入力文字列の特定のトリガーに基づいて値を保存および取得します。
方法
__init__(self)
:初期化方法では、メモリストアとして機能するために空の辞書が作成されます。__call__(self, history)
:この方法は、メモリセット/Getトリガーに基づいて入力文字列history
を変更します。 このクラスは、ソースURLから引用符を取得し、入力テキストの引用トリガーをソースからの引用符で置き換えることができます。
方法
__init__(self, source)
:初期化方法はソースURLを受け入れ、ソースから取得した引用符のリストを保存します。get_quotes_from_source(self)
:このメソッドは、ソースWebページからすべての段落を取得し、リストとして返します。__call__(self, history)
:この方法は、入力文字列history
の引用トリガーをソースからの見積もりに置き換えます。 このクラスは、入力文字列の代数方程式と相互作用します。
方法
__init__(self)
:初期化方法は、可変シンボルペアを保存するための空の辞書を作成します。__call__(self, history)
:この方法は、方程式に基づいて入力文字列history
と相互作用し、トリガーを解きます。 このクラスは、ハグするフェイストランスライブラリを使用してガイド機能に基づいて応答を生成するメインロジックガイドとして機能します。
方法
__init__(self, model_id, guide_function=None, device="cuda:0")
:初期化メソッドは、 model_id
に基づいてトランスモデルとトークンザーをセットアップし、 guide_function
またはaを設定します。 guide_function
がNOENTの場合はデフォルト機能。
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
に基づいて、トランスモデルを使用して必要に応じてガイド機能を適用する応答を生成します。 例の使用法は、特定のトランスモデルでLogicGuide
クラスを使用する方法を示しています。 「すべての理論は何ですか?」という入力に対する応答が生成されます。ガイド機能が提供されていないため、モデルのデフォルト動作を使用します。