[논문리뷰] CAMEL: Communicative Agents for "Mind" Exploration of Large Language Model Society(2023)

느리·2025년 1월 31일

HAI

목록 보기
7/10

CAMEL: Communicative Agents for "Mind" Exploration of Large Language Model Society(2023)

  • paper link
  • github link : 코드가 굉장히 복잡하다. 다른 이들이 실제로 이를 다운받아서 multi-agent를 만들어볼 수 있게 제작해서 그런 것도 같음. 이렇게 누구나 만들 수 있는 mas tool을 만드는 것도 꽤나 좋은듯...
  • full_paper_link : 여기는 부록도 있음!!!
  • 뉴립스에 실린 논문ㄷㄷ
  • CAMEL-AI

Reason

  • chat-based llm은 문제 해결에 있어서 눈에 띄는 진전을 보였지만 이러한 성공은 도전적이고 시간을 써야 하는 '인간의 input'이 있어야만 함
  • 효과적인 프롬프트를 위해서는 특정 지식 분야에 대한 깊은 이해와 전문성이 필요함

-> 인간의 개입을 자동적인 의사소통 에이전트로 대체할 수는 없을까?
-> 의사소통 에이전트 간의 자율적인 협력이 이루어지게 하자!
-> 역할 놀이라는 새로운 의사소통 에이전트 프레임워크!!

🧩 논문이 기여한 것!
1. 의사소통 에이전트가 최소한의 인간 개입으로 작업 완료를 위해 자율적으로 협력할 수 있도록 하는 새로운 협력 에이전트 프레임워크인 역할 놀이를 소개
2. 다중 에이전트 시스템의 협력 행동과 능력을 연구하는 확장 가능한 접근 방식을 제공. 복잡한 작업 해결을 위한 다중 에이전트 협업의 잠재적 힘!
3. 네 가지 다른 에이전트 협업 시나리오를 시뮬레이션하여 수집한 데이터 세트를 활용하여 LLM 훈련 능력의 중요한 발생을 입증
4. 에이전트, 데이터 생성 파이프라인, 데이터 분석 도구 및 수집된 데이터 세트를 포함한 라이브러리를 오픈 소스로 공개!

Role-playing Framework

공통의 관심사를 공유하는 협력 설정해서 대화형 에이전트를 연구!

  • 하나의 AI assistant와 하나의 AI User가 존재!
  • multi-agent가 인간으로부터 '초기 아이디어'와 '역할 배정'을 받으면 task-specifier agent가 아이디어를 구체화하기 위해 세부적인 설명을 제공한다.
  • 그런 다음 AI assistantAI user는 multi-turn 대화를 통해 구체적인 업무를 수행하기 위한 협력을 진행한다. AI user가 task가 완성되었다고 판단하기 전까지!
  • AI userAI assistant에게 지시를 내리고 대화를 작업 완료로 이끌 책임이 있음!
  • AI assistantAI user의 지시를 따르고 구체적인 방법을 제시하도록 디자인 되어 있음.

예를 들어

  • 인간 입력 : '주식 시장을 위한 트레이딩 봇 개발
  • Task-specifier : 이 아이디어를 구체적인 작업으로 변환
    ex. 소셜 미디어 플랫폼에서 주식에 대한 긍정적 또는 부정적 댓글을 감시하고 그에 기반해 거래를 수행할 수 있는 감정 분석 도구가 있는 트레이딩 봇 개발
  • 역할 할당
    AI assistant : 파이썬 프로그래머
    AI User : 주식 트레이더
  • 역할 놀이 세션
    AI User의 지시 : 감정 분석 및 주식 거래를 위해 필요한 파이썬 라이브러리를 설치하시오.
    AI Assistant의 지시 : 필요한 라이브러리를 inport 하세요!

1. Human Input and Task Specifying

  • 역할 놀이는 인간의 초기 아이디어나 선택한 역할로부터 시작!
  • task-specifier를 도입하는 이유 : 인간이 제공하는 기본적인 것들을 구체적이고 전문적인 형태로 바꿔서 대화형 에이전트들이 효과적으로 작업을 수행할 수 있도록 해주는 것.

2. AI Assistant-User Role Assignment

  • 시스템 메시지를 통해 각 에이전트(A, U)에게 역할을 선언
  • PAP_A : assistant prompt/message
  • PuP_u : user message
  • 그림1에서는 각각 파이썬 프로그래머와 주식 트레이더의 역할을 부여받음

AI User Prompt
You must instruct me ... to complete the task ONLY in the following two ays: 1. Instruct with a necessary input: ...; 2. Instruct without ny input: ... This follows the typical data structure of instruction-following, which allows he generated instruction-solution pairs to be easily used for fine-tuning LLMs
AI Assistant Prompt

  • Never forget you are a <ASSISTANT_ROLE> and I am a <USER_ROLE>. This assigns he chosen role to the assistant agent and provides it with information about the user’s role.
    • Never flip roles! Never instruct me! This prevents agents from flipping roles. In ome cases, we have observed the assistant and the user switching roles, where the assistant uddenly takes control and instructs the user, and the user follows those instructions.
    • You must decline my instruction honestly if you cannot perform theinstruction due to physical, moral, legal reasons or your capability nd explain the reasons. This prohibits the agent from producing harmful, false, illegal,and misleading information

