agno 2.3.4__py3-none-any.whl → 2.3.6__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/agent/agent.py +184 -45
- agno/culture/manager.py +2 -2
- agno/db/base.py +330 -8
- agno/db/dynamo/dynamo.py +722 -2
- agno/db/dynamo/schemas.py +127 -0
- agno/db/firestore/firestore.py +573 -1
- agno/db/firestore/schemas.py +40 -0
- agno/db/gcs_json/gcs_json_db.py +446 -1
- agno/db/in_memory/in_memory_db.py +143 -1
- agno/db/json/json_db.py +438 -1
- agno/db/mongo/async_mongo.py +522 -0
- agno/db/mongo/mongo.py +523 -1
- agno/db/mongo/schemas.py +29 -0
- agno/db/mysql/mysql.py +536 -3
- agno/db/mysql/schemas.py +38 -0
- agno/db/postgres/async_postgres.py +553 -15
- agno/db/postgres/postgres.py +544 -5
- agno/db/postgres/schemas.py +38 -0
- agno/db/redis/redis.py +468 -1
- agno/db/redis/schemas.py +32 -0
- agno/db/singlestore/schemas.py +38 -0
- agno/db/singlestore/singlestore.py +523 -1
- agno/db/sqlite/async_sqlite.py +549 -10
- agno/db/sqlite/schemas.py +38 -0
- agno/db/sqlite/sqlite.py +540 -9
- agno/db/sqlite/utils.py +6 -8
- agno/db/surrealdb/models.py +25 -0
- agno/db/surrealdb/surrealdb.py +548 -1
- agno/eval/accuracy.py +18 -8
- agno/eval/performance.py +10 -4
- agno/eval/reliability.py +22 -13
- agno/exceptions.py +11 -0
- agno/hooks/__init__.py +3 -0
- agno/hooks/decorator.py +164 -0
- agno/integrations/discord/client.py +1 -1
- agno/knowledge/chunking/semantic.py +2 -2
- agno/models/aimlapi/aimlapi.py +2 -3
- agno/models/anthropic/claude.py +18 -13
- agno/models/aws/bedrock.py +3 -4
- agno/models/aws/claude.py +5 -1
- agno/models/azure/ai_foundry.py +2 -2
- agno/models/azure/openai_chat.py +8 -0
- agno/models/cerebras/cerebras.py +62 -11
- agno/models/cerebras/cerebras_openai.py +2 -3
- agno/models/cohere/chat.py +1 -5
- agno/models/cometapi/cometapi.py +2 -3
- agno/models/dashscope/dashscope.py +2 -3
- agno/models/deepinfra/deepinfra.py +2 -3
- agno/models/deepseek/deepseek.py +2 -3
- agno/models/fireworks/fireworks.py +2 -3
- agno/models/google/gemini.py +9 -7
- agno/models/groq/groq.py +2 -3
- agno/models/huggingface/huggingface.py +1 -5
- agno/models/ibm/watsonx.py +1 -5
- agno/models/internlm/internlm.py +2 -3
- agno/models/langdb/langdb.py +6 -4
- agno/models/litellm/chat.py +2 -2
- agno/models/litellm/litellm_openai.py +2 -3
- agno/models/meta/llama.py +1 -5
- agno/models/meta/llama_openai.py +4 -5
- agno/models/mistral/mistral.py +1 -5
- agno/models/nebius/nebius.py +2 -3
- agno/models/nvidia/nvidia.py +4 -5
- agno/models/openai/chat.py +14 -3
- agno/models/openai/responses.py +14 -3
- agno/models/openrouter/openrouter.py +4 -5
- agno/models/perplexity/perplexity.py +2 -3
- agno/models/portkey/portkey.py +7 -6
- agno/models/requesty/requesty.py +4 -5
- agno/models/response.py +2 -1
- agno/models/sambanova/sambanova.py +4 -5
- agno/models/siliconflow/siliconflow.py +3 -4
- agno/models/together/together.py +4 -5
- agno/models/vercel/v0.py +4 -5
- agno/models/vllm/vllm.py +19 -14
- agno/models/xai/xai.py +4 -5
- agno/os/app.py +104 -0
- agno/os/config.py +13 -0
- agno/os/interfaces/whatsapp/router.py +0 -1
- agno/os/interfaces/whatsapp/security.py +3 -1
- agno/os/mcp.py +1 -0
- agno/os/router.py +31 -0
- agno/os/routers/traces/__init__.py +3 -0
- agno/os/routers/traces/schemas.py +414 -0
- agno/os/routers/traces/traces.py +499 -0
- agno/os/schema.py +12 -2
- agno/os/utils.py +57 -0
- agno/run/agent.py +1 -0
- agno/run/base.py +17 -0
- agno/run/team.py +4 -0
- agno/table.py +10 -0
- agno/team/team.py +221 -69
- agno/tools/function.py +10 -8
- agno/tools/google_drive.py +4 -3
- agno/tools/nano_banana.py +1 -1
- agno/tools/spotify.py +922 -0
- agno/tracing/__init__.py +12 -0
- agno/tracing/exporter.py +157 -0
- agno/tracing/schemas.py +276 -0
- agno/tracing/setup.py +111 -0
- agno/utils/agent.py +6 -6
- agno/utils/hooks.py +56 -1
- agno/utils/mcp.py +1 -1
- agno/vectordb/qdrant/qdrant.py +22 -22
- agno/workflow/condition.py +8 -0
- agno/workflow/loop.py +8 -0
- agno/workflow/parallel.py +8 -0
- agno/workflow/router.py +8 -0
- agno/workflow/step.py +20 -0
- agno/workflow/steps.py +8 -0
- agno/workflow/workflow.py +88 -19
- {agno-2.3.4.dist-info → agno-2.3.6.dist-info}/METADATA +38 -33
- {agno-2.3.4.dist-info → agno-2.3.6.dist-info}/RECORD +116 -105
- {agno-2.3.4.dist-info → agno-2.3.6.dist-info}/WHEEL +0 -0
- {agno-2.3.4.dist-info → agno-2.3.6.dist-info}/licenses/LICENSE +0 -0
- {agno-2.3.4.dist-info → agno-2.3.6.dist-info}/top_level.txt +0 -0
agno/tools/function.py
CHANGED
|
@@ -897,7 +897,7 @@ class FunctionCall(BaseModel):
|
|
|
897
897
|
return FunctionExecutionResult(status="success", result=cached_result)
|
|
898
898
|
|
|
899
899
|
# Execute function
|
|
900
|
-
execution_result
|
|
900
|
+
execution_result: FunctionExecutionResult
|
|
901
901
|
exception_to_raise = None
|
|
902
902
|
|
|
903
903
|
try:
|
|
@@ -939,6 +939,7 @@ class FunctionCall(BaseModel):
|
|
|
939
939
|
log_debug(f"{e.__class__.__name__}: {e}")
|
|
940
940
|
self.error = str(e)
|
|
941
941
|
exception_to_raise = e
|
|
942
|
+
execution_result = FunctionExecutionResult(status="failure", error=str(e))
|
|
942
943
|
except Exception as e:
|
|
943
944
|
log_warning(f"Could not run function {self.get_call_str()}")
|
|
944
945
|
log_exception(e)
|
|
@@ -948,10 +949,10 @@ class FunctionCall(BaseModel):
|
|
|
948
949
|
finally:
|
|
949
950
|
self._handle_post_hook()
|
|
950
951
|
|
|
951
|
-
|
|
952
|
-
|
|
952
|
+
if exception_to_raise is not None:
|
|
953
|
+
raise exception_to_raise
|
|
953
954
|
|
|
954
|
-
|
|
955
|
+
return execution_result
|
|
955
956
|
|
|
956
957
|
async def _handle_pre_hook_async(self):
|
|
957
958
|
"""Handles the async pre-hook for the function call."""
|
|
@@ -1117,7 +1118,7 @@ class FunctionCall(BaseModel):
|
|
|
1117
1118
|
return FunctionExecutionResult(status="success", result=cached_result)
|
|
1118
1119
|
|
|
1119
1120
|
# Execute function
|
|
1120
|
-
execution_result
|
|
1121
|
+
execution_result: FunctionExecutionResult
|
|
1121
1122
|
exception_to_raise = None
|
|
1122
1123
|
|
|
1123
1124
|
try:
|
|
@@ -1159,6 +1160,7 @@ class FunctionCall(BaseModel):
|
|
|
1159
1160
|
log_debug(f"{e.__class__.__name__}: {e}")
|
|
1160
1161
|
self.error = str(e)
|
|
1161
1162
|
exception_to_raise = e
|
|
1163
|
+
execution_result = FunctionExecutionResult(status="failure", error=str(e))
|
|
1162
1164
|
except Exception as e:
|
|
1163
1165
|
log_warning(f"Could not run function {self.get_call_str()}")
|
|
1164
1166
|
log_exception(e)
|
|
@@ -1171,10 +1173,10 @@ class FunctionCall(BaseModel):
|
|
|
1171
1173
|
else:
|
|
1172
1174
|
self._handle_post_hook()
|
|
1173
1175
|
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
+
if exception_to_raise is not None:
|
|
1177
|
+
raise exception_to_raise
|
|
1176
1178
|
|
|
1177
|
-
|
|
1179
|
+
return execution_result
|
|
1178
1180
|
|
|
1179
1181
|
|
|
1180
1182
|
class ToolResult(BaseModel):
|
agno/tools/google_drive.py
CHANGED
|
@@ -69,6 +69,7 @@ from pathlib import Path
|
|
|
69
69
|
from typing import Any, List, Optional, Union
|
|
70
70
|
|
|
71
71
|
from agno.tools import Toolkit
|
|
72
|
+
from agno.utils.log import log_error
|
|
72
73
|
|
|
73
74
|
try:
|
|
74
75
|
from google.auth.transport.requests import Request
|
|
@@ -202,7 +203,7 @@ class GoogleDriveTools(Toolkit):
|
|
|
202
203
|
items = results.get("files", [])
|
|
203
204
|
return items
|
|
204
205
|
except Exception as error:
|
|
205
|
-
|
|
206
|
+
log_error(f"Could not list files: {error}")
|
|
206
207
|
return []
|
|
207
208
|
|
|
208
209
|
@authenticate
|
|
@@ -238,7 +239,7 @@ class GoogleDriveTools(Toolkit):
|
|
|
238
239
|
)
|
|
239
240
|
return uploaded_file
|
|
240
241
|
except Exception as error:
|
|
241
|
-
|
|
242
|
+
log_error(f"Could not upload file '{file_path}': {error}")
|
|
242
243
|
return None
|
|
243
244
|
|
|
244
245
|
@authenticate
|
|
@@ -266,5 +267,5 @@ class GoogleDriveTools(Toolkit):
|
|
|
266
267
|
print(f"Download progress: {int(status.progress() * 100)}%.")
|
|
267
268
|
return dest_path
|
|
268
269
|
except Exception as error:
|
|
269
|
-
|
|
270
|
+
log_error(f"Could not download file '{file_id}': {error}")
|
|
270
271
|
return None
|