Ollama + llama3 + AutoGen
이번 글에서는 Ollama와 AutoGen을 사용하여 AI 에이전트를 만드는 방법을 설명하겠습니다.
AI 에이전트는 사람의 개입 없이 AI들끼리 대화를 나누고 논의한 결과를 제공하는 시스템입니다.
이 기능을 구현할 수 있는 프레임워크가 바로 Microsoft의 AutoGen입니다.
https://github.com/microsoft/autogen
공식사이트에 따르면,
AutoGen은 AI 에이전트를 구축하고 여러 에이전트 간의 연계를 촉진하여 작업을 해결하기 위한 오픈 소스 프로그래밍 프레임워크입니다.AutoGen은 PyTorch가 딥러닝에서 수행하는 것처럼 에이전트 AI 개발과 연구를 효율화하는 것을 목적으로 합니다.AutoGen은 서로 대화할 수 있는 에이전트, 다양한 대규모 언어 모델(LLM) 사용 및 도구 사용 지원, 자율형 및 인간 참여형 워크플로우, 다중 에이전트 대화 패턴 등의 기능을 제공합니다.
>>> 실행 결과
대한민국에 대해서 물어봤는데, 영어로 엄청나게 자세히 설명해주었습니다.
이 튜토리얼은 인간의 피드백을 주거나 exit 입력하기 전까지 계속해서 AI Agent 와 대화를 하는 것입니다.
이것은 기존 ChatGPT 와 다를바가 없어서, 퀵하게 넘어가겠습니다. ^^
다음은 우리가 원하는 AI 끼리의 대화를 만들어보도록 하겠습니다.
이제 두 에이전트가 대화를 나누는 패턴을 만들어 보겠습니다.
이번 튜토리얼에서는 'ConversableAgent'를 사용해 두 명의 에이전트를 정의할 것입니다.
하나는 대학생 에이전트, 다른 하나는 교수 에이전트입니다.
소스는 다음과 같습니다.
>>> 실행 결과
간단하게 소스를 설명하면,
name: 에이전트의 이름을 설정합니다.
system_message: 각 에이전트의 역할을 설정할 수 있습니다.
llm_config: LLM(언어 모델)의 설정 항목입니다. 참고로, 'config_list'로 다양한 LLM을 에이전트별로 할당할 수 있습니다. ollama 에 설치된 모델명을 적으면 됩니다.
max_turns: 대화를 몇 번 반복할지 설정할 수 있습니다. (2번 반복함)
summary_method="reflection_with_llm": 대화 내용을 요약할 때 사용하는 방법입니다.
지원되는 문자열은 "last_msg" 및 "reflection_with_llm"입니다.
"last_msg"로 설정하면 대화 상자의 마지막 메시지가 요약으로 반환됩니다.
"reflection_with_llm"으로 설정하면 llm 클라이언트를 사용하여 추출한 요약을 반환합니다.
그리고, initiate_chat 함수는 대화를 시작할 에이전트를 선택 할 수 있습니다. 이 소스에서는
teacher_agent 부터 시작했습니다. 한글로 "마틴루터의 종교개혁" 에 대해서 물어봤는데,
Teacher -> Student -> Teacher 순으로 대화가 2턴이 이루어진 것을 볼 수 있습니다.
사용한 llama3.2 의 경우 ChatGPT에 비해 아직 한글 출력이 어색하기에 감안해서 살펴봐야 합니다.
그럼에도 나름 agent 끼리 대화를 잘 수행한 것을 볼 수 있습니다.
AutoGen에는 3가지 유형의 Agent 이 있습니다.
* ConversableAgent : AutoGen에서 가장 일반적인 기능으로 다른 에이전트와 대화하는 기능을 가지고 있습니다. 설정에 의해 인간이 회답을 할 수도 있습니다.
* AssistantAgent : AI 어시스턴트로서 기본적으로 LLM을 사용하여 대화를 합니다.
* UserProxyAgent : 사용자 대리 에이전트. 인간의 답변을 요구하거나 코드 실행도 할 수 있습니다.
간단하게나마 Autogen 에 대해서 알아보았습니다. AI Agent 끼리 계속 대화를 하다보면 어떤 결과가 나올 지 매우 궁금한데요. 로컬에서 ollama 와 라마3를 사용해서 해 보았기에 비용 발생의 걱정없이 진행했습니다. 이걸 gpt4o 같은 것으로 수십번 돌렸다가는 비용이 어마어마하게 발생할 거 같습니다.
(다들 조심하시길 ^^)
마지막으로, AI Agent 프레임워크로 향후 활용 방법이 무척 기대가 됩니다. 감사합니다. :)