Roy は、言語モデルを使用して高度なマルチエージェント システムを開発するための、 autogen
に代わる軽量のツールです。創発的な集合知の開発を簡素化し、民主化することを目的としています。
モデルに依存しない: 任意の LLM を使用し、外部 API は必要ありません。効率性を高めるために、デフォルトで 4 ビット量子化されたウィザードコーダー Python モデルが使用されます。
モジュール式で構成可能: Roy は、エージェントの対話を再利用可能な構成要素 (テンプレート化、取得、生成、実行) に分解します。
透過的でカスタマイズ可能: すべてのメソッドには明確な目的があります。コンポーネントを簡単に交換したり、新しい機能を追加したりできます。
git clone https://github.com/JosefAlbers/Roy
cd Roy
pip install -r requirements.txt
pip install -U transformers optimum accelerate auto-gptq --extra-index-url https://huggingface.github.io/autogptq-index/whl/cu118/
from roy import Roy
roy = Roy ()
テンプレートを使用して会話を構造化し、コンテキストを提供します。
s = 'What date is today? Which big tech stock has the largest year-to-date gain this year? How much is the gain?'
roy . generate ( roy . format ( s ))
関連する知識を使って生成を強化します。
s = 'Create a text to image generator.'
r = roy . retrieve ( s , n_topk = 3 , src = 'huggingface' )
[ roy . generate ( s ) for s in r ]
エージェントは緊密なループで連携して、出力を仕様に合わせて繰り返し調整します。
# Iterative multiturn chat style
s = "Create a secure and unique secret code word with a Python script that involves multiple steps to ensure the highest level of confidentiality and protection. n "
for i in range ( 2 ):
c = roy . generate ( s , prohibitions = [ 'input' ])
s += roy . execute ( c )
モデル アーキテクチャのベンチマークと反復を簡単に行うことができます。
コンポーネントの交換: 言語モデル、プロンプト形式、エージェント アーキテクチャなど。
多様なタスクのテスト: 算術演算、Python コーディング、OpenAI の HumanEval など。
改善を定量化する: 各変更が全体的なパフォーマンスにどのような影響を与えるかを確認します。
from human_eval import evaluate
evaluate ( roy . generate )
ロイは、複雑で適応性のあるマルチエージェント システムの出現を促進することを目指しています。生物学と AI の概念からインスピレーションを得て、分散型の調整と継続的な学習を可能にします。
適者生存 - 精度、速度などに基づいて、パフォーマンスの高いエージェントを定期的に評価し、選択的に保持します。エージェントはピアの対話を通じて適応します。
専門家の混合- エージェントの専門知識を指定し、専門家チームを動的に編成し、タスクを最適な専門家にルーティングします。専門家を継続的に改良し、強化します。
これらのメカニズムは、有能で適応性のある効率的なエージェント集団の出現を促進します。
エージェントのエコシステムを構築するための柔軟なプリミティブ。
from roy import Roys
roys = Roys ()
# AutoFeedback
roys . create ( agents = { 'Coder' : 'i = execute(generate(i))' })
roys . start ( requests = { 'i' : 'Create a mobile application that can track the health of elderly people living alone in rural areas.' })
# Retrieval Augmented Generation
roys . create (
agents = {
'Retriever' : 'r = retrieve(i)' ,
'Generator' : 'o = generate(r)' ,
})
roys . start ( requests = { 'i' : 'Create a Deutsch to English translator.' })
# Providing a custom tool to one of the agents using lambda
roys . create (
agents = {
'Coder' : 'c = generate(i)' ,
'Proxy' : 'c = custom(execute(c))' ,
},
tools = { 'custom' : lambda x : f'Modify the code to address the error encountered: n n { x } ' if 'Error' in x else None })
roys . start ( requests = { 'i' : 'Compare the year-to-date gain for META and TESLA.' })
Roy は鋭意開発中です。私たちは貢献を歓迎します - 問題や PR を自由にオープンしてください!
このプロジェクトが役立つ、または興味深いと感じて、これらの実験をさらにサポートしたい場合は、遠慮なく私にコーヒーを買ってください。