agno 2.4.5__tar.gz → 2.4.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {agno-2.4.5 → agno-2.4.7}/PKG-INFO +34 -59
- agno-2.4.7/README.md +109 -0
- {agno-2.4.5 → agno-2.4.7}/agno/agent/agent.py +2 -1
- {agno-2.4.5 → agno-2.4.7}/agno/db/singlestore/singlestore.py +4 -5
- {agno-2.4.5 → agno-2.4.7}/agno/db/surrealdb/models.py +1 -1
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/chunking/agentic.py +1 -5
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/chunking/code.py +1 -1
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/chunking/document.py +22 -42
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/chunking/fixed.py +1 -5
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/chunking/markdown.py +9 -25
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/chunking/recursive.py +1 -3
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/chunking/row.py +3 -2
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/chunking/semantic.py +1 -1
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/chunking/strategy.py +19 -0
- agno-2.4.7/agno/knowledge/embedder/aws_bedrock.py +562 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/knowledge.py +173 -14
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/text_reader.py +1 -1
- agno-2.4.7/agno/knowledge/reranker/aws_bedrock.py +299 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/machine.py +5 -6
- {agno-2.4.5 → agno-2.4.7}/agno/learn/stores/learned_knowledge.py +108 -131
- {agno-2.4.5 → agno-2.4.7}/agno/run/workflow.py +3 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/mcp/mcp.py +26 -1
- {agno-2.4.5 → agno-2.4.7}/agno/utils/print_response/agent.py +8 -8
- {agno-2.4.5 → agno-2.4.7}/agno/utils/print_response/team.py +8 -8
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/lancedb/lance_db.py +9 -9
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/condition.py +135 -56
- {agno-2.4.5 → agno-2.4.7}/agno.egg-info/PKG-INFO +34 -59
- {agno-2.4.5 → agno-2.4.7}/agno.egg-info/SOURCES.txt +1 -0
- {agno-2.4.5 → agno-2.4.7}/agno.egg-info/requires.txt +2 -2
- {agno-2.4.5 → agno-2.4.7}/pyproject.toml +3 -3
- agno-2.4.5/README.md +0 -134
- agno-2.4.5/agno/knowledge/embedder/aws_bedrock.py +0 -343
- {agno-2.4.5 → agno-2.4.7}/LICENSE +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/agent/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/agent/remote.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/agent.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/api.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/evals.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/os.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/routes.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/schemas/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/schemas/agent.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/schemas/evals.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/schemas/os.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/schemas/response.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/schemas/team.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/schemas/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/schemas/workflows.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/settings.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/team.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/api/workflow.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/client/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/client/a2a/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/client/a2a/client.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/client/a2a/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/client/a2a/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/client/os.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/cloud/aws/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/cloud/aws/s3/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/cloud/aws/s3/api_client.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/cloud/aws/s3/bucket.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/cloud/aws/s3/object.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/compression/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/compression/manager.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/culture/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/culture/manager.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/async_postgres/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/dynamo/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/dynamo/dynamo.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/dynamo/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/dynamo/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/firestore/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/firestore/firestore.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/firestore/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/firestore/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/gcs_json/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/gcs_json/gcs_json_db.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/gcs_json/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/in_memory/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/in_memory/in_memory_db.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/in_memory/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/json/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/json/json_db.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/json/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/migrations/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/migrations/manager.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/migrations/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/migrations/v1_to_v2.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/migrations/versions/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/migrations/versions/v2_3_0.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/mongo/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/mongo/async_mongo.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/mongo/mongo.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/mongo/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/mongo/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/mysql/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/mysql/async_mysql.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/mysql/mysql.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/mysql/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/mysql/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/postgres/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/postgres/async_postgres.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/postgres/postgres.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/postgres/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/postgres/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/redis/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/redis/redis.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/redis/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/redis/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/schemas/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/schemas/culture.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/schemas/evals.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/schemas/knowledge.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/schemas/memory.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/schemas/metrics.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/singlestore/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/singlestore/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/singlestore/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/sqlite/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/sqlite/async_sqlite.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/sqlite/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/sqlite/sqlite.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/sqlite/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/surrealdb/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/surrealdb/metrics.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/surrealdb/queries.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/surrealdb/surrealdb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/surrealdb/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/db/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/debug.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/eval/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/eval/accuracy.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/eval/agent_as_judge.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/eval/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/eval/performance.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/eval/reliability.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/eval/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/exceptions.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/filters.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/guardrails/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/guardrails/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/guardrails/openai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/guardrails/pii.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/guardrails/prompt_injection.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/hooks/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/hooks/decorator.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/integrations/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/integrations/discord/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/integrations/discord/client.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/chunking/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/content.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/document/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/document/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/azure_openai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/cohere.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/fastembed.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/fireworks.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/google.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/huggingface.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/jina.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/langdb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/mistral.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/nebius.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/ollama.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/openai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/sentence_transformer.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/together.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/vllm.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/embedder/voyageai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/filesystem.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/protocol.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/arxiv_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/csv_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/docx_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/excel_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/field_labeled_csv_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/firecrawl_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/json_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/markdown_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/pdf_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/pptx_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/reader_factory.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/s3_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/tavily_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/utils/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/utils/spreadsheet.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/web_search_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/website_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/wikipedia_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reader/youtube_reader.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/remote_content/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/remote_content/config.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/remote_content/remote_content.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reranker/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reranker/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reranker/cohere.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reranker/infinity.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/reranker/sentence_transformer.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/types.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/knowledge/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/config.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/curate.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/stores/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/stores/decision_log.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/stores/entity_memory.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/stores/protocol.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/stores/session_context.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/stores/user_memory.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/stores/user_profile.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/learn/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/media.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/memory/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/memory/manager.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/memory/strategies/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/memory/strategies/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/memory/strategies/summarize.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/memory/strategies/types.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/aimlapi/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/aimlapi/aimlapi.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/anthropic/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/anthropic/claude.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/aws/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/aws/bedrock.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/aws/claude.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/azure/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/azure/ai_foundry.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/azure/openai_chat.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/cerebras/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/cerebras/cerebras.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/cerebras/cerebras_openai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/cohere/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/cohere/chat.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/cometapi/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/cometapi/cometapi.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/dashscope/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/dashscope/dashscope.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/deepinfra/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/deepinfra/deepinfra.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/deepseek/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/deepseek/deepseek.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/defaults.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/fireworks/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/fireworks/fireworks.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/google/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/google/gemini.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/google/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/groq/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/groq/groq.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/huggingface/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/huggingface/huggingface.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/ibm/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/ibm/watsonx.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/internlm/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/internlm/internlm.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/langdb/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/langdb/langdb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/litellm/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/litellm/chat.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/litellm/litellm_openai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/llama_cpp/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/llama_cpp/llama_cpp.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/lmstudio/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/lmstudio/lmstudio.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/message.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/meta/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/meta/llama.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/meta/llama_openai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/metrics.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/mistral/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/mistral/mistral.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/moonshot/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/moonshot/moonshot.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/n1n/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/n1n/n1n.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/nebius/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/nebius/nebius.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/nexus/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/nexus/nexus.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/nvidia/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/nvidia/nvidia.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/ollama/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/ollama/chat.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/ollama/responses.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/openai/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/openai/chat.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/openai/like.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/openai/open_responses.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/openai/responses.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/openrouter/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/openrouter/openrouter.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/openrouter/responses.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/perplexity/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/perplexity/perplexity.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/portkey/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/portkey/portkey.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/requesty/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/requesty/requesty.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/response.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/sambanova/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/sambanova/sambanova.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/siliconflow/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/siliconflow/siliconflow.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/together/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/together/together.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/vercel/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/vercel/v0.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/vertexai/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/vertexai/claude.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/vllm/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/vllm/vllm.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/xai/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/models/xai/xai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/app.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/auth.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/config.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/a2a/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/a2a/a2a.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/a2a/router.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/a2a/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/agui/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/agui/agui.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/agui/router.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/agui/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/slack/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/slack/router.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/slack/security.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/slack/slack.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/whatsapp/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/whatsapp/router.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/whatsapp/security.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/interfaces/whatsapp/whatsapp.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/managers.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/mcp.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/middleware/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/middleware/jwt.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/middleware/trailing_slash.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/router.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/agents/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/agents/router.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/agents/schema.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/components/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/components/components.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/database.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/evals/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/evals/evals.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/evals/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/evals/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/health.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/home.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/knowledge/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/knowledge/knowledge.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/knowledge/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/memory/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/memory/memory.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/memory/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/metrics/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/metrics/metrics.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/metrics/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/registry/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/registry/registry.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/session/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/session/session.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/teams/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/teams/router.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/teams/schema.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/traces/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/traces/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/traces/traces.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/workflows/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/workflows/router.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/routers/workflows/schema.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/schema.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/scopes.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/settings.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/os/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/py.typed +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/anthropic.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/azure_ai_foundry.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/deepseek.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/default.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/gemini.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/groq.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/helpers.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/manager.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/ollama.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/openai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/step.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/reasoning/vertexai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/registry/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/registry/registry.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/remote/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/remote/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/agent.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/cancel.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/cancellation_management/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/cancellation_management/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/cancellation_management/in_memory_cancellation_manager.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/cancellation_management/redis_cancellation_manager.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/messages.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/requirement.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/run/team.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/session/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/session/agent.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/session/summary.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/session/team.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/session/workflow.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/skills/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/skills/agent_skills.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/skills/errors.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/skills/loaders/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/skills/loaders/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/skills/loaders/local.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/skills/skill.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/skills/utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/skills/validator.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/table.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/team/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/team/remote.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/team/team.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/agentql.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/airflow.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/api.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/apify.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/arxiv.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/aws_lambda.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/aws_ses.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/baidusearch.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/bitbucket.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/brandfetch.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/bravesearch.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/brightdata.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/browserbase.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/calcom.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/calculator.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/cartesia.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/clickup.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/confluence.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/crawl4ai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/csv_toolkit.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/dalle.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/daytona.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/decorator.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/desi_vocal.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/discord.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/docker.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/duckdb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/duckduckgo.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/e2b.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/eleven_labs.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/email.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/evm.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/exa.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/fal.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/file.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/file_generation.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/financial_datasets.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/firecrawl.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/function.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/giphy.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/github.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/gmail.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/google_bigquery.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/google_drive.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/google_maps.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/googlecalendar.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/googlesheets.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/hackernews.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/jina.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/jira.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/knowledge.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/linear.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/linkup.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/local_file_system.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/lumalab.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/mcp/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/mcp/multi_mcp.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/mcp/params.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/mcp_toolbox.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/mem0.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/memory.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/mlx_transcribe.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/models/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/models/azure_openai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/models/gemini.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/models/groq.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/models/morph.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/models/nebius.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/models_labs.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/moviepy_video.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/nano_banana.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/neo4j.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/newspaper.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/newspaper4k.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/notion.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/openai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/openbb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/opencv.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/openweather.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/oxylabs.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/pandas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/parallel.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/postgres.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/pubmed.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/python.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/reasoning.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/reddit.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/redshift.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/replicate.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/resend.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/scrapegraph.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/searxng.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/seltz.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/serpapi.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/serper.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/shell.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/shopify.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/slack.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/sleep.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/spider.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/spotify.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/sql.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/streamlit/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/streamlit/components.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/tavily.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/telegram.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/todoist.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/tool_registry.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/toolkit.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/trafilatura.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/trello.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/twilio.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/unsplash.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/user_control_flow.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/valyu.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/visualization.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/webbrowser.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/webex.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/websearch.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/website.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/webtools.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/whatsapp.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/wikipedia.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/workflow.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/x.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/yfinance.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/youtube.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/zendesk.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/zep.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tools/zoom.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tracing/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tracing/exporter.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tracing/schemas.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/tracing/setup.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/agent.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/audio.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/certs.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/code_execution.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/common.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/cryptography.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/dttm.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/enum.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/env.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/events.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/format_str.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/functions.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/gemini.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/hooks.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/http.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/json_schema.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/knowledge.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/location.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/log.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/mcp.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/media.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/merge_dict.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/message.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/models/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/models/ai_foundry.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/models/claude.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/models/cohere.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/models/llama.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/models/mistral.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/models/openai_responses.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/models/schema_utils.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/models/watsonx.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/openai.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/os.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/pickle.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/pprint.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/print_response/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/print_response/workflow.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/prompts.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/reasoning.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/remote.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/response.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/response_iterator.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/safe_formatter.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/serialize.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/shell.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/streamlit.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/string.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/team.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/timer.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/tokens.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/tools.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/web.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/whatsapp.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/utils/yaml_io.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/base.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/cassandra/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/cassandra/cassandra.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/cassandra/extra_param_mixin.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/cassandra/index.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/chroma/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/chroma/chromadb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/clickhouse/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/clickhouse/clickhousedb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/clickhouse/index.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/couchbase/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/couchbase/couchbase.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/distance.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/lancedb/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/langchaindb/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/langchaindb/langchaindb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/lightrag/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/lightrag/lightrag.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/llamaindex/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/llamaindex/llamaindexdb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/milvus/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/milvus/milvus.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/mongodb/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/mongodb/mongodb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/pgvector/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/pgvector/index.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/pgvector/pgvector.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/pineconedb/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/pineconedb/pineconedb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/qdrant/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/qdrant/qdrant.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/redis/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/redis/redisdb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/search.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/singlestore/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/singlestore/index.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/singlestore/singlestore.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/surrealdb/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/surrealdb/surrealdb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/upstashdb/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/upstashdb/upstashdb.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/weaviate/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/weaviate/index.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/vectordb/weaviate/weaviate.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/__init__.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/agent.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/loop.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/parallel.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/remote.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/router.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/step.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/steps.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/types.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno/workflow/workflow.py +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno.egg-info/dependency_links.txt +0 -0
- {agno-2.4.5 → agno-2.4.7}/agno.egg-info/top_level.txt +0 -0
- {agno-2.4.5 → agno-2.4.7}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agno
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.7
|
|
4
4
|
Summary: Agno: a lightweight library for building Multi-Agent Systems
|
|
5
5
|
Author-email: Ashpreet Bedi <ashpreet@agno.com>
|
|
6
6
|
Project-URL: homepage, https://agno.com
|
|
@@ -225,7 +225,7 @@ Requires-Dist: pgvector; extra == "pgvector"
|
|
|
225
225
|
Provides-Extra: chromadb
|
|
226
226
|
Requires-Dist: chromadb; extra == "chromadb"
|
|
227
227
|
Provides-Extra: lancedb
|
|
228
|
-
Requires-Dist: lancedb
|
|
228
|
+
Requires-Dist: lancedb>=0.26.0; extra == "lancedb"
|
|
229
229
|
Requires-Dist: tantivy; extra == "lancedb"
|
|
230
230
|
Provides-Extra: pylance
|
|
231
231
|
Requires-Dist: pylance; extra == "pylance"
|
|
@@ -266,7 +266,7 @@ Provides-Extra: excel
|
|
|
266
266
|
Requires-Dist: openpyxl; extra == "excel"
|
|
267
267
|
Requires-Dist: xlrd; extra == "excel"
|
|
268
268
|
Provides-Extra: markdown
|
|
269
|
-
Requires-Dist: unstructured; extra == "markdown"
|
|
269
|
+
Requires-Dist: unstructured<0.18.31; extra == "markdown"
|
|
270
270
|
Requires-Dist: markdown; extra == "markdown"
|
|
271
271
|
Requires-Dist: aiofiles; extra == "markdown"
|
|
272
272
|
Provides-Extra: chonkie
|
|
@@ -445,7 +445,7 @@ Dynamic: license-file
|
|
|
445
445
|
</div>
|
|
446
446
|
|
|
447
447
|
<p align="center">
|
|
448
|
-
Build
|
|
448
|
+
Build agents that learn.
|
|
449
449
|
</p>
|
|
450
450
|
|
|
451
451
|
<div align="center">
|
|
@@ -460,68 +460,58 @@ Dynamic: license-file
|
|
|
460
460
|
|
|
461
461
|
## What is Agno?
|
|
462
462
|
|
|
463
|
-
|
|
463
|
+
**A Python SDK for building agents that learn and improve with every interaction.**
|
|
464
464
|
|
|
465
|
-
|
|
466
|
-
|-------|--------------|
|
|
467
|
-
| **Framework** | Build agents, teams, and workflows with memory, knowledge, guardrails, and 100+ integrations |
|
|
468
|
-
| **AgentOS Runtime** | Run your system in production with a stateless, secure FastAPI backend |
|
|
469
|
-
| **Control Plane** | Test, monitor, and manage your system using the [AgentOS UI](https://os.agno.com) |
|
|
465
|
+
Most agents are stateless. They reason, respond, forget. Session history helps, but they're exactly as capable on day 1000 as they were on day 1.
|
|
470
466
|
|
|
471
|
-
|
|
467
|
+
Agno agents are different. They remember users across sessions, accumulate knowledge across conversations, and learn from decisions. Insights from one user benefit everyone.
|
|
472
468
|
|
|
473
|
-
|
|
474
|
-
- **Production-ready on day one.** Pre-built FastAPI runtime with SSE endpoints, ready to deploy.
|
|
475
|
-
- **Fast.** 529× faster instantiation than LangGraph. 24× lower memory. [See benchmarks →](#performance)
|
|
469
|
+
Everything runs in your cloud. Your data never leaves your environment.
|
|
476
470
|
|
|
477
|
-
## Example
|
|
478
|
-
|
|
479
|
-
An agent with MCP tools, persistent state, served via FastAPI:
|
|
471
|
+
## Quick Example
|
|
480
472
|
```python
|
|
481
473
|
from agno.agent import Agent
|
|
482
474
|
from agno.db.sqlite import SqliteDb
|
|
483
|
-
from agno.models.
|
|
484
|
-
from agno.os import AgentOS
|
|
485
|
-
from agno.tools.mcp import MCPTools
|
|
475
|
+
from agno.models.openai import OpenAIResponses
|
|
486
476
|
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
tools=[MCPTools(transport="streamable-http", url="https://docs.agno.com/mcp")],
|
|
492
|
-
add_history_to_context=True,
|
|
493
|
-
markdown=True,
|
|
477
|
+
agent = Agent(
|
|
478
|
+
model=OpenAIResponses(id="gpt-5.2"),
|
|
479
|
+
db=SqliteDb(db_file="tmp/agents.db"),
|
|
480
|
+
learning=True,
|
|
494
481
|
)
|
|
495
|
-
|
|
496
|
-
agent_os = AgentOS(agents=[agno_agent])
|
|
497
|
-
app = agent_os.get_app()
|
|
498
|
-
|
|
499
|
-
if __name__ == "__main__":
|
|
500
|
-
agent_os.serve(app="agno_agent:app", reload=True)
|
|
501
482
|
```
|
|
502
483
|
|
|
503
|
-
|
|
484
|
+
One line. Your agent now remembers users, accumulates knowledge, and improves over time.
|
|
485
|
+
|
|
486
|
+
## Production Stack
|
|
504
487
|
|
|
505
|
-
|
|
488
|
+
| Layer | What it does |
|
|
489
|
+
|-------|--------------|
|
|
490
|
+
| **SDK** | Build agents with learning, tools, knowledge, and guardrails |
|
|
491
|
+
| **Runtime** | Run in production using [AgentOS](https://docs.agno.com/agent-os/introduction) |
|
|
492
|
+
| **Control Plane** | Monitor and manage via the [AgentOS UI](https://os.agno.com) |
|
|
506
493
|
|
|
507
494
|
## Features
|
|
508
495
|
|
|
496
|
+
**Learning**
|
|
497
|
+
- User profiles that persist across sessions
|
|
498
|
+
- User memories that accumulate over time
|
|
499
|
+
- Learned knowledge that transfers across users
|
|
500
|
+
- Always or agentic learning modes
|
|
501
|
+
|
|
509
502
|
**Core**
|
|
510
503
|
- Model-agnostic: OpenAI, Anthropic, Google, local models
|
|
511
504
|
- Type-safe I/O with `input_schema` and `output_schema`
|
|
512
505
|
- Async-first, built for long-running tasks
|
|
513
506
|
- Natively multimodal (text, images, audio, video, files)
|
|
514
507
|
|
|
515
|
-
**
|
|
516
|
-
- Persistent storage for session history and state
|
|
517
|
-
- User memory across sessions
|
|
508
|
+
**Knowledge**
|
|
518
509
|
- Agentic RAG with 20+ vector stores, hybrid search, reranking
|
|
519
|
-
-
|
|
510
|
+
- Persistent storage for session history and state
|
|
520
511
|
|
|
521
512
|
**Orchestration**
|
|
522
513
|
- Human-in-the-loop (confirmations, approvals, overrides)
|
|
523
514
|
- Guardrails for validation and security
|
|
524
|
-
- Pre/post hooks for the agent lifecycle
|
|
525
515
|
- First-class MCP and A2A support
|
|
526
516
|
- 100+ built-in toolkits
|
|
527
517
|
|
|
@@ -529,27 +519,12 @@ https://github.com/user-attachments/assets/feb23db8-15cc-4e88-be7c-01a21a03ebf6
|
|
|
529
519
|
- Ready-to-use FastAPI runtime
|
|
530
520
|
- Integrated control plane UI
|
|
531
521
|
- Evals for accuracy, performance, latency
|
|
532
|
-
- Durable execution for resumable workflows
|
|
533
|
-
- RBAC and per-agent permissions
|
|
534
522
|
|
|
535
523
|
## Getting Started
|
|
536
524
|
|
|
537
|
-
1. Follow the [quickstart
|
|
538
|
-
2. Browse the [cookbook](https://github.com/agno-agi/agno/tree/main/cookbook)
|
|
539
|
-
3. Read the [docs](https://docs.agno.com)
|
|
540
|
-
|
|
541
|
-
## Performance
|
|
542
|
-
|
|
543
|
-
Agent workloads spawn hundreds of instances. Stateless, horizontal scalability isn't optional.
|
|
544
|
-
|
|
545
|
-
| Metric | Agno | LangGraph | PydanticAI | CrewAI |
|
|
546
|
-
|--------|------|-----------|------------|--------|
|
|
547
|
-
| Instantiation | **3μs** | 1,587μs (529×) | 170μs (57×) | 210μs (70×) |
|
|
548
|
-
| Memory | **6.6 KiB** | 161 KiB (24×) | 29 KiB (4×) | 66 KiB (10×) |
|
|
549
|
-
|
|
550
|
-
<sub>Apple M4 MacBook Pro, Oct 2025. [Run benchmarks yourself →](https://github.com/agno-agi/agno/tree/main/cookbook/12_evals/performance)</sub>
|
|
551
|
-
|
|
552
|
-
https://github.com/user-attachments/assets/54b98576-1859-4880-9f2d-15e1a426719d
|
|
525
|
+
1. Follow the [quickstart](https://docs.agno.com/get-started/quickstart)
|
|
526
|
+
2. Browse the [cookbook](https://github.com/agno-agi/agno/tree/main/cookbook)
|
|
527
|
+
3. Read the [docs](https://docs.agno.com)
|
|
553
528
|
|
|
554
529
|
## IDE Integration
|
|
555
530
|
|
|
@@ -561,7 +536,7 @@ Also works with VSCode, Windsurf, and similar tools.
|
|
|
561
536
|
|
|
562
537
|
## Contributing
|
|
563
538
|
|
|
564
|
-
|
|
539
|
+
See the [contributing guide](https://github.com/agno-agi/agno/blob/v2.0/CONTRIBUTING.md).
|
|
565
540
|
|
|
566
541
|
## Telemetry
|
|
567
542
|
|
agno-2.4.7/README.md
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
<div align="center" id="top">
|
|
2
|
+
<a href="https://agno.com">
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-dark.svg">
|
|
5
|
+
<source media="(prefers-color-scheme: light)" srcset="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg">
|
|
6
|
+
<img src="https://agno-public.s3.us-east-1.amazonaws.com/assets/logo-light.svg" alt="Agno">
|
|
7
|
+
</picture>
|
|
8
|
+
</a>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
Build agents that learn.
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
<div align="center">
|
|
16
|
+
<a href="https://docs.agno.com">Docs</a>
|
|
17
|
+
<span> • </span>
|
|
18
|
+
<a href="https://github.com/agno-agi/agno/tree/main/cookbook">Cookbook</a>
|
|
19
|
+
<span> • </span>
|
|
20
|
+
<a href="https://community.agno.com/">Community</a>
|
|
21
|
+
<span> • </span>
|
|
22
|
+
<a href="https://www.agno.com/discord">Discord</a>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
## What is Agno?
|
|
26
|
+
|
|
27
|
+
**A Python SDK for building agents that learn and improve with every interaction.**
|
|
28
|
+
|
|
29
|
+
Most agents are stateless. They reason, respond, forget. Session history helps, but they're exactly as capable on day 1000 as they were on day 1.
|
|
30
|
+
|
|
31
|
+
Agno agents are different. They remember users across sessions, accumulate knowledge across conversations, and learn from decisions. Insights from one user benefit everyone.
|
|
32
|
+
|
|
33
|
+
Everything runs in your cloud. Your data never leaves your environment.
|
|
34
|
+
|
|
35
|
+
## Quick Example
|
|
36
|
+
```python
|
|
37
|
+
from agno.agent import Agent
|
|
38
|
+
from agno.db.sqlite import SqliteDb
|
|
39
|
+
from agno.models.openai import OpenAIResponses
|
|
40
|
+
|
|
41
|
+
agent = Agent(
|
|
42
|
+
model=OpenAIResponses(id="gpt-5.2"),
|
|
43
|
+
db=SqliteDb(db_file="tmp/agents.db"),
|
|
44
|
+
learning=True,
|
|
45
|
+
)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
One line. Your agent now remembers users, accumulates knowledge, and improves over time.
|
|
49
|
+
|
|
50
|
+
## Production Stack
|
|
51
|
+
|
|
52
|
+
| Layer | What it does |
|
|
53
|
+
|-------|--------------|
|
|
54
|
+
| **SDK** | Build agents with learning, tools, knowledge, and guardrails |
|
|
55
|
+
| **Runtime** | Run in production using [AgentOS](https://docs.agno.com/agent-os/introduction) |
|
|
56
|
+
| **Control Plane** | Monitor and manage via the [AgentOS UI](https://os.agno.com) |
|
|
57
|
+
|
|
58
|
+
## Features
|
|
59
|
+
|
|
60
|
+
**Learning**
|
|
61
|
+
- User profiles that persist across sessions
|
|
62
|
+
- User memories that accumulate over time
|
|
63
|
+
- Learned knowledge that transfers across users
|
|
64
|
+
- Always or agentic learning modes
|
|
65
|
+
|
|
66
|
+
**Core**
|
|
67
|
+
- Model-agnostic: OpenAI, Anthropic, Google, local models
|
|
68
|
+
- Type-safe I/O with `input_schema` and `output_schema`
|
|
69
|
+
- Async-first, built for long-running tasks
|
|
70
|
+
- Natively multimodal (text, images, audio, video, files)
|
|
71
|
+
|
|
72
|
+
**Knowledge**
|
|
73
|
+
- Agentic RAG with 20+ vector stores, hybrid search, reranking
|
|
74
|
+
- Persistent storage for session history and state
|
|
75
|
+
|
|
76
|
+
**Orchestration**
|
|
77
|
+
- Human-in-the-loop (confirmations, approvals, overrides)
|
|
78
|
+
- Guardrails for validation and security
|
|
79
|
+
- First-class MCP and A2A support
|
|
80
|
+
- 100+ built-in toolkits
|
|
81
|
+
|
|
82
|
+
**Production**
|
|
83
|
+
- Ready-to-use FastAPI runtime
|
|
84
|
+
- Integrated control plane UI
|
|
85
|
+
- Evals for accuracy, performance, latency
|
|
86
|
+
|
|
87
|
+
## Getting Started
|
|
88
|
+
|
|
89
|
+
1. Follow the [quickstart](https://docs.agno.com/get-started/quickstart)
|
|
90
|
+
2. Browse the [cookbook](https://github.com/agno-agi/agno/tree/main/cookbook)
|
|
91
|
+
3. Read the [docs](https://docs.agno.com)
|
|
92
|
+
|
|
93
|
+
## IDE Integration
|
|
94
|
+
|
|
95
|
+
Add our docs to your AI-enabled editor:
|
|
96
|
+
|
|
97
|
+
**Cursor:** Settings → Indexing & Docs → Add `https://docs.agno.com/llms-full.txt`
|
|
98
|
+
|
|
99
|
+
Also works with VSCode, Windsurf, and similar tools.
|
|
100
|
+
|
|
101
|
+
## Contributing
|
|
102
|
+
|
|
103
|
+
See the [contributing guide](https://github.com/agno-agi/agno/blob/v2.0/CONTRIBUTING.md).
|
|
104
|
+
|
|
105
|
+
## Telemetry
|
|
106
|
+
|
|
107
|
+
Agno logs which model providers are used to prioritize updates. Disable with `AGNO_TELEMETRY=false`.
|
|
108
|
+
|
|
109
|
+
<p align="right"><a href="#top">↑ Back to top</a></p>
|
|
@@ -858,8 +858,9 @@ class Agent:
|
|
|
858
858
|
return
|
|
859
859
|
|
|
860
860
|
# Handle learning=True: create default LearningMachine
|
|
861
|
+
# Enables user_profile (structured fields) and user_memory (unstructured observations)
|
|
861
862
|
if self.learning is True:
|
|
862
|
-
self._learning = LearningMachine(db=self.db, model=self.model, user_profile=True)
|
|
863
|
+
self._learning = LearningMachine(db=self.db, model=self.model, user_profile=True, user_memory=True)
|
|
863
864
|
return
|
|
864
865
|
|
|
865
866
|
# Handle learning=LearningMachine(...): inject dependencies
|
|
@@ -173,8 +173,7 @@ class SingleStoreDb(BaseDb):
|
|
|
173
173
|
column_kwargs["unique"] = True
|
|
174
174
|
columns.append(Column(*column_args, **column_kwargs))
|
|
175
175
|
|
|
176
|
-
|
|
177
|
-
table = Table(table_name, self.metadata, *columns, schema=self.db_schema)
|
|
176
|
+
table = Table(table_name, self.metadata, *columns, schema=self.db_schema, extend_existing=True)
|
|
178
177
|
|
|
179
178
|
return table
|
|
180
179
|
|
|
@@ -240,8 +239,7 @@ class SingleStoreDb(BaseDb):
|
|
|
240
239
|
|
|
241
240
|
columns.append(Column(*column_args, **column_kwargs))
|
|
242
241
|
|
|
243
|
-
|
|
244
|
-
table = Table(table_name, self.metadata, *columns, schema=self.db_schema)
|
|
242
|
+
table = Table(table_name, self.metadata, *columns, schema=self.db_schema, extend_existing=True)
|
|
245
243
|
|
|
246
244
|
# Add multi-column unique constraints with table-specific names
|
|
247
245
|
for constraint in schema_unique_constraints:
|
|
@@ -396,7 +394,8 @@ class SingleStoreDb(BaseDb):
|
|
|
396
394
|
|
|
397
395
|
if table_type == "spans":
|
|
398
396
|
# Ensure traces table exists first (for foreign key)
|
|
399
|
-
|
|
397
|
+
if create_table_if_not_found:
|
|
398
|
+
self._get_table(table_type="traces", create_table_if_not_found=True)
|
|
400
399
|
self.spans_table = self._get_or_create_table(
|
|
401
400
|
table_name=self.span_table_name,
|
|
402
401
|
table_type="spans",
|
|
@@ -48,7 +48,7 @@ def surrealize_dates(record: dict) -> dict:
|
|
|
48
48
|
if isinstance(value, date):
|
|
49
49
|
copy[key] = datetime.combine(value, datetime.min.time()).replace(tzinfo=timezone.utc)
|
|
50
50
|
elif key in ["created_at", "updated_at"] and isinstance(value, (int, float)):
|
|
51
|
-
copy[key] = datetime.fromtimestamp(value
|
|
51
|
+
copy[key] = datetime.fromtimestamp(value, tz=timezone.utc)
|
|
52
52
|
elif key in ["created_at", "updated_at"] and isinstance(value, str):
|
|
53
53
|
# Handle ISO string format - convert back to datetime object for SurrealDB
|
|
54
54
|
try:
|
|
@@ -55,11 +55,7 @@ class AgenticChunking(ChunkingStrategy):
|
|
|
55
55
|
chunk = remaining_text[:break_point].strip()
|
|
56
56
|
meta_data = chunk_meta_data.copy()
|
|
57
57
|
meta_data["chunk"] = chunk_number
|
|
58
|
-
chunk_id =
|
|
59
|
-
if document.id:
|
|
60
|
-
chunk_id = f"{document.id}_{chunk_number}"
|
|
61
|
-
elif document.name:
|
|
62
|
-
chunk_id = f"{document.name}_{chunk_number}"
|
|
58
|
+
chunk_id = self._generate_chunk_id(document, chunk_number, chunk)
|
|
63
59
|
meta_data["chunk_size"] = len(chunk)
|
|
64
60
|
chunks.append(
|
|
65
61
|
Document(
|
|
@@ -82,7 +82,7 @@ class CodeChunking(ChunkingStrategy):
|
|
|
82
82
|
for i, chunk in enumerate(chunks, 1):
|
|
83
83
|
meta_data = document.meta_data.copy()
|
|
84
84
|
meta_data["chunk"] = i
|
|
85
|
-
chunk_id =
|
|
85
|
+
chunk_id = self._generate_chunk_id(document, i, chunk.text)
|
|
86
86
|
meta_data["chunk_size"] = len(chunk.text)
|
|
87
87
|
|
|
88
88
|
chunked_documents.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=chunk.text))
|
|
@@ -38,17 +38,10 @@ class DocumentChunking(ChunkingStrategy):
|
|
|
38
38
|
if current_chunk:
|
|
39
39
|
meta_data = chunk_meta_data.copy()
|
|
40
40
|
meta_data["chunk"] = chunk_number
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
chunk_id = f"{document.name}_{chunk_number}"
|
|
46
|
-
meta_data["chunk_size"] = len("\n\n".join(current_chunk))
|
|
47
|
-
chunks.append(
|
|
48
|
-
Document(
|
|
49
|
-
id=chunk_id, name=document.name, meta_data=meta_data, content="\n\n".join(current_chunk)
|
|
50
|
-
)
|
|
51
|
-
)
|
|
41
|
+
chunk_content = "\n\n".join(current_chunk)
|
|
42
|
+
chunk_id = self._generate_chunk_id(document, chunk_number, chunk_content)
|
|
43
|
+
meta_data["chunk_size"] = len(chunk_content)
|
|
44
|
+
chunks.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=chunk_content))
|
|
52
45
|
chunk_number += 1
|
|
53
46
|
current_chunk = []
|
|
54
47
|
current_size = 0
|
|
@@ -70,18 +63,15 @@ class DocumentChunking(ChunkingStrategy):
|
|
|
70
63
|
if current_chunk:
|
|
71
64
|
meta_data = chunk_meta_data.copy()
|
|
72
65
|
meta_data["chunk"] = chunk_number
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
elif document.name:
|
|
77
|
-
chunk_id = f"{document.name}_{chunk_number}"
|
|
78
|
-
meta_data["chunk_size"] = len(" ".join(current_chunk))
|
|
66
|
+
chunk_content = " ".join(current_chunk)
|
|
67
|
+
chunk_id = self._generate_chunk_id(document, chunk_number, chunk_content)
|
|
68
|
+
meta_data["chunk_size"] = len(chunk_content)
|
|
79
69
|
chunks.append(
|
|
80
70
|
Document(
|
|
81
71
|
id=chunk_id,
|
|
82
72
|
name=document.name,
|
|
83
73
|
meta_data=meta_data,
|
|
84
|
-
content=
|
|
74
|
+
content=chunk_content,
|
|
85
75
|
)
|
|
86
76
|
)
|
|
87
77
|
chunk_number += 1
|
|
@@ -94,18 +84,11 @@ class DocumentChunking(ChunkingStrategy):
|
|
|
94
84
|
else:
|
|
95
85
|
meta_data = chunk_meta_data.copy()
|
|
96
86
|
meta_data["chunk"] = chunk_number
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
elif document.name:
|
|
101
|
-
chunk_id = f"{document.name}_{chunk_number}"
|
|
102
|
-
meta_data["chunk_size"] = len("\n\n".join(current_chunk))
|
|
87
|
+
chunk_content = "\n\n".join(current_chunk)
|
|
88
|
+
chunk_id = self._generate_chunk_id(document, chunk_number, chunk_content)
|
|
89
|
+
meta_data["chunk_size"] = len(chunk_content)
|
|
103
90
|
if current_chunk:
|
|
104
|
-
chunks.append(
|
|
105
|
-
Document(
|
|
106
|
-
id=chunk_id, name=document.name, meta_data=meta_data, content="\n\n".join(current_chunk)
|
|
107
|
-
)
|
|
108
|
-
)
|
|
91
|
+
chunks.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=chunk_content))
|
|
109
92
|
chunk_number += 1
|
|
110
93
|
current_chunk = [para]
|
|
111
94
|
current_size = para_size
|
|
@@ -113,15 +96,10 @@ class DocumentChunking(ChunkingStrategy):
|
|
|
113
96
|
if current_chunk:
|
|
114
97
|
meta_data = chunk_meta_data.copy()
|
|
115
98
|
meta_data["chunk"] = chunk_number
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
chunk_id = f"{document.name}_{chunk_number}"
|
|
121
|
-
meta_data["chunk_size"] = len("\n\n".join(current_chunk))
|
|
122
|
-
chunks.append(
|
|
123
|
-
Document(id=chunk_id, name=document.name, meta_data=meta_data, content="\n\n".join(current_chunk))
|
|
124
|
-
)
|
|
99
|
+
chunk_content = "\n\n".join(current_chunk)
|
|
100
|
+
chunk_id = self._generate_chunk_id(document, chunk_number, chunk_content)
|
|
101
|
+
meta_data["chunk_size"] = len(chunk_content)
|
|
102
|
+
chunks.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=chunk_content))
|
|
125
103
|
|
|
126
104
|
# Handle overlap if specified
|
|
127
105
|
if self.overlap > 0:
|
|
@@ -131,11 +109,11 @@ class DocumentChunking(ChunkingStrategy):
|
|
|
131
109
|
# Add overlap from previous chunk
|
|
132
110
|
prev_text = chunks[i - 1].content[-self.overlap :]
|
|
133
111
|
meta_data = chunk_meta_data.copy()
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
chunk_id = f"{document.id}_{chunk_number}"
|
|
112
|
+
# Use the chunk's existing metadata and ID instead of stale chunk_number
|
|
113
|
+
meta_data["chunk"] = chunks[i].meta_data["chunk"]
|
|
114
|
+
chunk_id = chunks[i].id
|
|
138
115
|
meta_data["chunk_size"] = len(prev_text + chunks[i].content)
|
|
116
|
+
|
|
139
117
|
if prev_text:
|
|
140
118
|
overlapped_chunks.append(
|
|
141
119
|
Document(
|
|
@@ -145,6 +123,8 @@ class DocumentChunking(ChunkingStrategy):
|
|
|
145
123
|
content=prev_text + chunks[i].content,
|
|
146
124
|
)
|
|
147
125
|
)
|
|
126
|
+
else:
|
|
127
|
+
overlapped_chunks.append(chunks[i])
|
|
148
128
|
else:
|
|
149
129
|
overlapped_chunks.append(chunks[i])
|
|
150
130
|
chunks = overlapped_chunks
|
|
@@ -38,11 +38,7 @@ class FixedSizeChunking(ChunkingStrategy):
|
|
|
38
38
|
chunk = content[start:end]
|
|
39
39
|
meta_data = chunk_meta_data.copy()
|
|
40
40
|
meta_data["chunk"] = chunk_number
|
|
41
|
-
chunk_id =
|
|
42
|
-
if document.id:
|
|
43
|
-
chunk_id = f"{document.id}_{chunk_number}"
|
|
44
|
-
elif document.name:
|
|
45
|
-
chunk_id = f"{document.name}_{chunk_number}"
|
|
41
|
+
chunk_id = self._generate_chunk_id(document, chunk_number, chunk)
|
|
46
42
|
meta_data["chunk_size"] = len(chunk)
|
|
47
43
|
chunked_documents.append(
|
|
48
44
|
Document(
|
|
@@ -267,11 +267,7 @@ class MarkdownChunking(ChunkingStrategy):
|
|
|
267
267
|
for sub_chunk in sub_chunks:
|
|
268
268
|
meta_data = chunk_meta_data.copy()
|
|
269
269
|
meta_data["chunk"] = chunk_number
|
|
270
|
-
chunk_id =
|
|
271
|
-
if document.id:
|
|
272
|
-
chunk_id = f"{document.id}_{chunk_number}"
|
|
273
|
-
elif document.name:
|
|
274
|
-
chunk_id = f"{document.name}_{chunk_number}"
|
|
270
|
+
chunk_id = self._generate_chunk_id(document, chunk_number, sub_chunk)
|
|
275
271
|
meta_data["chunk_size"] = len(sub_chunk)
|
|
276
272
|
|
|
277
273
|
chunks.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=sub_chunk))
|
|
@@ -282,19 +278,12 @@ class MarkdownChunking(ChunkingStrategy):
|
|
|
282
278
|
else:
|
|
283
279
|
meta_data = chunk_meta_data.copy()
|
|
284
280
|
meta_data["chunk"] = chunk_number
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
elif document.name:
|
|
289
|
-
chunk_id = f"{document.name}_{chunk_number}"
|
|
290
|
-
meta_data["chunk_size"] = len("\n\n".join(current_chunk))
|
|
281
|
+
chunk_content = "\n\n".join(current_chunk)
|
|
282
|
+
chunk_id = self._generate_chunk_id(document, chunk_number, chunk_content)
|
|
283
|
+
meta_data["chunk_size"] = len(chunk_content)
|
|
291
284
|
|
|
292
285
|
if current_chunk:
|
|
293
|
-
chunks.append(
|
|
294
|
-
Document(
|
|
295
|
-
id=chunk_id, name=document.name, meta_data=meta_data, content="\n\n".join(current_chunk)
|
|
296
|
-
)
|
|
297
|
-
)
|
|
286
|
+
chunks.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=chunk_content))
|
|
298
287
|
chunk_number += 1
|
|
299
288
|
|
|
300
289
|
current_chunk = [section]
|
|
@@ -304,15 +293,10 @@ class MarkdownChunking(ChunkingStrategy):
|
|
|
304
293
|
if current_chunk and not self.split_on_headings:
|
|
305
294
|
meta_data = chunk_meta_data.copy()
|
|
306
295
|
meta_data["chunk"] = chunk_number
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
chunk_id = f"{document.name}_{chunk_number}"
|
|
312
|
-
meta_data["chunk_size"] = len("\n\n".join(current_chunk))
|
|
313
|
-
chunks.append(
|
|
314
|
-
Document(id=chunk_id, name=document.name, meta_data=meta_data, content="\n\n".join(current_chunk))
|
|
315
|
-
)
|
|
296
|
+
chunk_content = "\n\n".join(current_chunk)
|
|
297
|
+
chunk_id = self._generate_chunk_id(document, chunk_number, chunk_content)
|
|
298
|
+
meta_data["chunk_size"] = len(chunk_content)
|
|
299
|
+
chunks.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=chunk_content))
|
|
316
300
|
|
|
317
301
|
# Handle overlap if specified
|
|
318
302
|
if self.overlap > 0:
|
|
@@ -46,9 +46,7 @@ class RecursiveChunking(ChunkingStrategy):
|
|
|
46
46
|
chunk = self.clean_text(content[start:end])
|
|
47
47
|
meta_data = chunk_meta_data.copy()
|
|
48
48
|
meta_data["chunk"] = chunk_number
|
|
49
|
-
chunk_id =
|
|
50
|
-
if document.id:
|
|
51
|
-
chunk_id = f"{document.id}_{chunk_number}"
|
|
49
|
+
chunk_id = self._generate_chunk_id(document, chunk_number, chunk)
|
|
52
50
|
chunk_number += 1
|
|
53
51
|
meta_data["chunk_size"] = len(chunk)
|
|
54
52
|
chunks.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=chunk))
|
|
@@ -33,7 +33,8 @@ class RowChunking(ChunkingStrategy):
|
|
|
33
33
|
|
|
34
34
|
if chunk_content: # Skip empty rows
|
|
35
35
|
meta_data = document.meta_data.copy()
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
row_number = start_index + i
|
|
37
|
+
meta_data["row_number"] = row_number # Preserve logical row numbering
|
|
38
|
+
chunk_id = self._generate_chunk_id(document, row_number, chunk_content, prefix="row")
|
|
38
39
|
chunks.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=chunk_content))
|
|
39
40
|
return chunks
|
|
@@ -160,7 +160,7 @@ class SemanticChunking(ChunkingStrategy):
|
|
|
160
160
|
for i, chunk in enumerate(chunks, 1):
|
|
161
161
|
meta_data = document.meta_data.copy()
|
|
162
162
|
meta_data["chunk"] = i
|
|
163
|
-
chunk_id =
|
|
163
|
+
chunk_id = self._generate_chunk_id(document, i, chunk.text)
|
|
164
164
|
meta_data["chunk_size"] = len(chunk.text)
|
|
165
165
|
|
|
166
166
|
chunked_documents.append(Document(id=chunk_id, name=document.name, meta_data=meta_data, content=chunk.text))
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import hashlib
|
|
1
2
|
from abc import ABC, abstractmethod
|
|
2
3
|
from enum import Enum
|
|
3
4
|
from typing import List, Optional
|
|
@@ -12,6 +13,24 @@ class ChunkingStrategy(ABC):
|
|
|
12
13
|
def chunk(self, document: Document) -> List[Document]:
|
|
13
14
|
raise NotImplementedError
|
|
14
15
|
|
|
16
|
+
def _generate_chunk_id(
|
|
17
|
+
self, document: Document, chunk_number: int, content: Optional[str] = None, prefix: Optional[str] = None
|
|
18
|
+
) -> Optional[str]:
|
|
19
|
+
"""Generate a deterministic ID for the chunk."""
|
|
20
|
+
suffix = f"_{prefix}_{chunk_number}" if prefix else f"_{chunk_number}"
|
|
21
|
+
|
|
22
|
+
if document.id:
|
|
23
|
+
return f"{document.id}{suffix}"
|
|
24
|
+
elif document.name:
|
|
25
|
+
return f"{document.name}{suffix}"
|
|
26
|
+
else:
|
|
27
|
+
# Hash the chunk content for a deterministic ID when no identifier exists
|
|
28
|
+
hash_source = content if content else document.content
|
|
29
|
+
if hash_source:
|
|
30
|
+
content_hash = hashlib.md5(hash_source.encode("utf-8")).hexdigest()[:12] # nosec B324
|
|
31
|
+
return f"chunk_{content_hash}{suffix}"
|
|
32
|
+
return None
|
|
33
|
+
|
|
15
34
|
async def achunk(self, document: Document) -> List[Document]:
|
|
16
35
|
"""Async version of chunk. Override for truly async implementations."""
|
|
17
36
|
return self.chunk(document)
|