본문 바로가기

Agent

[CAMEL] Communicative Agents for "Mind" Exploration of Large Language Model Society

■ chat-based language models의 발전으로 complex task-solving 능력이 크게 향상되었지만, 그 성과가 여전히 인간의 입력에 크게 의존하며, 이는 까다롭고 시간도 많이 소요될 수 있다.  

■ 논문에서는 인간이 계속 개입하지 않아도, 여러 communicative agent가 자율적으로 협력하여 과제를 수행할 수 있는가에 초점을 둔다. 이를 위해 저자들은 role-playing이라는 새로운 communicative agent framework를 제안한다.

[2303.17760] CAMEL: Communicative Agents for "Mind" Exploration of Large Language Model Society

 

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

The rapid advancement of chat-based language models has led to remarkable progress in complex task-solving. However, their success heavily relies on human input to guide the conversation, which can be challenging and time-consuming. This paper explores the

arxiv.org

 

1. Introduction

■ chat-based LLM은 complex task-solving에서 큰 진전을 이루었지만, 이러한 성공은 대화를 올바른 방향으로 이끌기 위한 인간의 개입에 크게 의존하고 있다.  

■ 이러한 의존성 때문에 사용자는 자신의 의도와 에이전트의 피드백을 고려하면서, 적절하고 정확한 프롬프트를 입력해 대화를 올바른 방향으로 이끌어야 한다.  

■ 이는 까다롭고, 시간이 많이 소요되며, 때로는 불가능할 수도 있다. 특정 지식 도메인에 대한 효과적인 프롬프트를 작성하려면, 해당 도메인에 대한 깊은 이해와 전문성이 필요한 경우가 많다.  

- 예를 들어 트레이딩 지식이 없는 사람이 트레이딩 애플리케이션을 만들도록 chat agent를 유도하는 프롬프트를 설계하기가 매우 어렵다. 

■ 이러한 문제의식은 인간 개입을 최소화하거나 대체할 수 있는 자율적인 communicative agent를 어떻게 만들 수 있는가로 이어진다. 

■ 저자들은 여러 에이전트가 서로 어떻게 상호작용하는지를 이해하는 것이 중요하다고 본다. 협력하는지, 경쟁하는지, 어떤 방식으로 역할을 나누는지 같은 에이전트 간 상호작용은 전체 AI 시스템의 성공 여부를 좌우할 수 있기 때문이다.  

■ 그러나 여러 에이전트에게 자율 협력을 맡기면 다양한 문제가 발생한다. 예를 들어 role flipping, instructions을 그대로 반복만 하는 문제, 무의미한 응답, 그리고 메시지의 무한 루프 등이 있다.  

■ 그러므로 단순히 여러 에이전트를 붙여 놓는 것만으로는 충분하지 않으며, 에이전트를 인간의 의도와 정렬시키고, 효과적으로 협력하도록 유도할 방법이 필요하다.  

■ 이 문제에 대해 저자들은, 에이전트 간의 협력을 자동화하는 "role-playing"이라는 cooperative agent framework를 제안한다.  

■ 이 방식은 자율적으로 에이전트들을 task completion 방향으로 이끌기 위해 inception prompting과 함께 role-playing을 사용한다. 여기서 중요한 점은, 인간이 처음부터 세부 지시를 계속 제공할 필요는 없고, 초기의 preliminary idea만 주면 된다는 것이다.  

■ 또한 자들은 role-playing이 단지 task를 해결하는 방법일 뿐 아니라, chat agent의 행동과 능력을 연구하기 위한 conversational data 생성 방법으로도 중요하다고 설명한다 

■ role-playing을 이용하면 task completion을 위해 chat agent들끼리 서로 소통하게 하고, 그 대화를 기록하여 agent의 행동과 능력을 분석할 수 있다.  

■ 저자들은 cooperative role-playing scenarios를 고려하여 task-oriented이고 instruction-following하는 large conversational datasets인 AI Society와 Code를 구축하였다. 

