Roy ist eine leichtgewichtige Alternative zu autogen
für die Entwicklung fortschrittlicher Multiagentensysteme mithilfe von Sprachmodellen. Ziel ist es, die Entwicklung entstehender kollektiver Intelligenz zu vereinfachen und zu demokratisieren.
Modellunabhängig : Verwenden Sie ein beliebiges LLM, keine externen APIs erforderlich. Aus Effizienzgründen wird standardmäßig ein 4-Bit-quantisiertes Wizard-Coder-Python-Modell verwendet.
Modular und zusammensetzbar : Roy zerlegt Agenteninteraktionen in wiederverwendbare Bausteine – Erstellen von Vorlagen, Abrufen, Generieren und Ausführen.
Transparent und anpassbar : Jede Methode hat einen klaren Zweck. Einfaches Austauschen von Komponenten oder Hinzufügen neuer Funktionen.
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 ()
Verwenden Sie Vorlagen, um Gespräche zu strukturieren und Kontext bereitzustellen.
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 ))
Verbessern Sie die Generierung mit relevantem Wissen.
s = 'Create a text to image generator.'
r = roy . retrieve ( s , n_topk = 3 , src = 'huggingface' )
[ roy . generate ( s ) for s in r ]
Agenten arbeiten in engen Schleifen zusammen, um die Ergebnisse iterativ entsprechend der Spezifikation zu verfeinern.
# 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 )
Einfaches Benchmarking und Iteration Ihrer Modellarchitektur:
Komponenten austauschen : Sprachmodelle, Eingabeaufforderungsformate, Agentenarchitekturen usw.
Testen Sie verschiedene Aufgaben : Arithmetik, Python-Codierung, HumanEval von OpenAI usw.
Verbesserungen quantifizieren : Sehen Sie, wie sich jede Änderung auf die Gesamtleistung auswirkt.
from human_eval import evaluate
evaluate ( roy . generate )
Roy möchte die Entstehung komplexer, adaptiver Multiagentensysteme erleichtern. Es lässt sich von biologischen und KI-Konzepten inspirieren, um eine dezentrale Koordination und kontinuierliches Lernen zu ermöglichen.
Survival of the Fittest – Bewerten Sie leistungsstarke Agenten regelmäßig und behalten Sie sie selektiv auf der Grundlage von Genauigkeit, Geschwindigkeit usw. bei. Agenten passen sich durch Interaktionen mit Kollegen an.
Mischung von Experten – Benennen Sie Agenten mit Fachwissen, stellen Sie dynamisch Spezialistenteams zusammen und leiten Sie Aufgaben an optimale Experten weiter. Kontinuierliche Weiterentwicklung und Erweiterung der Experten.
Diese Mechanismen erleichtern die Entstehung fähiger, anpassungsfähiger und effizienter Agentenkollektive.
Flexible Grundelemente zum Aufbau von Ökosystemen aus Agenten.
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 befindet sich in aktiver Entwicklung. Wir freuen uns über Beiträge – freuen Sie sich über offene Ausgaben und PRs!
Wenn Sie dieses Projekt hilfreich oder interessant fanden und weitere dieser Experimente unterstützen möchten, laden Sie mich gerne zu einem Kaffee ein!