agno 2.4.7__py3-none-any.whl → 2.4.8__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 +5 -1
- agno/db/base.py +2 -0
- agno/db/postgres/postgres.py +5 -5
- agno/db/sqlite/sqlite.py +4 -4
- agno/knowledge/knowledge.py +83 -1853
- agno/knowledge/loaders/__init__.py +29 -0
- agno/knowledge/loaders/azure_blob.py +423 -0
- agno/knowledge/loaders/base.py +187 -0
- agno/knowledge/loaders/gcs.py +267 -0
- agno/knowledge/loaders/github.py +415 -0
- agno/knowledge/loaders/s3.py +281 -0
- agno/knowledge/loaders/sharepoint.py +439 -0
- agno/knowledge/reader/website_reader.py +2 -2
- agno/knowledge/remote_knowledge.py +151 -0
- agno/learn/stores/session_context.py +10 -2
- agno/models/azure/openai_chat.py +6 -11
- agno/models/neosantara/__init__.py +5 -0
- agno/models/neosantara/neosantara.py +42 -0
- agno/models/utils.py +5 -0
- agno/os/app.py +4 -1
- agno/os/interfaces/agui/router.py +1 -1
- agno/os/routers/components/components.py +2 -0
- agno/os/routers/knowledge/knowledge.py +0 -1
- agno/os/routers/registry/registry.py +340 -192
- agno/os/routers/workflows/router.py +7 -1
- agno/os/schema.py +104 -0
- agno/registry/registry.py +4 -0
- agno/session/workflow.py +1 -1
- agno/skills/utils.py +100 -2
- agno/team/team.py +6 -3
- agno/vectordb/lancedb/lance_db.py +22 -7
- agno/workflow/__init__.py +4 -0
- agno/workflow/cel.py +299 -0
- agno/workflow/condition.py +145 -2
- agno/workflow/loop.py +177 -46
- agno/workflow/parallel.py +75 -4
- agno/workflow/router.py +260 -44
- agno/workflow/step.py +14 -7
- agno/workflow/steps.py +43 -0
- agno/workflow/workflow.py +104 -46
- {agno-2.4.7.dist-info → agno-2.4.8.dist-info}/METADATA +24 -36
- {agno-2.4.7.dist-info → agno-2.4.8.dist-info}/RECORD +45 -34
- {agno-2.4.7.dist-info → agno-2.4.8.dist-info}/WHEEL +0 -0
- {agno-2.4.7.dist-info → agno-2.4.8.dist-info}/licenses/LICENSE +0 -0
- {agno-2.4.7.dist-info → agno-2.4.8.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from os import getenv
|
|
3
|
+
from typing import Any, Dict, Optional
|
|
4
|
+
|
|
5
|
+
from agno.exceptions import ModelAuthenticationError
|
|
6
|
+
from agno.models.openai.like import OpenAILike
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class Neosantara(OpenAILike):
|
|
11
|
+
"""
|
|
12
|
+
A class for interacting with Neosantara API.
|
|
13
|
+
|
|
14
|
+
Attributes:
|
|
15
|
+
id (str): The id of the Neosantara model to use. Default is "grok-4.1-fast-non-reasoning".
|
|
16
|
+
name (str): The name of this chat model instance. Default is "Neosantara"
|
|
17
|
+
provider (str): The provider of the model. Default is "Neosantara".
|
|
18
|
+
api_key (str): The api key to authorize request to Neosantara.
|
|
19
|
+
base_url (str): The base url to which the requests are sent. Defaults to "https://api.neosantara.xyz/v1".
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
id: str = "grok-4.1-fast-non-reasoning"
|
|
23
|
+
name: str = "Neosantara"
|
|
24
|
+
provider: str = "Neosantara"
|
|
25
|
+
api_key: Optional[str] = None
|
|
26
|
+
base_url: str = "https://api.neosantara.xyz/v1"
|
|
27
|
+
|
|
28
|
+
def _get_client_params(self) -> Dict[str, Any]:
|
|
29
|
+
"""
|
|
30
|
+
Returns client parameters for API requests, checking for NEOSANTARA_API_KEY.
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
Dict[str, Any]: A dictionary of client parameters for API requests.
|
|
34
|
+
"""
|
|
35
|
+
if not self.api_key:
|
|
36
|
+
self.api_key = getenv("NEOSANTARA_API_KEY")
|
|
37
|
+
if not self.api_key:
|
|
38
|
+
raise ModelAuthenticationError(
|
|
39
|
+
message="NEOSANTARA_API_KEY not set. Please set the NEOSANTARA_API_KEY environment variable.",
|
|
40
|
+
model_name=self.name,
|
|
41
|
+
)
|
|
42
|
+
return super()._get_client_params()
|
agno/models/utils.py
CHANGED
|
@@ -149,6 +149,11 @@ def _get_model_class(model_id: str, model_provider: str) -> Model:
|
|
|
149
149
|
|
|
150
150
|
return Nebius(id=model_id)
|
|
151
151
|
|
|
152
|
+
elif model_provider == "neosantara":
|
|
153
|
+
from agno.models.neosantara import Neosantara
|
|
154
|
+
|
|
155
|
+
return Neosantara(id=model_id)
|
|
156
|
+
|
|
152
157
|
elif model_provider == "nexus":
|
|
153
158
|
from agno.models.nexus import Nexus
|
|
154
159
|
|
agno/os/app.py
CHANGED
|
@@ -1056,12 +1056,15 @@ class AgentOS:
|
|
|
1056
1056
|
dbs_with_specific_config = [db.db_id for db in knowledge_config.dbs]
|
|
1057
1057
|
|
|
1058
1058
|
# Only add databases that are actually used for knowledge contents
|
|
1059
|
-
for db_id in self.knowledge_dbs.
|
|
1059
|
+
for db_id, dbs in self.knowledge_dbs.items():
|
|
1060
1060
|
if db_id not in dbs_with_specific_config:
|
|
1061
|
+
# Collect unique table names from all databases with the same id
|
|
1062
|
+
unique_tables = list(set(db.knowledge_table_name for db in dbs))
|
|
1061
1063
|
knowledge_config.dbs.append(
|
|
1062
1064
|
DatabaseConfig(
|
|
1063
1065
|
db_id=db_id,
|
|
1064
1066
|
domain_config=KnowledgeDomainConfig(display_name=db_id),
|
|
1067
|
+
tables=unique_tables,
|
|
1065
1068
|
)
|
|
1066
1069
|
)
|
|
1067
1070
|
|
|
@@ -14,7 +14,7 @@ try:
|
|
|
14
14
|
)
|
|
15
15
|
from ag_ui.encoder import EventEncoder
|
|
16
16
|
except ImportError as e:
|
|
17
|
-
raise ImportError("`ag_ui` not installed. Please install it with `pip install -U ag-ui`") from e
|
|
17
|
+
raise ImportError("`ag_ui` not installed. Please install it with `pip install -U ag-ui-protocol`") from e
|
|
18
18
|
|
|
19
19
|
from fastapi import APIRouter
|
|
20
20
|
from fastapi.responses import StreamingResponse
|
|
@@ -243,6 +243,8 @@ def attach_routes(
|
|
|
243
243
|
update_kwargs["description"] = body.description
|
|
244
244
|
if body.metadata is not None:
|
|
245
245
|
update_kwargs["metadata"] = body.metadata
|
|
246
|
+
if body.current_version is not None:
|
|
247
|
+
update_kwargs["current_version"] = body.current_version
|
|
246
248
|
if body.component_type is not None:
|
|
247
249
|
update_kwargs["component_type"] = DbComponentType(body.component_type)
|
|
248
250
|
|
|
@@ -215,7 +215,6 @@ def attach_routes(router: APIRouter, knowledge_instances: List[Union[Knowledge,
|
|
|
215
215
|
description=(
|
|
216
216
|
"Upload content from a remote source (S3, GCS, SharePoint, GitHub) to the knowledge base. "
|
|
217
217
|
"Content is processed asynchronously in the background. "
|
|
218
|
-
"Use the /knowledge/config endpoint to see available remote content sources."
|
|
219
218
|
),
|
|
220
219
|
responses={
|
|
221
220
|
202: {
|