■ 또한 LLM 능력의 emergence를 연구하기 위해 프레임워크를 사용하여 single-turn question-answer datasets인 Math와 Science를 수집했다.  

■ 더 나아가, 정렬되지 않은 자율 에이전트 시스템의 잠재적 위험을 확인하기 위해, 가능한 악의적 애플리케이션의 시뮬레이션인 Misalignment dataset도 구축하였다.  

■ 이러한 데이터셋들은 conversational language model의 행동과 능력을 연구하는 데 유용한 실험 자원이 된다. 



2. Methodology

■ 논문에서는 communicative agents를 연구하되, 서로 공통의 관심사를 공유하는 cooperative settings에 초점을 맞춘다. 즉, 경쟁적인 상황이 아니라, 여러 에이전트가 같은 목표를 향해 함께 움직이는 내용을 다룬다.  

■ 특히 시작 시점에 preliminary idea가 주어지는 assistant-user scenario를 고려한다. 


2.1 Role-playing Framework

CAMEL ( Cooperative Role-playing Communication) 프레임워크의 role-playing approach 핵심은 서로 다른 역할을 맡은 상태에서 에이전트들이 상호작용한다는 점이다. (Fig 1) 

■ 구체적으로, 하나의 AI assistant와 하나의 AI user가 참여하는 task-oriented role-playing에 중점을 둔다. 

■ human user가 preliminary idea와 role을 배정하면, task-specifier agent가 그 아이디어를 구체화하기 위해 상세한 설명을 제공한다.  

■ 이후 AI assistant와 AI user는 AI user가 task가 완료되었다고 판단할 때까지 multi-turn 대화를 통해 상호작용을 계속한다.  

■ 이때 AI user는 AI assistant에게 instructions을 내리고 task completion 방향으로 이끄는 역할을 담당한다. 반면, AI assistant는 AI user의 instructions을 따르고 특정 solutions을 응답하는 역할을 맡는다. 

Human Input and Task Specifying

■ role-playing session은 인간이 제공한 아이디어와 선택한 roles을 바탕으로 시작된다.  

■ Fig 1은 인간이 주식 시장을 위한 트레이딩 봇을 개발하겠다는  preliminary idea를 가지고 있다. 인간은 이 아이디어를 실현시킬 수 있는 지식을 가지고 있을 수도 있고 없을 수도 있다. 이 아이디어를 구현할 수 있는 roles만 지정하면 된다.  

■ 예를 들어, Python Programmer는 Stock Trader와 협력하여 주식 시장 트레이딩 봇을 개발한다는 아이디어를 실현할 수 있다.  

■ idea와 roles이 결정되면, task specifier agent는 입력된 idea를 바탕으로 AI Assistant role이 AI user role과 함께 완료할 수 있는 specific task를 브레인스토밍한다. 

■ 예를 들어 "주식 시장 트레이딩 봇 개발"이라는 막연한 아이디어는, task specifier agent를 거쳐 "특정 주식에 대한 긍정적 또는 부정적 댓글을 모니터링하고 sentiment analysis 결과를 기반으로 거래를 실행하는 sentiment analysis tool을 가진 트레이딩 봇을 개발하라"처럼 훨씬 더 명시적인 task로 구체화된다.  

■ 저자들이 task specifier를 도입한 이유는, conversational agent는 일반적으로 task를 수행하기 위해 구체적인 task prompt를 필요로 한다. 그런데 이런 prompt를 비전문가가 직접 작성하는 것은 어렵고 시간도 많이 걸릴 수 있기 때문이다.  

■ 그래서 CAMEL에서는 task specifier agent가 그 역할을 인간 대신 수행한다.  

■ 참고로, AI society와 Code scenarios도 인간에 의존하는 대신 LLM을 프롬프팅하여 roles과 ideas을 자동으로 생성했다. Math 및 Science datasets의 경우에는 LLM을 프롬프팅하여  problem topics, subtopics, 그리고 problems을 자동으로 생성했다.  

