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!
如果您发现这个项目有帮助或有趣,并且想要支持更多此类实验,请随时给我买杯咖啡!