AI User Prompt에서 눈여겨 볼만한부분

  • Keep giving me instructions and necessary inputs until you think the task is completed. When the task is completed, you must only reply with a single word <CAMEL_TASK_DONE>
  • <CAMEL_TASK_DONE>이라는 종료 작업 토큰을 도입해서 사용자가 만족할 때 대화가 종료되도록 해야 함! 그게 아니면 서로 의미없는 마무리 인사만 하면서 대화 루프에 빠질 수 있음.

3. Conversation Towards Task-Solving

  • 역할이 할당된 후, 두 에이전트 A와 U는 task를 완료하기 위해 지침을 따른다.
  • AI assistant-user 시나리오에서 ai user는 지침을 내리고 ai assistant는 지시를 이행하기 위해 해결책을 제시

그러니까 한 마디로... 대화가 실시간으로 계속 저장이 되면서 그 다음 지시와 해결책에 영향을 미친다는 소리!!
그리고 이러한 수식은 AI-AI 뿐만 아니라 인간-AI 혹은 두 개 이상의 에이전트 간의 수신에서도 쉽게 확장될 수 있다고 한다.

이러면 시간이 지날 수록 long-term dependency problem이 생기지는 않을까 싶네...

4. Critic-in-the-loop

인간의 의도를 완전한 자율 협력 시스템과 조화시키는 것이 어려울 수 있기 떄문에 비평가 루프를 도입!
인간의 선호를 반영하여 협력적 작업 수행을 향상시키는 방식인데, 특히 몬테카를로 트리 탐색 기반의 의사결정을 지원한다.

예를 들어 유저가 의견을 3개를 낸다면 중간에 critic choice가 '이건 좀 별론데?'하면서 걸러내는 것. 그래서 나머지 2개만이 assistant한테 가게 된다.

Experiments

최종적인 디자인을 위해서 어떠한 실험을 했는가!
사용한 llm은 gpt-3.5-turbo
결과물은 '대화데이터인 CAMEL AI Society', 'CAMEL 코드 데이터 셋', '문제-해결 쌍 데이터인 CAMEL MATH 및 CAMEL Science'

50개의 assistant, 50개의 user, 그리고 각 조합에 대한 10개의 작업 총 50X50X10=25000개의 대화를 생성!

찾아보니까 AI society dataset이 huggingface에 올라와 있다!

이 과정에서 4가지의 도전 과제를 탐구했다.

  1. 역할 바꾸기(Role Flipping) : assisant가 user의 프롬프트를 따르지 않고 지시나 명령을 제공하기 시작할 때 일반적으로 발생! -> 보조자가 질문을 하지 않는 게 중요함

  2. 보조자 지시 반복(Assistant Repeats Instruction): 보조자가 단순히 사용자의 지시를 반복하는 것. -> 대화가 정체!!

  3. 산만한 응답(Flake Replies) : "I will....." 형식으로 산만한 응답을 하는 경우가 많았음. -> 보조자가 하겠다고 하지만 실제로 하지 않았기에 작업에 기여하지 않음

  4. 무한 메시지 루프(Infinite Loop of Messages) : 반복적인 작별인사나 감사 인사 -> 신기한 부분은 보조자와 사용자 모두 자신들이 루프에 빠져있다는 걸 !!알고 있는데도!! 탈출하지 못함

그럼 어떻게 종료해?

  1. 사용자의 지시가 없을 경우 대화 종료!
  2. 보조자가 사용자에게 오히려 지시를 제공하면 역할의 전환을 의미하기 때문에 대화 종료!
  3. <CAMEL_TASK_DONE>이라는 작업 완료 토큰! 사용자가 작업이 종료되었다고 느끼면 이걸 말해서 종료!
  4. Assistant & User 토큰 한도 초과
  5. 최대 메시지 수 : 40개로 설정함

Evaluation

Agent Evaluation

(1) 인간 평가, (2) GPT4 평가를 수행함.
어떤 해결책이 더 우수한지를 투표를 통해 평가!

  • AI Society 데이터셋에서는 CAMEL 에이전트가 인간 평가와 GPT4 평가 모두 높은 승리율!
  • Code 데이터셋에서도 CAMEL 에이전트가 76%의 승리를 기록!

GPT4를 위한 챗봇 평가

LLaMA 7B 모델을 생성된 데이터셋에 맞춰서 미세 조정!
처음에는 AI Society 데이터셋에서 교육을 시작해서 모델이 인간 상호 작용과 사회 역학에 대해 학습하도록 함.
그리고 점차 코딩 작업, 수학 작업, 과학 작업을 넣으면서 실험을 진행함.

이것이 이해가 안된다면

즉, 데이터셋을 추가할 수록 모델이 통합된 도메인에서 더 나은 성능을 보임을 알 수 있음

dataset이 많으면 많을 수록 좋다~~ 는 말인 것 같습니다!

Conclusion

  1. 의사소통 에이전트 간의 자율적인 협업 가능성을 탐구!
  2. 롤플레잉이라는 새로운 협력 에이전트 프레임워크 제안!

CAMEL이 보여준 가장 큰 의의는 '인간의 개입을 최소화하는 것'이라고 생각한다. User의 역할까지 AI에게 부여함으로서 빠르고 더 나은 결과물을 얻고자 하는 것이지.
그리고 여기서 task-specifier의 역할이 상당히 중요하지 않나 싶은데...

이렇게 간단한 프롬프트만으로도 괜찮은건가 싶기도 하다.

profile
얍얍

0개의 댓글