본문 바로가기
AI 도구

🤯 파이데이터(Phidata) : 5줄 코드로 토큰 과금없는 AI 어시스턴트 만들기

by James AI Explorer 2024. 2. 27.
    728x90

    안녕하세요! 오늘은 간단한 파이썬 코드 5줄 만으로 다양한 기능을 무료로 구현할 수 있는 파이데이터(Phidata)에 대해서 알아보겠습니다. 파이데이터는 함수 호출(Function Calling)을 사용하여 AI 어시스턴트를 구축하는 데 사용되는 도구 모음으로, 간단한 코드 구현을 통해 대규모 언어 모델이 함수를 호출하고 응답에 따라 다음 단계를 지능적으로 선택함으로써 사용자의 질문에 대답하거나 작업을 수행할 수 있도록 도와줄수 있습니다. 이 블로그에서는 파이데이터의 구성요소와 동작원리, 토큰 과금 없는 LLM 활용방법, DEMO 실행방법에 대해서 알아보겠습니다.

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

    파이데이터(Phidata) 란?

    파이데이터는 대규모 언어 모델(LLM)을 활용하여 사용자 정의 함수 호출을 통해 AI 어시스턴트를 쉽게 구축할 수 있는 오픈소스 프레임워크입니다. 다음 그림은 파이데이터의 주요 동작원리를 나타낸 개념도입니다. 

    파이데이터 동작원리 개념도

    파이데이터 구성 요소

    위 개념도에서 표시된 파이데이터의 주요 구성 요소는 다음과 같습니다. 

    • 사용자(User): 작업을 수행하거나 정보를 얻기 위해 AI 어시스턴트와 상호 작용하는 사용자입니다. 
    • AI 어시스턴트(Assistant): 사용자의 요청을 처리하고 작업을 완료하는 컴퓨터 프로그램입니다. 
    • 대규모 언어 모델(LLM): 자연어를 이해하고 처리할 수 있는 인공 지능 모델입니다. 
    • 함수 호출(Function Calling): AI 어시스턴트가 LLM과 통신하는 데 사용하는 메서드입니다. 
    • 함수(Function): AI 어시스턴트가 수행할 수 있는 특정 작업입니다. 
    • 저장소(Storage): AI 어시스턴트가 작업을 수행하는 데 필요한 데이터를 저장하는 곳입니다. 
    • 최종 결과(Final Result): 사용자에게 제공되는 최종 결과입니다. 

    파이데이터 동작원리

    다음은 파이데이터의 동작원리와 순서에 대한 설명입니다. 

    • 1. 사용자가 AI 어시스턴트에게 작업을 수행하거나 정보를 얻기 위한 요청을 입력합니다.
    • 2. AI 어시스턴트는 함수 호출을 사용하여 LLM에 요청을 전달합니다.
    • 3. LLM은 자연어를 이해하고 해당 요청을 수행하는 함수를 검색합니다.
    • 4. 함수는 저장소에서 데이터를 검색하거나 다른 시스템과 상호 작용하여 작업을 수행합니다.
    • 5. 함수는 AI 어시스턴트에게 결과를 반환합니다.
    • 6. AI 어시스턴트는 결과를 사용자에게 제공합니다. 

    파이데이터 특징 및 활용분야

    파이데이터의 주요 특징과 활용분야는 다음과 같습니다 

    • 사용자 정의 함수: 사용자는 AI 어시스턴트가 수행할 수 있는 함수를 자유롭게 정의할 수 있습니다.
    • 쉬운 사용: 파이데이터는 프로그래밍 경험이 없는 사용자도 쉽게 사용할 수 있는 인터페이스를 제공합니다.
    • 확장성: 파이데이터는 다양한 작업을 수행하도록 확장할 수 있습니다.

    파이데이터 고객 서비스, 데이터 분석, 컨텐츠 제작, 개인 비서 등 다양한 분야에서 활용할 수 있습니다.

    • 고객 서비스: 고객 문의 응답, 주문 처리, 불만 처리 등
    • 데이터 분석: 데이터 수집, 분석, 시각화 등
    • 컨텐츠 제작: 보고서 작성, 문서 요약, 번역 등
    • 개인 비서: 일정 관리, 알람 설정, 정보 검색 등

    이와 같이 파이데이터는 자유롭게 정의할 수 있는 사용자 정의 함수와 프로그래밍 경험이 없는 사용자도 쉽게 사용할 수 있는 인터페이스를 통해 고객 서비스 및 데이터 관련 작업과 컨텐츠 제작, 개인 비서 역할과 같은 다양한 분야에서 작업을 수행할 수 있는 확장성을 제공합니다.

    https://docs.phidata.com/introduction#what-is-phidata.

     

    Introduction - Phidata

    Build an Autonomous AI App using FastApi, Streamlit and PgVector

    docs.phidata.com

    728x90

    DEMO 코드 실행

    다음은 DEMO 코드를 통해 파이데이터의 기능을 확인해 보겠습니다. 이 블로그에서는 2가지 DEMO 코드를 실행해 볼 건데요, 첫 번째는 파이데이터를 사용하여 AI 어시스턴트를 만들고, 해당 어시스턴트에 대해 ArXiv 도구를 사용하여 ArXiv 논문을 검색하고 가져오는 코드이며, 두 번째는 AI 어시스턴트를 통해 DuckDuckGo 도구를 사용하여 최신 뉴스에 대한 검색을 수행하는 DEMO 코드입니다. 

    환경설정 및 종속성 설치

    먼저 비주얼 스튜디오 코드나 아나콘다 프롬프트 상에서 "conda create -n 가상환경 이름",  "conda activate 가상환경 이름" 명령어를 통해 파이썬 가상환경을 활성화합니다. 다음은 아래 코드를 복사하여 "requirements.txt"로 저장한 후, "pip install -r requirements.txt" 명령어로 파이데이터와 관련 라이브러리를 설치합니다. 

    phidata
    openai
    duckduckgo-search
    pydantic
    arxiv
    ollama

     

    라이브러리 기능 설명
    phidata AI 어시스턴트를 만들고 관리하는 도구 모음으로, 사용자 정의 함수와 확장 가능한 인터페이스 제공
    openai OpenAI의 API와 상호작용할 수 있는 라이브러리
    duckduckgo-search DuckDuckGo 검색 엔진과 상호작용할 수 있는 라이브러리
    pydantic 데이터 유효성 검사 및 설정을 위한 라이브러리
    arxiv ArXiv 학술 논문 서비스에 접근할 수 있는 라이브러리
    ollama Large Language Model (LLM)을 위한 도구 모음으로, 텍스트 생성 및 자연어 처리 가능

     

    파이데이터만 업데이트하는 경우에는 "pip install -U phidata" 명령어를 입력하여 별도로 설치할 수 있고, 대규모 언어 모델을 불러오기 위해서는 "ollama pull mistral" 명령어를 입력하면 됩니다. ollama의 윈도우 버전의 설치방법은 ollama 다운로드 링크와 이전 포스트를 참고하시기 바랍니다. 

    2024.02.21 - [AI 도구] - 💥핵꿀팁! 스마트폰에서 Ollama WebUI를 만나는 방법 (ngrok 활용)

     

    💥핵꿀팁! 스마트폰에서 Ollama WebUI를 만나는 방법 (ngrok 활용)

    안녕하세요! 오늘은 ngrok이라는 Tool을 이용해서 대규모 언어 모델 Ollama의 WebUI를 스마트폰에서 만나보겠습니다. ngrok은 클라이언트와 서버 사이에서 중개자 역할을 하여 클라이언트로부터의 요

    fornewchallenge.tistory.com

    DEMO #1

    첫 번째 DEMO는 사용자가 입력한 쿼리를 기반으로 ArXiv에서 논문을 검색하고, 검색 결과를 대규모 언어 모델로 요약하고 출력하는 코드입니다. 코드는 총 5줄만으로 구성되며, 코드에 대한 동작설명은 다음과 같습니다. 

    • 1. `phi.assistant.Assistant`: 먼저, 파이데이터의 `Assistant` 클래스를 가져옵니다. 이 클래스는 AI 어시스턴트를 만들고 관리하는 데 사용됩니다.
    • 2. `phi.llm.ollama.Ollama`: 다음으로, `Ollama` 클래스를 사용하여 대규모 언어 모델을 초기화합니다. 이 클래스는 파이데이터에서 제공하는 언어 모델 중 하나입니다. 여기서는 "mistral" 모델을 선택하고, 옵션으로 온도를 0.3으로 설정하여 다음 단어를 선택할 때의 랜덤성을 줄입니다.
    • 3. `phi.tools.arxiv.ArxivTools`: ArXivTools 클래스를 사용하여 ArXiv 논문 데이터베이스에서 정보를 검색하는 도구를 가져옵니다.
    • 4. ArXiv 논문 검색: ArXivTools의 `search_arxiv` 메서드를 사용하여 "Large Language Models in 2024"와 같은 쿼리를 사용하여 ArXiv에서 관련 논문을 검색합니다. `max_results` 매개변수를 사용하여 최대 결과 수를 5개로 제한합니다.
    • 5. Assistant 시스템 프롬프트 설정: 이전 단계에서 검색한 ArXiv 논문 결과를 시스템 프롬프트로 설정합니다. 이는 어시스턴트가 해당 결과를 기반으로 사용자에게 응답을 생성하는 데 사용됩니다.
    • 6. Assistant 응답 생성 및 출력: Assistant 객체를 생성하고, 해당 Assistant에 대한 시스템 프롬프트로서 ArXiv에서 검색한 결과를 설정합니다. 마지막으로, `print_response` 메서드를 사용하여 Assistant의 응답을 생성하고 Markdown 형식으로 출력합니다.
    from phi.assistant import Assistant
    from phi.llm.ollama import Ollama
    from phi.tools.arxiv import ArxivTools
    
    # DuckDuckGo 검색 결과 가져오기
    arxiv_results = ArxivTools().search_arxiv(query="Find and summarize the paper on Large Language Models in 2024.", max_results = 5)
    
    # Assistant 응답생성 및 출력
    assistant = Assistant(llm=Ollama(model="mistral", options={"temperature": 0.3}), system_prompt=arxiv_results).print_response(markdown=True)

     

    위 코드의 실행결과는 아래 화면과 같습니다. 

    DEMO #1 코드 실행결과

    이 논문들은 대규모 언어 모델(Large Language Models, LLMs)을 사용한 요약에 대한 다양한 측면을 논의하며,
    재난 관리와 편향 분석에 초점을 맞추고 있습니다.
    
    첫 번째 논문인 "Instruction-Based Prompting을 통한 다중 쿼리 중심 재난 요약"은 다중 재난 관련 사건에서
    핵심 사실을 추출하여 요약을 작성하는 방법을 설명합니다. 저자들은 검색, 재정렬 및 지침 준수 요약의 조합을
    제안하며, 검색에는 BM25와 MonoT5, 요약에는 오픈 소스 LLM LLaMA를 사용합니다.
    
    두 번째 논문인 "Baichuan2-7B 모델을 위한 Instruction Finetune으로 대화 요약"은 지침 세부 조정을 사용하여
    대화 요약에 중점을 둔다며, 관련 코드를 공개하여 향후 연구를 촉진하는 방법을 설명합니다.
    
    세 번째 논문인 "추상적 요약에서 가지치기된 대규모 언어 모델의 환각 조사"는 LLM과 추상적 요약에서 환각에 
    대한 가지치기의 영향을 탐구하며, 가지치기된 모델이 소스 문서에 더 의존하게 되어 환각 위험을 감소시키는 
    결과를 찾아냅니다.
    
    네 번째 논문인 "대규모 언어 모델을 사용한 요약에서 맥락 활용에 대한 연구"은 요약에서의 맥락 활용과 위치 
    편향에 대한 포괄적인 연구를 수행하며, 중간 요약을 사용하여 위치 편향을 완화하기 위한 새로운 평가 기준인 
    MiddleSum을 소개합니다.

    DEMO #2

    두 번째 DEMO는 파이데이터를 사용하여 AI 어시스턴트를 생성하고, 해당 어시스턴트를 통해 DuckDuckGo를 사용하여 최신 뉴스에 대한 검색을 수행하는 예시입니다. 이 코드도 총 5줄로 구성되며 이에 대한 동작설명은 다음과 같습니다. 

    • 1. `from phi.assistant import Assistant`: 파이데이터 라이브러리에서 Assistant 클래스를 가져옵니다. Assistant 클래스는 AI 어시스턴트를 생성하고 관리하는 데 사용됩니다.
    • 2. `from phi.llm.ollama import Ollama`: 파이데이터의 Ollama 클래스를 가져옵니다. Ollama 클래스는 언어 모델을 나타냅니다. 이 예시에서는 "mistral" 모델이 사용되며, 옵션으로 온도(temperature)를 0.3으로 설정합니다. 이는 모델이 생성하는 텍스트의 다양성을 제어하는 매개변수입니다.
    • 3. `from phi.tools.duckduckgo import DuckDuckGo`: DuckDuckGo 도구를 가져옵니다. 이 도구는 DuckDuckGo 검색 엔진을 사용하여 웹에서 정보를 검색하는 데 사용됩니다.
    • 4. DuckDuckGo 최신뉴스 검색: DuckDuckGo 객체의 duckduckgo_search 메서드를 호출하여 주어진 쿼리("Search for latest news about Sora, created by OpenAI. Summarize with sources and site URLs")에 대한 검색 결과를 가져옵니다. 이 코드는 최근 출시된 OpenAI의 T2V 모델 Sora에 대한 최신 뉴스를 검색합니다.
    • 5. Assistant 시스템 프롬프트 설정: Assistant 클래스의 객체를 생성합니다. 이때, Ollama 클래스로부터 생성된 언어 모델을 사용하여 Assistant를 설정합니다. 또한, system_prompt 매개변수에는 DuckDuckGo 검색 결과가 전달됩니다. 이는 Assistant가 이전 단계에서 얻은 정보를 사용하여 사용자의 질문에 응답하는 데 사용됩니다.
    • 6. Assistant 응답 생성 및 출력: Assistant 객체의 print_response 메서드를 호출하여 Assistant의 응답을 생성하고 출력합니다. 이때, markdown 매개변수를 True로 설정하여 출력 형식을 마크다운 형식으로 설정합니다.

    이 코드는 파이데이터를 사용하여 AI 어시스턴트를 구축하고, 이를 통해 DuckDuckGo를 사용하여 웹에서 정보를 검색하고, 해당 정보를 기반으로 사용자의 질문에 응답하는 예시를 보여줍니다.

    from phi.assistant import Assistant
    from phi.llm.ollama import Ollama
    from phi.tools.duckduckgo import DuckDuckGo
    
    # DuckDuckGo 검색 결과 가져오기
    duckduckgo_results = DuckDuckGo().duckduckgo_search("Search for latest news about Sora, created by OpenAI.")
    
    # Assistant 응답생성 및 출력
    assistant = Assistant(llm=Ollama(model="mistral", options={"temperature": 0.3}), system_prompt=f"Summarize '{duckduckgo_results}' with full site URLs").print_response(markdown=True)

     

    DEMO #2 코드 실행결과

    제공된 데이터의 각 기사 제목, URL 및 본문 요약은 다음과 같습니다:
    1. 제목: "Sora - OpenAI" 
       URL: https://openai.com/sora 
       본문: Sora는 텍스트 지침에서 현실적이고 상상력 풍부한 장면을 생성할 수 있는 OpenAI가 개발한 AI 모델입니다. 이 페이지의 모든 비디오는 수정 없이 Sora에 의해 직접 생성되었습니다.
    2. 제목: "OpenAI Unveils Sora, an A.I. That Generates Eye-Popping Videos - The New York Times" 
       URL: https://www.nytimes.com/2024/02/15/technology/openai-sora-videos.html 
       본문: OpenAI는 텍스트 지침에 기반한 눈을 뗄 수 없는 비디오를 생성하는 새로운 시스템인 Sora를 소개했습니다. 이 기술을 개발한 팀은 이름을 "하늘의 무한한 넓이를 떠올리게 하는" 것으로 선택했습니다.
    3. 제목: "OpenAI's Sora isn't the end of Hollywood, some filmmakers say - NBC News" 
       URL: https://www.nbcnews.com/tech/openai-sora-filmmakers-reaction-rcna139646 
       본문: OpenAI의 새로운 텍스트에서 비디오로 변환하는 제너레이터인 Sora의 공개로 영화 산업이 어떻게 변할지에 대한 토론이 일어나고 있습니다. 그러나 일부 영화 제작자들은 아직 그 영향에 대해 과도하게 걱정하지 않고 있습니다.
    4. 제목: "OpenAI teases 'Sora,' its new text-to-video AI model" 
       URL: https://www.nbcnews.com/tech/tech-news/openai-sora-video-artificial-intelligence-unveiled… 
       본문: OpenAI는 사용자 프롬프트를 기반으로 1분 길이의 비디오를 생성할 수 있는 새로운 텍스트에서 비디오로 변환하는 인공 지능 모델인 Sora를 암시했습니다.
    5. 제목: "OpenAI teases an amazing new generative video model called Sora" 
       URL: https://www.technologyreview.com/2024/02/15/1088401/openai-amazing-new-generative-ai-vide… 
       본문: OpenAI가 Sora라는 새로운 생성 비디오 모델을 공개했습니다. 이 모델은 짧은 텍스트 설명을 자세하고 고화질의 1분 길이 영화 클립으로 변환할 수 있습니다.

    https://fornewchallenge.tistory.com/

    마치며

    오늘은 간단하고 유용한 AI 도구 파이데이터(Phidata)에 대해서 알아보았습니다. 파이데이터는 AI 어시스턴트를 구축하고 사용자와 상호 작용하는 데 사용되는 강력한 도구 모음입니다. 사용자는 파이데이터를 통해 자신만의 AI 어시스턴트를 만들 수 있으며, 이를 활용하여 다양한 작업을 자동화하고 정보를 얻을 수 있습니다.

     

    이 블로그를 통해 파이데이터의 구성 요소와 동작 원리를 알아보고, 라이브러리 및 DEMO 코드를 활용하여 실제로 기능을 확인해 보았는데요. 파이데이터는 사용자 정의 함수를 통한 확장성, 프로그래밍 경험이 없는 사용자도 쉽게 사용할 수 있는 쉬운 인터페이스, 다양한 활용 분야를 통해 사용자들에게 혁신적인 솔루션을 제공할 수 있을 것으로 기대됩니다. 여러분도 본문의 DEMO 코드를 통해 파이데이터의 기능을 직접 체험하고, 자신만의 AI 어시스턴트를 구축해 보시면 어떨까요?

     

    오늘의 내용은 여기까지입니다. 그럼 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다. 

     

     

     

    2024.02.25 - [AI 도구] - 🏆텍스트 임베딩의 혁신! 오픈AI 뛰어넘은 노믹 임베드의 모든것!

     

    🏆텍스트 임베딩의 혁신! 오픈AI 뛰어넘은 노믹 임베드의 모든것!

    안녕하세요! 오늘은 최근 발표된 오픈소스 텍스트 임베딩 모델 "노믹 임베드(Nomic Embed)"에 대해서 알아보겠습니다. 노믹 임베드는 텍스트 임베딩에 대한 새로운 접근 방식을 통해 긴 문맥에서 텍

    fornewchallenge.tistory.com

    728x90