본문 바로가기
AI 도구

AutoGen: 토큰 과금 없는 100% 무료 대규모 언어 모델 협업 자동화

by James AI Explorer 2024. 2. 13.

목차

    728x90

    안녕하세요! 오늘은 AutoGen을 이용해서 다중 에이전트를 생성하고, 오픈소스 대규모 언어모델 도구인 Litellm과 Ollama를 활용해서 Mistral과 Codellama를 통해 에이전트들이 서로 협업하며 자동화된 작업을 수행하는 애플리케이션을 만들어 보겠습니다. 이 블로그에서는 OpenAI API 호출이나 토큰 과금 없이 AutoGen과 Litellm, Ollama를 이용한 다중 에이전트 설정과 대규모 언어 모델 간 협업시스템 구현방법에 대해서 확인하실 수 있습니다. 

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

     

    AutoGen 이란?

    AutoGen은 Microsoft와 Penn State 대학 및 Washington 대학의 협업 연구를 통해 개발되었으며, 다중 에이전트 대화를 통해 대규모 언어 모델 애플리케이션을 손쉽게 구축할 수 있도록 지원하는 프레임워크입니다. AutoGen을 사용하면 자연어 이해 및 자연어 생성 모델을 구축하고 훈련시킬 수 있으며, 이를 통해 대화 시스템을 구현할 수 있습니다.

     

    아래 그림은 AutoGen의 개념도입니다. 사용자 정의 가능하고 대화가능한 에이전트(Conversable agent)를 통해, 개발자들은 대화 자율성, 에이전트 수, 그리고 에이전트 대화 구조가 다양하고 유연한 대화 패턴을 구축할 수 있습니다.

    AutoGen은 복잡한 LLM 워크플로우의 조율, 자동화 및 최적화를 통해 LLM 모델의 성능을 극대화하고 약점을 극복할 수 있습니다. 

    Autogen 개념도

    AutoGen의 주요 기능은 다음과 같습니다. 

    • 다중 에이전트 대화: AutoGen 에이전트는 다중 에이전트가 서로 대화하여 과제를 해결할 수 있는 기능을 제공합니다. 이는 단일 LLM으로는 불가능한 보다 복잡하고 정교한 응용 프로그램을 가능하게 합니다. 
    • 다양한 대화 패턴: 에이전트의 대화 자율성, 에이전트 수 및 에이전트 대화 구조와 관련된 다양한 대화 패턴을 지원하여 복잡한 워크플로우를 처리합니다. 
    • 커스터마이제이션: AutoGen 에이전트는 응용 프로그램의 특정 요구에 맞게 사용자 정의할 수 있습니다. 이는 사용할 LLM의 선택, 허용되는 사용자 입력의 유형, 사용할 도구 등을 선택할 수 있는 능력을 의미합니다. 
    • 사용자 참여: AutoGen은 사용자의 참여를 원활하게 허용합니다. 이는 프로세스 실행 도중 사용자의 개입이 필요할 때 입력하고 피드백을 제공할 수 있음을 의미합니다.
    • 향상된 LLM 추론: API 통합 및 캐싱, 오류 처리, 다중 구성 추론, 컨텍스트 프로그래밍 등의 고급 사용 패턴을 지원합니다.

    AutoGen에서 사용되는 에이전트는 컴퓨터 프로그램이나 시스템으로서 특정 목적을 위해 동작하거나 상호 작용하는 개체를 가리킵니다. 에이전트 기반 작업은 전략적인 작업 분배, 대화 흐름 유지, 유연성과 상호작용을 강조할 때 유용합니다.

    Autogen에서 사용되는 에이전트의 개념은 다음과 같습니다. 

    • 'user_proxy' 에이전트: 'user_proxy' 에이전트는 사용자를 대신하여 다른 에이전트와 대화하는 역할을 합니다. 'user_proxy' 에이전트는 사람처럼 직접적인 입력이 없이 자동응답 모드로 동작하고, 사전에 정의된 규칙에 따라 대화를 진행하며, 설정된 최대 연속 자동응답 횟수를 초과하면 대화가 종료됩니다. 
    • 'assistant' 에이전트: 'assistant' 에이전트는 사용자와 대화하고 사용자의 질문이나 요구에 응답하는 역할을 합니다. 'assistant' 에이전트는 주어진 입력에 대해 인공지능 모델을 사용하여 자동으로 응답을 생성합니다. 모델에 대한 API 키, 기본 URL 등을 포함하는 'llm_config'를 통해 'assistant' 에이전트의 동작을 구성할 수 있습니다. 두 에이전트는 서로 상호작용하여 대화를 진행하며, 'user_proxy' 에이전트가 사용자를 대신하여 'assistant' 에이전트와 대화할 수 있도록 해줍니다. 이를 통해 사용자는 'user_proxy' 에이전트를 통해 'assistant' 에이전트와 대화할 수 있습니다. 
    반응형

    AutoGen, LiteLLM, Ollama 설치

    다음은 AutoGen과 LiteLLM, Ollama를 설치하는 단계입니다. 이 블로그의 모든 코드와 라이브러리 설치는 WSL(Windows Subsystem for Linux) 환경에서 실행되었습니다. 

    AutoGen 설치

    WSL 프롬프트에서 "python3.11 -m venv myenv" 명령어로 가상환경을 만들고 "source myenv/bin/activate" 명령어로 가상환경을 활성화한 다음, 아래 링크를 참조하여 "pip install pyautogen" 명령으로 AutoGen을 설치합니다. 단, 가상환경 이름을 "autogen"으로 하면 코드 실행 시 참조에러가 발생하므로 다른 이름으로 설정해야 합니다. 

    https://github.com/microsoft/autogen

     

    GitHub - microsoft/autogen: Enable Next-Gen Large Language Model Applications. Join our Discord: https://discord.gg/pAbnFJrkgZ

    Enable Next-Gen Large Language Model Applications. Join our Discord: https://discord.gg/pAbnFJrkgZ - microsoft/autogen

    github.com

    LiteLLM 설치

    다음은 LiteLLM 설치단계입니다. LiteLLM은 Ollama로 구동되는 대규모 언어 모델의 Python 웹 서버 환경을 구현하는 역할을 합니다. 아래 링크를 참고하여 WSL 프롬프트에서 "pip install litellm[proxy]" 명령으로 설치하면 됩니다. 

    https://litellm.vercel.app/docs/

     

    LiteLLM - Getting Started | liteLLM

    https://github.com/BerriAI/litellm

    litellm.vercel.app

    Ollama 설치

    Ollama의 설치는 아래 링크를 참고하시기 바랍니다. 

    2023.12.15 - [대규모 언어모델] - Ollama를 활용한 대규모 언어 모델 웹 인터페이스 만들기: Mistral 7B와의 대화

     

    Ollama를 활용한 대규모 언어 모델 웹 인터페이스 만들기: Mistral 7B와의 대화

    안녕하세요. 오늘은 내 컴퓨터에서 웹 인터페이스로 최신 언어모델과 대화하는 프로젝트에 도전해 보겠습니다. 이 블로그에서는 Ollama라는 오픈소스 도구를 이용해서 최신 인기 대규모 언어모

    fornewchallenge.tistory.com

    https://fornewchallenge.tistory.com/

    에이전트 웹 서비스 실행

    다음은 Mistral과 Codellama 언어모델이 에이전트 역할을 할 수 있도록 LiteLLM 웹 서비스를 실행하는 단계입니다. 아래 표에서 보듯이 Mistral은 http://localhost:8000를 통해서, Codellama는 http://localhost:31580을 통해서 각각, 'user_proxy' 에이전트 역할과 'assistant' 에이전트 역할을 수행하게 됩니다. 

    모델명 역  할 기   능 서비스 주소
    Mistral  'user_proxy' 에이전트 사용자 대화 및 작업관리 http://localhost:8000
    Codellama  'assistant' 에이전트 파이썬 코드 작성 http://localhost:31580

    Mistral 웹 서비스 실행

    Mistral 모델을 위한 웹 서비스는 WSL 프롬프트 상태에서 "litellm --model ollama/mistral" 명령으로 아래 화면과 같이 실행합니다. 명령을 실행하게 되면 http://localhost:8000 주소에서 API가 연동됩니다. 

    litellm --model ollama/mistral 실행화면

    LiteLLM을 통한 웹 서비스 실행 후 http://localhost:8000/ 주소로 접속하면 아래 화면과 같이 정상적으로 서비스가 실행된 것을 확인할 수 있습니다. 

    LiteLLM을 통한 웹 서비스 실행

    Codellama 웹 서비스 실행

    Codellama 모델을 위한 웹 서비스는 WSL 프롬프트 상태에서 "litellm --model ollama/codellama" 명령으로 아래 화면과 같이 실행합니다. 명령을 실행하게 되면 http://localhost:31580 주소에서 API가 연동됩니다. 서비스 포트는 자동으로 바뀔 수 있습니다. 

    litellm --model ollama/codellama 실행 화면

    "이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

    파이썬 코드 실행

    이 코드의 출처는 유튜브 Power Each AI Agent With A Different LOCAL LLM (AutoGen + Ollama Tutorial) 이며, AutoGen 라이브러리를 사용하여 두 개의 에이전트를 생성하고, 이들 간에 대화를 통해 사용자가 요청한 작업(1부터 100까지 숫자를 출력하는 파이썬 코드 작성 및 실행)을 수행하도록 하는 것입니다. 다음은 코드에 대한 설명입니다. 

    • 1. 라이브러리 임포트: 코드의 시작은 AutoGen 라이브러리를 임포트 하는 것으로, AutoGen은 자연어 처리 및 대화 시스템을 구축하는 데 사용되는 라이브러리입니다. AutoGen을 사용하면 자연어 이해 및 자연어 생성 모델을 구축하고 훈련시킬 수 있으며, 이를 통해 대화 시스템을 구현할 수 있습니다.
    • 2. AssistantAgent와 UserProxyAgent 생성: `AssistantAgent`와 `UserProxyAgent`를 생성합니다. `AssistantAgent`는 `Coder`라는 이름으로 생성되었으며, `llm_config`로 `codellama` 모델을 사용하는 설정이 지정되었습니다. `UserProxyAgent`는 `user_proxy`라는 이름으로 생성되었으며, `llm_config`로 `mistral` 모델을 사용하는 설정이 지정되었습니다.
    • 3. UserProxyAgent의 특성 설정: `UserProxyAgent`는 사용자 입력 모드가 "NEVER"로 설정되어 있어 사용자의 개입 없이 작동합니다. `max_consecutive_auto_reply`는 연속으로 자동 응답할 수 있는 최대 횟수를 나타냅니다. `is_termination_msg`는 메시지가 종료 메시지인지 여부를 판단하는 함수입니다. `code_execution_config`는 코드 실행 설정을 지정합니다. 여기서는 작업 디렉토리가 "web"로 설정되어 있습니다. `system_message`는 시스템 메시지로, 작업이 완료되었는지 여부를 확인하는 지침을 제공합니다.
    • 4. 작업 설정: `task` 변수에는 "Write a python script to output numbers 1 to 100 and then the user_proxy agent should run the script"(1부터 100까지 숫자를 출력하는 코드를 작성하고 실행)라는 작업이 설정되어 있습니다.
    • 5. 대화 시작: `user_proxy.initiate_chat(coder, message=task)`를 호출하여 `user_proxy` 에이전트가 `coder` 에이전트에게 작업 메시지를 전송하여 대화를 시작합니다. 이렇게 하면 `coder` 에이전트는 `codellama` 모델을 사용하여 작업을 수행하게 됩니다. `user_proxy` 에이전트는 `mistral` 모델을 사용하여 사용자와 상호작용하고 작업이 완료되었는지 확인합니다. 
    import autogen
    
    config_list_mistral = [
        {
            'base_url': "http://0.0.0.0:8000",
            'api_key': "NULL",
            'model': "ollama/mistral"
        }
    ]
    
    config_list_codellama = [
        {
            'base_url': "http://0.0.0.0:31580",
            'api_key': "NULL",
            'model': "ollama/codellama"
        }
    ]
    
    llm_config_mistral={
        "config_list": config_list_mistral,
    }
    
    llm_config_codellama={
        "config_list": config_list_codellama,
    }
    
    coder = autogen.AssistantAgent(
        name="Coder",
        llm_config=llm_config_codellama
    )
    
    user_proxy = autogen.UserProxyAgent(
        name="user_proxy",
        human_input_mode="NEVER",
        max_consecutive_auto_reply=10,
        is_termination_msg=lambda x: x.get("content", "").rstrip().endswith("TERMINATE"),
        code_execution_config={"work_dir": "web"},
        llm_config=llm_config_mistral,
        system_message="""Reply TERMINATE if the task has been solved at full satisfaction.
    Otherwise, reply CONTINUE, or the reason why the task is not solved yet."""
    )
    
    task="""
    Write a python script to output numbers 1 to 100 and then the user_proxy agent should run the script
    """
    
    user_proxy.initiate_chat(coder, message=task)

     

     

     

     

     

    코드를 실행하기전 "ollama serve" 명령어를 통해 Ollama 서비스를 구동하고, "ollama run mistral(codellama)" 명령어로 대규모 언어 모델을 풀링해서 로컬에 저장합니다.

    Ollama 서비스 구동 및 언어 모델 풀링 화면

    다음 화면은 파이썬 코드의 실행결과입니다. AutoGen을 통해 Mistral과 Codellama 두 에이전트가 서로 대화하며, 자동으로 사용자가 요청한 파이썬 코드를 작성하고, 실행하여 작업의 성공여부를 확인하는 것을 알 수 있습니다. 

    파이썬 코드 실행결과
    파이썬 코드 실행결과
    https://fornewchallenge.tistory.com/

    마치며

    오늘은 Autogen과 'user_proxy' 에이전트, 'assistant' 에이전트의 개념을 알아보고 AutoGen 및 LiteLLM의 설치 방법과 각 에이전트를 설정하고 웹 서비스를 실행하는 방법에 대해 살펴보았으며, 두 개의 에이전트를 생성하여 사용자가 요청한 작업을 수행하도록 하는 예시 코드를 통해 AutoGen 및 Ollama의 활용법을 알아보았습니다. 

     

    다중 에이전트 대화를 통해 대규모 언어 모델 애플리케이션을 손쉽게 구축할 수 있도록 지원하는 프레임워크인 AutoGen을 사용하여 여러분도 한번 자동화 작업을 만들어 보시면 어떨까요? 오늘 내용은 여기까지 입니다. 그럼 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다. 

     

     

    2024.02.12 - [AI 도구] - Ollama 업데이트! 이제 OpenAI API를 무료로 즐기세요!

     

    Ollama 업데이트! 이제 OpenAI API를 무료로 즐기세요!

    안녕하세요! 오늘은 대규모 언어 모델 활용도구인 Ollama의 OpenAI API 호환성 업데이트 소식을 전해드리겠습니다. ChatGPT를 만든 OpenAI의 API는 현재 1,000 토큰 당 $0.03(GPT-4)의 가격에 유료로 제공되고

    fornewchallenge.tistory.com

     

    반응형