xpander-sdk 2.0.194__py3-none-any.whl → 2.0.195__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.
- xpander_sdk/consts/api_routes.py +3 -0
- xpander_sdk/models/orchestrations.py +4 -0
- xpander_sdk/modules/agents/sub_modules/agent.py +2 -0
- xpander_sdk/modules/backend/frameworks/agno.py +28 -2
- {xpander_sdk-2.0.194.dist-info → xpander_sdk-2.0.195.dist-info}/METADATA +1 -1
- {xpander_sdk-2.0.194.dist-info → xpander_sdk-2.0.195.dist-info}/RECORD +9 -9
- {xpander_sdk-2.0.194.dist-info → xpander_sdk-2.0.195.dist-info}/WHEEL +0 -0
- {xpander_sdk-2.0.194.dist-info → xpander_sdk-2.0.195.dist-info}/licenses/LICENSE +0 -0
- {xpander_sdk-2.0.194.dist-info → xpander_sdk-2.0.195.dist-info}/top_level.txt +0 -0
xpander_sdk/consts/api_routes.py
CHANGED
|
@@ -63,6 +63,9 @@ and deleting resources.
|
|
|
63
63
|
HITLRequest = "/hitl/request"
|
|
64
64
|
HITLApprove = "/hitl/{task_id}/approve"
|
|
65
65
|
HITLReject = "/hitl/{task_id}/reject"
|
|
66
|
+
|
|
67
|
+
# Metadata
|
|
68
|
+
GetOrgDefaultLLMExtraHeaders = "/metadata/default_llm_extra_headers"
|
|
66
69
|
|
|
67
70
|
def __str__(self) -> str:
|
|
68
71
|
return str(self.value)
|
|
@@ -119,6 +119,8 @@ class OrchestrationClassifierNodeLLMSettings(XPanderSharedModel):
|
|
|
119
119
|
llm_credentials_key: Key identifier for stored credentials.
|
|
120
120
|
llm_credentials_key_type: Type of credential key storage. Defaults to XPander.
|
|
121
121
|
llm_credentials: Direct credential object if not using stored credentials.
|
|
122
|
+
llm_api_base: Alternative API Base for the LLM.
|
|
123
|
+
llm_extra_headers: Extra headers to be set to LLM Requests.
|
|
122
124
|
"""
|
|
123
125
|
|
|
124
126
|
model_provider: Optional[LLMModelProvider] = LLMModelProvider.OpenAI
|
|
@@ -128,6 +130,8 @@ class OrchestrationClassifierNodeLLMSettings(XPanderSharedModel):
|
|
|
128
130
|
LLMCredentialsKeyType.XPander
|
|
129
131
|
)
|
|
130
132
|
llm_credentials: Optional[LLMCredentials] = None
|
|
133
|
+
llm_api_base: Optional[str] = None
|
|
134
|
+
llm_extra_headers: Optional[Dict[str,str]] = {}
|
|
131
135
|
|
|
132
136
|
class OrchestrationPointerNode(XPanderSharedModel):
|
|
133
137
|
"""Node that references an external asset (agent, function, or orchestration).
|
|
@@ -159,6 +159,7 @@ class Agent(XPanderSharedModel):
|
|
|
159
159
|
deep_planning: Optional[bool] = False
|
|
160
160
|
enforce_deep_planning: Optional[bool] = False
|
|
161
161
|
llm_api_base: Optional[str]
|
|
162
|
+
llm_extra_headers: Optional[Dict[str,str]]
|
|
162
163
|
webhook_url: Optional[str]
|
|
163
164
|
created_at: Optional[datetime]
|
|
164
165
|
type: Optional[AgentType]
|
|
@@ -206,6 +207,7 @@ class Agent(XPanderSharedModel):
|
|
|
206
207
|
deep_planning: Optional[bool] = False
|
|
207
208
|
enforce_deep_planning: Optional[bool] = False
|
|
208
209
|
llm_api_base: Optional[str] = None
|
|
210
|
+
llm_extra_headers: Optional[Dict[str,str]] = {}
|
|
209
211
|
webhook_url: Optional[str] = None
|
|
210
212
|
created_at: Optional[datetime] = None
|
|
211
213
|
type: Optional[AgentType] = None
|
|
@@ -7,6 +7,8 @@ from typing import Any, Callable, Dict, List, Optional
|
|
|
7
7
|
from loguru import logger
|
|
8
8
|
from toon import encode as toon_encode
|
|
9
9
|
from xpander_sdk import Configuration
|
|
10
|
+
from xpander_sdk.consts.api_routes import APIRoute
|
|
11
|
+
from xpander_sdk.core.xpander_api_client import APIClient
|
|
10
12
|
from xpander_sdk.models.shared import OutputFormat, ThinkMode
|
|
11
13
|
from xpander_sdk.modules.agents.agents_module import Agents
|
|
12
14
|
from xpander_sdk.modules.agents.models.agent import AgentGraphItemType, LLMReasoningEffort
|
|
@@ -31,6 +33,8 @@ from agno.guardrails import PIIDetectionGuardrail
|
|
|
31
33
|
from agno.guardrails import PromptInjectionGuardrail
|
|
32
34
|
from agno.guardrails import OpenAIModerationGuardrail
|
|
33
35
|
|
|
36
|
+
from xpander_sdk.utils.event_loop import run_sync
|
|
37
|
+
|
|
34
38
|
async def build_agent_args(
|
|
35
39
|
xpander_agent: Agent,
|
|
36
40
|
task: Optional[Task] = None,
|
|
@@ -635,6 +639,26 @@ def _load_llm_model(agent: Agent, override: Optional[Dict[str, Any]] = {}) -> An
|
|
|
635
639
|
|
|
636
640
|
llm_args = {}
|
|
637
641
|
|
|
642
|
+
llm_extra_headers = {}
|
|
643
|
+
|
|
644
|
+
# Get organization default LLM extra headers
|
|
645
|
+
api_client = APIClient(configuration=agent.configuration)
|
|
646
|
+
org_default_llm_headers = run_sync(
|
|
647
|
+
api_client.make_request(
|
|
648
|
+
path=APIRoute.GetOrgDefaultLLMExtraHeaders,
|
|
649
|
+
)
|
|
650
|
+
)
|
|
651
|
+
|
|
652
|
+
# set default headers
|
|
653
|
+
if org_default_llm_headers:
|
|
654
|
+
llm_extra_headers = {**llm_extra_headers,**org_default_llm_headers}
|
|
655
|
+
|
|
656
|
+
# set override by agnet
|
|
657
|
+
if agent.llm_extra_headers and isinstance(agent.llm_extra_headers, dict):
|
|
658
|
+
llm_extra_headers = {**llm_extra_headers, **agent.llm_extra_headers}
|
|
659
|
+
|
|
660
|
+
llm_args["extra_headers"] = llm_extra_headers
|
|
661
|
+
|
|
638
662
|
if agent.llm_reasoning_effort and agent.llm_reasoning_effort != LLMReasoningEffort.Medium and agent.model_name and "gpt-5" in agent.model_name.lower():
|
|
639
663
|
llm_args = { "reasoning_effort": agent.llm_reasoning_effort.value }
|
|
640
664
|
|
|
@@ -687,7 +711,7 @@ def _load_llm_model(agent: Agent, override: Optional[Dict[str, Any]] = {}) -> An
|
|
|
687
711
|
# Google AI Studio - supports gemini models
|
|
688
712
|
elif provider == "google_ai_studio":
|
|
689
713
|
from agno.models.google import Gemini
|
|
690
|
-
|
|
714
|
+
del llm_args["extra_headers"]
|
|
691
715
|
return Gemini(
|
|
692
716
|
id=agent.model_name,
|
|
693
717
|
# Try xpander.ai-specific key first, fallback to standard OpenAI key
|
|
@@ -718,6 +742,7 @@ def _load_llm_model(agent: Agent, override: Optional[Dict[str, Any]] = {}) -> An
|
|
|
718
742
|
elif provider == "amazon_bedrock":
|
|
719
743
|
from agno.models.aws.bedrock import AwsBedrock
|
|
720
744
|
environ["AWS_BEARER_TOKEN_BEDROCK"] = get_llm_key("AWS_BEARER_TOKEN_BEDROCK") # set to env
|
|
745
|
+
del llm_args["extra_headers"]
|
|
721
746
|
return AwsBedrock(
|
|
722
747
|
id=agent.model_name,
|
|
723
748
|
temperature=0.0,
|
|
@@ -727,7 +752,8 @@ def _load_llm_model(agent: Agent, override: Optional[Dict[str, Any]] = {}) -> An
|
|
|
727
752
|
# Anthropic Provider - supports Claude models
|
|
728
753
|
elif provider == "anthropic":
|
|
729
754
|
from agno.models.anthropic import Claude
|
|
730
|
-
|
|
755
|
+
llm_args["default_headers"] = llm_args["extra_headers"]
|
|
756
|
+
del llm_args["extra_headers"]
|
|
731
757
|
return Claude(
|
|
732
758
|
id=agent.model_name,
|
|
733
759
|
api_key=get_llm_key("ANTHROPIC_API_KEY"),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
xpander_sdk/__init__.py,sha256=34l3YcvIdkj81DTfMp_bgZgXpj2U1lTKpHQ0shwnc_8,2927
|
|
2
2
|
xpander_sdk/consts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
xpander_sdk/consts/api_routes.py,sha256=
|
|
3
|
+
xpander_sdk/consts/api_routes.py,sha256=PCr8BdoTpHR_06WBv9Bod_Sy19yXwsNd_ZlbKj7dhMs,2714
|
|
4
4
|
xpander_sdk/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
xpander_sdk/core/module_base.py,sha256=YiUonUBXnXqa9wms5O8C9tEfQeWBJCIZg6xzEorV8gI,5480
|
|
6
6
|
xpander_sdk/core/state.py,sha256=GKGJaMALpTGVV2-iPV3cPrQW4dNdFoZPv3oXBjHDhIY,214
|
|
@@ -16,7 +16,7 @@ xpander_sdk/models/events.py,sha256=HnootQSUIIRM4BIdaTbuPUEJ55hLVtA7KDCSsnHeBKw,
|
|
|
16
16
|
xpander_sdk/models/frameworks.py,sha256=-7W_m5cvgS1qLp0gGAFP4noNWT82IT1ZqtQv5WuOC2k,2939
|
|
17
17
|
xpander_sdk/models/generic.py,sha256=yw5rBRdZ-6ucTI4AwtskenddepOooiFRM--9xx5jrL8,681
|
|
18
18
|
xpander_sdk/models/notifications.py,sha256=3tK4Z2gmA6YxRtqsWgzjiVISgJyHvmjTooiRgzrj5zY,3373
|
|
19
|
-
xpander_sdk/models/orchestrations.py,sha256=
|
|
19
|
+
xpander_sdk/models/orchestrations.py,sha256=nthwK28sXgCyyx-zWb91kAxuRAT6YyMW8-PuM5SMHDM,10113
|
|
20
20
|
xpander_sdk/models/shared.py,sha256=gW88kA_UslNinUjtQKpLVF0sHDZnckwLWexRapxPivU,3125
|
|
21
21
|
xpander_sdk/models/user.py,sha256=_FTG0JO6iTrbcvJp-BBJ6nuj281zhyQB5ldQkBCyYDU,749
|
|
22
22
|
xpander_sdk/modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -27,7 +27,7 @@ xpander_sdk/modules/agents/models/agent.py,sha256=lHWz37a4_qB9Hq4sZhvjILjj566hJH
|
|
|
27
27
|
xpander_sdk/modules/agents/models/agent_list.py,sha256=byEayS2uLwDKaVT3lAHltrFocQFKpr8XEwQ6NTEEEMo,4081
|
|
28
28
|
xpander_sdk/modules/agents/models/knowledge_bases.py,sha256=YimpjVJxWe8YTbGMD6oGQOA_YV8ztHQHTTBOaBB44ZM,1037
|
|
29
29
|
xpander_sdk/modules/agents/sub_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
-
xpander_sdk/modules/agents/sub_modules/agent.py,sha256=
|
|
30
|
+
xpander_sdk/modules/agents/sub_modules/agent.py,sha256=Mio5H9yoHKEnGtcDJB-87Unn9o88XWLzrr1QAAQhxJo,36948
|
|
31
31
|
xpander_sdk/modules/agents/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
32
|
xpander_sdk/modules/agents/utils/generic.py,sha256=XbG4OeHMQo4gVYCsasMlW_b8OoqS1xL3MlUZSjXivu0,81
|
|
33
33
|
xpander_sdk/modules/backend/__init__.py,sha256=-NjikuZgHBhOM9xHML2vKsG0ICX9S2RKHktrWaODCBE,171
|
|
@@ -36,7 +36,7 @@ xpander_sdk/modules/backend/events_registry.py,sha256=d0V-lsz3I3G1QB643EM1i-a5oJ
|
|
|
36
36
|
xpander_sdk/modules/backend/decorators/__init__.py,sha256=ub9c8G0Ll6AuCvfcFB6rqR8iamMJxtcW7QjWw3WSkPU,106
|
|
37
37
|
xpander_sdk/modules/backend/decorators/on_auth_event.py,sha256=Xt_x9nncujMcF_SgM5hG6M-iZ6B-rDS97EPmgZkGdMk,4715
|
|
38
38
|
xpander_sdk/modules/backend/frameworks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
-
xpander_sdk/modules/backend/frameworks/agno.py,sha256=
|
|
39
|
+
xpander_sdk/modules/backend/frameworks/agno.py,sha256=MrqX8Hesi1tH58jTQxm32kYTJcqJiKf7KHQHF4KrBSA,42723
|
|
40
40
|
xpander_sdk/modules/backend/frameworks/dispatch.py,sha256=ht9hT5-cHATofQbWsbWeTARx51Hne3TNNNjw6KECRtA,1814
|
|
41
41
|
xpander_sdk/modules/backend/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
42
|
xpander_sdk/modules/backend/utils/mcp_oauth.py,sha256=5sYJcw557V3pSgutxUFzkBp5YxUJFUoB1V1rEe814pc,5430
|
|
@@ -90,8 +90,8 @@ xpander_sdk/utils/generic.py,sha256=XrRj2-L8c0YWpfPdDyXE-pVL-6lKF9VpyZzKHQ4wuCc,
|
|
|
90
90
|
xpander_sdk/utils/tools.py,sha256=lyFkq2yP7DxBkyXYVlnFRwDhQCvf0fZZMDm5fBycze4,1244
|
|
91
91
|
xpander_sdk/utils/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
92
92
|
xpander_sdk/utils/agents/compactization_agent.py,sha256=S_U1dSmDC7I0JUsp_THUYjfutEI5QMBaMPJEXGp0_Sw,14389
|
|
93
|
-
xpander_sdk-2.0.
|
|
94
|
-
xpander_sdk-2.0.
|
|
95
|
-
xpander_sdk-2.0.
|
|
96
|
-
xpander_sdk-2.0.
|
|
97
|
-
xpander_sdk-2.0.
|
|
93
|
+
xpander_sdk-2.0.195.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
94
|
+
xpander_sdk-2.0.195.dist-info/METADATA,sha256=h57DMnRbjae12AcThD_5ycAKV8zqNoO4ySa-NkjRa3M,17945
|
|
95
|
+
xpander_sdk-2.0.195.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
96
|
+
xpander_sdk-2.0.195.dist-info/top_level.txt,sha256=UCjnxQpsMy5Zoe7lmRuVDO6DI2V_6PgRFfm4oizRbVs,12
|
|
97
|
+
xpander_sdk-2.0.195.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|