본문 바로가기
AI 언어 모델

CrewAI를 이용한 대규모 언어 모델 Solar와 Hermes의 협업 프로젝트

by James AI Explorer 2024. 1. 7.

목차

    728x90

    안녕하세요! 오늘은 CrewAI라는 도구를 이용해서 국산 대규모 언어 모델 Solar와 Mistral 7B의 미세조정 모델인 Hermes의 협업 프로젝트를 만들어 보겠습니다. CrewAI는 인공 지능(AI) 에이전트에게 역할을 할당하고 목표를 공유하며 상호 작용하도록 조직화하는 데 사용되는 프레임워크입니다. 이 블로그에서는 Langchain과 Ollama를 통한 오픈소스 LLM 활용법CrewAI를 이용한 두 언어 모델의 협업 프로젝트에 대해 확인하실 수 있습니다. 자, 그럼 출발하실까요?

    국산 대규모 언어 모델 솔라 와 Mistral 7B의 미세조정 모델인 헤르메스의 협업 프로젝트

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

    CrewAI?

    CrewAI는 깃허브에 공개되어 있는 프레임워크로, 공동의 목표를 위해 상호 작용하는 인공 지능(AI) 에이전트를 조직화하는 데 사용됩니다. 이 프레임워크는 협업 지능을 키워 다양한 작업에 대처할 수 있도록 하는 것을 목표로 하며, 특히 복잡한 작업에 대한 솔루션을 찾는 데 중점을 둡니다.

    CrewAI의 주요 특징은 다음과 같습니다:

    • 역할 기반 에이전트 디자인: CrewAI를 사용하면 특정 역할, 목표 및 도구를 가진 인공 지능(AI) 에이전트를 사용자 정의할 수 있습니다.
    • 자율적인 에이전트 간 위임: 에이전트들은 작업을 자율적으로 위임하고 서로에게 문의할 수 있어 문제 해결 효율성을 향상시킵니다.
    • 유연한 작업 관리: 사용자는 사용자 정의 도구로 작업을 정의하고 동적으로 에이전트에 할당할 수 있습니다.
    • 로컬 모델 통합: CrewAI는 Ollama와 같은 도구를 통해 로컬 모델과 통합할 수 있어, 특수한 작업이나 데이터 프라이버시에 관한 고려 사항에 유용합니다.
    • 프로세스 기반 작업: 현재는 순차적인 작업 실행을 지원하고 있으며, 추후에는 합의 및 계층적인 프로세스와 같은 더 복잡한 프로세스도 지원할 예정입니다.

    CrewAI는 개발과 프로덕션 워크플로에 맞게 유연하게 구축되어 있으며, 프로젝트에 대한 자세한 내용과 사용 방법은 해당 GitHub 리포지토리에서 찾을 수 있습니다.

     

    CrewAI 및 종속성 설치

    먼저 CrewAI 설치단계입니다. CrewAI는 아래 깃허브 링크를 참조하여 가상환경을 생성한 후, 활성화한 상태에서 "pip install crewai"명령을 통해 간단하게 설치하실 수 있습니다. 이번 프로젝트는 아직 윈도우 운영체제를 정식으로 지원하지 않는 Ollama를 활용하기 때문에 가상환경 생성과 활성화 모두 WSL(Windows Subsystem for Linux) 프롬프트에서 진행하여야 합니다. WSL 프롬프트에서 가상환경 생성은 "python3.11 -m venv myenv", 활성화는 "source myenv/bin/activate" 명령어를 입력하면 됩니다. 

    https://github.com/joaomdmoura/crewAI

     

    GitHub - joaomdmoura/crewAI

    Contribute to joaomdmoura/crewAI development by creating an account on GitHub.

    github.com

    WSL 프롬프트를 통한 가상환경 생성과 활성화
    CrewAI 설치

    다음은 코드 실행을 위한 종속성 설치입니다. 아래에 텍스트 내용을 복사해서 원하는 폴더에 requirements.txt라는 이름으로 파일을 만든 다음 가상환경이 활성화된 WSL 프롬프트에서 "pip install -r requirements.txt" 명령어로 종속성을 설치해 줍니다. 

    unstructured
    langchain
    Jinja2>=3.1.2
    click>=7.0
    duckduckgo-search
    반응형

    Hermes 언어모델 설치

    다음은 대규모 언어 모델 Hermes 설치 단계입니다. Hermes는 GPT-4에서 생성된 데이터 1,000,000개와 AI 분야의 다양한 고품질 데이터를 포함한 여러 데이터셋을 기반으로 Mistral 7B를 미세조정한 모델이며, 아래 벤치마크 결과의 빨간색 막대그래프에서 보듯이 현재 대부분의 Mistral 7B 미세조정 모델의 성능을 능가합니다.

    대규모 언어 모델 Hermes를 로컬로 가져오기 위해 WSL프롬프트에서 "ollama run openhermes" 명령어로 풀링 합니다. 

    Ollama를 이용한 대규모 언어 모델 헤르메스 설치

    파이썬 코드 실행하기

    다음 파이썬 코드 실행단계입니다. 아래의 코드는 `crewai` 프레임워크를 사용하여 AI 에이전트들을 정의하고 작업을 관리하는 예시를 보여줍니다. 여기서 사용된 코드는 두 개의 에이전트(`researcher`와 `writer`)를 각각 Hermes와 Solar에게 정의하고, 각 에이전트에 대한 작업(`task1, 조사`와 `task2, 블로그 작성`)을 생성한 다음, 이들을 `Crew` 객체에 추가하여 시퀀셜한 프로세스로 실행하는 예시입니다.

    • 1. 에이전트 정의: `researcher`: 고급 연구 분석가 역할을 하는 에이전트로, AI 및 데이터 과학의 최신 동향을 파악하는 것이 목표입니다. DuckDuckGo 검색 도구를 사용하여 정보 수집이 가능합니다. `writer`: 기술 콘텐츠 전략가 역할을 하는 에이전트로, 기술 발전에 대한 흥미로운 블로그 글을 작성하는 것이 목표입니다. 블로그 글 작성 작업에 대리인에게 위임할 수 있습니다.
    • 2. 작업 정의: `task1`: `researcher`가 수행하는 첫 번째 작업으로, 2024년의 AI 최신 동향을 분석하고 키 트렌드, 돌파 기술, 산업 영향을 보고서로 컴파일합니다. `task2`: `writer`가 수행하는 두 번째 작업으로, `researcher`의 보고서를 기반으로 가장 중요한 AI 발전사항을 강조하는 블로그 글을 작성합니다. 이 블로그 글은 기술에 익숙한 대상 독자를 대상으로 해야 하며, 미래에 대한 함축적인 내용을 담아야 합니다.
    • 3. Crew 및 프로세스 설정:`Crew`: `researcher`와 `writer`를 멤버로 갖는 크루를 정의합니다. `Process.sequential`: 작업이 순차적으로 실행되는 프로세스를 사용합니다. 이전 작업의 결과는 다음 작업에 추가 콘텐츠로 전달됩니다.
    • 4. 크루에게 작업 시작 명령: `crew.kickoff()`: 크루에게 작업을 시작하도록 명령합니다.
    • 5. 결과 출력: 크루가 작업을 마치면 결과를 출력합니다. 코드에서는 간단한 구분선을 출력하고, 크루의 작업 결과를 출력합니다.

    이 코드는 협업하는 AI 에이전트들을 정의하고 작업을 조직화하는 간단한 예시입니다. 작업이나 에이전트의 역할 및 목표를 변경하거나 다양한 프로세스를 실험하려면 이 코드를 수정하여 사용할 수 있습니다.

    import os
    from crewai import Agent, Task, Crew, Process
    
    from langchain.llms import Ollama
    ollama_openhermes = Ollama(model="openhermes")
    ollama_solar = Ollama(model="solar")
    
    # Define your tools, custom or not.
    # Install duckduckgo-search for this example:
    # pip install -U duckduckgo-search
    from langchain.tools import DuckDuckGoSearchRun
    search_tool = DuckDuckGoSearchRun()
    
    # Define your agents with roles and goals
    researcher = Agent(
      role='Senior Research Analyst',
      goal='Uncover cutting-edge developments in AI and data science in',
      backstory="""You are a Senior Research Analyst at a leading tech think tank.
      Your expertise lies in identifying emerging trends and technologies in AI and
      data science. You have a knack for dissecting complex data and presenting
      actionable insights.""",
      verbose=True,
      llm=ollama_openhermes,
      allow_delegation=False,
      tools=[search_tool]
    )
    writer = Agent(
      role='Tech Content Strategist',
      goal='Craft compelling content on tech advancements',
      backstory="""You are a renowned Tech Content Strategist, known for your insightful
      and engaging articles on technology and innovation. With a deep understanding of
      the tech industry, you transform complex concepts into compelling narratives.""",
      verbose=True,
      llm=ollama_solar,
      allow_delegation=True
    )
    
    # Create tasks for your agents
    task1 = Task(
      description="""Conduct a comprehensive analysis of the latest advancements in AI in 2024.
      Identify key trends, breakthrough technologies, and potential industry impacts.
      Compile your findings in a detailed report.""",
      agent=researcher
    )
    
    task2 = Task(
      description="""Using the insights from the researcher's report, Write an engaging blog
      post that highlights the most significant AI advancements.
      Your post should be informative yet accessible, catering to a tech-savvy audience.
      Aim for a narrative that captures the essence of these breakthroughs and their
      implications for the future.""",
      agent=writer
    )
    
    # Instantiate your crew with a sequential process
    crew = Crew(
      agents=[researcher, writer],
      tasks=[task1, task2],
      verbose=2,# Crew verbose more will let you know what tasks are being worked on, you can set it to 1 or 2 to different logging levels
      process=Process.sequential # Sequential process will have tasks executed one after the other and the outcome of the previous one is passed as extra content into this next.
    )
    
    # Get your crew to work!
    result = crew.kickoff()
    
    print("######################")
    print(result)

    다음은 Hermes가 2024 AI기술의 트렌드를 조사한 내용을 Solar가 블로그로 작성한 코드 실행결과 화면입니다. 

    DuckDuckGo 검색 도구로 2024년의 AI 최신 동향을 분석하는 researcher

    다음은 researcher 역할을 한 Hermes가 응답한 내용 중 일부입니다.

    덕덕고 검색에서 수집된 정보에 따르면 2024년 AI의 주요 트렌드 및 획기적인 기술 중 일부는 멀티모달 AI, 
    맞춤형 기업 모델, 오픈 소스 AI 및 생성 AI의 지속적인 발전을 포함한다. 
    생성 AI는 기술자가 아닌 개인에게 더 유용해질 것으로 예상되며 다양한 AI 모델을 실험하는 사람들이
    증가할 것으로 예상된다. 회사는 AI 스타트업에 많은 투자를 해왔고, 이는 이 분야에서 상당한 발전을 이끌었다. 
    2024년은 많은 흥미로운 혁신과 사회적 영향이 지평선에 있는 AI의 또 다른 성공적인 한 해가 될 것이다.

     

    다음은 writer 역할을 한 Solar가 Hermes가 조사한 자료를 바탕으로 응답한 내용입니다.

    Solar가  Hermes가   조사한 자료를 바탕으로  응답한 내용

    최종 답변: 멀티모달 AI, 오픈 소스 AI 및 맞춤형 엔터프라이즈 모델에 대한 추가 통찰력을 제공하기 위해
    이러한 각 트렌드에 대해 자세히 알아보겠습니다. 
    
    먼저, 멀티모달 AI기술은 의료 및 로봇 공학과 같은 산업에 혁명을 일으킬 가능성이 있습니다. 
    오디오, 비디오 및 텍스트와 같은 다양한 유형의 데이터 입력을 처리할 수 있는 능력으로 멀티모달 AI는 
    인간과 로봇 간의 상호 작용의 발전뿐만 아니라 의료 진단 및 치료 계획의 획기적인 발전으로 이어질 수 있습니다. 
    
    오픈 소스 AI는 최근 몇 년 동안 주목을 받은 중요한 트렌드입니다. 이 접근 방식은 개발자들이 자유롭게 접근하고 
    코드에 기여할 수 있도록 함으로써 협업, 혁신 및 투명성을 장려합니다. 오픈 소스 AI는 이 기술에 투자하는 회사들에게
    더 빠른 개발 주기와 비용 절감으로 이어질 수 있습니다. 
    
    마지막으로, 맞춤형 기업 모델은 AI 분야의 또 다른 핵심 트렌드를 나타냅니다. 이러한 모델은 특정 비즈니스 요구에 
    맞게 조정되었으며 이를 채택하는 회사에 경쟁 우위를 제공할 가능성이 있습니다. 빅 테크 기업의 투자 증가로 미래에는 
    훨씬 더 많은 맞춤형 AI 솔루션을 볼 수 있을 것으로 예상됩니다. 
    
    전반적으로 이러한 추세는 AI 분야의 흥미로운 혁신을 나타내며, AI는 계속 성장하고 다양한 산업에 심오한 방식으로 
    영향을 미칠 것으로 예상됩니다.

    https://fornewchallenge.tistory.com/

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

    마치며

    오늘은 CrewAI를 활용하여 국산 대규모 언어 모델인 Solar와 Mistral 7B의 미세조정 모델인 Hermes를 협업시켜 보았습니다. CrewAI는 역할 기반 에이전트 디자인, 자율적인 에이전트 간 위임, 유연한 작업 관리 등의 특징을 가진 프레임워크로, 복잡한 작업에 대한 효과적인 솔루션을 제공합니다. 이를 통해 우리는 두 강력한 언어 모델을 협업하여 AI 기술의 최신 동향을 조사하고, 그 결과물을 블로그로 작성하는 과정을 확인해 보았습니다.

     

    CrewAI를 사용하면 다양한 역할과 목표를 가진 에이전트들을 유연하게 구성할 수 있습니다. 또한, 로컬 모델인 Ollama를 통합하여 특정 작업이나 데이터 프라이버시에 대한 고려 사항을 고려할 수 있습니다. 프로세스 기반의 작업 처리를 통해 작업을 효율적으로 조직화하고, 에이전트들 간의 협업을 원활하게 진행할 수 있습니다.

     

    앞으로도 CrewAI와 같은 다양한 도구를 통해 작업을 효율적으로 관리할 수 있는 솔루션이 더 많이 생성되기를 기대하면서 저는 다음에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다!

     

     

    2023.12.30 - [대규모 언어모델] - 허깅페이스 1위 Solar 10.7B와 Autogen으로 대화하기 : feat. Mistral 7B

     

    허깅페이스 1위 Solar 10.7B와 Autogen으로 대화하기 : feat. Mistral 7B

    안녕하세요! 오늘은 허깅페이스의 오픈소스 LLM 리더보드에서 당당하게 1위를 차지하고 있는 우리나라 스타트업 "업스테이지"의 대규모 언어 모델 "Solar"와 대화를 해보겠습니다. 이번 프로젝트

    fornewchallenge.tistory.com

     

    반응형