본문 바로가기
카테고리 없음

CrewAI: Llama2, Mistral, Orca2 협업으로 2024년 AI 트렌드 분석

by James AI Explorer 2024. 1. 17.

목차

    728x90

    안녕하세요! 오늘은 최근 핫한 AI도구인 CrewAI와 LM Studio, Ollama, JanAI LLM도구를 활용해서 Llama2, Mistral, Orca2 대규모 언어 모델의 협업을 통해 2024년 AI 기술트렌드에 대한 블로그를 자동으로 작성하는 프로젝트를 진행해 보겠습니다. 다양한 LLM 도구와 대규모 언어모델이 등장하는 이 블로그를 통해 CrewAI와 대규모 언어 모델 도구 LM Studio, Ollama, JanAI의 설치와 사용방법 등에 대해서 확인하실 수 있습니다. 

    CrewAI: Llama2, Mistral, Orca2 협업으로 2024년 AI 트렌드 분석

    프로젝트 개요

    이 프로젝트는 가상의 연구 팀을 생성하고 각 팀원에게 특정 작업을 할당하여 2024년의 AI 기술 동향을 찾고, 데이터에서 핵심 인사이트를 도출하며, 블로그 콘텐츠를 작성하는 워크플로우를 구현합니다. 이 프로젝트의 출처는 유튜브 CrewAI: AI-Powered Blogging Agents using LM Studio, Ollama, JanAI & TextGen이며, 내용 중 Text Generation Web UI는 생략하고 일부 내용은 수정하였습니다. 다음은 가상 연구 팀을 구성하는 대규모 언어 모델과 각각의 역할을 정리한 표입니다. 

    대규모 언어 모델 역할 실행도구 임무
    Llama-2-7B-Chat-GGUF 선임연구원 LM Studio 2024년 획기적인 AI 기술 발굴
    Mistral-ins-7B-q4 인사이트 연구원 Jan AI 주요 통찰력 알아보기
    Orca 2-7B 블로그 작성자 Ollama 기술 발전에 대한 매력적인 콘텐츠 제작

     

    Llama2선임연구원으로 2024년에 가장 획기적으로 발전할 AI 기술을 발굴하는 역할을 하고, Mistral인사이트 연구원으로 발굴된 기술에 대해 인사이트를 찾습니다. Orca2는 선정된 AI 기술에 대해 블로그를 작성하는 역할을 합니다. 

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

    LM Studio, Ollama, JanAI 설치

    다음은 대규모 언어모델 활용도구인 LM Studio, Ollama, JanAI 설치단계입니다. 

    먼저, LM Studio(https://lmstudio.ai/)는 로컬 LLM의 검색, 다운로드, 실행 기능을 제공하는 플랫폼으로, 다양한 운영체제를 지원하며, 여러 가지 버전의 양자화된 대규모 언어 모델을 로컬에서 활용할 수 있도록 해줍니다. 아래 링크를 통해 간단하게 LM Studio를 설치하실 수 있습니다. Ollama가 윈도우 버전을 아직 지원하지 않기 때문에 이 프로젝트는 Visual Studio Code의 WSL : Ubuntu에서 진행되므로,모델간의 협업과 호환성을 위해서 LM Studio도 Linux 버전으로 설치합니다.

     

    설치 시 LM+Studio-0.2.8-beta-v1.AppImage 파일을 다운로드한 후, WSL 프롬프트 상에서 "chmod +x LM+Studio-0.2.8-beta-v1.AppImage" 명령어로 파일에 실행 권한을 부여하고, "./LM+Studio-0.2.8-beta-v1.AppImage --no-sandbox"의 명령어로 --no-sandbox 옵션을 사용하여 샌드박스 기능을 비활성화상태로 AppImage를 루트 권한으로 실행합니다. 
    설치가 완료되면, 좌측 메뉴에서 돋보기 모양을 클릭한 후, 
    검색 창에 Llama2를 입력하고 호환 가능한 모델을 다운로드합니다. 저는 llama 2 chat 7B q3_k_m.gguf 모델을 다운로드하였습니다.

    LM Studio 홈페이지

    다음은 LM Studio에 대한 설명입니다. 

    • 완전히 오프라인으로 LLM 실행: LM Studio를 사용하면 인터넷 연결이 필요하지 않은 상태에서 대형 언어 모델(Large Language Models, LLMs)을 실행할 수 있습니다. 이는 오프라인 작업이나 제한된 인터넷 액세스 환경에서 작업하는 사용자들에게 유용합니다.
    • 인앱 챗 UI 또는 OpenAI 호환 로컬 서버 연결: LM Studio를 통해 제공되는 언어 모델을 인앱 챗 사용자 인터페이스(UI)를 통해 또는 OpenAI 호환 로컬 서버에 연결하여 사용할 수 있습니다. 이는 사용자의 선호도나 요구에 따라 다양한 액세스 방법을 제공합니다.
    • HuggingFace 저장소 호환 모델 파일 다운로드: LM Studio는 Hugging Face 저장소에서 호환되는 모델 파일을 다운로드할 수 있도록 지원합니다. Hugging Face는 다양한 자연어 처리(NLP) 모델을 제공하는 플랫폼으로, LM Studio 사용자는 해당 플랫폼에서 호환되는 Llama 2, Orca, Vicuna와 같은 모델을 액세스 하고 다운로드할 수 있습니다.
    • 앱 홈페이지에서 LLM 탐색: 앱의 홈페이지에는 새롭거나 및 주목할만한 대형 언어 모델을 찾을 수 있는 섹션이 있습니다. 이 기능은 사용자가 최신 개발 사항 및 추가된 모델에 대한 정보를 확인하는 데 도움을 줍니다.

    요약하면, LM Studio는 오프라인 환경에서 언어 모델을 실행하는 기능을 제공하며, 다양한 모델 유형을 지원하고, 로컬 서버 또는 인앱 UI를 통한 모델 액세스와 탐색을 지원합니다.

     

    Ollama(https://ollama.ai/)는 깃허브에서 2만 명 이상으로부터 별점을 받고 있는 인기 오픈소스로서 대규모 언어 모델을 웹 애플리케이션에서 손쉽게 활용할 수 있도록 도와주는 도구 중 하나입니다. Ollama의 설치는 다음 링크를 참고하시기 바랍니다. 

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

     

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

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

    fornewchallenge.tistory.com

    Ollama는 로컬에서 실행되는 대규모 언어모델을 웹 앱에서 사용할 수 있도록 지원하며, 오픈소스 기반으로 웹 앱에서 다음과 같은 기능을 수행할 수 있습니다. 

    • 로컬 언어모델 실행: Ollama는 로컬에서 다양한 언어 모델을 실행할 수 있게 해 줍니다. 이는 사용자의 컴퓨터나 서버에서 모델을 실행하고 그 결과를 웹 앱으로 전송하는 방식입니다.
    • 웹 앱과의 통합: Ollama는 웹 앱에서 실행 중인 로컬 모델을 연결하고 사용할 수 있도록 지원합니다. 이를 통해 웹 앱은 사용자의 브라우저에서 모델을 실행하고 결과를 효과적으로 활용할 수 있습니다.
    • 쉘 명령어 인터페이스: Ollama는 쉘 명령어를 통해 로컬 모델을 실행하고 웹 앱과 통합할 수 있는 인터페이스를 제공합니다.

    JanAI는 LM Studio와 같이 대규모 언어 모델을 로컬에서 실행할 수 있게 도와주는 오픈소스 도구입니다. JanAI 설치는 깃 허브 링크에서 jan-linux-x86_64-0.4.4.AppImage 파일을 다운로드한 후, WSL 프롬프트 상에서 "chmod +x jan-linux-x86_64-0.4.4.AppImage" 명령어로 파일에 실행 권한을 부여하고, "./jan-linux-x86_64-0.4.4.AppImage --no-sandbox"의 명령어로 --no-sandbox 옵션을 사용하여 샌드박스 기능을 비활성화상태로 AppImage를 루트 권한으로 실행합니다.  
    설치가 완료되면, Hub메뉴를 통해
     Mistral 7B를 다운로드하고, Settings-Models-Start Model을 클릭하여 활성화합니다. GPU가속 설정을 위해서는 CUDA 툴킷을 설치해야 될수 있습니다. 

    JanAI에서의 Mistral 7B 활성화

    다음은 JanAI의 주요 특징과 설명입니다.

    • 운영 체제 호환성: Jan 데스크톱 애플리케이션은 Windows, Mac, Linux에서 동작하며, llama.cpp를 통한 GPU 가속을 지원합니다. 이로써 다양한 운영 체제에서 원활한 사용이 가능합니다.
    • 데이터 저장 방식: 애플리케이션은 데이터를 오픈 파일 포맷으로 저장합니다. 사용자의 대화 내용이나 데이터는 로컬 파일 시스템에 저장되어 외부로 전송되지 않습니다. 이는 사용자에게 데이터에 대한 풍부한 제어권을 제공합니다.
    • 로컬 API 서버 모드: Jan은 로컬 API 서버 모드를 지원합니다. 이는 사용자의 컴퓨터에서 AI 모델이 실행되는 로컬 서버를 통해 작동함을 의미합니다.
    • 오픈 소스 및 라이선스: Jan과 함께 제공되는 경량 추론 엔진인 Nitro는 모두 오픈 소스 AGPLv3 라이선스로 제공됩니다. 이는 소스 코드에 대한 액세스를 허용하고 자유롭게 사용할 수 있음을 의미합니다.

    Jan AI는 사용자가 자신만의 대규모 언어모델을 로컬에서 실행하고, 데이터를 안전하게 관리하며, 확장성을 통해 애플리케이션을 개선하고 사용자 정의할 수 있는 오픈 소스 솔루션입니다.

    반응형

    환경설정 및 종속성 설치

    다음은 환경설정 및 종속성 설치단계입니다. 이번 프로젝트는 Ollama와의 호성을 위해 WSL(Windows Subsystem for Linux) Ubuntu에서 진행하였으며, WSL 프롬프트에서 가상환경 생성은 "python3.11 -m venv myenv", 활성화는 "source myenv/bin/activate" 명령어를 입력하면 됩니다. 

     

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

    langchain-community 
    langchain
    crewai
    langchain-openai
    duckduckgo-search

     

    종속성 설치에 포함된 라이브러리에 대한 설명은 다음과 같습니다. 

    • langchain-community: LangChain 커뮤니티에서 제공하는 도구들을 포함한 패키지입니다. 다양한 대규모 언어 모델과 텍스트 생성 작업을 효과적으로 수행할 수 있는 Ollama 클래스를 제공합니다.
    • langchain: LangChain은 자연어 처리와 관련된 작업을 지원하는 패키지입니다. ChatOpenAI 클래스를 사용하여 다양한 대규모 언어 모델과 상호 작용할 수 있습니다.
    • crewai: CrewAI는 팀 협업과 작업 자동화를 위한 패키지입니다. Agent, Task, Crew, Process 등의 클래스를 제공하여 다중 에이전트와 작업들을 효과적으로 관리하고 실행할 수 있습니다.
    • langchain-openai: LangChain OpenAI는 OpenAI의 언어 모델과 상호 작용하기 위한 패키지입니다. ChatOpenAI 클래스를 사용하여 대규모 언어 모델과 대화하고, 텍스트 생성 작업을 수행할 수 있습니다.
    • duckduckgo-search: DuckDuckGoSearchRun은 DuckDuckGo 검색 엔진을 사용하기 위한 도구입니다. - 검색 결과를 가져올 수 있으며, 다른 작업에서 검색을 활용할 수 있습니다.

    이러한 라이브러리들은 다양한 기능과 도구를 제공하여 자연어 처리, 텍스트 생성, 팀 협업, 검색 등의 작업을 효과적으로 수행할 수 있도록 도움을 줍니다. 이들 라이브러리를 사용하면 파이썬을 통해 다양한 기술적인 작업을 보다 쉽게 처리할 수 있습니다.

    https://fornewchallenge.tistory.com/

     

    LLM 에이전트 웹서비스 실행

    다음은 Llama2, Mistral, Orca2 대규모 언어모델이 에이전트 역할을 할 수 있도록 웹 서비스를 실행하는 단계입니다. 

    Llama2는 LM Studio, Mistral은 JanAI, Orca는 Ollama를 통해 다음 주소에서 웹 서비스가 실행됩니다.

    대규모 언어 모델 실행도구 웹 서비스 주소
    Llama-2-7B-Chat-GGUF LM Studio http://localhost:1234/v1
    Mistral-ins-7B-q4 JanAI http://localhost:1337/v1
    Orca 2-7B Ollama http://127.0.0.1:11434

     

    다음은 LM Studio에서 Llama2 에이전트용 웹 서비스 실행화면입니다.

    Llama2 에이전트용 웹서비스 실행화면

     

    다음은 JanAI에서 Mistral Instruct 7B Q4언어모델을 활성화하여 웹 서비스를 실행한 화면입니다.(Enable API Server)

    JanAI  Enable API Server

    다음은 "ollama serve" 명령어로 Orca2 에이전트용 웹서비스를 실행한 화면입니다. "ollama run orca2" 명령어로 언어 모델의 응답상태를 확인합니다. 

    Orca2 에이전트용 ollama 웹서비스를 실행한 화면

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

    파이썬 코드 실행

    다음은 파이썬 코드 실행단계입니다. 이 Python 코드는 가상의 연구팀을 구성하고 특정 역할과 작업을 갖는 에이전트들로 이루어진 워크플로우를 정의하고 실행하는 것입니다. 코드를 단계별로 살펴보겠습니다:

    • 1. 라이브러리 가져오기: `crewai`는 팀 및 작업 관리를 위한 라이브러리입니다. `langchain_openai`는 자연어 처리를 위한 OpenAI API와의 상호 작용을 처리하며, `langchain_community.llms`는 언어 모델을 포함합니다. `langchain_community.tools`는 DuckDuckGo 검색 도구와 다양한 목적의 도구를 포함합니다.
    • 2. 언어 모델 설정: `ChatOpenAI` 및 `Ollama` 클래스를 사용하여 세 개의 언어 모델이 인스턴스화됩니다. 이들은 각각 `llm_lmstudio`, `llm_janai`, `llm_ollama`로 명명되어 있습니다. 각 모델은 특정 OpenAI API 엔드포인트 (`openai_api_base`) 및 모델 이름과 연결되어 있습니다. API 키는 "null"로 설정되어 있습니다 (로컬 언어 모델은 별도의 API 키가 필요 없습니다.)
    • 3. 에이전트 생성: 세 가지 종류의 에이전트가 정의됩니다 (`researcher`, `insight_researcher`, 그리고 `writer`). 각각이 특정 역할, 목표, 백스토리, 그리고 언어 모델을 갖습니다. `researcher`는 검색을 위한 도구 (`search_tool`)를 가지고 있으며, `llm_lmstudio`가 설정되어 있습니다.
    • 4. 작업(Task) 정의:세 가지 작업이 정의됩니다 (`research_task`, `insights_task`, `writer_task`). `research_task`는 인터넷 검색을 통해 AI의 다음 빅 트렌드 파악하는것이며, `researcher` 에이전트(에게 할당되어 있습니다. `insights_task`는 도구 없이 데이터에서 몇 가지 주요 통찰력을 식별하는것으로, `insight_researcher` 에이전트에게 할당되어 있습니다. `writer_task`는 부제목과 함께 짧은 블로그 게시물을 작성하는 으로, `writer` 에이전트에게 할당되어 있습니다.
    • 5. 크루(Crew) 생성: `Crew` 클래스를 사용하여 `tech_crew`가 정의됩니다. 이 팀에는 `researcher`, `insight_researcher`, `writer` 세 가지 에이전트가 포함되어 있습니다. 각 에이전트에게는 앞서 정의한 작업들이 할당되어 있습니다. 작업들은 `Process.sequential`로 정의되어 있어 순차적으로 실행됩니다.
    • 6. 작업 실행 시작: `tech_crew.kickoff()` 메서드를 호출하여 작업을 시작합니다. 결과는 `result` 변수에 저장되고 출력됩니다.

    코드를 실행하기 전에  Llama2, Mistral, Orca2 에이전트용 웹서비스가 정상적으로 실행되었는지 확인한 후 실행합니다. 

    from crewai import Agent, Task, Crew, Process
    from langchain_openai import ChatOpenAI
    from langchain_community.llms import Ollama
    from langchain_community.tools import DuckDuckGoSearchRun
    search_tool = DuckDuckGoSearchRun()
    
    llm_lmstudio = ChatOpenAI(
        openai_api_base="http://localhost:1234/v1",
        openai_api_key="null",
        model_name="llama 2"
    )
    
    llm_janai = ChatOpenAI(
        openai_api_base="http://localhost:1337/v1",
        openai_api_key="null",
        model_name="mistral-ins-7b-q4"
    )
    
    llm_ollama = Ollama(model="orca2")
    
    
    # Create a researcher agent
    researcher = Agent(
      role='Senior Researcher',
      goal='Discover groundbreaking technologies',
      backstory='A curious mind fascinated by cutting-edge innovation and the potential to change the world, you know everything about tech.',
      verbose=True,
      tools=[search_tool],
      allow_delegation=False,
      llm=llm_lmstudio
    )
    
    insight_researcher = Agent(
      role='Insight Researcher',
      goal='Discover Key Insights',
      backstory='You are able to find key insights from the data you are given.',
      verbose=True,
      allow_delegation=False,
      llm=llm_janai
    )
    
    writer = Agent(
      role='Tech Content Strategist',
      goal='Craft compelling content on tech advancements',
      backstory="""You are a content strategist known for 
      making complex tech topics interesting and easy to understand.""",
      verbose=True,
      allow_delegation=False,
      llm=llm_ollama
    )
    
    
    # Tasks
    research_task = Task(
      description='Identify the next big trend in AI by searching internet',
      agent=researcher
    )
    
    insights_task = Task(
      description='Identify few key insights from the data in points format. Dont use any tool',
      agent=insight_researcher
    )
    
    writer_task = Task(
      description='Write a short blog post with sub headings. Dont use any tool',
      agent=writer
    )
    
    
    # Instantiate your crew
    tech_crew = Crew(
      agents=[researcher, insight_researcher, writer],
      tasks=[research_task, insights_task, writer_task],
      process=Process.sequential  # Tasks will be executed one after the other
    )
    
    # Begin the task execution
    result = tech_crew.kickoff()
    print(result)

     

    다음은 코드 실행결과 화면입니다.

    코드 실행결과 - DuckDuckGo 검색 실행
    코드 실행결과 - 2024 AI 트렌드에 대한 에이전트 간 협업
    https://fornewchallenge.tistory.com/

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

    마치며

    이번 프로젝트를 통해 Llama2, Mistral, Orca2 언어 모델을 활용하여 LM Studio, JanAI, Ollama를 통합한 워크플로우를 만들었으며, 2024년의 AI 기술에 대한 인사이트를 확인해 보았습니다. 선임 연구원 역할을 한 Llama2는 2024년에 기술의 중요한 변화를 살펴보았고, 인사이트 연구원 Mistral은 발굴된 기술에 대한 핵심 통찰력을 추출하였으며, 블로그 작성자 Orca2는 매력적인 기술 관련 콘텐츠를 제작하는 역할을 각각 수행했습니다.

     

    LM Studio, Ollama, JanAI의 유용한 기능과 웹 서비스를 통해 대규모 언어 모델의 협업과 효율적인 활용을 경험할수 있었습니다. 특히, 오프라인으로 언어 모델을 실행하고 다양한 도구를 통합하는 LM Studio은 작업의 효율을 크게 향상시켰습니다. 이 프로젝트에서 CrewAI를 활용하여 구현한 워크플로우가 여러분에게도 도움이 되시기를 기대하면서 저는 다음에 더 유익한 자료를 가지고 다시 찾아뵙겠습니다. 감사합니다.

     

    2024.01.13 - [대규모 언어모델] - Ollama와 대규모 언어 모델 Llama2-uncensored를 활용한 PDF 요약과 음성변환

     

    Ollama와 대규모 언어 모델 Llama2-uncensored를 활용한 PDF 요약과 음성변환

    안녕하세요! 오늘은 대규모 언어 모델 활용도구인 Ollama를 활용해서 PDF의 내용을 요약하고 읽어주는 Llama2-unsensored(무검열) 모델을 만나보겠습니다. unsensored는 부적절한 내용이나 표현의 제한이

    fornewchallenge.tistory.com

     

    반응형