Roy
1.0.0
Roy 是autogen
的輕量級替代品,用於使用語言模型開發高級多代理系統。它旨在簡化和民主化新興集體智慧的發展。
與模型無關:使用任何 LLM,無需外部 API。預設為 4 位元量化的 Wizard-coder-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 )
羅伊的目標是促進複雜的、自適應的多智能體系統的出現。它從生物和人工智慧概念中汲取靈感,以實現去中心化協調和持續學習。
適者生存- 根據準確性、速度等定期評估並選擇性地保留高性能代理。
專家混合- 指定代理專業知識,動態組成專家團隊,並將任務分配給最佳專家。不斷完善擴充專家。
這些機制促進了有能力、適應性強和高效的代理集體的出現。
用於建構代理生態系的靈活原語。
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!
如果您發現這個項目有幫助或有趣,並且想要支持更多此類實驗,請隨時為我買杯咖啡!