Phidata 소개 — 멀티모달 에이전트와 워크플로를 만드는 프레임워크
Phidata 소개 — 멀티모달 에이전트와 워크플로를 만드는 프레임워크
에이전트를 처음 만들 때 "모델을 호출하는 것"과 "도구를 붙이는 것" 사이에서 막막함을 겪는 분들이 많은데요, Phidata는 바로 그 지점을 메워 주는 프레임워크예요. 메모리·지식·도구·추론을 갖춘 에이전트를 만들고, 여러 에이전트를 팀으로 묶어 문제를 풀게 하며, 아름다운 Agent UI로 대화까지 가능하게 해 주죠.
출처: Phidata 공식 문서
Phidata란 무엇인가
간단히 말하면 Phidata는 멀티모달 에이전트와 워크플로를 만들기 위한 프레임워크예요. 핵심 특징을 정리하면 이렇게 돼요.
- 메모리·지식·도구·추론을 갖춘 에이전트 빌드
- 한 문제를 함께 풀 수 있는 에이전트 팀 구성
- 에이전트와 대화할 수 있는 Agent UI 제공
설치부터가 아주 간단해요. 파이썬 패키지 하나면 끝이에요.
pip install -U phidata
심플하고 우아한 설계
Phidata의 에이전트는 간결해서, 10줄 안팎으로 웹 검색 에이전트 하나를 만들 수 있어요. 아래는 DuckDuckGo 도구를 붙인 웹 검색 에이전트예요.
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo
web_agent = Agent(
name="Web Agent",
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGo()],
instructions=["Always include sources"],
show_tool_calls=True,
markdown=True,
)
web_agent.print_response("Tell me about OpenAI Sora?", stream=True)
name과 role로 에이전트의 정체를, instructions로 행동 지침을 주는 게 전부예요. 환경 변수로 API 키를 세팅한다는 점은 다른 라이브러리와 동일해요.
# Mac
export OPENAI_API_KEY=sk-***
# Windows
setx OPENAI_API_KEY sk-***
강력하고 유연한 도구
에이전트는 여러 도구를 쓰고 지침을 따라 복잡한 작업도 해내요. 예를 들어 금융 데이터를 조회하는 에이전트는 아래처럼 만들 수 있어요.
from phi.agent import Agent
from phi.model.openai import OpenAIChat
finance_agent = Agent(
name="Finance Agent",
model=OpenAIChat(id="gpt-4o"),
instructions=["Use tables to display data"],
show_tool_calls=True,
markdown=True,
)
finance_agent.print_response("Summarize analyst recommendations for NVDA", stream=True)
instructions로 "데이터는 표로 보여줘" 같은 규칙을 주면, 에이전트가 그대로 지켜요.
기본 제공되는 멀티모달
Phidata는 텍스트뿐 아니라 이미지·오디오·비디오를 지원해요. 아래는 이미지를 이해하고 필요한 경우 도구를 호출하는 에이전트예요.
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo
agent = Agent(
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGo()],
markdown=True,
)
agent.print_response(
"Tell me about this image and give me the latest news about it.",
images=["https://upload.wikimedia.org/wikipedia/commons/b/bf/Krakow_-_Kosciol_Mariacki.jpg"],
stream=True,
)
images 파라미터에 이미지 URL을 넘기면 모델이 이미지를 읽고, 도구를 써서 최신 정보까지 찾아와요.
멀티 에이전트 오케스트레이션
여러 에이전트를 한 팀으로 묶어 복잡한 작업을 처리할 수도 있어요. 아래는 웹 검색 에이전트와 금융 에이전트를 팀으로 묶은 예시예요.
from phi.agent import Agent
from phi.model.openai import OpenAIChat
from phi.tools.duckduckgo import DuckDuckGo
web_agent = Agent(
name="Web Agent",
role="Search the web for information",
model=OpenAIChat(id="gpt-4o"),
tools=[DuckDuckGo()],
instructions=["Always include sources"],
show_tool_calls=True,
markdown=True,
)
finance_agent = Agent(
name="Finance Agent",
role="Get financial data",
model=OpenAIChat(id="gpt-4o"),
instructions=["Use tables to display data"],
show_tool_calls=True,
markdown=True,
)
agent_team = Agent(
team=[web_agent, finance_agent],
instructions=["Always include sources", "Use tables to display data"],
show_tool_calls=True,
markdown=True,
)
agent_team.print_response("Summarize analyst recommendations and share the latest news for NVDA", stream=True)
각 멤버에 role을 붙여 "누가 무슨 일을 맡는지"를 분명히 하고, 팀 에이전트 하나가 조율하는 구조예요.
더 알아보기
- Agent UI로 에이전트와 대화하기: Agent UI
- 더 많은 예시: Examples
- 모니터링과 디버깅: Monitoring