Skip to content

Commit

Permalink
Release 1.0.0 (Agno) (#1938)
Browse files Browse the repository at this point in the history
# Changelog

This is a major refactor to be coupled with the launch of Agno AI.

## Interface Changes:

- `phi.model.x` → `agno.models.x`
- `phi.knowledge_base.x` → `agno.knowledge.x` (applies to all knowledge
bases)
- `phi.document.reader.xxx` → `agno.document.reader.xxx_reader` (applies
to all document readers)
- All Agno toolkits are now suffixed with `Tools`. E.g. `DuckDuckGo` →
`DuckDuckGoTools`
- Multi-modal interface updates:
- `agent.run(images=[])` and `agent.print_response(images=[])` is now of
type `Image`
        
        ```python
        class Image(BaseModel):
            url: Optional[str] = None  # Remote location for image
filepath: Optional[Union[Path, str]] = None # Absolute local location
for image
            content: Optional[Any] = None  # Actual image bytes content
detail: Optional[str] = None # low, medium, high or auto (per OpenAI
spec
https://platform.openai.com/docs/guides/vision?lang=node#low-or-high-fidelity-image-understanding)
            id: Optional[str] = None
        ```
        
- `agent.run(audio=[])` and `agent.print_response(audio=[])` is now of
type `Audio`
        
        ```python
        class Audio(BaseModel):
filepath: Optional[Union[Path, str]] = None # Absolute local location
for audio
            content: Optional[Any] = None  # Actual audio bytes content
            format: Optional[str] = None
        ```
        
- `agent.run(video=[])` and `agent.print_response(video=[])` is now of
type `Video`
        
        ```python
        class Video(BaseModel):
filepath: Optional[Union[Path, str]] = None # Absolute local location
for video
            content: Optional[Any] = None  # Actual video bytes content
        ```
        
    - `RunResponse.images` is now a list of type `ImageArtifact`
        
        ```python
        class ImageArtifact(Media):
            id: str
            url: str  # Remote location for file
            alt_text: Optional[str] = None
        ```
        
    - `RunResponse.audio` is now a list of type `AudioArtifact`
        
        ```python
        class AudioArtifact(Media):
            id: str
            url: Optional[str] = None  # Remote location for file
base64_audio: Optional[str] = None # Base64-encoded audio data
            length: Optional[str] = None
            mime_type: Optional[str] = None
        ```
        
    - `RunResponse.videos` is now a list of type `VideoArtifact`
        
        ```python
        class VideoArtifact(Media):
            id: str
            url: str  # Remote location for file
            eta: Optional[str] = None
            length: Optional[str] = None
        ```
        
    - `RunResponse.response_audio` is now of type `AudioOutput`
        
        ```python
        class AudioOutput(BaseModel):
            id: str
            content: str  # Base64 encoded
            expires_at: int
            transcript: str
        ```
        
- Models:
    - `Hermes` → `OllamaHermes`
    - `AzureOpenAIChat` → `AzureOpenAI`
    - `CohereChat` → `Cohere`
    - `DeepSeekChat` → `DeepSeek`
    - `GeminiOpenAIChat` → `GeminiOpenAI`
    - `HuggingFaceChat` → `HuggingFace`
- Embedders now all take `id` instead of `model` as a parameter. For
example
    
    ```python
    db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
    
    knowledge_base = PDFUrlKnowledgeBase(
urls=["https://phi-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf"],
        vector_db=PgVector(
            table_name="recipes",
            db_url=db_url,
            embedder=OllamaEmbedder(id="llama3.2", dimensions=3072),
        ),
    )
    knowledge_base.load(recreate=True)
    ```
    
- Agent Storage class
    - `PgAgentStorage` → `PostgresAgentStorage`
    - `SqlAgentStorage` → `SqliteAgentStorage`
    - `MongoAgentStorage` → `MongoDbAgentStorage`
    - `S2AgentStorage` → `SingleStoreAgentStorage`
- Workflow Storage class
    - `SqlWorkflowStorage` → `SqliteWorkflowStorage`
    - `PgWorkflowStorage` → `PostgresWorkflowStorage`
    - `MongoWorkflowStorage` → `MongoDbWorkflowStorage`
- Knowledge Base
- `phi.knowledge.pdf.PDFUrlKnowledgeBase` →
`agno.knowledge.pdf_url.PDFUrlKnowledgeBase`
- `phi.knowledge.csv.CSVUrlKnowledgeBase` →
`agno.knowledge.csv_url.CSVUrlKnowledgeBase`
- Readers
    - `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`

## Improvements:

- **Dataclasses** - Changed various instances of Pydantic models to
dataclasses to improve the speed.

## Removals

- Removed all references to `Assistant`
- Removed all references to `llm`
- Removed the `PhiTools` tool
- Removed the `PythonAgent` and `DuckDbAgent` (this will be brought back
in future with more specific agents)

## Bug Fixes:

- Fixed semantic chunking by replacing `similarity_threshold` param with
`threshold` param

## New Features

- Introducing Evals to measure the performance, accuracy, and
reliability of your Agents
  • Loading branch information
dirkbrnd authored Jan 30, 2025
1 parent ee3f094 commit 53d20a5
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion libs/agno/pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[project]
name = "agno"
version = "0.1.7"
version = "1.0.0"
description = "Agno: a lightweight framework for building multi-modal Agents"
requires-python = ">=3.7,<4"
readme = "README.md"
Expand Down

0 comments on commit 53d20a5

Please sign in to comment.