AI Assistant-User Role Assignment

■ task specification 이후, task를 완료하기 위해 user agent와 assistant agent에게 각각 AI assistant role과 AI user role이 할당된다. 실제 구현에서는 각 에이전트에게 자신의 역할이 명시된 system message가 전달된다.  

■ assistant의 system prompt/message \( \mathcal{P}_A \), 그리고 user의 것을 \( \mathcal{P}_U \)라고 하자. system messages은 대화가 시작되기 전에 에이전트에게 전달된다.  

■ \( \mathcal{F}_1 \)과 \( \mathcal{F}_2 \)를 large-scale auto-regressive LM이라고 하자. 이 모델들에 각각 system message가 전달되면 \( \mathcal{A} \leftarrow \mathcal{F}_1^{\mathcal{P}_A} \)와 \( \mathcal{U} \leftarrow \mathcal{F}_2^{\mathcal{P}_U} \)를 얻게 된다. \( \mathcal{A} \)와 \( \mathcal{U} \)는 각각 assistant  agent와 user agent이다.  

■ Fig 1 예시에서 AI assistant와 AI user는 role-playing session 초기에 각각 Python Programmer와 Stock Trader의 역할을 맡는다.  

■ AI user는 task planner 역할을 수행하며, AI assistant가 실행할 수 있는 실행 가능한 steps을 결정하기 위해 interactive planning에 참여한다.  

■ AI assistant는 task executor 역할을 수행하며, 솔루션을 제공하고, planned된 steps을 실행하고, AI user에게 응답을 제공한다.   

■ 즉, CAMEL의 assistant-user 구조에는 계획을 세우는 에이전트와 그것을 실행하는 에이전트가 존재한다.  

Conversation Towards Task-Solving

■ 역할 할당이 완료된 후, AI assistant \( \mathcal{A} \)와 AI user \( \mathcal{U} \)는 instruction-following 방식으로 협력하여 task를 수행한다.  

■ AI assistant-user scenario에서 AI user는 instructions을 제공하고, AI assistant는 그 instructions을 충족하는 솔루션을 반환해야 한다.  

■ time \( t \)에서 user의 instruction message를 \( I_t \), assistant의 솔루션을 \( S_t \)라고 하자. time \( t \)까지 획득한 conversational messages의 기록은 식 (1)과 같이 instruction–solution 쌍들의 집합이 된다. 

■ next time step인 \( t + 1 \)에서 AI user \( \mathcal{U} \)는 \( t + 1 \) 시점 이전까지의 대화 기록 \( \mathcal{M}_t \)를 받아 식 (2)처럼 새로운 instruction \( I_{t+1} \)을 생성한다.  

■ 생성된 instruction message \( I_{t+1} \)은 기존 메시지 집합 \( \mathcal{M}_t \)와 함께 AI assistant에게 전달된다. 그러면 AI assistant는 이에 대한 솔루션 \( S_{t+1} \)을 생성한다.  

■ 이렇게 매 턴마다 user가 과거 상호작용을 참고해 다음 instruction을 설계하고, assistant가 그 instruction과 전체 대화 맥락을 고려해 응답하는 대화 루프가 구성된다.  

■ 새롭게 생성된 \( (I_{t+1}, S_{t+1}) \) 쌍은 다음과 같이 \( \mathcal{M}_t \)에 추가되며, 그 결과로 업데이트된 \( \mathcal{M}_{t+1} \)을 얻을 수 있다.  

■ 위의 수식들은 AI-AI communication scenarios뿐 아니라, human-AI communication이나 두 개 이상의 에이전트 사이의 communication으로도 쉽게 확장될 수 있다. message-passing graph를 사용하여 임의의 수의 에이전트 간의 communication을 모델링할 수 있다. 

■ Fig 1의 예시에서 AI user가 대화를 통해 AI assistant에게 지시함으로써 sentiment analysis 및 stock trading에 필수적인 Python libraries 설치 및 import를 시작하는 것을 볼 수 있다. 연속적인 instruction-following을 통해 문제를 점진적으로 해결한다.  

