agno 2.0.8__py3-none-any.whl → 2.0.10__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 +13 -8
- agno/db/base.py +14 -0
- agno/db/dynamo/dynamo.py +107 -27
- agno/db/firestore/firestore.py +109 -33
- agno/db/gcs_json/gcs_json_db.py +100 -20
- agno/db/in_memory/in_memory_db.py +95 -20
- agno/db/json/json_db.py +101 -21
- agno/db/migrations/v1_to_v2.py +181 -35
- agno/db/mongo/mongo.py +251 -26
- agno/db/mysql/mysql.py +307 -6
- agno/db/postgres/postgres.py +279 -33
- agno/db/redis/redis.py +99 -22
- agno/db/singlestore/singlestore.py +319 -38
- agno/db/sqlite/sqlite.py +339 -23
- agno/models/anthropic/claude.py +0 -20
- agno/models/aws/claude.py +1 -1
- agno/models/huggingface/huggingface.py +2 -1
- agno/models/ollama/chat.py +28 -2
- agno/models/openai/chat.py +7 -0
- agno/models/openai/responses.py +8 -8
- agno/os/interfaces/base.py +2 -0
- agno/os/interfaces/slack/router.py +50 -10
- agno/os/interfaces/slack/slack.py +6 -4
- agno/os/interfaces/whatsapp/router.py +7 -4
- agno/os/router.py +18 -0
- agno/os/utils.py +2 -2
- agno/reasoning/azure_ai_foundry.py +2 -2
- agno/reasoning/deepseek.py +2 -2
- agno/reasoning/groq.py +2 -2
- agno/reasoning/ollama.py +2 -2
- agno/reasoning/openai.py +2 -2
- agno/run/base.py +15 -2
- agno/team/team.py +10 -12
- agno/tools/mcp_toolbox.py +284 -0
- agno/tools/scrapegraph.py +58 -31
- agno/tools/whatsapp.py +1 -1
- agno/utils/models/claude.py +2 -2
- agno/utils/print_response/agent.py +2 -2
- agno/utils/print_response/team.py +6 -6
- agno/utils/reasoning.py +22 -1
- agno/utils/string.py +9 -0
- agno/workflow/workflow.py +11 -7
- {agno-2.0.8.dist-info → agno-2.0.10.dist-info}/METADATA +4 -1
- {agno-2.0.8.dist-info → agno-2.0.10.dist-info}/RECORD +47 -47
- agno/utils/models/aws_claude.py +0 -170
- {agno-2.0.8.dist-info → agno-2.0.10.dist-info}/WHEEL +0 -0
- {agno-2.0.8.dist-info → agno-2.0.10.dist-info}/licenses/LICENSE +0 -0
- {agno-2.0.8.dist-info → agno-2.0.10.dist-info}/top_level.txt +0 -0
agno/workflow/workflow.py
CHANGED
|
@@ -136,6 +136,8 @@ class Workflow:
|
|
|
136
136
|
user_id: Optional[str] = None
|
|
137
137
|
# Default session state (stored in the database to persist across runs)
|
|
138
138
|
session_state: Optional[Dict[str, Any]] = None
|
|
139
|
+
# Set to True to overwrite the stored session_state with the session_state provided in the run
|
|
140
|
+
overwrite_db_session_state: bool = False
|
|
139
141
|
|
|
140
142
|
# If True, the workflow runs in debug mode
|
|
141
143
|
debug_mode: Optional[bool] = False
|
|
@@ -176,6 +178,7 @@ class Workflow:
|
|
|
176
178
|
steps: Optional[WorkflowSteps] = None,
|
|
177
179
|
session_id: Optional[str] = None,
|
|
178
180
|
session_state: Optional[Dict[str, Any]] = None,
|
|
181
|
+
overwrite_db_session_state: bool = False,
|
|
179
182
|
user_id: Optional[str] = None,
|
|
180
183
|
debug_mode: Optional[bool] = False,
|
|
181
184
|
stream: Optional[bool] = None,
|
|
@@ -194,6 +197,7 @@ class Workflow:
|
|
|
194
197
|
self.steps = steps
|
|
195
198
|
self.session_id = session_id
|
|
196
199
|
self.session_state = session_state
|
|
200
|
+
self.overwrite_db_session_state = overwrite_db_session_state
|
|
197
201
|
self.user_id = user_id
|
|
198
202
|
self.debug_mode = debug_mode
|
|
199
203
|
self.store_events = store_events
|
|
@@ -599,8 +603,8 @@ class Workflow:
|
|
|
599
603
|
# Update the current metadata with the metadata from the database which is updated in place
|
|
600
604
|
self.metadata = session.metadata
|
|
601
605
|
|
|
602
|
-
def
|
|
603
|
-
"""Load the
|
|
606
|
+
def _load_session_state(self, session: WorkflowSession, session_state: Dict[str, Any]):
|
|
607
|
+
"""Load and return the stored session_state from the database, optionally merging it with the given one"""
|
|
604
608
|
|
|
605
609
|
from agno.utils.merge_dict import merge_dictionaries
|
|
606
610
|
|
|
@@ -613,6 +617,7 @@ class Workflow:
|
|
|
613
617
|
session_state_from_db is not None
|
|
614
618
|
and isinstance(session_state_from_db, dict)
|
|
615
619
|
and len(session_state_from_db) > 0
|
|
620
|
+
and not self.overwrite_db_session_state
|
|
616
621
|
):
|
|
617
622
|
# This preserves precedence: run_params > db_state > agent_defaults
|
|
618
623
|
merged_state = session_state_from_db.copy()
|
|
@@ -1406,7 +1411,6 @@ class Workflow:
|
|
|
1406
1411
|
logger.info(f"Early termination requested by step {step_name}")
|
|
1407
1412
|
break
|
|
1408
1413
|
|
|
1409
|
-
|
|
1410
1414
|
# Update the workflow_run_response with completion data
|
|
1411
1415
|
if collected_step_outputs:
|
|
1412
1416
|
workflow_run_response.metrics = self._aggregate_workflow_metrics(collected_step_outputs)
|
|
@@ -1717,7 +1721,7 @@ class Workflow:
|
|
|
1717
1721
|
self._update_metadata(session=workflow_session)
|
|
1718
1722
|
|
|
1719
1723
|
# Update session state from DB
|
|
1720
|
-
session_state = self.
|
|
1724
|
+
session_state = self._load_session_state(session=workflow_session, session_state=session_state)
|
|
1721
1725
|
|
|
1722
1726
|
self._prepare_steps()
|
|
1723
1727
|
|
|
@@ -1808,7 +1812,7 @@ class Workflow:
|
|
|
1808
1812
|
self._update_metadata(session=workflow_session)
|
|
1809
1813
|
|
|
1810
1814
|
# Update session state from DB
|
|
1811
|
-
session_state = self.
|
|
1815
|
+
session_state = self._load_session_state(session=workflow_session, session_state=session_state)
|
|
1812
1816
|
|
|
1813
1817
|
self._prepare_steps()
|
|
1814
1818
|
|
|
@@ -1968,7 +1972,7 @@ class Workflow:
|
|
|
1968
1972
|
self._update_metadata(session=workflow_session)
|
|
1969
1973
|
|
|
1970
1974
|
# Update session state from DB
|
|
1971
|
-
session_state = self.
|
|
1975
|
+
session_state = self._load_session_state(session=workflow_session, session_state=session_state)
|
|
1972
1976
|
|
|
1973
1977
|
log_debug(f"Workflow Run Start: {self.name}", center=True)
|
|
1974
1978
|
|
|
@@ -2138,7 +2142,7 @@ class Workflow:
|
|
|
2138
2142
|
self._update_metadata(session=workflow_session)
|
|
2139
2143
|
|
|
2140
2144
|
# Update session state from DB
|
|
2141
|
-
session_state = self.
|
|
2145
|
+
session_state = self._load_session_state(session=workflow_session, session_state=session_state)
|
|
2142
2146
|
|
|
2143
2147
|
log_debug(f"Async Workflow Run Start: {self.name}", center=True)
|
|
2144
2148
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agno
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.10
|
|
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
|
|
@@ -163,6 +163,8 @@ Requires-Dist: psycopg-binary; extra == "psycopg"
|
|
|
163
163
|
Requires-Dist: psycopg; extra == "psycopg"
|
|
164
164
|
Provides-Extra: reportlab
|
|
165
165
|
Requires-Dist: reportlab; extra == "reportlab"
|
|
166
|
+
Provides-Extra: scrapegraph
|
|
167
|
+
Requires-Dist: scrapegraph-py; extra == "scrapegraph"
|
|
166
168
|
Provides-Extra: todoist
|
|
167
169
|
Requires-Dist: todoist-api-python; extra == "todoist"
|
|
168
170
|
Provides-Extra: valyu
|
|
@@ -300,6 +302,7 @@ Requires-Dist: agno[mcp]; extra == "tools"
|
|
|
300
302
|
Requires-Dist: agno[browserbase]; extra == "tools"
|
|
301
303
|
Requires-Dist: agno[agentql]; extra == "tools"
|
|
302
304
|
Requires-Dist: agno[opencv]; extra == "tools"
|
|
305
|
+
Requires-Dist: agno[scrapegraph]; extra == "tools"
|
|
303
306
|
Requires-Dist: agno[valyu]; extra == "tools"
|
|
304
307
|
Requires-Dist: agno[confluence]; extra == "tools"
|
|
305
308
|
Requires-Dist: agno[oxylabs]; extra == "tools"
|
|
@@ -4,7 +4,7 @@ agno/exceptions.py,sha256=HWuuNFS5J0l1RYJsdUrSx51M22aFEoh9ltoeonXBoBw,2891
|
|
|
4
4
|
agno/media.py,sha256=eTfYb_pwhX_PCIVPSrW4VYRqmoxKABEF1aZClrVvQ30,16500
|
|
5
5
|
agno/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
agno/agent/__init__.py,sha256=s7S3FgsjZxuaabzi8L5n4aSH8IZAiZ7XaNNcySGR-EQ,1051
|
|
7
|
-
agno/agent/agent.py,sha256=
|
|
7
|
+
agno/agent/agent.py,sha256=jeJp0Nx6z3jabzhWIgJuT9eU24WjKwAAmlrGLNmgBhA,330395
|
|
8
8
|
agno/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
9
|
agno/api/agent.py,sha256=fKlQ62E_C9Rjd7Zus3Gs3R1RG-IhzFV-ICpkb6SLqYc,932
|
|
10
10
|
agno/api/api.py,sha256=Z7iWbrjheJcGLeeDYrtTCWiKTVqjH0uJI35UNWOtAXw,973
|
|
@@ -28,41 +28,41 @@ agno/cloud/aws/s3/api_client.py,sha256=nW-Jn8WPILIvdH8niQOPpKMXlAIDB2xYTz0GHRy4P
|
|
|
28
28
|
agno/cloud/aws/s3/bucket.py,sha256=5dkKhjWVmf8dyQEyCTd6DkQlKADBnm0-_VKQgKqtJQM,7798
|
|
29
29
|
agno/cloud/aws/s3/object.py,sha256=ttZPbLm3o63oGIhKgAr_bIf9DOpJlXRmrEVlkbTcJbk,1766
|
|
30
30
|
agno/db/__init__.py,sha256=bfd_tpKsIKCjZosnFqID26VoWqy88v8gzkf9kLHToY4,625
|
|
31
|
-
agno/db/base.py,sha256=
|
|
31
|
+
agno/db/base.py,sha256=JYsminwt6x0MuWxmJIEf9AjNl1WkDELKjlGvCJRdHZ4,8482
|
|
32
32
|
agno/db/utils.py,sha256=xjrbR4g2ry0HnkiQC29Ql7jRzfxrorqS4HNlswhzVcM,3478
|
|
33
33
|
agno/db/dynamo/__init__.py,sha256=fZ7NwKbyhoIu7_4T6hVz44HkIINXMnTfFrDrgB6bpEo,67
|
|
34
|
-
agno/db/dynamo/dynamo.py,sha256=
|
|
34
|
+
agno/db/dynamo/dynamo.py,sha256=Gde62hB1qQx62ey_w00-Ap0_LJhnzwTbwvHJegTr_io,69134
|
|
35
35
|
agno/db/dynamo/schemas.py,sha256=ZqeR4QdqMVi53iz2qcs-d5Y6MDfmhHSuP7vot__hLoI,11638
|
|
36
36
|
agno/db/dynamo/utils.py,sha256=3Kwkq7FqUac6Q6BjwuzWzfyo4ANnS8FIz7_n3EEnbYo,25047
|
|
37
37
|
agno/db/firestore/__init__.py,sha256=lYAJjUs4jMxJFty1GYZw464K35zeuBlcoFR9uuIQYtI,79
|
|
38
|
-
agno/db/firestore/firestore.py,sha256=
|
|
38
|
+
agno/db/firestore/firestore.py,sha256=izPTOz6u08YQ9sXl7b4x--7wDmSwW1TpWPeefccLpzw,59650
|
|
39
39
|
agno/db/firestore/schemas.py,sha256=k8YuG_PC_Hd3WCLaDkk4bAJP8BmAWmrt6VXuG1wr2Ak,4132
|
|
40
40
|
agno/db/firestore/utils.py,sha256=FVR1XQjnsZsG3IrFyvTOHICd0lgD99aajUJ-UAvVEOg,10332
|
|
41
41
|
agno/db/gcs_json/__init__.py,sha256=aTR4o3aFrzfANHtRw7nX9uc5_GsY52ch0rmoo7uXuc4,76
|
|
42
|
-
agno/db/gcs_json/gcs_json_db.py,sha256=
|
|
42
|
+
agno/db/gcs_json/gcs_json_db.py,sha256=1veG3FX1exwTVGzdcMQiM62kctp1S9Sn3QFrh4O06RU,45001
|
|
43
43
|
agno/db/gcs_json/utils.py,sha256=Ist4HuQoYvC2BKr01oTxDp9mfMirz1UBBDKElbXg2bg,6610
|
|
44
44
|
agno/db/in_memory/__init__.py,sha256=OvR_FONhOh9PmcRfUA_6gvplZT5UGIBAgVKqVg6SWTA,80
|
|
45
|
-
agno/db/in_memory/in_memory_db.py,sha256=
|
|
45
|
+
agno/db/in_memory/in_memory_db.py,sha256=L0a8pU5I1HNy_8Uo3lP4BjOOqhUDj021-jxcPohxp0o,37615
|
|
46
46
|
agno/db/in_memory/utils.py,sha256=X02wny18w5uvGE3caokPbCQTG6t7OErWNPkK3Umru3s,5780
|
|
47
47
|
agno/db/json/__init__.py,sha256=zyPTmVF9S-OwXCL7FSkrDmunZ_Q14YZO3NYUv1Pa14Y,62
|
|
48
|
-
agno/db/json/json_db.py,sha256=
|
|
48
|
+
agno/db/json/json_db.py,sha256=fBXdRiP69bHz-FE2LsnFQx0WNatpkjtNfxrebVODhZo,45099
|
|
49
49
|
agno/db/json/utils.py,sha256=__c14xMdyw1AlyV7-DAGDr8YicqhfCbSS5C8OkVN2So,6658
|
|
50
50
|
agno/db/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
51
|
-
agno/db/migrations/v1_to_v2.py,sha256=
|
|
51
|
+
agno/db/migrations/v1_to_v2.py,sha256=bBc96nKf8CjkuhTEdcKdr3hUgPpRMVwE71ozVCnux4c,23969
|
|
52
52
|
agno/db/mongo/__init__.py,sha256=EPa9QkGNVwnuej72LhZDCeASMXa-e0pR20jsgwa9BhY,63
|
|
53
|
-
agno/db/mongo/mongo.py,sha256=
|
|
53
|
+
agno/db/mongo/mongo.py,sha256=xyQUWIyXREmr8jgUopSv2me8euQ2UzJB_Gd1i4Tw7Xc,67840
|
|
54
54
|
agno/db/mongo/schemas.py,sha256=MAhfwx7_zxKucnZpgq_YSZANaF5MqiZ6qDByhdIREk8,2054
|
|
55
55
|
agno/db/mongo/utils.py,sha256=dmVo0HGIG7IPKdCjuRDcO0ZOtyXcNkP6S2G-XBFqzZE,6906
|
|
56
56
|
agno/db/mysql/__init__.py,sha256=ohBMZ1E6ctioEF0XX5PjC4LtUQrc6lFkjsE4ojyXA8g,63
|
|
57
|
-
agno/db/mysql/mysql.py,sha256=
|
|
57
|
+
agno/db/mysql/mysql.py,sha256=0AEGNs-zXWJ6bsmrcBe6l1ECwwnp9d2xWQcwVqwZ_wU,84350
|
|
58
58
|
agno/db/mysql/schemas.py,sha256=2OAaX7ILykFCJBcEWH6kFXzNI8JnnYZCXClbVUoRbLc,5482
|
|
59
59
|
agno/db/mysql/utils.py,sha256=7E83u2gKOkr7lxFPGM2ucLvfJarbEtNRxOeZQhLYKzU,10066
|
|
60
60
|
agno/db/postgres/__init__.py,sha256=eEdY4emRxmBmxeZUhAYSaObgcqKdd6C9IxUSk1U0gDY,75
|
|
61
|
-
agno/db/postgres/postgres.py,sha256=
|
|
61
|
+
agno/db/postgres/postgres.py,sha256=DWQFM4XgdrFwhqn0FDE5XqiIK36mzmvD3X3ntiyyEJs,80085
|
|
62
62
|
agno/db/postgres/schemas.py,sha256=adbKcMapqeXsEYeF6feWe2ja1paRzCMOkQSHHN6Psp8,5275
|
|
63
63
|
agno/db/postgres/utils.py,sha256=iaY0ZqJgzadCitxSbsRchCtBE5WeUApfIj-VbdH9MJI,9447
|
|
64
64
|
agno/db/redis/__init__.py,sha256=rZWeZ4CpVeKP-enVQ-SRoJ777i0rdGNgoNDRS9gsfAc,63
|
|
65
|
-
agno/db/redis/redis.py,sha256=
|
|
65
|
+
agno/db/redis/redis.py,sha256=Yg8KAmXZpNO7rKpwhqc6JJeevCCWQo_d1qz_SVJPQJU,54094
|
|
66
66
|
agno/db/redis/schemas.py,sha256=LE1NApES1ao5X770HXB7jvrk2n31KiOWAsl5Z0xMG08,3637
|
|
67
67
|
agno/db/redis/utils.py,sha256=z1pyakjlCQ_FyQUXe8pPer-pQDG70GLDOYQLNl4Oxrg,8955
|
|
68
68
|
agno/db/schemas/__init__.py,sha256=HIKc2Apyk6ENJb_Py6sgNdbl6H7eo6PD5QMTmkdJSwI,72
|
|
@@ -72,11 +72,11 @@ agno/db/schemas/memory.py,sha256=kKlJ6AWpbwz-ZJfBJieartPP0QqeeoKAXx2Ity4Yj-Y,146
|
|
|
72
72
|
agno/db/schemas/metrics.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
73
73
|
agno/db/singlestore/__init__.py,sha256=dufbaod8ZZIeZIVi0hYJQ8Eu2DfIfWdIy00cpqAsx9U,87
|
|
74
74
|
agno/db/singlestore/schemas.py,sha256=yDXBGtswAuVxKX1_GvKIBt6IlEor2HiAbYPrwX5SSJ8,5489
|
|
75
|
-
agno/db/singlestore/singlestore.py,sha256=
|
|
75
|
+
agno/db/singlestore/singlestore.py,sha256=DRRzrlGDfO33s_oGVBb3raX14QUSI9LPA5-6yX1S5KU,82480
|
|
76
76
|
agno/db/singlestore/utils.py,sha256=LG0NhOx5B5oJY-Kcc_3ipNzBT1J-mBGx8TARUkRtWv8,11377
|
|
77
77
|
agno/db/sqlite/__init__.py,sha256=LocJ-suv6xpdun8HUxgbD3bTgmQArQvLJkbpb1pRGy0,67
|
|
78
78
|
agno/db/sqlite/schemas.py,sha256=-L3hmlg80PAPmfexPrWtnepSzlmZHrbyPZ754nJlVdE,5191
|
|
79
|
-
agno/db/sqlite/sqlite.py,sha256=
|
|
79
|
+
agno/db/sqlite/sqlite.py,sha256=b7Act9wF9H2yH_kkmMovu2tbO88xZikjZFONX11NPdI,83254
|
|
80
80
|
agno/db/sqlite/utils.py,sha256=52FbQrmMHXicxocqbXM5B7iBGgVTSft0r_9PyckLSt0,9434
|
|
81
81
|
agno/eval/__init__.py,sha256=vCYcIbfOkT2lL8vZJ9zsea6j3byp5A-mxEb_45VaD8I,449
|
|
82
82
|
agno/eval/accuracy.py,sha256=UZmxOtVP3p3fFzby2YyjE4-Tza2MMtQiBrfhK9mJrx4,32531
|
|
@@ -155,10 +155,10 @@ agno/models/utils.py,sha256=PprNlVI8d8loHayjRsrc4TL38sfkFMS3EVZcF5cLXoA,669
|
|
|
155
155
|
agno/models/aimlapi/__init__.py,sha256=XQcFRvt4qJ8ol9nCC0XKEkVEDivdNf3nZNoJZMZ5m8M,78
|
|
156
156
|
agno/models/aimlapi/aimlapi.py,sha256=9Qh-b8HvFSvmPP3VBNGT00qy9izHLMWgR-KDQCE5CM0,1493
|
|
157
157
|
agno/models/anthropic/__init__.py,sha256=nbReX3p17JCwfrMDR9hR7-OaEFZm80I7dng93dl-Fhw,77
|
|
158
|
-
agno/models/anthropic/claude.py,sha256=
|
|
158
|
+
agno/models/anthropic/claude.py,sha256=8v9AbtYJmhXF-e6X5yRcRki3xE7GOowLbQh6jeGiei0,26363
|
|
159
159
|
agno/models/aws/__init__.py,sha256=TbcwQwv9A7KjqBM5RQBR8x46GvyyCxbBCjwkpjfVGKE,352
|
|
160
160
|
agno/models/aws/bedrock.py,sha256=4H4Y-ZC8nz1Dcag1JxT3orpvzSlHPaNhTy9NXaqCSY8,30919
|
|
161
|
-
agno/models/aws/claude.py,sha256=
|
|
161
|
+
agno/models/aws/claude.py,sha256=sL47z9fM3jxGbARkr0mlAVYEKKX854J3u-Qeb5gIADo,14746
|
|
162
162
|
agno/models/azure/__init__.py,sha256=EoFdJHjayvmv_VOmaW9cJguwA1K5OFS_nFeazyn0B2w,605
|
|
163
163
|
agno/models/azure/ai_foundry.py,sha256=V75lk4pH_RVFzVhWYz9-ZSA3dcaQe2SpRF1lrAm_agw,18673
|
|
164
164
|
agno/models/azure/openai_chat.py,sha256=RYHmcHA7cn79_U6GTjNP5vYiYET6IfPgUp6XZ2WEiyQ,4423
|
|
@@ -182,7 +182,7 @@ agno/models/google/gemini.py,sha256=UDyF4jzeT63pS2BrrFJcqARcaqd8WrLEb-B-KnyZeO4,
|
|
|
182
182
|
agno/models/groq/__init__.py,sha256=gODf5IA4yJKlwTEYsUywmA-dsiQVyL2_yWMc8VncdVU,66
|
|
183
183
|
agno/models/groq/groq.py,sha256=hByU97lwb9HBsFgDHZsq2_a3dvT-X8QIO-qmLsD4ePY,22121
|
|
184
184
|
agno/models/huggingface/__init__.py,sha256=VgdYkgSHqsFLhvJ9lSUCyEZfest8hbCAUpWU6WCk-_c,94
|
|
185
|
-
agno/models/huggingface/huggingface.py,sha256=
|
|
185
|
+
agno/models/huggingface/huggingface.py,sha256=Kt_2UeXF2dCbxnsuNt8F_Hezq_WR9kvySltp3U_OrrM,19877
|
|
186
186
|
agno/models/ibm/__init__.py,sha256=jwrz0JL4pd1cAPN7wLi51qgQfOB8kUIhFjs_oEc4NWc,74
|
|
187
187
|
agno/models/ibm/watsonx.py,sha256=GkMfe68DunLMVQ4wtox8Y-LzagPN5mz4hd0Z_vXS1tM,16007
|
|
188
188
|
agno/models/internlm/__init__.py,sha256=88O1Vb6HuNls8KDUOKuQdKF_3iG9wI3uc56Xy-qBoMI,75
|
|
@@ -208,11 +208,11 @@ agno/models/nexus/nexus.py,sha256=rJcBQXR1aqUiLWMPBRuHIEh87wVrsqXup1hr_smanBQ,63
|
|
|
208
208
|
agno/models/nvidia/__init__.py,sha256=O0g3_0_ciOz0AH4Y4CAL7YRfhdDPAvhDzNjJmgWKT78,74
|
|
209
209
|
agno/models/nvidia/nvidia.py,sha256=0vpEq4cBY_5JdBzGoD95rBdro6dpVNAV5ioKz3lpnfs,948
|
|
210
210
|
agno/models/ollama/__init__.py,sha256=TIhwxG7ek3eyfoKTLoZQXwdgzcIngYKjbjSlkf2gkWE,72
|
|
211
|
-
agno/models/ollama/chat.py,sha256=
|
|
211
|
+
agno/models/ollama/chat.py,sha256=jGDjLi6aeJdLCG8ITxnp0r_E7eoWT5qOZWbM9GmzuyU,16005
|
|
212
212
|
agno/models/openai/__init__.py,sha256=OssVgQRpsriU6aJZ3lIp_jFuqvX6y78L4Fd3uTlmI3E,225
|
|
213
|
-
agno/models/openai/chat.py,sha256=
|
|
213
|
+
agno/models/openai/chat.py,sha256=sZ6gDrXun7GLkksLWHA1f6bCkxgHGA96Bo8xz0gx5GA,36800
|
|
214
214
|
agno/models/openai/like.py,sha256=wmw9PfAVqluBs4MMY73dgjelKn1yl5JDKyCRvaNFjFw,745
|
|
215
|
-
agno/models/openai/responses.py,sha256=
|
|
215
|
+
agno/models/openai/responses.py,sha256=tOxgILr9GZVJRCQX1fJYG7p06pBe2-h7fASjr7YdxHA,47109
|
|
216
216
|
agno/models/openrouter/__init__.py,sha256=ZpZhNyy_EGSXp58uC9e2iyjnxBctql7GaY8rUG-599I,90
|
|
217
217
|
agno/models/openrouter/openrouter.py,sha256=FX0P9mPEHyTuiVQNs-c84Ehy0RIGEmvdy6WM_-KhxUQ,907
|
|
218
218
|
agno/models/perplexity/__init__.py,sha256=JNmOElDLwcZ9_Lk5owkEdgwmAhaH3YJ-VJqOI8rgp5c,90
|
|
@@ -236,22 +236,22 @@ agno/os/app.py,sha256=acPtlVPAlrdsg6L2QC73SpaaX68-hsWn9X0RH9WNx7Q,24457
|
|
|
236
236
|
agno/os/auth.py,sha256=FyBtAKWtg-qSunCas5m5pK1dVEmikOSZvcCp5r25tTA,1844
|
|
237
237
|
agno/os/config.py,sha256=u4R9yazQXIcKjR3QzEIZw_XAe_OHp3xn0ff7SVkj2jA,2893
|
|
238
238
|
agno/os/mcp.py,sha256=5L0TZwInuCWM7TQ7MI_DjMWfVIIB0jxVCqaVEdR62UU,8114
|
|
239
|
-
agno/os/router.py,sha256=
|
|
239
|
+
agno/os/router.py,sha256=IFgQCyx16MHHA2UAqr1T8I2_dKJ_QqmOOYdnGjWABHE,62517
|
|
240
240
|
agno/os/schema.py,sha256=bdmGLQoBJyetiAZeajJG_gEKLaQSSEwiDwKy0q4Pa-M,38278
|
|
241
241
|
agno/os/settings.py,sha256=Cn5_8lZI8Vx1UaUYqs9h6Qp4IMDFn4f3c35uppiaMy4,1343
|
|
242
|
-
agno/os/utils.py,sha256=
|
|
242
|
+
agno/os/utils.py,sha256=tOszvSQPXbbYCLOWBPsCnHGbELKw0i6mVahxmEzddhI,10810
|
|
243
243
|
agno/os/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
244
|
-
agno/os/interfaces/base.py,sha256=
|
|
244
|
+
agno/os/interfaces/base.py,sha256=giU0y-egtXLqokN1HQyQIWl4NBawTk_ua7ytKGFmZRc,527
|
|
245
245
|
agno/os/interfaces/agui/__init__.py,sha256=1zrGICk4roXUINwSFZfqH6sBsbHmD5KjGYVJMGg4fKQ,66
|
|
246
246
|
agno/os/interfaces/agui/agui.py,sha256=-KiJaM-IkL9QI9UNzyWqO-uQxdQxsZJnV5aNFmDPcN4,898
|
|
247
247
|
agno/os/interfaces/agui/router.py,sha256=CgHCqNwA3ktUoGmCt0PoaQPX3hJ4rcXOgtXUGQ5sPIU,4335
|
|
248
248
|
agno/os/interfaces/agui/utils.py,sha256=bfWxYh2w2O3aroRlaOc2f4ZJXEVavya1IqvCntqY9Xw,19162
|
|
249
249
|
agno/os/interfaces/slack/__init__.py,sha256=F095kOcgiyk_KzIozNNieKwpVc_NR8HYpuO4bKiCNN0,70
|
|
250
|
-
agno/os/interfaces/slack/router.py,sha256=
|
|
250
|
+
agno/os/interfaces/slack/router.py,sha256=RuD0Y0YOdlyqaj37W5outpM7dHTlEX6R63V4IrETSYc,5710
|
|
251
251
|
agno/os/interfaces/slack/security.py,sha256=nMbW_0g-G_DEMbCQOD8C3PYrRPIpB2cyM6P-xS6GHYk,917
|
|
252
|
-
agno/os/interfaces/slack/slack.py,sha256=
|
|
252
|
+
agno/os/interfaces/slack/slack.py,sha256=hBW_n3WDdt9q3Ptbd1gB4Kr9iOX7LBD8zQvMuiyEEro,1042
|
|
253
253
|
agno/os/interfaces/whatsapp/__init__.py,sha256=-sD2W00qj8hrx72ATVMtaDc7GfAsaCQJMlnRjYPwisg,82
|
|
254
|
-
agno/os/interfaces/whatsapp/router.py,sha256=
|
|
254
|
+
agno/os/interfaces/whatsapp/router.py,sha256=pcB2CAxGsfVIr5z0YvFGYk6LVaBdUmgE5JHJpprSgo8,9721
|
|
255
255
|
agno/os/interfaces/whatsapp/security.py,sha256=WOdjP886O0Wq6CRHSLAv_b39y6pjmn8opPQDSlZf4WA,1735
|
|
256
256
|
agno/os/interfaces/whatsapp/whatsapp.py,sha256=lPWPsfK-fenpdWPYPKwXOYzev-tE44H1-LwqCSsExRA,833
|
|
257
257
|
agno/os/routers/__init__.py,sha256=du4LO9aZwiY1t59VcV9M6wiAfftFFlUZc-YXsTGy9LI,97
|
|
@@ -273,17 +273,17 @@ agno/os/routers/metrics/schemas.py,sha256=E7F31CXg9_JiBqeNZWFsZCraShqEHIDD8pDfS4
|
|
|
273
273
|
agno/os/routers/session/__init__.py,sha256=du4LO9aZwiY1t59VcV9M6wiAfftFFlUZc-YXsTGy9LI,97
|
|
274
274
|
agno/os/routers/session/session.py,sha256=ajM-ehfThQTxczwkRpEpo_EkmloeRGNNYWWad6Dth18,31923
|
|
275
275
|
agno/reasoning/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
276
|
-
agno/reasoning/azure_ai_foundry.py,sha256=
|
|
277
|
-
agno/reasoning/deepseek.py,sha256=
|
|
276
|
+
agno/reasoning/azure_ai_foundry.py,sha256=VL7DmFpuYMf_gLFAZ9kUCS7Zb3pNhDaEingRZcyUdQY,2594
|
|
277
|
+
agno/reasoning/deepseek.py,sha256=Xj_QkaN9ivbtD_IMojd_hlLBijdnyi8fQd3Iz1k9-hQ,2231
|
|
278
278
|
agno/reasoning/default.py,sha256=KFOhfgz9ERICRpKakow60SYIRlF7LIrM7fp0TLHma4w,5318
|
|
279
|
-
agno/reasoning/groq.py,sha256=
|
|
279
|
+
agno/reasoning/groq.py,sha256=1rV_-RTy924U3uTshN7fja1E4fiCbx8HYGxuWGjGGcQ,2638
|
|
280
280
|
agno/reasoning/helpers.py,sha256=77gce_FQDGGVwM1-j5Zc_ds5FRZy9l7EcH2cp0WkJrI,2153
|
|
281
|
-
agno/reasoning/ollama.py,sha256=
|
|
282
|
-
agno/reasoning/openai.py,sha256=
|
|
281
|
+
agno/reasoning/ollama.py,sha256=hJPmpBD07W6SOphkg-EifLYqosM330fxv-SbeEhoG74,2558
|
|
282
|
+
agno/reasoning/openai.py,sha256=8c4_tVVvY3shx9YEHSMP3qAgcQsOzpvpYXQEE2hDfzU,3083
|
|
283
283
|
agno/reasoning/step.py,sha256=6DaOb_0DJRz9Yh1w_mxcRaOSVzIQDrj3lQ6rzHLdIwA,1220
|
|
284
284
|
agno/run/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
285
285
|
agno/run/agent.py,sha256=OmcTPaq466DURhZ2sBd6c4MtwR-7ZyOzwWdSBoVMrzM,22416
|
|
286
|
-
agno/run/base.py,sha256=
|
|
286
|
+
agno/run/base.py,sha256=z335BSg_-H5ZdM5WpdIYwRe5KysFKaafaW2nCLVMVaA,7481
|
|
287
287
|
agno/run/cancel.py,sha256=yoSj3fnx8D7Gf-fSngVIgd3GOp3tRaDhHH_4QeHDoAk,2667
|
|
288
288
|
agno/run/messages.py,sha256=rAC4CLW-xBA6qFS1BOvcjJ9j_qYf0a7sX1mcdY04zMU,1126
|
|
289
289
|
agno/run/team.py,sha256=J-ZsMIMe-xLMgjAWgMRiSREqn8gJ6uKPQsKLo3RUdNU,22935
|
|
@@ -294,7 +294,7 @@ agno/session/summary.py,sha256=2a74rDzrOGkWjrFkHQ6gf1dsZBU0_G1lgDE7b3fPaQw,8405
|
|
|
294
294
|
agno/session/team.py,sha256=ckz-h_sYoFEbqLmNYglS0mamI9QzLfh-2ixsrHW6lU0,10383
|
|
295
295
|
agno/session/workflow.py,sha256=8dWTona5jen1iPYwjcvxq1XG5EQDFnd28BEjcbqzl4s,5004
|
|
296
296
|
agno/team/__init__.py,sha256=toHidBOo5M3n_TIVtIKHgcDbLL9HR-_U-YQYuIt_XtE,847
|
|
297
|
-
agno/team/team.py,sha256=
|
|
297
|
+
agno/team/team.py,sha256=UmVMAPLHqwoW2x2BR4KrjHsJ2emd9dQ989TVNE3-WMw,315032
|
|
298
298
|
agno/tools/__init__.py,sha256=jNll2sELhPPbqm5nPeT4_uyzRO2_KRTW-8Or60kioS0,210
|
|
299
299
|
agno/tools/agentql.py,sha256=S82Z9aTNr-E5wnA4fbFs76COljJtiQIjf2grjz3CkHU,4104
|
|
300
300
|
agno/tools/airflow.py,sha256=uf2rOzZpSU64l_qRJ5Raku-R3Gky-uewmYkh6W0-oxg,2610
|
|
@@ -352,6 +352,7 @@ agno/tools/linkup.py,sha256=EzX4_ARW96DkFe1IXAFlPQI5rdhhdhmNTX1tB5IVFWs,2123
|
|
|
352
352
|
agno/tools/local_file_system.py,sha256=wWyhM5-lqDgDO_YNzRA8ekG-m2n89k8fWr8M1BWiQWo,3157
|
|
353
353
|
agno/tools/lumalab.py,sha256=6WnZXbThKY2jL9zLswq1PVsbFm2jz81qshWqBZi59oo,6808
|
|
354
354
|
agno/tools/mcp.py,sha256=Zox_N0Uv6xRS_rA0pV_nSpQxTbQAiQfSBEOJGGcJnfM,26361
|
|
355
|
+
agno/tools/mcp_toolbox.py,sha256=HOCerjBTTcJ3WnWwkMNlk5zkAAUFUUB-jHTZ6CvApX0,12622
|
|
355
356
|
agno/tools/mem0.py,sha256=5W5pZwJmBTt-_l4nvBdNQHavXFSKV9mVdJg5aso4JBI,7680
|
|
356
357
|
agno/tools/memori.py,sha256=tubBYj0rQFbBXadhWxwTjjmb3Rnims536AVPkGdCMcw,13181
|
|
357
358
|
agno/tools/memory.py,sha256=vpMoKtCqs3m6vkuqmZ4fW9IRf1OhXHQGGaq3exJK0Xo,18449
|
|
@@ -374,7 +375,7 @@ agno/tools/reasoning.py,sha256=5k2D89s0mAqJGo5AVBM6XDvJHjfun3GqollhVkZ6rxk,12581
|
|
|
374
375
|
agno/tools/reddit.py,sha256=F6lUJFAoQmuZMqppauMteF1BprDj8mpu-lVd1reUJTk,18632
|
|
375
376
|
agno/tools/replicate.py,sha256=xVh6F2OCjIuCT8qt_ryzHb46ZctQ3_9bQhXQ5-HrzYQ,4459
|
|
376
377
|
agno/tools/resend.py,sha256=TKsb5W_Yj0SaVBFL2ySACkehIW6bPnQ9GzYwldfordo,1990
|
|
377
|
-
agno/tools/scrapegraph.py,sha256=
|
|
378
|
+
agno/tools/scrapegraph.py,sha256=ErKegx2YzPxOjuwFcmqAUSwisYEX_D84ydgeB_ufgfM,8366
|
|
378
379
|
agno/tools/searxng.py,sha256=aNDeYhBcCeLXj9q8DiD3KlwMIpJB1oQElBn61s6B-x8,4962
|
|
379
380
|
agno/tools/serpapi.py,sha256=3jTBH93OiN7LvS7zJt4xOhkNsNd_SADHLKzQKDckh2s,3925
|
|
380
381
|
agno/tools/serper.py,sha256=r_77s2X5-uPD-G-iwpzrHjzFGG_Oz-4YEaxqDZAZqvo,9061
|
|
@@ -398,7 +399,7 @@ agno/tools/webbrowser.py,sha256=UuU3I7ynFHUAjAh4Dz6OyXTsfqW8Qjl9hKhc1I0j29o,856
|
|
|
398
399
|
agno/tools/webex.py,sha256=8YKxNzinm9sym906KOWOfgX1kXBkKs0j6PQdEXgNib4,2548
|
|
399
400
|
agno/tools/website.py,sha256=jzcXLEsCfGIEqV88OLePiCEjfDoAbXQDCPAr9JbP8cU,1798
|
|
400
401
|
agno/tools/webtools.py,sha256=5Dyp8U2ov32DkJMpj-7plzQZcfnCL7wlXbQIfRh8jmw,1305
|
|
401
|
-
agno/tools/whatsapp.py,sha256=
|
|
402
|
+
agno/tools/whatsapp.py,sha256=DaDyNogtbgrinJohfU7CmVQJSZsZO-00XUbRJegN_eE,11055
|
|
402
403
|
agno/tools/wikipedia.py,sha256=u6xhc5wkEGcjng4leVCmo28o6Ti7OzDgRqiOqTMnmoc,2277
|
|
403
404
|
agno/tools/workflow.py,sha256=PQIGffLe_bQI5EjYWG2FLV21-cFhTUVs-1KSxAX6az4,12638
|
|
404
405
|
agno/tools/x.py,sha256=gaFCel9FyDPnKLL03nkjsc9NGsfQOsS92XByp3hdwMo,14495
|
|
@@ -440,13 +441,13 @@ agno/utils/openai.py,sha256=quhHsggz0uSZc9Lt-aVsveHSS1LT2r1fMgC0IpG43Tg,10300
|
|
|
440
441
|
agno/utils/pickle.py,sha256=Ip6CPNxAWF3MVrUhMTW7e3IcpKhYG0IA-NKbdUYr94c,1008
|
|
441
442
|
agno/utils/pprint.py,sha256=aTg3gfib3x3VK3E-xJrbBeufK7s77ebTVtWoa2VrYgU,7762
|
|
442
443
|
agno/utils/prompts.py,sha256=Bvvl0yosp6drt1zqHDlDKYIdTSdrZw-KGJ_-TC-78zY,5653
|
|
443
|
-
agno/utils/reasoning.py,sha256=
|
|
444
|
+
agno/utils/reasoning.py,sha256=pW5y674EjJ-R6IX8Fyxi_vN9xLG5dLkujPpcfSVL1jU,3862
|
|
444
445
|
agno/utils/response.py,sha256=VfMfRK_m3teMjoEbZaq2nFt5hSmBYrWFaf0VSEuol58,7218
|
|
445
446
|
agno/utils/response_iterator.py,sha256=MgtadrOuMcw2vJcVvhJdMKRzpVddhLWUIkGFbBz7ZCQ,379
|
|
446
447
|
agno/utils/safe_formatter.py,sha256=zLrW6O-nGUZvXoDkZOTgVpjeUFTmMUj8pk3FLvW_XjM,809
|
|
447
448
|
agno/utils/shell.py,sha256=JaY14Fq3ulodG4SeSdLEoOZDI4JJlmCbdgwK5beJuc8,700
|
|
448
449
|
agno/utils/streamlit.py,sha256=Bn2kQLiTKKqyN0VXj0NBN_sz8V1bV5vImoSk1PCi52g,17966
|
|
449
|
-
agno/utils/string.py,sha256=
|
|
450
|
+
agno/utils/string.py,sha256=iO1etmjHVxnPMTixAKlpR1vnBnRapYL2pm_cjhS06Ww,7557
|
|
450
451
|
agno/utils/team.py,sha256=VXdm41WhsC6Rb20fHcpO4H55obQ6R435luAAZ4Jc3yQ,1853
|
|
451
452
|
agno/utils/timer.py,sha256=Fuax69yh1cVIzCYMmJDB4HpTsPM8Iiq1VaTWz1vJtF8,1282
|
|
452
453
|
agno/utils/tools.py,sha256=YZjA95pSNhHHcyoz5pe-Wo-yh9O2NU4Pqcbhs5kbefY,3842
|
|
@@ -455,8 +456,7 @@ agno/utils/whatsapp.py,sha256=242VwGOdbgkxVeIj4D899mpT3GnG_IpcaKnd5qebhTA,9936
|
|
|
455
456
|
agno/utils/yaml_io.py,sha256=cwTqCE-eBGoi87KLDcwB6iyWe0NcvEmadQjWL1cQ7jE,860
|
|
456
457
|
agno/utils/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
457
458
|
agno/utils/models/ai_foundry.py,sha256=PmhETWhdqZCq8NbDe-MdZVuRXx6DbVOePCyPFiPLceo,1511
|
|
458
|
-
agno/utils/models/
|
|
459
|
-
agno/utils/models/claude.py,sha256=QYnARhGrLSvP2kfFCa7t-hnaZdU9Nby-B-21ocT9_rA,11293
|
|
459
|
+
agno/utils/models/claude.py,sha256=XkRS4XVIDJt440SlzQFemrIDpIsOs39AvK1fjyMuruU,11229
|
|
460
460
|
agno/utils/models/cohere.py,sha256=wir2K9u4RmOwq7T7n_2UPZFHfwmnrt_u91Psd_DFqdE,3266
|
|
461
461
|
agno/utils/models/llama.py,sha256=Z5fdOFUFnov1JgUDcP6ICK3M7o64UB1fkcwAs2XaZkM,2515
|
|
462
462
|
agno/utils/models/mistral.py,sha256=SVcJ8Q8SFeadNwCr8BARbET0gvGiylmaDKzcSJ9kWq0,4189
|
|
@@ -464,8 +464,8 @@ agno/utils/models/openai_responses.py,sha256=63f2UgDFCzrr6xQITrGtn42UUHQBcZFUUFM
|
|
|
464
464
|
agno/utils/models/schema_utils.py,sha256=L6TkraMClI471H6xYy7V81lhHR4qQloVKCN0bF4Ajw0,5047
|
|
465
465
|
agno/utils/models/watsonx.py,sha256=fe6jN0hBvOCQurqjS6_9PIwDHt-4kVod9qW236Zs6DU,1496
|
|
466
466
|
agno/utils/print_response/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
467
|
-
agno/utils/print_response/agent.py,sha256=
|
|
468
|
-
agno/utils/print_response/team.py,sha256=
|
|
467
|
+
agno/utils/print_response/agent.py,sha256=IFS_iyKee02krwOiXe452TdFwqscVhxzy82hES08Mzw,33967
|
|
468
|
+
agno/utils/print_response/team.py,sha256=dt-nvTk1E8wDdd1BFetzNT5igTDE7TdjzuQ-TpAkanQ,76949
|
|
469
469
|
agno/utils/print_response/workflow.py,sha256=qzI09OFS-f4tua27tBXhmle0ezQGFiC6s5IPgPvTq9I,66499
|
|
470
470
|
agno/vectordb/__init__.py,sha256=P0QP9PUC4j2JtWIfYJX7LeC-oiPuh_QsUaOaP1ZY_dI,64
|
|
471
471
|
agno/vectordb/base.py,sha256=y5kqBiIp2atgcvV-_NXNXcX6NZFqJZibBaqbkWhtFTk,3054
|
|
@@ -519,9 +519,9 @@ agno/workflow/router.py,sha256=ZAiVsh2F_9ssKj0_RzHWzfgimaZ5hfb3Ni1Xx_SkVR0,26625
|
|
|
519
519
|
agno/workflow/step.py,sha256=15vZFN5HlO3IkHqsxkM-2InUzCWC0Ee8BtoJ-OAhS5w,52485
|
|
520
520
|
agno/workflow/steps.py,sha256=uRE4oGWs2cA-TrX881AEa69zu6rheXH81mNOZiRrNvg,23719
|
|
521
521
|
agno/workflow/types.py,sha256=ZEFyaKH42261_3yx810ABfi70RUfjPGSwiIep7n53yg,17485
|
|
522
|
-
agno/workflow/workflow.py,sha256=
|
|
523
|
-
agno-2.0.
|
|
524
|
-
agno-2.0.
|
|
525
|
-
agno-2.0.
|
|
526
|
-
agno-2.0.
|
|
527
|
-
agno-2.0.
|
|
522
|
+
agno/workflow/workflow.py,sha256=yjjVZ0MvkLjGgVaVt8jFWlm2urx7zZdAuJ0We9KRu2U,112738
|
|
523
|
+
agno-2.0.10.dist-info/licenses/LICENSE,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
|
|
524
|
+
agno-2.0.10.dist-info/METADATA,sha256=PKHm3CQY3sd9WdY5O1VGJyQyVeza95ICLnS3lhPuIA0,22018
|
|
525
|
+
agno-2.0.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
526
|
+
agno-2.0.10.dist-info/top_level.txt,sha256=MKyeuVesTyOKIXUhc-d_tPa2Hrh0oTA4LM0izowpx70,5
|
|
527
|
+
agno-2.0.10.dist-info/RECORD,,
|
agno/utils/models/aws_claude.py
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from typing import Any, Dict, List, Optional, Tuple
|
|
3
|
-
|
|
4
|
-
from agno.media import Image
|
|
5
|
-
from agno.models.message import Message
|
|
6
|
-
from agno.utils.log import log_error, log_warning
|
|
7
|
-
|
|
8
|
-
try:
|
|
9
|
-
from anthropic.types import (
|
|
10
|
-
TextBlock,
|
|
11
|
-
ToolUseBlock,
|
|
12
|
-
)
|
|
13
|
-
except ImportError:
|
|
14
|
-
log_error("`anthropic[bedrock]` not installed. Please install it via `pip install anthropic[bedrock]`.")
|
|
15
|
-
raise
|
|
16
|
-
|
|
17
|
-
ROLE_MAP = {
|
|
18
|
-
"system": "system",
|
|
19
|
-
"user": "user",
|
|
20
|
-
"assistant": "assistant",
|
|
21
|
-
"tool": "user",
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
def _format_image_for_message(image: Image) -> Optional[Dict[str, Any]]:
|
|
26
|
-
"""
|
|
27
|
-
Add an image to a message by converting it to base64 encoded format.
|
|
28
|
-
"""
|
|
29
|
-
using_filetype = False
|
|
30
|
-
|
|
31
|
-
import base64
|
|
32
|
-
|
|
33
|
-
# 'imghdr' was deprecated in Python 3.11: https://docs.python.org/3/library/imghdr.html
|
|
34
|
-
# 'filetype' used as a fallback
|
|
35
|
-
try:
|
|
36
|
-
import imghdr
|
|
37
|
-
except (ModuleNotFoundError, ImportError):
|
|
38
|
-
try:
|
|
39
|
-
import filetype
|
|
40
|
-
|
|
41
|
-
using_filetype = True
|
|
42
|
-
except (ModuleNotFoundError, ImportError):
|
|
43
|
-
raise ImportError("`filetype` not installed. Please install using `pip install filetype`")
|
|
44
|
-
|
|
45
|
-
type_mapping = {
|
|
46
|
-
"jpeg": "image/jpeg",
|
|
47
|
-
"jpg": "image/jpeg",
|
|
48
|
-
"png": "image/png",
|
|
49
|
-
"gif": "image/gif",
|
|
50
|
-
"webp": "image/webp",
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
try:
|
|
54
|
-
# Case 1: Image is a URL
|
|
55
|
-
if image.url is not None:
|
|
56
|
-
content_bytes = image.get_content_bytes() # type: ignore
|
|
57
|
-
|
|
58
|
-
# Case 2: Image is a local file path
|
|
59
|
-
elif image.filepath is not None:
|
|
60
|
-
from pathlib import Path
|
|
61
|
-
|
|
62
|
-
path = Path(image.filepath) if isinstance(image.filepath, str) else image.filepath
|
|
63
|
-
if path.exists() and path.is_file():
|
|
64
|
-
with open(image.filepath, "rb") as f:
|
|
65
|
-
content_bytes = f.read()
|
|
66
|
-
else:
|
|
67
|
-
log_error(f"Image file not found: {image}")
|
|
68
|
-
return None
|
|
69
|
-
|
|
70
|
-
# Case 3: Image is a bytes object
|
|
71
|
-
elif image.content is not None:
|
|
72
|
-
content_bytes = image.content
|
|
73
|
-
|
|
74
|
-
else:
|
|
75
|
-
log_error(f"Unsupported image type: {type(image)}")
|
|
76
|
-
return None
|
|
77
|
-
|
|
78
|
-
if using_filetype:
|
|
79
|
-
kind = filetype.guess(content_bytes)
|
|
80
|
-
if not kind:
|
|
81
|
-
log_error("Unable to determine image type")
|
|
82
|
-
return None
|
|
83
|
-
|
|
84
|
-
img_type = kind.extension
|
|
85
|
-
else:
|
|
86
|
-
img_type = imghdr.what(None, h=content_bytes) # type: ignore
|
|
87
|
-
|
|
88
|
-
if not img_type:
|
|
89
|
-
log_error("Unable to determine image type")
|
|
90
|
-
return None
|
|
91
|
-
|
|
92
|
-
media_type = type_mapping.get(img_type)
|
|
93
|
-
if not media_type:
|
|
94
|
-
log_error(f"Unsupported image type: {img_type}")
|
|
95
|
-
return None
|
|
96
|
-
|
|
97
|
-
return {
|
|
98
|
-
"type": "image",
|
|
99
|
-
"source": {
|
|
100
|
-
"type": "base64",
|
|
101
|
-
"media_type": media_type,
|
|
102
|
-
"data": base64.b64encode(content_bytes).decode("utf-8"), # type: ignore
|
|
103
|
-
},
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
except Exception as e:
|
|
107
|
-
log_error(f"Error processing image: {e}")
|
|
108
|
-
return None
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
def format_messages(messages: List[Message]) -> Tuple[List[Dict[str, str]], str]:
|
|
112
|
-
"""
|
|
113
|
-
Process the list of messages and separate them into API messages and system messages.
|
|
114
|
-
|
|
115
|
-
Args:
|
|
116
|
-
messages (List[Message]): The list of messages to process.
|
|
117
|
-
|
|
118
|
-
Returns:
|
|
119
|
-
Tuple[List[Dict[str, str]], str]: A tuple containing the list of API messages and the concatenated system messages.
|
|
120
|
-
"""
|
|
121
|
-
|
|
122
|
-
chat_messages: List[Dict[str, str]] = []
|
|
123
|
-
system_messages: List[str] = []
|
|
124
|
-
|
|
125
|
-
for message in messages:
|
|
126
|
-
content = message.content or ""
|
|
127
|
-
if message.role == "system":
|
|
128
|
-
if content is not None:
|
|
129
|
-
system_messages.append(content) # type: ignore
|
|
130
|
-
continue
|
|
131
|
-
elif message.role == "user":
|
|
132
|
-
if isinstance(content, str):
|
|
133
|
-
content = [{"type": "text", "text": content}]
|
|
134
|
-
|
|
135
|
-
if message.images is not None:
|
|
136
|
-
for image in message.images:
|
|
137
|
-
image_content = _format_image_for_message(image)
|
|
138
|
-
if image_content:
|
|
139
|
-
content.append(image_content)
|
|
140
|
-
|
|
141
|
-
if message.files is not None and len(message.files) > 0:
|
|
142
|
-
log_warning("Files are not supported for AWS Bedrock Claude")
|
|
143
|
-
|
|
144
|
-
if message.audio is not None and len(message.audio) > 0:
|
|
145
|
-
log_warning("Audio is not supported for AWS Bedrock Claude")
|
|
146
|
-
|
|
147
|
-
if message.videos is not None and len(message.videos) > 0:
|
|
148
|
-
log_warning("Video is not supported for AWS Bedrock Claude")
|
|
149
|
-
|
|
150
|
-
# Handle tool calls from history
|
|
151
|
-
elif message.role == "assistant":
|
|
152
|
-
content = []
|
|
153
|
-
|
|
154
|
-
if isinstance(message.content, str) and message.content and len(message.content.strip()) > 0:
|
|
155
|
-
content.append(TextBlock(text=message.content, type="text"))
|
|
156
|
-
|
|
157
|
-
if message.tool_calls:
|
|
158
|
-
for tool_call in message.tool_calls:
|
|
159
|
-
content.append(
|
|
160
|
-
ToolUseBlock(
|
|
161
|
-
id=tool_call["id"],
|
|
162
|
-
input=json.loads(tool_call["function"]["arguments"])
|
|
163
|
-
if "arguments" in tool_call["function"]
|
|
164
|
-
else {},
|
|
165
|
-
name=tool_call["function"]["name"],
|
|
166
|
-
type="tool_use",
|
|
167
|
-
)
|
|
168
|
-
)
|
|
169
|
-
chat_messages.append({"role": ROLE_MAP[message.role], "content": content}) # type: ignore
|
|
170
|
-
return chat_messages, " ".join(system_messages)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|