Roy는 언어 모델을 사용하여 고급 다중 에이전트 시스템을 개발하기 위한 autogen
의 경량 대안입니다. 이는 창발적 집단지성의 개발을 단순화하고 민주화하는 것을 목표로 합니다.
모델에 구애받지 않음 : 모든 LLM을 사용하고 외부 API가 필요하지 않습니다. 효율성을 위해 기본적으로 4비트 양자화된 마법사-코더-파이썬 모델이 사용됩니다.
모듈식 및 구성 가능 : 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 )
Roy는 복잡하고 적응 가능한 다중 에이전트 시스템의 출현을 촉진하는 것을 목표로 합니다. 생물학적 및 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을 자유롭게 공개하세요!
이 프로젝트가 도움이 되거나 흥미롭다고 생각하고 이러한 실험을 더 많이 지원하고 싶다면 언제든지 커피 한 잔 사주세요!