Critic-In-The-Loop

■ role-playing framework의 controllability를 높이기 위해, role-playing agents의 제안 중에서 하나를 선택하거나, 혹은 그들에게 피드백을 줄 수 있는 critic agent를 도입한다. 

이는 task-solving을 위한 tree-search와 유사한 의사결정을 가능하게 한다.  

■ 실제 구현에서 이 critic은 AI agent일 수도 있고 human일 수도 있다. (Appendix)


2.2 Inception Prompting

■ CAMEL의 role-playing framework에서 prompt engineering이 핵심적인 부분이다. 

■ 에이전트들이 자유롭게 협력하도록 할 경우, 앞서 살펴본 바와 같이 role flipping과 같은 문제가 발생할 수 있다. 이런 문제를 방지하고자, 대화가 시작되기 전에 역할이나 규칙 등을 충분히 잘 설정해 두어야 한다.  

■ 그래서 CAMEL에서 prompt engineering은 task specification과 role assignment을 위해 role-playing이 시작되는 시점에서만 이루어진다.  
- 대화가 시작되면 AI assistant와 AI user는 종료될 때까지 루프 내에서 자동으로 서로 프롬프팅한다. 

저자들은 이 테크닉을 Inception Prompting이라고 부른다. 초기 프롬프트 설계가 이후 전체 대화의 구조와 방향을 사실상 심어 놓기 때문이라고 이해할 수 있다.  

■ Inception prompt는 세 개의 프롬프트로 구성된다: task specifier prompt \( \mathcal{P}_T \), assistant system prompt \( \mathcal{P}_A \), 그리고 user system prompt \( \mathcal{P}_U \) 

■ 예를 들어 AI Society scenario의 inception prompt를 보면 (Fig 2는 AI Society role-playing을 위한 프롬프트들의 템플릿),  
- task specifier prompt는 role-playing session에서의 AI assistant와 AI user의 역할에 대한 정보를 포함하고 있다. 
- 그래서 assistant와 user의 역할을 고려할 수 있는 task specifier agent는 preliminary task/idea를 입력으로 받아 상상력을 사용하여 구체적인 task를 만들어 낼 수 있다.  
- AI assistant system prompt \( \mathcal{P}_A \)와 AI user system prompt \( \mathcal{P}_U \)는 대체로 대칭적이며, 할당된 task와 roles, communication protocols, termination conditions, 그리고 원치 않는 행동을 방지하기 위한 제약조건이나 요구사항이 포함된다.  

■ assistant와 user 역할을 위한 프롬프트 설계는 에이전트 간의 자율적인 협력을 달성하는 데 매우 중요하다. 에이전트가 인간의 의도와 정렬되어 행동하도록 만드는 프롬프트를 엔지니어링하는 것은 쉽지 않기 때문이다.  

■ 단순히 역할만 부여하면 role flipping, instruction 반복 같은 문제가 발생하기 쉽기 때문에, Fig 2처럼 프롬프트 내부에 alignment 장치를 세심하게 넣어야 한다.  

■ 참고로 Code scenario에 사용된 프롬프트는 AI society scenario와 비슷한 흐름을 따르지만, 프로그래밍 언어와 관련된 약간의 추가적인 엔지니어링이 적용된다. (Appendix) 

Prompt Engineering

■ 아래는 AI assistant system prompt의 다양한 구성 요소들을 예시로 들어, CAMEL에서 자율적 협력이 가능하도록 만들기 위해 system prompt를 어떤 의도로 설계했는지에 대한 내용이다.  

- (1) Never forget you are a <ASSISTANT_ROLE> and I am a <USER_ROLE>.

- 이는 역할 고정 장치로, assistant agent에게 역할을 할당하고, 동시에 user의 역할이 무엇인지도 함께 알려 준다.  

- (2) Never flip roles! Never instruct me!

