본문 바로가기
AI 도구

🛠️Phidata Agents: 코드 4줄로 완성하는 강력한 AI 에이전트 프레임워크

by James AI Explorer 2024. 11. 16.
    728x90

    안녕하세요! 오늘은 AI 에이전트를 쉽고 효과적으로 개발할 수 있는 프레임워크인 Phidata Agents에 대해 알아보겠습니다. 인공지능 기술이 빠르게 발전하면서, 자율적으로 작업을 수행하는 AI 에이전트의 중요성은 점점 더 커지고 있는데요. 특히 언어 모델(LLM)을 기반으로 하는 에이전트는 복잡한 문제를 해결하고 효율적인 의사결정을 지원하는 데 강력한 도구로 자리 잡고 있습니다. Phidata Agents는 메모리, 지식, 추론, 도구, 팀워크와 같은 고급 기능을 통해 실제 환경에서 응용 가능한 강력한 AI 시스템을 구축할 수 있습니다. 이 블로그에서는 Phidata Agents의 개념과 특징, 설치 방법 및 실제 예제들을 통해 이 프레임워크가 어떻게 작동하며, 이를 활용해 어떤 종류의 에이전트를 만들 수 있는지 살펴보겠습니다.

    🛠️Phidata Agents: 코드 4줄로 완성하는 강력한 AI 에이전트 프레임워크

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

    Phidata Agents 개요

    Phidata Agents는 언어 모델을 사용하여 작업을 수행하는 자율 프로그램입니다. Phidata는 이러한 에이전트 시스템을 구축하기 위한 프레임워크를 제공하며, 엔지니어는 Phidata를 사용하여 다음과 같은 작업을 수행할 수 있습니다.

    • 메모리, 지식, 도구 및 추론 기능을 갖춘 에이전트 구축
    • 함께 작동할 수 있는 에이전트 팀 구성
    • 에이전트 UI를 사용하여 에이전트와 채팅
    • 에이전트 모니터링, 평가 및 최적화
    • API, 데이터베이스 및 벡터 데이터베이스를 갖춘 애플리케이션 구축

    https://docs.phidata.com/agents

     

    Agents - Phidata

    Agent teams are non-deterministic and are not recommended for production systems, we recommend using workflows instead.

    docs.phidata.com

    Phidata는 깃허브 15k 스타를 받고 있는 인기 오픈소스 프로젝트입니다. 

    https://github.com/phidatahq/phidata/tree/main

     

    GitHub - phidatahq/phidata: Build AI Agents with memory, knowledge, tools and reasoning. Chat with them using a beautiful Agent

    Build AI Agents with memory, knowledge, tools and reasoning. Chat with them using a beautiful Agent UI. - phidatahq/phidata

    github.com

    728x90

    Phidata Agents 특징 및 주요 기능

    Phidata Agents는 다양한 기능을 제공하여 강력하고 유연한 에이전트를 구축할 수 있도록 지원합니다. 주요 특징 및 기능은 다음과 같습니다.

    • 프롬프트: 에이전트의 동작을 안내하는 설명과 구체적인 지침을 제공합니다. description 및 instructions 매개변수를 사용하여 에이전트의 시스템 프롬프트를 구성할 수 있습니다.
    • 도구: 에이전트가 외부 시스템과 상호 작용하고 작업을 수행할 수 있도록 도와줍니다. 웹 검색, SQL 실행, 이메일 전송, API 호출 등 다양한 작업을 수행하는 도구를 사용할 수 있습니다. Phidata는 다양한 기능을 제공하는 사전 구축된 툴킷을 제공하며, 사용자 정의 Python 함수를 도구로 추가할 수도 있습니다.

    Phidata Agents Tools

    • 메모리: 에이전트가 이전 대화, 사용자 정보 및 대화 요약을 기억할 수 있도록 합니다. Phidata는 채팅 기록, 사용자 메모리 및 요약의 세 가지 유형의 메모리를 제공합니다. 에이전트 세션을 데이터베이스에 저장하여 세션 간에 메모리를 유지할 수 있습니다.
    • 지식: 에이전트의 학습 데이터를 도메인 전문 지식으로 보완합니다. 지식은 벡터 데이터베이스에 저장되며 쿼리 시 에이전트에게 비즈니스 컨텍스트를 제공하여 컨텍스트 인식 방식으로 응답하도록 돕습니다.

    Phidata Agents Knowledge

    • 구조화된 출력: 에이전트가 구조화된 데이터를 생성하도록 합니다. 이 기능을 사용하여 기능 추출, 데이터 분류, 가짜 데이터 생성 등을 수행할 수 있습니다.
    • 추론: 에이전트가 응답하기 전에 단계별로 문제를 생각하도록 합니다. 에이전트는 다양한 아이디어를 통해 작업하고 필요에 따라 검증하고 수정합니다. 최종 답변에 도달하면 검증하고 응답을 제공합니다.
    • : 여러 에이전트를 결합하여 팀을 구성하고 응집력 있는 단위로 작업을 처리할 수 있습니다.

    Phidata Agents Teams

     

    Phidata Agents 설치 방법

    Phidata Agents를 사용하려면 먼저 Phidata 프레임워크를 설치해야 합니다. Phidata는 OpenAI, Anthropic, Grok, Ollama, DeepSeek, Mistral, 등 다양한 LLM 공급자와 통합되므로, OpenAI를 사용하려면 다음 명령어와 같이 openai 패키지를 설치하고 API 키를 설정해야 하며, 금융 에이전트, 웹 검색 에이전트 등을 만들기 위한 패키지도 설치합니다. 

     

    pip install -U openai duckduckgo-search duckdb yfinance lancedb tantivy pypdf sqlalchemy 'fastapi[standard]' phidata
    export OPENAI_API_KEY="YOUR_OPENAI_API_KEY"

    다음은 위 설치 명령어에 포함된 각 Python 패키지의 간단한 설명입니다:

    • duckduckgo-search: DuckDuckGo 검색 엔진을 활용해 웹 검색 결과를 제공.
    • duckdb: SQL 기반 고성능 데이터 분석을 지원하는 경량 데이터베이스. 
    • yfinance: Yahoo Finance 데이터를 가져와 금융 분석에 활용하는 라이브러리.
    • lancedb: 벡터 데이터 저장 및 고속 검색을 지원하는 데이터베이스 라이브러리.
    • tantivy: 빠른 텍스트 검색과 문서 인덱싱을 위한 Rust 기반 라이브러리.
    • pypdf: PDF 파일 읽기, 병합, 수정, 추출 등 작업을 위한 도구.
    • sqlalchemy: 데이터베이스 ORM 라이브러리로 SQL 쿼리를 Python으로 작성 가능.
    • fastapi[standard]: 빠르고 비동기적인 API를 구축하기 위한 Python 웹 프레임워크.

    Phidata Agents 설치

    Phidata Agents 예제

    Phidata Agents를 활용한 웹 검색, 금융, 추론, 연구원 에이전트 예제와 에이전트 UI에 대해 살펴보겠습니다. 

    1. 웹 검색 에이전트

    먼저, DuckDuckGo 툴킷을 사용하여 웹을 검색하는 간단한 에이전트입니다. 예제 코드는 Phi 에이전트를 설정하고 DuckDuckGo 검색 툴을 사용하는 예제입니다. 에이전트는 사용자가 입력한 질문에 대해 DuckDuckGo 검색 결과를 가져오고, 실시간으로 응답을 출력합니다.

    from phi.agent import Agent
    from phi.tools.duckduckgo import DuckDuckGo
    
    agent = Agent(tools=[DuckDuckGo()], show_tool_calls=True, markdown=True)
    
    agent.print_response("프랑스에서 무슨 일이 일어나고 있나요?", stream=True)

    웹 검색 에이전트 실행결과

    2. 금융 에이전트

    다음은 YFinanceTools를 사용하여 금융 데이터를 쿼리 하는 에이전트를 만들어 보겠습니다. 예제 코드는 금융 데이터를 다루는 에이전트를 설정하여 NVDA(엔비디아)에 대한 애널리스트 권장 사항을 요약해 표 형식으로 표시합니다.

    from phi.agent import Agent
    from phi.model.openai import OpenAIChat
    from phi.tools.yfinance import YFinanceTools
    
    finance_agent = Agent(
        name="금융 에이전트",
        model=OpenAIChat(id="gpt-4o"),
        tools=[
            YFinanceTools(
                stock_price=True,
                analyst_recommendations=True,
                company_info=True,
                company_news=True,
            )
        ],
        instructions=["데이터를 표시하는 데 표를 사용하십시오."],
        show_tool_calls=True,
        markdown=True,
    )
    
    finance_agent.print_response("NVDA에 대한 애널리스트 권장 사항을 요약하십시오.", stream=True)

    금융 에이전트 실행결과

    3. 추론 에이전트

    다음은 추론 기능을 사용하여 문제를 단계별로 해결하는 에이전트를 만들어 보겠습니다. 예제 코드는 선교사와 식인종 문제를 해결하는 에이전트를 설정하여 단계별 해결책과 ASCII 다이어그램을 제공합니다.

    from phi.agent import Agent
    from phi.model.openai import OpenAIChat
    
    task = (
        "세 명의 선교사와 세 명의 식인종이 강을 건너야 합니다. "
        "그들은 한 번에 최대 두 명까지 태울 수 있는 배를 가지고 있습니다. "
        "어느 때든 강 양쪽에서 식인종이 선교사보다 많으면 식인종이 선교사를 잡아먹을 것입니다. "
        "여섯 사람 모두 안전하게 강을 건너려면 어떻게 해야 할까요? 단계별 해결책을 제공하고 해결책을 ASCII 다이어그램으로 보여주세요."
    )
    
    reasoning_agent = Agent(
        model=OpenAIChat(id="gpt-4o"), reasoning=True, markdown=True, structured_outputs=True
    )
    
    reasoning_agent.print_response(task, stream=True, show_full_reasoning=True)

    추론 에이전트 실행결과

    4. 연구원 에이전트

    이 코드는 주어진 주제에 대해 웹에서 상위 5개의 링크를 검색하고, 각 링크에서 기사 내용을 추출하여 분석한 후, NYT 스타일의 기사를 한국어로 작성하는 에이전트입니다.

    from phi.agent import Agent
    from phi.model.openai import OpenAIChat
    from phi.tools.duckduckgo import DuckDuckGo
    from phi.tools.newspaper4k import Newspaper4k
    
    agent = Agent(
        model=OpenAIChat(id="gpt-4o"),
        tools=[DuckDuckGo(), Newspaper4k()],
        description="You are a senior NYT researcher writing an article on a topic.",
        instructions=[
            "For a given topic, search for the top 5 links.",
            "Then read each URL and extract the article text, if a URL isn't available, ignore it.",
            "Analyse and prepare an NYT worthy article based on the information.",
            # Add instruction to respond in Korean
            "최종 결과는 한국어로 작성하세요."
        ],
        markdown=True,
        show_tool_calls=True,
        add_datetime_to_instructions=True,
        # debug_mode=True,
    )
    
    # 주제를 입력받는 부분
    topic = input("Enter the topic: ")
    agent.print_response(topic, stream=True)

    아래 화면은 2025년 비트코인 가격전망과 투자 전략에 대한 연구원 에이전트의 답변입니다. 

    2025년 비트코인 전망에 대한 연구원 에이전트의 답변
    2025년 비트코인 전망에 대한 연구원 에이전트의 답변

    5. 에이전트 UI

    다음은 웹 UI에서 Phidata 에이전트와 상호작용하는 에이전트 UI 예제입니다. 이 코드는 두 개의 에이전트(웹 검색과 금융 데이터 제공)를 설정하고, 이를 팀으로 묶어 SQL 데이터베이스에 세션 정보를 저장합니다. 각 에이전트는 특정 역할을 수행하며, `Playground`를 통해 사용자 인터페이스를 제공하여 실시간으로 상호작용할 수 있습니다.

    from phi.agent import Agent
    from phi.model.openai import OpenAIChat
    from phi.tools.duckduckgo import DuckDuckGo
    from phi.tools.yfinance import YFinanceTools
    from phi.storage.agent.sqlite import SqlAgentStorage
    from phi.playground import Playground, serve_playground_app
    
    web_agent = Agent(
        name="Web Agent",
        agent_id="web_agent",
        role="Search the web for information",
        model=OpenAIChat(id="gpt-4o-mini"),
        tools=[DuckDuckGo()],
        instructions=["Answer in Korean. Always include sources"],
        storage=SqlAgentStorage(table_name="web_agent_sessions", db_file="tmp/agents.db"),
        markdown=True,
    )
    
    finance_agent = Agent(
        name="Finance Agent",
        agent_id="finance_agent",
        role="Get financial data and provide investment insights",
        model=OpenAIChat(id="gpt-4o-mini"),
        tools=[YFinanceTools(stock_price=True, analyst_recommendations=True, company_info=True, company_news=True)],
        instructions=[
            "Answer in Korean",
            "Always use tables to display data",
            "When displaying company news:",
            "1. Always show at least 5 recent news items",
            "2. Format each news title as a clickable link using markdown: [title](url)",
            "3. Below each news title, add a one-line summary in Korean",
            "4. Present each news item in this format:",
            "   [News Title](url)",
            "   > 한줄 요약: (뉴스 내용을 한국어로 간단히 요약)",
            "   (use empty line between news items)",
            "5. After all news items, add analysis section:",
            "   # 종합 인사이트: [Buy/Sell/Hold 중 하나 선택]",
            "   - 주요 트렌드 분석",
            "   - 회사에 미치는 잠재적 영향",
            "   - 투자자 관점에서의 시사점",
            "   - 향후 전망",
            "   - 투자추천 근거",
            "Note: Do not use <br> tags, use empty lines for spacing"
        ],
        storage=SqlAgentStorage(table_name="finance_agent_sessions", db_file="tmp/agents.db"),
        markdown=True,
    )
    
    agent_team = Agent(
        name="Agent Team",
        agent_id="agent_team",
        team=[web_agent, finance_agent],
        storage=SqlAgentStorage(table_name="agent_team_sessions", db_file="tmp/agents.db"),
        markdown=True,
    )
    
    app = Playground(agents=[finance_agent, web_agent, agent_team]).get_app()
    
    if __name__ == "__main__":
        serve_playground_app("04_agent_ui:app", reload=True)

    에이전트 UI 실행화면

    예제코드를 실행하면 아래 화면과 같이 https://phidata.app/playground?endpoint=localhost%3A7777 주소에서 Phidata 플레이그라운드 초기화면이 열립니다. 

    에이전트 UI 초기화면

    Finance Agent는 다음과 같은 함수 실행기능을 가지고 있습니다.

    • get_current_stock_price: 특정 주식 기호에 대한 현재 주가를 조회합니다.
    • get_company_info: 특정 주식 기호에 대한 회사 정보와 개요를 조회합니다.
    • get_analyst_recommendations: 특정 주식 기호에 대한 애널리스트 추천을 조회합니다.
    • get_company_news: 특정 주식 기호에 대한 최신 뉴스 및 보도 자료를 조회합니다.

    Finance Agent의 기능 답변화면

    Finance Agent는 금융 데이터 및 투자 인사이트를 제공합니다. 주식 가격, 애널리스트 권장 사항, 회사 정보, 회사 뉴스 등을 제공하며, 이를 표 형식으로 표시합니다. 회사 뉴스는 최근 5개의 뉴스 항목을 제공하며, 각 뉴스 항목에 대한 한 줄 요약도 포함됩니다. 이후 종합 인사이트 섹션에서 투자 의견(매수/매도/유지), 주요 트렌드 분석, 회사에 미치는 잠재적 영향, 투자자 관점에서의 시사점, 향후 전망을 제공합니다.

    테슬라에 대한 Finance Agent의 답변
    NVIDIA에 대한 Finance Agent의 답변

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

    맺음말

    오늘 소개한 Phidata Agents는 강력한 기능을 제공하여 사용자가 다양한 AI 에이전트를 쉽게 개발하고 운영할 수 있게 돕는 프레임워크입니다. 이를 통해 메모리, 지식, 도구, 추론 기능을 갖춘 고급 에이전트를 구축하고, 협력하는 여러 에이전트 팀을 통해 더욱 복잡한 작업을 처리할 수 있습니다.

     

    Phidata Agents의 설치 방법과 사용 예제들이 여러분에게 도움이 되셨기를 바라면서 저는 다음 시간에 더 유익한 정보를 가지고 다시 찾아뵙겠습니다. 감사합니다. 

     

    https://fornewchallenge.tistory.com/

     

     

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

     

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

    안녕하세요! 오늘은 간단한 파이썬 코드 5줄 만으로 다양한 기능을 무료로 구현할 수 있는 파이데이터(Phidata)에 대해서 알아보겠습니다. 파이데이터는 함수 호출(Function Calling)을 사용하여 AI 어

    fornewchallenge.tistory.com

     

    728x90