agno 1.8.0__py3-none-any.whl → 2.0.0a1__py3-none-any.whl
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/__init__.py +8 -0
- agno/agent/__init__.py +19 -27
- agno/agent/agent.py +2781 -4126
- agno/api/agent.py +9 -65
- agno/api/api.py +5 -46
- agno/api/evals.py +6 -17
- agno/api/os.py +17 -0
- agno/api/routes.py +6 -41
- agno/api/schemas/__init__.py +9 -0
- agno/api/schemas/agent.py +5 -21
- agno/api/schemas/evals.py +7 -16
- agno/api/schemas/os.py +14 -0
- agno/api/schemas/team.py +5 -21
- agno/api/schemas/utils.py +21 -0
- agno/api/schemas/workflows.py +11 -7
- agno/api/settings.py +53 -0
- agno/api/team.py +9 -64
- agno/api/workflow.py +28 -0
- agno/cloud/aws/base.py +214 -0
- agno/cloud/aws/s3/__init__.py +2 -0
- agno/cloud/aws/s3/api_client.py +43 -0
- agno/cloud/aws/s3/bucket.py +195 -0
- agno/cloud/aws/s3/object.py +57 -0
- agno/db/__init__.py +24 -0
- agno/db/base.py +245 -0
- agno/db/dynamo/__init__.py +3 -0
- agno/db/dynamo/dynamo.py +1749 -0
- agno/db/dynamo/schemas.py +278 -0
- agno/db/dynamo/utils.py +684 -0
- agno/db/firestore/__init__.py +3 -0
- agno/db/firestore/firestore.py +1438 -0
- agno/db/firestore/schemas.py +130 -0
- agno/db/firestore/utils.py +278 -0
- agno/db/gcs_json/__init__.py +3 -0
- agno/db/gcs_json/gcs_json_db.py +1001 -0
- agno/db/gcs_json/utils.py +194 -0
- agno/db/in_memory/__init__.py +3 -0
- agno/db/in_memory/in_memory_db.py +888 -0
- agno/db/in_memory/utils.py +172 -0
- agno/db/json/__init__.py +3 -0
- agno/db/json/json_db.py +1051 -0
- agno/db/json/utils.py +196 -0
- agno/db/migrations/v1_to_v2.py +162 -0
- agno/db/mongo/__init__.py +3 -0
- agno/db/mongo/mongo.py +1417 -0
- agno/db/mongo/schemas.py +77 -0
- agno/db/mongo/utils.py +204 -0
- agno/db/mysql/__init__.py +3 -0
- agno/db/mysql/mysql.py +1719 -0
- agno/db/mysql/schemas.py +124 -0
- agno/db/mysql/utils.py +298 -0
- agno/db/postgres/__init__.py +3 -0
- agno/db/postgres/postgres.py +1720 -0
- agno/db/postgres/schemas.py +124 -0
- agno/db/postgres/utils.py +281 -0
- agno/db/redis/__init__.py +3 -0
- agno/db/redis/redis.py +1371 -0
- agno/db/redis/schemas.py +109 -0
- agno/db/redis/utils.py +288 -0
- agno/db/schemas/__init__.py +3 -0
- agno/db/schemas/evals.py +33 -0
- agno/db/schemas/knowledge.py +40 -0
- agno/db/schemas/memory.py +46 -0
- agno/db/singlestore/__init__.py +3 -0
- agno/db/singlestore/schemas.py +116 -0
- agno/db/singlestore/singlestore.py +1722 -0
- agno/db/singlestore/utils.py +327 -0
- agno/db/sqlite/__init__.py +3 -0
- agno/db/sqlite/schemas.py +119 -0
- agno/db/sqlite/sqlite.py +1680 -0
- agno/db/sqlite/utils.py +269 -0
- agno/db/utils.py +88 -0
- agno/eval/__init__.py +14 -0
- agno/eval/accuracy.py +142 -43
- agno/eval/performance.py +88 -23
- agno/eval/reliability.py +73 -20
- agno/eval/utils.py +23 -13
- agno/integrations/discord/__init__.py +3 -0
- agno/{app → integrations}/discord/client.py +10 -10
- agno/knowledge/__init__.py +2 -2
- agno/{document → knowledge}/chunking/agentic.py +2 -2
- agno/{document → knowledge}/chunking/document.py +2 -2
- agno/{document → knowledge}/chunking/fixed.py +3 -3
- agno/{document → knowledge}/chunking/markdown.py +2 -2
- agno/{document → knowledge}/chunking/recursive.py +2 -2
- agno/{document → knowledge}/chunking/row.py +2 -2
- agno/knowledge/chunking/semantic.py +59 -0
- agno/knowledge/chunking/strategy.py +121 -0
- agno/knowledge/content.py +74 -0
- agno/knowledge/document/__init__.py +5 -0
- agno/{document → knowledge/document}/base.py +12 -2
- agno/knowledge/embedder/__init__.py +5 -0
- agno/{embedder → knowledge/embedder}/aws_bedrock.py +127 -1
- agno/{embedder → knowledge/embedder}/azure_openai.py +65 -1
- agno/{embedder → knowledge/embedder}/base.py +6 -0
- agno/{embedder → knowledge/embedder}/cohere.py +72 -1
- agno/{embedder → knowledge/embedder}/fastembed.py +17 -1
- agno/{embedder → knowledge/embedder}/fireworks.py +1 -1
- agno/{embedder → knowledge/embedder}/google.py +74 -1
- agno/{embedder → knowledge/embedder}/huggingface.py +36 -2
- agno/{embedder → knowledge/embedder}/jina.py +48 -2
- agno/knowledge/embedder/langdb.py +22 -0
- agno/knowledge/embedder/mistral.py +139 -0
- agno/{embedder → knowledge/embedder}/nebius.py +1 -1
- agno/{embedder → knowledge/embedder}/ollama.py +54 -3
- agno/knowledge/embedder/openai.py +223 -0
- agno/{embedder → knowledge/embedder}/sentence_transformer.py +16 -1
- agno/{embedder → knowledge/embedder}/together.py +1 -1
- agno/{embedder → knowledge/embedder}/voyageai.py +49 -1
- agno/knowledge/knowledge.py +1515 -0
- agno/knowledge/reader/__init__.py +7 -0
- agno/{document → knowledge}/reader/arxiv_reader.py +32 -4
- agno/knowledge/reader/base.py +88 -0
- agno/{document → knowledge}/reader/csv_reader.py +68 -15
- agno/knowledge/reader/docx_reader.py +83 -0
- agno/{document → knowledge}/reader/firecrawl_reader.py +42 -21
- agno/knowledge/reader/gcs_reader.py +67 -0
- agno/{document → knowledge}/reader/json_reader.py +30 -9
- agno/{document → knowledge}/reader/markdown_reader.py +36 -9
- agno/{document → knowledge}/reader/pdf_reader.py +79 -21
- agno/knowledge/reader/reader_factory.py +275 -0
- agno/knowledge/reader/s3_reader.py +171 -0
- agno/{document → knowledge}/reader/text_reader.py +31 -10
- agno/knowledge/reader/url_reader.py +84 -0
- agno/knowledge/reader/web_search_reader.py +389 -0
- agno/{document → knowledge}/reader/website_reader.py +37 -10
- agno/knowledge/reader/wikipedia_reader.py +59 -0
- agno/knowledge/reader/youtube_reader.py +78 -0
- agno/knowledge/remote_content/remote_content.py +88 -0
- agno/{reranker → knowledge/reranker}/base.py +1 -1
- agno/{reranker → knowledge/reranker}/cohere.py +2 -2
- agno/{reranker → knowledge/reranker}/infinity.py +2 -2
- agno/{reranker → knowledge/reranker}/sentence_transformer.py +2 -2
- agno/knowledge/types.py +30 -0
- agno/knowledge/utils.py +169 -0
- agno/media.py +2 -2
- agno/memory/__init__.py +2 -10
- agno/memory/manager.py +1003 -148
- agno/models/aimlapi/__init__.py +2 -2
- agno/models/aimlapi/aimlapi.py +6 -6
- agno/models/anthropic/claude.py +129 -82
- agno/models/aws/bedrock.py +107 -175
- agno/models/aws/claude.py +64 -18
- agno/models/azure/ai_foundry.py +73 -23
- agno/models/base.py +347 -287
- agno/models/cerebras/cerebras.py +84 -27
- agno/models/cohere/chat.py +106 -98
- agno/models/dashscope/dashscope.py +14 -5
- agno/models/google/gemini.py +123 -53
- agno/models/groq/groq.py +97 -35
- agno/models/huggingface/huggingface.py +92 -27
- agno/models/ibm/watsonx.py +72 -13
- agno/models/litellm/chat.py +85 -13
- agno/models/message.py +38 -144
- agno/models/meta/llama.py +85 -49
- agno/models/metrics.py +120 -0
- agno/models/mistral/mistral.py +90 -21
- agno/models/ollama/__init__.py +0 -2
- agno/models/ollama/chat.py +84 -46
- agno/models/openai/chat.py +135 -27
- agno/models/openai/responses.py +233 -115
- agno/models/perplexity/perplexity.py +26 -2
- agno/models/portkey/portkey.py +0 -7
- agno/models/response.py +14 -8
- agno/models/utils.py +20 -0
- agno/models/vercel/__init__.py +2 -2
- agno/models/vercel/v0.py +1 -1
- agno/models/vllm/__init__.py +2 -2
- agno/models/vllm/vllm.py +3 -3
- agno/models/xai/xai.py +10 -10
- agno/os/__init__.py +3 -0
- agno/os/app.py +393 -0
- agno/os/auth.py +47 -0
- agno/os/config.py +103 -0
- agno/os/interfaces/agui/__init__.py +3 -0
- agno/os/interfaces/agui/agui.py +31 -0
- agno/{app/agui/async_router.py → os/interfaces/agui/router.py} +16 -16
- agno/{app → os/interfaces}/agui/utils.py +65 -28
- agno/os/interfaces/base.py +21 -0
- agno/os/interfaces/slack/__init__.py +3 -0
- agno/{app/slack/async_router.py → os/interfaces/slack/router.py} +3 -5
- agno/os/interfaces/slack/slack.py +33 -0
- agno/os/interfaces/whatsapp/__init__.py +3 -0
- agno/{app/whatsapp/async_router.py → os/interfaces/whatsapp/router.py} +4 -7
- agno/os/interfaces/whatsapp/whatsapp.py +30 -0
- agno/os/router.py +843 -0
- agno/os/routers/__init__.py +3 -0
- agno/os/routers/evals/__init__.py +3 -0
- agno/os/routers/evals/evals.py +204 -0
- agno/os/routers/evals/schemas.py +142 -0
- agno/os/routers/evals/utils.py +161 -0
- agno/os/routers/knowledge/__init__.py +3 -0
- agno/os/routers/knowledge/knowledge.py +413 -0
- agno/os/routers/knowledge/schemas.py +118 -0
- agno/os/routers/memory/__init__.py +3 -0
- agno/os/routers/memory/memory.py +179 -0
- agno/os/routers/memory/schemas.py +58 -0
- agno/os/routers/metrics/__init__.py +3 -0
- agno/os/routers/metrics/metrics.py +58 -0
- agno/os/routers/metrics/schemas.py +47 -0
- agno/os/routers/session/__init__.py +3 -0
- agno/os/routers/session/session.py +163 -0
- agno/os/schema.py +892 -0
- agno/{app/playground → os}/settings.py +8 -15
- agno/os/utils.py +270 -0
- agno/reasoning/azure_ai_foundry.py +4 -4
- agno/reasoning/deepseek.py +4 -4
- agno/reasoning/default.py +6 -11
- agno/reasoning/groq.py +4 -4
- agno/reasoning/helpers.py +4 -6
- agno/reasoning/ollama.py +4 -4
- agno/reasoning/openai.py +4 -4
- agno/run/{response.py → agent.py} +144 -72
- agno/run/base.py +44 -58
- agno/run/cancel.py +83 -0
- agno/run/team.py +133 -77
- agno/run/workflow.py +537 -12
- agno/session/__init__.py +10 -0
- agno/session/agent.py +244 -0
- agno/session/summary.py +225 -0
- agno/session/team.py +262 -0
- agno/{storage/session/v2 → session}/workflow.py +47 -24
- agno/team/__init__.py +15 -16
- agno/team/team.py +2967 -4243
- agno/tools/agentql.py +14 -5
- agno/tools/airflow.py +9 -4
- agno/tools/api.py +7 -3
- agno/tools/apify.py +2 -46
- agno/tools/arxiv.py +8 -3
- agno/tools/aws_lambda.py +7 -5
- agno/tools/aws_ses.py +7 -1
- agno/tools/baidusearch.py +4 -1
- agno/tools/bitbucket.py +4 -4
- agno/tools/brandfetch.py +14 -11
- agno/tools/bravesearch.py +4 -1
- agno/tools/brightdata.py +42 -22
- agno/tools/browserbase.py +13 -4
- agno/tools/calcom.py +12 -10
- agno/tools/calculator.py +10 -27
- agno/tools/cartesia.py +18 -13
- agno/tools/{clickup_tool.py → clickup.py} +12 -25
- agno/tools/confluence.py +71 -18
- agno/tools/crawl4ai.py +7 -1
- agno/tools/csv_toolkit.py +9 -8
- agno/tools/dalle.py +18 -11
- agno/tools/daytona.py +13 -16
- agno/tools/decorator.py +6 -3
- agno/tools/desi_vocal.py +16 -7
- agno/tools/discord.py +11 -8
- agno/tools/docker.py +30 -42
- agno/tools/duckdb.py +34 -53
- agno/tools/duckduckgo.py +8 -7
- agno/tools/e2b.py +62 -62
- agno/tools/eleven_labs.py +35 -28
- agno/tools/email.py +4 -1
- agno/tools/evm.py +7 -1
- agno/tools/exa.py +19 -14
- agno/tools/fal.py +29 -29
- agno/tools/file.py +9 -8
- agno/tools/financial_datasets.py +25 -44
- agno/tools/firecrawl.py +22 -22
- agno/tools/function.py +68 -17
- agno/tools/giphy.py +22 -10
- agno/tools/github.py +48 -126
- agno/tools/gmail.py +46 -62
- agno/tools/google_bigquery.py +7 -6
- agno/tools/google_maps.py +11 -26
- agno/tools/googlesearch.py +7 -2
- agno/tools/googlesheets.py +21 -17
- agno/tools/hackernews.py +9 -5
- agno/tools/jina.py +5 -4
- agno/tools/jira.py +18 -9
- agno/tools/knowledge.py +31 -32
- agno/tools/linear.py +18 -33
- agno/tools/linkup.py +5 -1
- agno/tools/local_file_system.py +8 -5
- agno/tools/lumalab.py +31 -19
- agno/tools/mem0.py +18 -12
- agno/tools/memori.py +14 -10
- agno/tools/mlx_transcribe.py +3 -2
- agno/tools/models/azure_openai.py +32 -14
- agno/tools/models/gemini.py +58 -31
- agno/tools/models/groq.py +29 -20
- agno/tools/models/nebius.py +27 -11
- agno/tools/models_labs.py +39 -15
- agno/tools/moviepy_video.py +7 -6
- agno/tools/neo4j.py +134 -0
- agno/tools/newspaper.py +7 -2
- agno/tools/newspaper4k.py +8 -3
- agno/tools/openai.py +57 -26
- agno/tools/openbb.py +12 -11
- agno/tools/opencv.py +62 -46
- agno/tools/openweather.py +14 -12
- agno/tools/pandas.py +11 -3
- agno/tools/postgres.py +4 -12
- agno/tools/pubmed.py +4 -1
- agno/tools/python.py +9 -22
- agno/tools/reasoning.py +35 -27
- agno/tools/reddit.py +11 -26
- agno/tools/replicate.py +54 -41
- agno/tools/resend.py +4 -1
- agno/tools/scrapegraph.py +15 -14
- agno/tools/searxng.py +10 -23
- agno/tools/serpapi.py +6 -3
- agno/tools/serper.py +13 -4
- agno/tools/shell.py +9 -2
- agno/tools/slack.py +12 -11
- agno/tools/sleep.py +3 -2
- agno/tools/spider.py +24 -4
- agno/tools/sql.py +7 -6
- agno/tools/tavily.py +6 -4
- agno/tools/telegram.py +12 -4
- agno/tools/todoist.py +11 -31
- agno/tools/toolkit.py +1 -1
- agno/tools/trafilatura.py +22 -6
- agno/tools/trello.py +9 -22
- agno/tools/twilio.py +10 -3
- agno/tools/user_control_flow.py +6 -1
- agno/tools/valyu.py +34 -5
- agno/tools/visualization.py +19 -28
- agno/tools/webbrowser.py +4 -3
- agno/tools/webex.py +11 -7
- agno/tools/website.py +15 -46
- agno/tools/webtools.py +12 -4
- agno/tools/whatsapp.py +5 -9
- agno/tools/wikipedia.py +20 -13
- agno/tools/x.py +14 -13
- agno/tools/yfinance.py +13 -40
- agno/tools/youtube.py +26 -20
- agno/tools/zendesk.py +7 -2
- agno/tools/zep.py +10 -7
- agno/tools/zoom.py +10 -9
- agno/utils/common.py +1 -19
- agno/utils/events.py +95 -118
- agno/utils/knowledge.py +29 -0
- agno/utils/location.py +2 -2
- agno/utils/log.py +2 -2
- agno/utils/mcp.py +11 -5
- agno/utils/media.py +39 -0
- agno/utils/message.py +12 -1
- agno/utils/models/claude.py +6 -4
- agno/utils/models/mistral.py +8 -7
- agno/utils/models/schema_utils.py +3 -3
- agno/utils/pprint.py +33 -32
- agno/utils/print_response/agent.py +779 -0
- agno/utils/print_response/team.py +1565 -0
- agno/utils/print_response/workflow.py +1451 -0
- agno/utils/prompts.py +14 -14
- agno/utils/reasoning.py +87 -0
- agno/utils/response.py +42 -42
- agno/utils/string.py +8 -22
- agno/utils/team.py +50 -0
- agno/utils/timer.py +2 -2
- agno/vectordb/base.py +33 -21
- agno/vectordb/cassandra/cassandra.py +287 -23
- agno/vectordb/chroma/chromadb.py +482 -59
- agno/vectordb/clickhouse/clickhousedb.py +270 -63
- agno/vectordb/couchbase/couchbase.py +309 -29
- agno/vectordb/lancedb/lance_db.py +360 -21
- agno/vectordb/langchaindb/__init__.py +5 -0
- agno/vectordb/langchaindb/langchaindb.py +145 -0
- agno/vectordb/lightrag/__init__.py +5 -0
- agno/vectordb/lightrag/lightrag.py +374 -0
- agno/vectordb/llamaindex/llamaindexdb.py +127 -0
- agno/vectordb/milvus/milvus.py +242 -32
- agno/vectordb/mongodb/mongodb.py +200 -24
- agno/vectordb/pgvector/pgvector.py +319 -37
- agno/vectordb/pineconedb/pineconedb.py +221 -27
- agno/vectordb/qdrant/qdrant.py +356 -14
- agno/vectordb/singlestore/singlestore.py +286 -29
- agno/vectordb/surrealdb/surrealdb.py +187 -7
- agno/vectordb/upstashdb/upstashdb.py +342 -26
- agno/vectordb/weaviate/weaviate.py +227 -165
- agno/workflow/__init__.py +17 -13
- agno/workflow/{v2/condition.py → condition.py} +135 -32
- agno/workflow/{v2/loop.py → loop.py} +115 -28
- agno/workflow/{v2/parallel.py → parallel.py} +138 -108
- agno/workflow/{v2/router.py → router.py} +133 -32
- agno/workflow/{v2/step.py → step.py} +200 -42
- agno/workflow/{v2/steps.py → steps.py} +147 -66
- agno/workflow/types.py +482 -0
- agno/workflow/workflow.py +2394 -696
- agno-2.0.0a1.dist-info/METADATA +355 -0
- agno-2.0.0a1.dist-info/RECORD +514 -0
- agno/agent/metrics.py +0 -107
- agno/api/app.py +0 -35
- agno/api/playground.py +0 -92
- agno/api/schemas/app.py +0 -12
- agno/api/schemas/playground.py +0 -22
- agno/api/schemas/user.py +0 -35
- agno/api/schemas/workspace.py +0 -46
- agno/api/user.py +0 -160
- agno/api/workflows.py +0 -33
- agno/api/workspace.py +0 -175
- agno/app/agui/__init__.py +0 -3
- agno/app/agui/app.py +0 -17
- agno/app/agui/sync_router.py +0 -120
- agno/app/base.py +0 -186
- agno/app/discord/__init__.py +0 -3
- agno/app/fastapi/__init__.py +0 -3
- agno/app/fastapi/app.py +0 -107
- agno/app/fastapi/async_router.py +0 -457
- agno/app/fastapi/sync_router.py +0 -448
- agno/app/playground/app.py +0 -228
- agno/app/playground/async_router.py +0 -1050
- agno/app/playground/deploy.py +0 -249
- agno/app/playground/operator.py +0 -183
- agno/app/playground/schemas.py +0 -220
- agno/app/playground/serve.py +0 -55
- agno/app/playground/sync_router.py +0 -1042
- agno/app/playground/utils.py +0 -46
- agno/app/settings.py +0 -15
- agno/app/slack/__init__.py +0 -3
- agno/app/slack/app.py +0 -19
- agno/app/slack/sync_router.py +0 -92
- agno/app/utils.py +0 -54
- agno/app/whatsapp/__init__.py +0 -3
- agno/app/whatsapp/app.py +0 -15
- agno/app/whatsapp/sync_router.py +0 -197
- agno/cli/auth_server.py +0 -249
- agno/cli/config.py +0 -274
- agno/cli/console.py +0 -88
- agno/cli/credentials.py +0 -23
- agno/cli/entrypoint.py +0 -571
- agno/cli/operator.py +0 -357
- agno/cli/settings.py +0 -96
- agno/cli/ws/ws_cli.py +0 -817
- agno/constants.py +0 -13
- agno/document/__init__.py +0 -5
- agno/document/chunking/semantic.py +0 -45
- agno/document/chunking/strategy.py +0 -31
- agno/document/reader/__init__.py +0 -5
- agno/document/reader/base.py +0 -47
- agno/document/reader/docx_reader.py +0 -60
- agno/document/reader/gcs/pdf_reader.py +0 -44
- agno/document/reader/s3/pdf_reader.py +0 -59
- agno/document/reader/s3/text_reader.py +0 -63
- agno/document/reader/url_reader.py +0 -59
- agno/document/reader/youtube_reader.py +0 -58
- agno/embedder/__init__.py +0 -5
- agno/embedder/langdb.py +0 -80
- agno/embedder/mistral.py +0 -82
- agno/embedder/openai.py +0 -78
- agno/file/__init__.py +0 -5
- agno/file/file.py +0 -16
- agno/file/local/csv.py +0 -32
- agno/file/local/txt.py +0 -19
- agno/infra/app.py +0 -240
- agno/infra/base.py +0 -144
- agno/infra/context.py +0 -20
- agno/infra/db_app.py +0 -52
- agno/infra/resource.py +0 -205
- agno/infra/resources.py +0 -55
- agno/knowledge/agent.py +0 -698
- agno/knowledge/arxiv.py +0 -33
- agno/knowledge/combined.py +0 -36
- agno/knowledge/csv.py +0 -144
- agno/knowledge/csv_url.py +0 -124
- agno/knowledge/document.py +0 -223
- agno/knowledge/docx.py +0 -137
- agno/knowledge/firecrawl.py +0 -34
- agno/knowledge/gcs/__init__.py +0 -0
- agno/knowledge/gcs/base.py +0 -39
- agno/knowledge/gcs/pdf.py +0 -125
- agno/knowledge/json.py +0 -137
- agno/knowledge/langchain.py +0 -71
- agno/knowledge/light_rag.py +0 -273
- agno/knowledge/llamaindex.py +0 -66
- agno/knowledge/markdown.py +0 -154
- agno/knowledge/pdf.py +0 -164
- agno/knowledge/pdf_bytes.py +0 -42
- agno/knowledge/pdf_url.py +0 -148
- agno/knowledge/s3/__init__.py +0 -0
- agno/knowledge/s3/base.py +0 -64
- agno/knowledge/s3/pdf.py +0 -33
- agno/knowledge/s3/text.py +0 -34
- agno/knowledge/text.py +0 -141
- agno/knowledge/url.py +0 -46
- agno/knowledge/website.py +0 -179
- agno/knowledge/wikipedia.py +0 -32
- agno/knowledge/youtube.py +0 -35
- agno/memory/agent.py +0 -423
- agno/memory/classifier.py +0 -104
- agno/memory/db/__init__.py +0 -5
- agno/memory/db/base.py +0 -42
- agno/memory/db/mongodb.py +0 -189
- agno/memory/db/postgres.py +0 -203
- agno/memory/db/sqlite.py +0 -193
- agno/memory/memory.py +0 -22
- agno/memory/row.py +0 -36
- agno/memory/summarizer.py +0 -201
- agno/memory/summary.py +0 -19
- agno/memory/team.py +0 -415
- agno/memory/v2/__init__.py +0 -2
- agno/memory/v2/db/__init__.py +0 -1
- agno/memory/v2/db/base.py +0 -42
- agno/memory/v2/db/firestore.py +0 -339
- agno/memory/v2/db/mongodb.py +0 -196
- agno/memory/v2/db/postgres.py +0 -214
- agno/memory/v2/db/redis.py +0 -187
- agno/memory/v2/db/schema.py +0 -54
- agno/memory/v2/db/sqlite.py +0 -209
- agno/memory/v2/manager.py +0 -437
- agno/memory/v2/memory.py +0 -1097
- agno/memory/v2/schema.py +0 -55
- agno/memory/v2/summarizer.py +0 -215
- agno/memory/workflow.py +0 -38
- agno/models/ollama/tools.py +0 -430
- agno/models/qwen/__init__.py +0 -5
- agno/playground/__init__.py +0 -10
- agno/playground/deploy.py +0 -3
- agno/playground/playground.py +0 -3
- agno/playground/serve.py +0 -3
- agno/playground/settings.py +0 -3
- agno/reranker/__init__.py +0 -0
- agno/run/v2/__init__.py +0 -0
- agno/run/v2/workflow.py +0 -567
- agno/storage/__init__.py +0 -0
- agno/storage/agent/__init__.py +0 -0
- agno/storage/agent/dynamodb.py +0 -1
- agno/storage/agent/json.py +0 -1
- agno/storage/agent/mongodb.py +0 -1
- agno/storage/agent/postgres.py +0 -1
- agno/storage/agent/singlestore.py +0 -1
- agno/storage/agent/sqlite.py +0 -1
- agno/storage/agent/yaml.py +0 -1
- agno/storage/base.py +0 -60
- agno/storage/dynamodb.py +0 -673
- agno/storage/firestore.py +0 -297
- agno/storage/gcs_json.py +0 -261
- agno/storage/in_memory.py +0 -234
- agno/storage/json.py +0 -237
- agno/storage/mongodb.py +0 -328
- agno/storage/mysql.py +0 -685
- agno/storage/postgres.py +0 -682
- agno/storage/redis.py +0 -336
- agno/storage/session/__init__.py +0 -16
- agno/storage/session/agent.py +0 -64
- agno/storage/session/team.py +0 -63
- agno/storage/session/v2/__init__.py +0 -5
- agno/storage/session/workflow.py +0 -61
- agno/storage/singlestore.py +0 -606
- agno/storage/sqlite.py +0 -646
- agno/storage/workflow/__init__.py +0 -0
- agno/storage/workflow/mongodb.py +0 -1
- agno/storage/workflow/postgres.py +0 -1
- agno/storage/workflow/sqlite.py +0 -1
- agno/storage/yaml.py +0 -241
- agno/tools/thinking.py +0 -73
- agno/utils/defaults.py +0 -57
- agno/utils/filesystem.py +0 -39
- agno/utils/git.py +0 -52
- agno/utils/json_io.py +0 -30
- agno/utils/load_env.py +0 -19
- agno/utils/py_io.py +0 -19
- agno/utils/pyproject.py +0 -18
- agno/utils/resource_filter.py +0 -31
- agno/workflow/v2/__init__.py +0 -21
- agno/workflow/v2/types.py +0 -357
- agno/workflow/v2/workflow.py +0 -3312
- agno/workspace/__init__.py +0 -0
- agno/workspace/config.py +0 -325
- agno/workspace/enums.py +0 -6
- agno/workspace/helpers.py +0 -52
- agno/workspace/operator.py +0 -757
- agno/workspace/settings.py +0 -158
- agno-1.8.0.dist-info/METADATA +0 -979
- agno-1.8.0.dist-info/RECORD +0 -565
- agno-1.8.0.dist-info/entry_points.txt +0 -3
- /agno/{app → db/migrations}/__init__.py +0 -0
- /agno/{app/playground/__init__.py → db/schemas/metrics.py} +0 -0
- /agno/{cli → integrations}/__init__.py +0 -0
- /agno/{cli/ws → knowledge/chunking}/__init__.py +0 -0
- /agno/{document/chunking → knowledge/remote_content}/__init__.py +0 -0
- /agno/{document/reader/gcs → knowledge/reranker}/__init__.py +0 -0
- /agno/{document/reader/s3 → os/interfaces}/__init__.py +0 -0
- /agno/{app → os/interfaces}/slack/security.py +0 -0
- /agno/{app → os/interfaces}/whatsapp/security.py +0 -0
- /agno/{file/local → utils/print_response}/__init__.py +0 -0
- /agno/{infra → vectordb/llamaindex}/__init__.py +0 -0
- {agno-1.8.0.dist-info → agno-2.0.0a1.dist-info}/WHEEL +0 -0
- {agno-1.8.0.dist-info → agno-2.0.0a1.dist-info}/licenses/LICENSE +0 -0
- {agno-1.8.0.dist-info → agno-2.0.0a1.dist-info}/top_level.txt +0 -0
agno/tools/slack.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import json
|
|
2
|
-
import
|
|
2
|
+
from os import getenv
|
|
3
3
|
from typing import Any, Dict, List, Optional
|
|
4
4
|
|
|
5
|
-
from agno.tools
|
|
5
|
+
from agno.tools import Toolkit
|
|
6
6
|
from agno.utils.log import logger
|
|
7
7
|
|
|
8
8
|
try:
|
|
@@ -16,25 +16,26 @@ class SlackTools(Toolkit):
|
|
|
16
16
|
def __init__(
|
|
17
17
|
self,
|
|
18
18
|
token: Optional[str] = None,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
enable_send_message: bool = True,
|
|
20
|
+
enable_send_message_thread: bool = True,
|
|
21
|
+
enable_list_channels: bool = True,
|
|
22
|
+
enable_get_channel_history: bool = True,
|
|
23
|
+
all: bool = False,
|
|
23
24
|
**kwargs,
|
|
24
25
|
):
|
|
25
|
-
self.token: Optional[str] = token or
|
|
26
|
+
self.token: Optional[str] = token or getenv("SLACK_TOKEN")
|
|
26
27
|
if self.token is None or self.token == "":
|
|
27
28
|
raise ValueError("SLACK_TOKEN is not set")
|
|
28
29
|
self.client = WebClient(token=self.token)
|
|
29
30
|
|
|
30
31
|
tools: List[Any] = []
|
|
31
|
-
if
|
|
32
|
+
if enable_send_message or all:
|
|
32
33
|
tools.append(self.send_message)
|
|
33
|
-
if
|
|
34
|
+
if enable_send_message_thread or all:
|
|
34
35
|
tools.append(self.send_message_thread)
|
|
35
|
-
if
|
|
36
|
+
if enable_list_channels or all:
|
|
36
37
|
tools.append(self.list_channels)
|
|
37
|
-
if
|
|
38
|
+
if enable_get_channel_history or all:
|
|
38
39
|
tools.append(self.get_channel_history)
|
|
39
40
|
|
|
40
41
|
super().__init__(name="slack", tools=tools, **kwargs)
|
agno/tools/sleep.py
CHANGED
|
@@ -5,9 +5,10 @@ from agno.utils.log import log_info
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class SleepTools(Toolkit):
|
|
8
|
-
def __init__(self, **kwargs):
|
|
8
|
+
def __init__(self, enable_sleep: bool = True, all: bool = False, **kwargs):
|
|
9
9
|
tools = []
|
|
10
|
-
|
|
10
|
+
if all or enable_sleep:
|
|
11
|
+
tools.append(self.sleep)
|
|
11
12
|
|
|
12
13
|
super().__init__(name="sleep", tools=tools, **kwargs)
|
|
13
14
|
|
agno/tools/spider.py
CHANGED
|
@@ -7,16 +7,33 @@ except ImportError:
|
|
|
7
7
|
|
|
8
8
|
from typing import Any, List, Optional
|
|
9
9
|
|
|
10
|
-
from agno.tools
|
|
10
|
+
from agno.tools import Toolkit
|
|
11
11
|
from agno.utils.log import log_info, logger
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class SpiderTools(Toolkit):
|
|
15
|
+
"""
|
|
16
|
+
Spider is a toolkit for web searching, scraping, and crawling.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
enable_search (bool): Enable web search functionality. Default is True.
|
|
20
|
+
enable_scrape (bool): Enable web scraping functionality. Default is True.
|
|
21
|
+
enable_crawl (bool): Enable web crawling functionality. Default is True.
|
|
22
|
+
all (bool): Enable all tools. Overrides individual flags when True. Default is False.
|
|
23
|
+
max_results (Optional[int]): Default maximum number of results.
|
|
24
|
+
url (Optional[str]): Default URL for operations.
|
|
25
|
+
optional_params (Optional[dict]): Additional parameters for operations.
|
|
26
|
+
"""
|
|
27
|
+
|
|
15
28
|
def __init__(
|
|
16
29
|
self,
|
|
17
30
|
max_results: Optional[int] = None,
|
|
18
31
|
url: Optional[str] = None,
|
|
19
32
|
optional_params: Optional[dict] = None,
|
|
33
|
+
enable_search: bool = True,
|
|
34
|
+
enable_scrape: bool = True,
|
|
35
|
+
enable_crawl: bool = True,
|
|
36
|
+
all: bool = False,
|
|
20
37
|
**kwargs,
|
|
21
38
|
):
|
|
22
39
|
self.max_results = max_results
|
|
@@ -24,9 +41,12 @@ class SpiderTools(Toolkit):
|
|
|
24
41
|
self.optional_params = optional_params or {}
|
|
25
42
|
|
|
26
43
|
tools: List[Any] = []
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
44
|
+
if enable_search or all:
|
|
45
|
+
tools.append(self.search)
|
|
46
|
+
if enable_scrape or all:
|
|
47
|
+
tools.append(self.scrape)
|
|
48
|
+
if enable_crawl or all:
|
|
49
|
+
tools.append(self.crawl)
|
|
30
50
|
|
|
31
51
|
super().__init__(name="spider", tools=tools, **kwargs)
|
|
32
52
|
|
agno/tools/sql.py
CHANGED
|
@@ -25,9 +25,10 @@ class SQLTools(Toolkit):
|
|
|
25
25
|
schema: Optional[str] = None,
|
|
26
26
|
dialect: Optional[str] = None,
|
|
27
27
|
tables: Optional[Dict[str, Any]] = None,
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
enable_list_tables: bool = True,
|
|
29
|
+
enable_describe_table: bool = True,
|
|
30
|
+
enable_run_sql_query: bool = True,
|
|
31
|
+
all: bool = False,
|
|
31
32
|
**kwargs,
|
|
32
33
|
):
|
|
33
34
|
# Get the database engine
|
|
@@ -53,11 +54,11 @@ class SQLTools(Toolkit):
|
|
|
53
54
|
self.tables: Optional[Dict[str, Any]] = tables
|
|
54
55
|
|
|
55
56
|
tools: List[Any] = []
|
|
56
|
-
if
|
|
57
|
+
if enable_list_tables or all:
|
|
57
58
|
tools.append(self.list_tables)
|
|
58
|
-
if
|
|
59
|
+
if enable_describe_table or all:
|
|
59
60
|
tools.append(self.describe_table)
|
|
60
|
-
if
|
|
61
|
+
if enable_run_sql_query or all:
|
|
61
62
|
tools.append(self.run_sql_query)
|
|
62
63
|
|
|
63
64
|
super().__init__(name="sql_tools", tools=tools, **kwargs)
|
agno/tools/tavily.py
CHANGED
|
@@ -15,12 +15,13 @@ class TavilyTools(Toolkit):
|
|
|
15
15
|
def __init__(
|
|
16
16
|
self,
|
|
17
17
|
api_key: Optional[str] = None,
|
|
18
|
-
|
|
18
|
+
enable_search: bool = True,
|
|
19
|
+
enable_search_context: bool = False,
|
|
20
|
+
all: bool = False,
|
|
19
21
|
max_tokens: int = 6000,
|
|
20
22
|
include_answer: bool = True,
|
|
21
23
|
search_depth: Literal["basic", "advanced"] = "advanced",
|
|
22
24
|
format: Literal["json", "markdown"] = "markdown",
|
|
23
|
-
use_search_context: bool = False,
|
|
24
25
|
**kwargs,
|
|
25
26
|
):
|
|
26
27
|
self.api_key = api_key or getenv("TAVILY_API_KEY")
|
|
@@ -34,8 +35,9 @@ class TavilyTools(Toolkit):
|
|
|
34
35
|
self.format: Literal["json", "markdown"] = format
|
|
35
36
|
|
|
36
37
|
tools: List[Any] = []
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
|
|
39
|
+
if enable_search or all:
|
|
40
|
+
if enable_search_context:
|
|
39
41
|
tools.append(self.web_search_with_tavily)
|
|
40
42
|
else:
|
|
41
43
|
tools.append(self.web_search_using_tavily)
|
agno/tools/telegram.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
from os import getenv
|
|
2
2
|
from typing import Any, List, Optional, Union
|
|
3
3
|
|
|
4
4
|
import httpx
|
|
@@ -10,15 +10,23 @@ from agno.utils.log import log_debug, logger
|
|
|
10
10
|
class TelegramTools(Toolkit):
|
|
11
11
|
base_url = "https://api.telegram.org"
|
|
12
12
|
|
|
13
|
-
def __init__(
|
|
14
|
-
self
|
|
13
|
+
def __init__(
|
|
14
|
+
self,
|
|
15
|
+
chat_id: Union[str, int],
|
|
16
|
+
token: Optional[str] = None,
|
|
17
|
+
enable_send_message: bool = True,
|
|
18
|
+
all: bool = False,
|
|
19
|
+
**kwargs,
|
|
20
|
+
):
|
|
21
|
+
self.token = token or getenv("TELEGRAM_TOKEN")
|
|
15
22
|
if not self.token:
|
|
16
23
|
logger.error("TELEGRAM_TOKEN not set. Please set the TELEGRAM_TOKEN environment variable.")
|
|
17
24
|
|
|
18
25
|
self.chat_id = chat_id
|
|
19
26
|
|
|
20
27
|
tools: List[Any] = []
|
|
21
|
-
|
|
28
|
+
if all or enable_send_message:
|
|
29
|
+
tools.append(self.send_message)
|
|
22
30
|
|
|
23
31
|
super().__init__(name="telegram", tools=tools, **kwargs)
|
|
24
32
|
|
agno/tools/todoist.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
|
-
import
|
|
2
|
+
from os import getenv
|
|
3
3
|
from typing import Any, Dict, List, Optional
|
|
4
4
|
|
|
5
5
|
from agno.tools import Toolkit
|
|
@@ -17,48 +17,28 @@ class TodoistTools(Toolkit):
|
|
|
17
17
|
def __init__(
|
|
18
18
|
self,
|
|
19
19
|
api_token: Optional[str] = None,
|
|
20
|
-
create_task: bool = True,
|
|
21
|
-
get_task: bool = True,
|
|
22
|
-
update_task: bool = True,
|
|
23
|
-
close_task: bool = True,
|
|
24
|
-
delete_task: bool = True,
|
|
25
|
-
get_active_tasks: bool = True,
|
|
26
|
-
get_projects: bool = True,
|
|
27
20
|
**kwargs,
|
|
28
21
|
):
|
|
29
22
|
"""Initialize the Todoist toolkit.
|
|
30
23
|
|
|
31
24
|
Args:
|
|
32
25
|
api_token: Optional Todoist API token. If not provided, will look for TODOIST_API_TOKEN env var
|
|
33
|
-
create_task: Whether to register the create_task function
|
|
34
|
-
get_task: Whether to register the get_task function
|
|
35
|
-
update_task: Whether to register the update_task function
|
|
36
|
-
close_task: Whether to register the close_task function
|
|
37
|
-
delete_task: Whether to register the delete_task function
|
|
38
|
-
get_active_tasks: Whether to register the get_active_tasks function
|
|
39
|
-
get_projects: Whether to register the get_projects function
|
|
40
26
|
"""
|
|
41
|
-
self.api_token = api_token or
|
|
27
|
+
self.api_token = api_token or getenv("TODOIST_API_TOKEN")
|
|
42
28
|
if not self.api_token:
|
|
43
29
|
raise ValueError("TODOIST_API_TOKEN not set. Please set the TODOIST_API_TOKEN environment variable.")
|
|
44
30
|
|
|
45
31
|
self.api = TodoistAPI(self.api_token)
|
|
46
32
|
|
|
47
|
-
tools: List[Any] = [
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if delete_task:
|
|
57
|
-
tools.append(self.delete_task)
|
|
58
|
-
if get_active_tasks:
|
|
59
|
-
tools.append(self.get_active_tasks)
|
|
60
|
-
if get_projects:
|
|
61
|
-
tools.append(self.get_projects)
|
|
33
|
+
tools: List[Any] = [
|
|
34
|
+
self.create_task,
|
|
35
|
+
self.get_task,
|
|
36
|
+
self.update_task,
|
|
37
|
+
self.close_task,
|
|
38
|
+
self.delete_task,
|
|
39
|
+
self.get_active_tasks,
|
|
40
|
+
self.get_projects,
|
|
41
|
+
]
|
|
62
42
|
|
|
63
43
|
super().__init__(name="todoist", tools=tools, **kwargs)
|
|
64
44
|
|
agno/tools/toolkit.py
CHANGED
|
@@ -131,7 +131,7 @@ class Toolkit:
|
|
|
131
131
|
requires_confirmation=tool_name in self.requires_confirmation_tools,
|
|
132
132
|
external_execution=tool_name in self.external_execution_required_tools,
|
|
133
133
|
stop_after_tool_call=tool_name in self.stop_after_tool_call_tools,
|
|
134
|
-
show_result=tool_name in self.show_result_tools,
|
|
134
|
+
show_result=tool_name in self.show_result_tools or tool_name in self.stop_after_tool_call_tools,
|
|
135
135
|
)
|
|
136
136
|
self.functions[f.name] = f
|
|
137
137
|
log_debug(f"Function: {f.name} registered with {self.name}")
|
agno/tools/trafilatura.py
CHANGED
|
@@ -63,6 +63,13 @@ class TrafilaturaTools(Toolkit):
|
|
|
63
63
|
max_tree_size: Optional[int] = None,
|
|
64
64
|
max_crawl_urls: int = 10,
|
|
65
65
|
max_known_urls: int = 100000,
|
|
66
|
+
# Tool enable flags for <6 functions
|
|
67
|
+
enable_extract_text: bool = True,
|
|
68
|
+
enable_extract_metadata_only: bool = True,
|
|
69
|
+
enable_html_to_text: bool = True,
|
|
70
|
+
enable_extract_batch: bool = True,
|
|
71
|
+
enable_crawl_website: bool = True,
|
|
72
|
+
all: bool = False,
|
|
66
73
|
**kwargs,
|
|
67
74
|
):
|
|
68
75
|
self.output_format = output_format
|
|
@@ -80,12 +87,21 @@ class TrafilaturaTools(Toolkit):
|
|
|
80
87
|
self.max_crawl_urls = max_crawl_urls
|
|
81
88
|
self.max_known_urls = max_known_urls
|
|
82
89
|
|
|
83
|
-
tools: List[Callable] = [
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
90
|
+
tools: List[Callable] = []
|
|
91
|
+
if all or enable_extract_text:
|
|
92
|
+
tools.append(self.extract_text)
|
|
93
|
+
if all or enable_extract_metadata_only:
|
|
94
|
+
tools.append(self.extract_metadata_only)
|
|
95
|
+
if all or enable_html_to_text:
|
|
96
|
+
tools.append(self.html_to_text)
|
|
97
|
+
if all or enable_extract_batch:
|
|
98
|
+
tools.append(self.extract_batch)
|
|
99
|
+
|
|
100
|
+
if all or enable_crawl_website:
|
|
101
|
+
if not SPIDER_AVAILABLE:
|
|
102
|
+
logger.warning("Web crawling requested but spider module not available. Skipping crawler tool.")
|
|
103
|
+
else:
|
|
104
|
+
tools.append(self.crawl_website)
|
|
89
105
|
|
|
90
106
|
super().__init__(name="trafilatura_tools", tools=tools, **kwargs)
|
|
91
107
|
|
agno/tools/trello.py
CHANGED
|
@@ -17,13 +17,6 @@ class TrelloTools(Toolkit):
|
|
|
17
17
|
api_key: Optional[str] = None,
|
|
18
18
|
api_secret: Optional[str] = None,
|
|
19
19
|
token: Optional[str] = None,
|
|
20
|
-
create_card: bool = True,
|
|
21
|
-
get_board_lists: bool = True,
|
|
22
|
-
move_card: bool = True,
|
|
23
|
-
get_cards: bool = True,
|
|
24
|
-
create_board: bool = True,
|
|
25
|
-
create_list: bool = True,
|
|
26
|
-
list_boards: bool = True,
|
|
27
20
|
**kwargs,
|
|
28
21
|
):
|
|
29
22
|
self.api_key = api_key or getenv("TRELLO_API_KEY")
|
|
@@ -39,21 +32,15 @@ class TrelloTools(Toolkit):
|
|
|
39
32
|
logger.error(f"Error initializing Trello client: {e}")
|
|
40
33
|
self.client = None
|
|
41
34
|
|
|
42
|
-
tools: List[Any] = [
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
if create_board:
|
|
52
|
-
tools.append(self.create_board)
|
|
53
|
-
if create_list:
|
|
54
|
-
tools.append(self.create_list)
|
|
55
|
-
if list_boards:
|
|
56
|
-
tools.append(self.list_boards)
|
|
35
|
+
tools: List[Any] = [
|
|
36
|
+
self.create_card,
|
|
37
|
+
self.get_board_lists,
|
|
38
|
+
self.move_card,
|
|
39
|
+
self.get_cards,
|
|
40
|
+
self.create_board,
|
|
41
|
+
self.create_list,
|
|
42
|
+
self.list_boards,
|
|
43
|
+
]
|
|
57
44
|
|
|
58
45
|
super().__init__(name="trello", tools=tools, **kwargs)
|
|
59
46
|
|
agno/tools/twilio.py
CHANGED
|
@@ -22,6 +22,10 @@ class TwilioTools(Toolkit):
|
|
|
22
22
|
region: Optional[str] = None,
|
|
23
23
|
edge: Optional[str] = None,
|
|
24
24
|
debug: bool = False,
|
|
25
|
+
enable_send_sms: bool = True,
|
|
26
|
+
enable_get_call_details: bool = True,
|
|
27
|
+
enable_list_messages: bool = True,
|
|
28
|
+
all: bool = False,
|
|
25
29
|
**kwargs,
|
|
26
30
|
):
|
|
27
31
|
"""Initialize the Twilio toolkit.
|
|
@@ -84,9 +88,12 @@ class TwilioTools(Toolkit):
|
|
|
84
88
|
self.client.http_client.logger.setLevel(logging.INFO)
|
|
85
89
|
|
|
86
90
|
tools: List[Any] = []
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
91
|
+
if all or enable_send_sms:
|
|
92
|
+
tools.append(self.send_sms)
|
|
93
|
+
if all or enable_get_call_details:
|
|
94
|
+
tools.append(self.get_call_details)
|
|
95
|
+
if all or enable_list_messages:
|
|
96
|
+
tools.append(self.list_messages)
|
|
90
97
|
|
|
91
98
|
super().__init__(name="twilio", tools=tools, **kwargs)
|
|
92
99
|
|
agno/tools/user_control_flow.py
CHANGED
|
@@ -9,6 +9,8 @@ class UserControlFlowTools(Toolkit):
|
|
|
9
9
|
self,
|
|
10
10
|
instructions: Optional[str] = None,
|
|
11
11
|
add_instructions: bool = True,
|
|
12
|
+
enable_get_user_input: bool = True,
|
|
13
|
+
all: bool = False,
|
|
12
14
|
**kwargs,
|
|
13
15
|
):
|
|
14
16
|
"""A toolkit that provides the ability for the agent to interrupt the agent run and interact with the user."""
|
|
@@ -17,7 +19,10 @@ class UserControlFlowTools(Toolkit):
|
|
|
17
19
|
self.instructions = self.DEFAULT_INSTRUCTIONS
|
|
18
20
|
else:
|
|
19
21
|
self.instructions = instructions
|
|
20
|
-
|
|
22
|
+
|
|
23
|
+
tools = []
|
|
24
|
+
if all or enable_get_user_input:
|
|
25
|
+
tools.append(self.get_user_input)
|
|
21
26
|
|
|
22
27
|
super().__init__(
|
|
23
28
|
name="user_control_flow_tools",
|
agno/tools/valyu.py
CHANGED
|
@@ -12,9 +12,34 @@ except ImportError:
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
class ValyuTools(Toolkit):
|
|
15
|
+
"""
|
|
16
|
+
Valyu is a toolkit for academic and web search capabilities.
|
|
17
|
+
|
|
18
|
+
Args:
|
|
19
|
+
api_key (Optional[str]): Valyu API key. Retrieved from VALYU_API_KEY env variable if not provided.
|
|
20
|
+
enable_academic_search (bool): Enable academic sources search functionality. Default is True.
|
|
21
|
+
enable_web_search (bool): Enable web search functionality. Default is True.
|
|
22
|
+
enable_paper_search (bool): Enable search within paper functionality. Default is True.
|
|
23
|
+
all (bool): Enable all tools. Overrides individual flags when True. Default is False.
|
|
24
|
+
text_length (int): Maximum length of text content per result. Default is 1000.
|
|
25
|
+
max_results (int): Maximum number of results to return. Default is 10.
|
|
26
|
+
relevance_threshold (float): Minimum relevance score for results. Default is 0.5.
|
|
27
|
+
content_category (Optional[str]): Content category for filtering.
|
|
28
|
+
search_start_date (Optional[str]): Start date for search filtering (YYYY-MM-DD).
|
|
29
|
+
search_end_date (Optional[str]): End date for search filtering (YYYY-MM-DD).
|
|
30
|
+
search_domains (Optional[List[str]]): List of domains to search within.
|
|
31
|
+
sources (Optional[List[str]]): List of specific sources to search.
|
|
32
|
+
max_price (float): Maximum price for API calls. Default is 30.0.
|
|
33
|
+
tool_call_mode (bool): Enable tool call mode. Default is False.
|
|
34
|
+
"""
|
|
35
|
+
|
|
15
36
|
def __init__(
|
|
16
37
|
self,
|
|
17
38
|
api_key: Optional[str] = None,
|
|
39
|
+
enable_academic_search: bool = True,
|
|
40
|
+
enable_web_search: bool = True,
|
|
41
|
+
enable_paper_search: bool = True,
|
|
42
|
+
all: bool = False,
|
|
18
43
|
text_length: int = 1000,
|
|
19
44
|
max_results: int = 10,
|
|
20
45
|
relevance_threshold: float = 0.5,
|
|
@@ -43,11 +68,15 @@ class ValyuTools(Toolkit):
|
|
|
43
68
|
self.sources = sources
|
|
44
69
|
self.tool_call_mode = tool_call_mode
|
|
45
70
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
tools
|
|
49
|
-
|
|
50
|
-
|
|
71
|
+
tools: List[Any] = []
|
|
72
|
+
if all or enable_academic_search:
|
|
73
|
+
tools.append(self.search_academic_sources)
|
|
74
|
+
if all or enable_web_search:
|
|
75
|
+
tools.append(self.search_web)
|
|
76
|
+
if all or enable_paper_search:
|
|
77
|
+
tools.append(self.search_within_paper)
|
|
78
|
+
|
|
79
|
+
super().__init__(name="valyu_search", tools=tools, **kwargs)
|
|
51
80
|
|
|
52
81
|
def _parse_results(self, results: List[Any]) -> str:
|
|
53
82
|
parsed_results = []
|
agno/tools/visualization.py
CHANGED
|
@@ -9,29 +9,21 @@ from agno.utils.log import log_info, logger
|
|
|
9
9
|
class VisualizationTools(Toolkit):
|
|
10
10
|
def __init__(
|
|
11
11
|
self,
|
|
12
|
-
bar_chart: bool = True,
|
|
13
|
-
line_chart: bool = True,
|
|
14
|
-
pie_chart: bool = True,
|
|
15
|
-
scatter_plot: bool = True,
|
|
16
|
-
histogram: bool = True,
|
|
17
|
-
enable_all: bool = False,
|
|
18
12
|
output_dir: str = "charts",
|
|
13
|
+
enable_create_bar_chart: bool = True,
|
|
14
|
+
enable_create_line_chart: bool = True,
|
|
15
|
+
enable_create_pie_chart: bool = True,
|
|
16
|
+
enable_create_scatter_plot: bool = True,
|
|
17
|
+
enable_create_histogram: bool = True,
|
|
18
|
+
all: bool = False,
|
|
19
19
|
**kwargs,
|
|
20
20
|
):
|
|
21
21
|
"""
|
|
22
22
|
Initialize the VisualizationTools toolkit.
|
|
23
23
|
|
|
24
24
|
Args:
|
|
25
|
-
bar_chart (bool): Enable bar chart creation. Default is True.
|
|
26
|
-
line_chart (bool): Enable line chart creation. Default is True.
|
|
27
|
-
pie_chart (bool): Enable pie chart creation. Default is True.
|
|
28
|
-
scatter_plot (bool): Enable scatter plot creation. Default is True.
|
|
29
|
-
histogram (bool): Enable histogram creation. Default is True.
|
|
30
|
-
enable_all (bool): Enable all chart types. Default is False.
|
|
31
25
|
output_dir (str): Directory to save charts. Default is "charts".
|
|
32
26
|
"""
|
|
33
|
-
super().__init__(**kwargs)
|
|
34
|
-
|
|
35
27
|
# Check if matplotlib is available
|
|
36
28
|
try:
|
|
37
29
|
import matplotlib
|
|
@@ -47,20 +39,19 @@ class VisualizationTools(Toolkit):
|
|
|
47
39
|
|
|
48
40
|
self.output_dir = output_dir
|
|
49
41
|
|
|
50
|
-
|
|
51
|
-
if
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
self.register(self.create_histogram)
|
|
42
|
+
tools: List[Any] = []
|
|
43
|
+
if enable_create_bar_chart or all:
|
|
44
|
+
tools.append(self.create_bar_chart)
|
|
45
|
+
if enable_create_line_chart or all:
|
|
46
|
+
tools.append(self.create_line_chart)
|
|
47
|
+
if enable_create_pie_chart or all:
|
|
48
|
+
tools.append(self.create_pie_chart)
|
|
49
|
+
if enable_create_scatter_plot or all:
|
|
50
|
+
tools.append(self.create_scatter_plot)
|
|
51
|
+
if enable_create_histogram or all:
|
|
52
|
+
tools.append(self.create_histogram)
|
|
53
|
+
|
|
54
|
+
super().__init__(name="visualization_tools", tools=tools, **kwargs)
|
|
64
55
|
|
|
65
56
|
def _normalize_data_for_charts(
|
|
66
57
|
self, data: Union[Dict[str, Any], List[Dict[str, Any]], List[Any], str]
|
agno/tools/webbrowser.py
CHANGED
|
@@ -7,11 +7,12 @@ from agno.tools import Toolkit
|
|
|
7
7
|
class WebBrowserTools(Toolkit):
|
|
8
8
|
"""Tools for opening a page on the web browser"""
|
|
9
9
|
|
|
10
|
-
def __init__(self):
|
|
10
|
+
def __init__(self, enable_open_page: bool = True, all: bool = False, **kwargs):
|
|
11
11
|
tools: List[Any] = []
|
|
12
|
-
|
|
12
|
+
if all or enable_open_page:
|
|
13
|
+
tools.append(self.open_page)
|
|
13
14
|
|
|
14
|
-
super().__init__(name="webbrowser_tools", tools=tools)
|
|
15
|
+
super().__init__(name="webbrowser_tools", tools=tools, **kwargs)
|
|
15
16
|
|
|
16
17
|
def open_page(self, url: str, new_window: bool = False):
|
|
17
18
|
"""Open a URL in a browser window
|
agno/tools/webex.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import json
|
|
2
|
-
import
|
|
2
|
+
from os import getenv
|
|
3
3
|
from typing import Any, List, Optional
|
|
4
4
|
|
|
5
|
-
from agno.tools
|
|
5
|
+
from agno.tools import Toolkit
|
|
6
6
|
from agno.utils.log import logger
|
|
7
7
|
|
|
8
8
|
try:
|
|
@@ -14,19 +14,23 @@ except ImportError:
|
|
|
14
14
|
|
|
15
15
|
class WebexTools(Toolkit):
|
|
16
16
|
def __init__(
|
|
17
|
-
self,
|
|
17
|
+
self,
|
|
18
|
+
enable_send_message: bool = True,
|
|
19
|
+
enable_list_rooms: bool = True,
|
|
20
|
+
all: bool = False,
|
|
21
|
+
access_token: Optional[str] = None,
|
|
22
|
+
**kwargs,
|
|
18
23
|
):
|
|
19
|
-
|
|
20
|
-
access_token = os.getenv("WEBEX_ACCESS_TOKEN")
|
|
24
|
+
access_token = access_token or getenv("WEBEX_ACCESS_TOKEN")
|
|
21
25
|
if access_token is None:
|
|
22
26
|
raise ValueError("Webex access token is not set. Please set the WEBEX_ACCESS_TOKEN environment variable.")
|
|
23
27
|
|
|
24
28
|
self.client = WebexAPI(access_token=access_token)
|
|
25
29
|
|
|
26
30
|
tools: List[Any] = []
|
|
27
|
-
if
|
|
31
|
+
if all or enable_send_message:
|
|
28
32
|
tools.append(self.send_message)
|
|
29
|
-
if
|
|
33
|
+
if all or enable_list_rooms:
|
|
30
34
|
tools.append(self.list_rooms)
|
|
31
35
|
|
|
32
36
|
super().__init__(name="webex", tools=tools, **kwargs)
|