- 이는 더 직접적으로 role flipping 문제를 방지하기 위한 규칙이다.  
- 논문에 따르면 실험에서 assistant가 갑자기 control을 쥐고 user에게 instructions을 내리며 user가 그 instructions을 따르는 등 assistant와 user의 역할이 전환되는 것을 관찰했다고 한다.  

- (3) You must decline my instruction honestly if you cannot perform the instruction due to physical, moral, legal reasons or your capability and explain the reasons. 

- 에이전트가 유해하거나, 거짓이거나, 불법적이거나, 오해의 소지가 있는 정보 생성을 금지하기 위한 것이다. 

- (4) Unless I say the task is completed, you should always start with: Solution: . should be specific, and provide preferable implementations and examples for task-solving. 

- assistant가 항상 일괸된 format으로 응답하도록 유도하고, 무의미한(애매하거나 불완전한) 응답을 방지하기 위해 사용한다. 

- (5) Always end your solution with: Next request.

- assistant가 해결할 새로운 instruction을 요청함으로써 대화가 계속 진행되도록 보장하는 장치이다.  

■ 저자들은 AI user system prompt는 가능한 한 assistant prompt와 대칭적으로 설계했다고 설명한다. 즉, 역할만 반대로 할당될 뿐, 전체적인 구조와 통제 원리는 유사하다.   

- (1) You must instruct me ... to complete the task ONLY in the following two ways: 1. Instruct with a necessary input: ...; 2. Instruct without any input: ... 

- 이는 전형적인 instruction-following 데이터 구조를 따르도록 하기 위한 설계이다. 

- 이렇게 생성된 (instruction, solution) 쌍은 LLM fine-tuning 데이터로 활용하기 쉽다.

- (2) 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>이라는 end-of-task token을 도입했다. 이 토큰은 user가 task가 끝났다고 판단할 때 사용된다. 이를 통해 user가 만족했을 때 채팅이 종료되도록 보장할 수 있다.  

- 즉, 이 토큰은 명시적인 종료 신호를 보내는 장치이다. 이 장치가 없으면 에이전트들은 서로 "thank you", "goodbye" 같은 말은 반복하면서 무한한 채팅 루프에 빠질 수 있다.  



3. Experiments

■ 두 개의 gpt-3.5-turbo agent(논문에서는 이를 간단히 LLM agents라고 부름)를 실험에 사용하며, assistant-user 협력을 시뮬레이션하기 위해 inception prompt를 적용했다.  

■ 저자들은 분석의 초점을 AI Society 설정에 두었으며, CAMEL AI Society 및 CAMEL Code 데이터셋이라는 이름의 conversational data와 CAMEL Math 및 CAMEL Science라는 이름의 problem-solution pairs data를 수집하고 그 품질을 분석 및 평가한다. 


3.1 Role-Playing for AI Society

저자들은 AI Society 데이터셋을 생성하기 위해, 일련의 단계를 따르는 확장 가능한 접근 방식을 개발했다. 

■ 첫 단계에서는 LLM agent에게 assistant와 user 각각에 대해 가능한 역할 후보들을 생성하도록 프롬프팅한다. 이를 위해 역할을 이끌어내도록 설계된 프롬프트를 사용한다. 

다음 단계에서는 그렇게 생성된 assistant와 user의 역할 조합을 바탕으로, 두 역할이 협력해서 해결할 수 있는 task들을 생성하도록 LLM agent에게 요청한다.   

■ 그리고 task specifier prompt를 LLM agent에게 전달하여 task를 더 구체적으로 만든다.  

■ 이런 방식으로 만들어진  AI society 데이터셋은 50개의 assistant 역할, 50개의 user 역할을 다루며, 각 역할의 조합에 대해 10개의 tasks을 생성하여 총 25,000개의 대화를 포함하고 있다. (Appendix) 

Challenges and Observations

■ 이렇게 생성된 데이터셋을 분석하는 과정에서 저자들이 발견한 네 가지 challenges은 다음과 같다.  

