Migrate from Phidata to Agno
This guide helps you migrate your codebase to adapt to the major refactor accompanying the launch of Agno.
General Namespace Updates
This refactor includes comprehensive updates to namespaces to improve clarity and consistency. Pay close attention to the following changes:
- All
phi
namespaces are now replaced withagno
to reflect the updated structure. - Submodules and classes have been renamed to better represent their functionality and context.
Interface Changes
Module and Namespace Updates
- Models:
phi.model.x
➔agno.models.x
- All model classes now reside under the
agno.models
namespace, consolidating related functionality in a single location.
- All model classes now reside under the
- Knowledge Bases:
phi.knowledge_base.x
➔agno.knowledge.x
- Knowledge bases have been restructured for better organization under
agno.knowledge
.
- Knowledge bases have been restructured for better organization under
- Document Readers:
phi.document.reader.xxx
➔agno.document.reader.xxx_reader
- Document readers now include a
_reader
suffix for clarity and consistency.
- Document readers now include a
- Toolkits:
- All Agno toolkits now have a
Tools
suffix. For example,DuckDuckGo
➔DuckDuckGoTools
.- This change standardizes the naming of tools, making their purpose more explicit.
- All Agno toolkits now have a
Multi-Modal Interface Updates
The multi-modal interface now uses specific types for different media inputs and outputs:
Inputs
-
Images:
- Images are now represented by a dedicated
Image
class, providing additional metadata and control over image handling.
- Images are now represented by a dedicated
-
Audio:
- Audio files are handled through the
Audio
class, allowing specification of content and format.
- Audio files are handled through the
-
Video:
- Videos have their own
Video
class, enabling better handling of video data.
- Videos have their own
Outputs
RunResponse
now includes updated artifact types:-
RunResponse.images
is a list of typeImageArtifact
: -
RunResponse.audio
is a list of typeAudioArtifact
: -
RunResponse.videos
is a list of typeVideoArtifact
: -
RunResponse.response_audio
is of typeAudioOutput
:- This response audio corresponds to the model’s response in audio format.
-
Model Name Changes
Hermes
➔OllamaHermes
AzureOpenAIChat
➔AzureOpenAI
CohereChat
➔Cohere
DeepSeekChat
➔DeepSeek
GeminiOpenAIChat
➔GeminiOpenAI
HuggingFaceChat
➔HuggingFace
For example:
Storage Class Updates
- Agent Storage:
PgAgentStorage
➔PostgresAgentStorage
SqlAgentStorage
➔SqliteAgentStorage
MongoAgentStorage
➔MongoDbAgentStorage
S2AgentStorage
➔SingleStoreAgentStorage
- Workflow Storage:
SqlWorkflowStorage
➔SqliteWorkflowStorage
PgWorkflowStorage
➔PostgresWorkflowStorage
MongoWorkflowStorage
➔MongoDbWorkflowStorage
Knowledge Base Updates
phi.knowledge.pdf.PDFUrlKnowledgeBase
➔agno.knowledge.pdf_url.PDFUrlKnowledgeBase
phi.knowledge.csv.CSVUrlKnowledgeBase
➔agno.knowledge.csv_url.CSVUrlKnowledgeBase
Embedders updates
Embedders now all take id instead of model as a parameter. For example:
OllamaEmbedder(model="llama3.2")
->OllamaEmbedder(id="llama3.2")
Reader Updates
phi.document.reader.arxiv
➔agno.document.reader.arxiv_reader
phi.document.reader.docx
➔agno.document.reader.docx_reader
phi.document.reader.json
➔agno.document.reader.json_reader
phi.document.reader.pdf
➔agno.document.reader.pdf_reader
phi.document.reader.s3.pdf
➔agno.document.reader.s3.pdf_reader
phi.document.reader.s3.text
➔agno.document.reader.s3.text_reader
phi.document.reader.text
➔agno.document.reader.text_reader
phi.document.reader.website
➔agno.document.reader.website_reader
Follow the steps above to ensure your codebase is compatible with the latest version of Agno AI. If you encounter any issues, don’t hesitate to contact us on Discourse or Discord.