- (1) Role Flipping: assistant와 user가 대화 도중 서로의 역할을 뒤바꾸는 현상으로, 보통 assistant가 user에게 commands나 instructions을 내리기 시작할 때 발생한다. role flipping을 방지하려면 assistant가 질문자가 되지 않도록 해야 한다.  

- (2) Assistant Repeats Instruction: assistant가 user의 instructions을 해결하지 않고 그대로 반복하는 현상

- (3) Flake Replies: assistant가 "I will..." 같은 식으로 무의미한 응답을 하는 현상. 이러한 메시지는 assistant가 행동을 취하겠다고 약속만 하고 결국 실천에 옮기지 못하기 때문에, 결국 task-solving에 기여하지 못한다. 

- (4) Infinite Loop of Messages: assistant와 user가 task를 진전시키지 못한 채, (때로는 에이전트들이 자신이 루프에 갇혀 있음을 인지하면서도) 서로 계속해서 감사를 표하거나 작별 인사를 하는 등 무의미한 대화의 무한 루프에 빠지는 경우를 말한다.  

Termination Conditions

■ assistant와 user 간의 대화는 일관되고 정확한 데이터 생성을 보장하기 위해 specific format을 따르도록 설계되었다.  

user와 assistant 모두 각자의 역할과 책임을 준수하도록, 필요한 경우 채팅을 강제 종료하는 특정 조건들이 설정되었다. 이 조건들은 다음과 같다.  

- (1) User No Instruct: user가 3라운드 동안 assistant에게 instruct하지 않으면 대화가 종료된다. 

- (2) Assistant Instruct: assistant가 user에게 instruction을 제공하면 이는 역할 역전되었음을 나타내며, 대화가 종료된다. 

- (3) End of Task Token: user가 task가 해결되었다고 생각하면 task completion을 나타내기 위해 <CAMEL_TASK_DONE>을 출력해야 하며, 이 메시지가 수신되면 대화가 종료된다.  

- (4) Assistant&User Token Limit: gpt-3.5-turbo 모델에 토큰 수 제한이 있다는 점을 고려하여, assistant 또는 user가 token limit에 도달하면 대화가 종료된다.  

- (5) Maximum Number of Messages: 저자들은 생성되는 채팅의 비용을 통제하기 위해, 대화 메시지 수를 최대 40로 제한했다. 이 정도의 한도는 user와 assistant 간에 충분히 긴 대화를 보장하는 동시에, 생성 비용이 급증하는 것을 막기 위한 것이다.

- 비용은 대화의 길이에 따라 quadratically 형태로 증가하므로 한도를 설정하는 것이 필수적이다.  



4. Evaluation


4.1 Agent Evaluation

CAMEL의 성능을 평가하기 위해, Human evaluation과 GPT4 evaluation라는 두 가지 유형의 평가를 수행한다.  

■ 평가를 위해 AI Society dataset에서 100개의 tasks, Code dataset에서도 100개의 tasks을 무작위로 선택한다.  

그런 다음, GPT4 model을 사용하여 CAMEL의 conversation-based solution 내용을 요약하여, 하나의 최종 솔루션으로 정리한다.  
- GPT4를 사용한 이유는 token limit가 더 커서 긴 대화를 요약하기에 적합했기 때문이라고 한다. 

■ 이렇게 요약을 거치면 CAMEL의 솔루션이 원래 multi-turn conversation에서 나왔다는 사실이 형식상 드러나지 않게 되어, 동일한 task에 대해 다른 모델이 single-shot으로 생성한 솔루션과 비교할 수 있다.  

Human Evaluation

■ 이 평가를 위해 CAMEL의 요약된 solution과 gpt-3.5-turbo의 single-shot solution을 인간 평가자들에게 제시하되, solution이 어느 모델에서 나온 것인지는 숨긴다.  

그리고 인간 평가자들에게 두 솔루션 중 어느 쪽이 더 우수한지, 혹은 둘이 비슷한지를 투표하도록 요청한다. 이 평가에서 총 453개의 응답을 수집했다.   

■ 다만 human evaluation은 AI Society에 대해서만 수행되는데, 코드 평가의 경우 코드를 실행해 보지 않고서는 코드의 품질을 인간이 평가하는 것이 일반적으로 더 어렵기 때문이다.  

GPT4 Evaluation

■ 각 task에 대해 Model 1 (CAMEL Agent solution) vs Model 2 (gpt-3.5-turbo single-shot solution)의 effectiveness를 평가하기 위해 GPT4 agent를 사용한다.  

■ 구체적으로, GPT4 agent에게 두 솔루션 중 어떤 솔루션이 더 나은지 채점하고 결정하도록 프롬프팅한다.  

Results

■ CAMEL 솔루션이 human evaluation과 GPT4 evaluation 모두에서 큰 격차로 gpt-3.5-turbo single-shot solution을 큰 차이로 능가한다.  


4.2 GPT4 for ChatBot Evaluation

CAMEL framework가 단순히 다중 agent 협력으로 해법을 생성하는 데 그치지 않고, 그렇게 생성한 데이터셋이 실제 언어모델 학습에도 유용한가를 검증한다.  

■ 저자들은 이를 위해 생성한 데이터셋을 기반으로 LLaMA 7B 모델을 점진적으로 fine-tuning한다. AI Society, Code, Math, Science처럼 서로 다른 성격의 데이터셋을 점진적으로 통합함으로써, fine-tuned model에서 도메인별 능력이 점차 발현되는 것을 기대한 것이다.  

처음에 모델이 human interactions과 societal dynamics을 배우도록, AI society 데이터셋에 대한 훈련으로 시작한다.  

■ 그다음 Code 데이터셋을 추가하면, 모델은 프로그래밍 로직과 문법에 대한 이해를 얻게 되어 더 일관되고 실행 가능한 코드 조각을 생성할 수 있게 된다.  

이어서 Math 데이터셋을 포함하면, 복잡한 방정식 풀이, 추상 개념에 대한 추론, 정밀한 계산 능력이 강화된다. 

■ 마지막으로 Science 데이터셋까지 더하면, 과학 이론, 경험적 관찰, 실험 방법론 같은 과학적 지식에 대한 이해가 넓어진다. 

모델은 20개의 AI Society 관련 task, 20개의 코딩 task, 20개의 수학 task, 60개의 과학 task에서 테스트된다. 평가 방식은 4.1을 따라 GPT4 agent를 사용한다.  

■ 데이터셋을 추가할 때마다 도메인에서 성능이 대체로 향상되며(Table 2), 코드 데이터셋으로 학습했을 때 과학 능력이 향상되는 것과 같이, 일부 경우에는 다른 도메인에 대한 성능 향상으로 이어지는 경우가 있는데, 저자들은 Code 데이터셋 안에 특정 과학 영역의 문제를 해결하는 내용이 포함되어 있기 때문이라고 설명한다.  

■ 유사하게, AI Society에는 "프로그래머"의 역할이 포함되어 있어 코딩 관련 대화가 포함되어 있기 때문에 AI Society에 대한 학습이 코딩 능력을 향상시켰다고 주장한다.  


4.3 HumanEval(+)

CAMEL model(fine-tuned LLaMA-7B)이 coding task-solving 능력 향샹에도 도움이 되는지, 즉 CAMEL로 생성한 데이터가 도움이 되는지 평가하기 위해 CAMEL model을 HumanEval과 HumanEval+ 벤치마크에서 평가한다. 

■ Table 3에서 볼 수 있듯이, CAMEL model은 LLaMA-7B뿐만 아니라 Vicuna-7B도 큰 격차로 능가한다.  

이러한 결과는 coding-related tasks을 처리하는 모델의 능력을 향상시키는 데 있어, CAMEL framework를 통해 생성된 데이터셋이 해당 능력을 강화하는 데 중요한 역할을 했다고 해석할 수 있다.