ibm-watsonx-orchestrate 1.12.0b0__py3-none-any.whl → 1.13.0b0__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.
- ibm_watsonx_orchestrate/__init__.py +2 -1
- ibm_watsonx_orchestrate/agent_builder/agents/types.py +5 -5
- ibm_watsonx_orchestrate/agent_builder/connections/types.py +34 -3
- ibm_watsonx_orchestrate/agent_builder/knowledge_bases/types.py +11 -2
- ibm_watsonx_orchestrate/agent_builder/models/types.py +18 -1
- ibm_watsonx_orchestrate/agent_builder/toolkits/base_toolkit.py +1 -1
- ibm_watsonx_orchestrate/agent_builder/toolkits/types.py +14 -2
- ibm_watsonx_orchestrate/agent_builder/tools/__init__.py +1 -1
- ibm_watsonx_orchestrate/agent_builder/tools/base_tool.py +1 -1
- ibm_watsonx_orchestrate/agent_builder/tools/langflow_tool.py +61 -1
- ibm_watsonx_orchestrate/agent_builder/tools/openapi_tool.py +6 -0
- ibm_watsonx_orchestrate/agent_builder/tools/types.py +21 -3
- ibm_watsonx_orchestrate/agent_builder/voice_configurations/__init__.py +1 -1
- ibm_watsonx_orchestrate/agent_builder/voice_configurations/types.py +11 -0
- ibm_watsonx_orchestrate/cli/commands/agents/agents_controller.py +29 -53
- ibm_watsonx_orchestrate/cli/commands/connections/connections_command.py +2 -2
- ibm_watsonx_orchestrate/cli/commands/connections/connections_controller.py +56 -30
- ibm_watsonx_orchestrate/cli/commands/copilot/copilot_command.py +25 -2
- ibm_watsonx_orchestrate/cli/commands/copilot/copilot_controller.py +249 -14
- ibm_watsonx_orchestrate/cli/commands/copilot/copilot_server_controller.py +4 -4
- ibm_watsonx_orchestrate/cli/commands/environment/environment_command.py +5 -1
- ibm_watsonx_orchestrate/cli/commands/environment/environment_controller.py +6 -3
- ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_command.py +3 -2
- ibm_watsonx_orchestrate/cli/commands/evaluations/evaluations_controller.py +1 -1
- ibm_watsonx_orchestrate/cli/commands/knowledge_bases/knowledge_bases_controller.py +45 -16
- ibm_watsonx_orchestrate/cli/commands/models/model_provider_mapper.py +23 -4
- ibm_watsonx_orchestrate/cli/commands/models/models_command.py +2 -2
- ibm_watsonx_orchestrate/cli/commands/models/models_controller.py +29 -10
- ibm_watsonx_orchestrate/cli/commands/partners/offering/partners_offering_controller.py +21 -4
- ibm_watsonx_orchestrate/cli/commands/partners/offering/types.py +7 -15
- ibm_watsonx_orchestrate/cli/commands/partners/partners_command.py +1 -1
- ibm_watsonx_orchestrate/cli/commands/server/server_command.py +30 -20
- ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_command.py +2 -2
- ibm_watsonx_orchestrate/cli/commands/toolkit/toolkit_controller.py +139 -27
- ibm_watsonx_orchestrate/cli/commands/tools/tools_command.py +2 -2
- ibm_watsonx_orchestrate/cli/commands/tools/tools_controller.py +79 -36
- ibm_watsonx_orchestrate/cli/commands/voice_configurations/voice_configurations_controller.py +23 -11
- ibm_watsonx_orchestrate/cli/common.py +26 -0
- ibm_watsonx_orchestrate/cli/config.py +33 -2
- ibm_watsonx_orchestrate/client/connections/connections_client.py +1 -14
- ibm_watsonx_orchestrate/client/copilot/cpe/copilot_cpe_client.py +34 -1
- ibm_watsonx_orchestrate/client/knowledge_bases/knowledge_base_client.py +6 -2
- ibm_watsonx_orchestrate/client/model_policies/model_policies_client.py +1 -1
- ibm_watsonx_orchestrate/client/models/models_client.py +1 -1
- ibm_watsonx_orchestrate/client/threads/threads_client.py +34 -0
- ibm_watsonx_orchestrate/client/utils.py +29 -7
- ibm_watsonx_orchestrate/docker/compose-lite.yml +58 -8
- ibm_watsonx_orchestrate/docker/default.env +26 -17
- ibm_watsonx_orchestrate/flow_builder/flows/decorators.py +10 -2
- ibm_watsonx_orchestrate/flow_builder/flows/flow.py +90 -16
- ibm_watsonx_orchestrate/flow_builder/node.py +14 -2
- ibm_watsonx_orchestrate/flow_builder/types.py +57 -3
- ibm_watsonx_orchestrate/langflow/__init__.py +0 -0
- ibm_watsonx_orchestrate/langflow/langflow_utils.py +195 -0
- ibm_watsonx_orchestrate/langflow/lfx_deps.py +84 -0
- ibm_watsonx_orchestrate/utils/async_helpers.py +31 -0
- ibm_watsonx_orchestrate/utils/docker_utils.py +1177 -33
- ibm_watsonx_orchestrate/utils/environment.py +165 -20
- ibm_watsonx_orchestrate/utils/exceptions.py +1 -1
- ibm_watsonx_orchestrate/utils/tokens.py +51 -0
- ibm_watsonx_orchestrate/utils/utils.py +63 -4
- {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.13.0b0.dist-info}/METADATA +2 -2
- {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.13.0b0.dist-info}/RECORD +66 -59
- {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.13.0b0.dist-info}/WHEEL +0 -0
- {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.13.0b0.dist-info}/entry_points.txt +0 -0
- {ibm_watsonx_orchestrate-1.12.0b0.dist-info → ibm_watsonx_orchestrate-1.13.0b0.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
from typing import Dict, Any
|
1
|
+
from typing import Dict, Any, List
|
2
2
|
from uuid import uuid4
|
3
3
|
|
4
4
|
from ibm_watsonx_orchestrate.client.base_api_client import BaseAPIClient
|
@@ -37,6 +37,39 @@ class CPEClient(BaseAPIClient):
|
|
37
37
|
if response:
|
38
38
|
return response[-1]
|
39
39
|
|
40
|
+
def refine_agent_with_chats(self, instruction: str, tools: Dict[str, Any], collaborators: Dict[str, Any], knowledge_bases: Dict[str, Any], trajectories_with_feedback: List[List[dict]], model: str | None = None) -> dict:
|
41
|
+
"""
|
42
|
+
Refines an agent's instruction using provided chat trajectories and optional model name.
|
43
|
+
This method sends a payload containing the agent's current instruction and a list of chat trajectories
|
44
|
+
to the Copilot Prompt Engine (CPE) for refinement.
|
45
|
+
Optionally, a target model name can be specified to use in the refinement process.
|
46
|
+
Parameters:
|
47
|
+
instruction (str): The current instruction or prompt associated with the agent.
|
48
|
+
tools (Dict[str, Any]) - a dictionary containing the selected tools
|
49
|
+
collaborators (Dict[str, Any]) - a dictionary containing the selected collaborators
|
50
|
+
knowledge_bases (Dict[str, Any]) - a dictionary containing the selected knowledge_bases
|
51
|
+
trajectories_with_feedback (List[List[dict]]): A list of chat trajectories, where each trajectory is a list
|
52
|
+
of message dictionaries that may include user feedback.
|
53
|
+
model (str | None): Optional. The name of the model to use for refinement.
|
54
|
+
Returns:
|
55
|
+
dict: The last response from the CPE containing the refined instruction.
|
56
|
+
"""
|
57
|
+
|
58
|
+
payload = {
|
59
|
+
"trajectories_with_feedback":trajectories_with_feedback,
|
60
|
+
"instruction":instruction,
|
61
|
+
"tools": tools,
|
62
|
+
"collaborators": collaborators,
|
63
|
+
"knowledge_bases": knowledge_bases
|
64
|
+
}
|
65
|
+
|
66
|
+
if model:
|
67
|
+
payload["target_model_name"] = model
|
68
|
+
|
69
|
+
response = self._post_nd_json("/wxo-cpe/refine-agent-with-trajectories", data=payload)
|
70
|
+
|
71
|
+
if response:
|
72
|
+
return response[-1]
|
40
73
|
|
41
74
|
def init_with_context(self, model: str | None = None, context_data: Dict[str, Any] = None) -> dict:
|
42
75
|
payload = {
|
@@ -30,8 +30,12 @@ class KnowledgeBaseClient(BaseAPIClient):
|
|
30
30
|
def get_by_id(self, knowledge_base_id: str) -> dict:
|
31
31
|
return self._get(f"{self.base_endpoint}/{knowledge_base_id}")
|
32
32
|
|
33
|
-
def get_by_names(self,
|
34
|
-
formatted_names = [f"names={x}" for x in
|
33
|
+
def get_by_names(self, names: List[str]) -> List[dict]:
|
34
|
+
formatted_names = [f"names={x}" for x in names]
|
35
|
+
return self._get(f"{self.base_endpoint}?{'&'.join(formatted_names)}")
|
36
|
+
|
37
|
+
def get_by_ids(self, ids: List[str]) -> List[dict]:
|
38
|
+
formatted_names = [f"ids={x}" for x in ids]
|
35
39
|
return self._get(f"{self.base_endpoint}?{'&'.join(formatted_names)}")
|
36
40
|
|
37
41
|
def status(self, knowledge_base_id: str) -> dict:
|
@@ -58,7 +58,7 @@ class ModelPoliciesClient(BaseAPIClient):
|
|
58
58
|
return []
|
59
59
|
raise e
|
60
60
|
|
61
|
-
def get_draft_by_name(self, policy_name: str) -> ModelPolicy:
|
61
|
+
def get_draft_by_name(self, policy_name: str) -> List[ModelPolicy]:
|
62
62
|
return self.get_drafts_by_names([policy_name])
|
63
63
|
|
64
64
|
|
@@ -60,7 +60,7 @@ class ModelsClient(BaseAPIClient):
|
|
60
60
|
return []
|
61
61
|
raise e
|
62
62
|
|
63
|
-
def get_draft_by_name(self, model_name: str) -> ListVirtualModel:
|
63
|
+
def get_draft_by_name(self, model_name: str) -> List[ListVirtualModel]:
|
64
64
|
return self.get_drafts_by_names([model_name])
|
65
65
|
|
66
66
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
from ibm_watsonx_orchestrate.client.base_api_client import BaseAPIClient
|
2
|
+
|
3
|
+
|
4
|
+
class ThreadsClient(BaseAPIClient):
|
5
|
+
"""
|
6
|
+
Client to handle read operations for Threads (chat history- trajectories) endpoints
|
7
|
+
"""
|
8
|
+
|
9
|
+
def __init__(self, *args, **kwargs):
|
10
|
+
super().__init__(*args, **kwargs)
|
11
|
+
self.base_endpoint = "/threads"
|
12
|
+
|
13
|
+
def get_all_threads(self, agent_id) -> dict:
|
14
|
+
return self._get(self.base_endpoint, params={"agent_id": agent_id})
|
15
|
+
|
16
|
+
def get_thread_messages(self, thread_id) -> dict:
|
17
|
+
return self._get(f"{self.base_endpoint}/{thread_id}/messages")
|
18
|
+
|
19
|
+
def get(self) -> dict:
|
20
|
+
return self._get(self.base_endpoint)
|
21
|
+
|
22
|
+
def get_threads_messages(self, thread_ids: list[str]):
|
23
|
+
"""
|
24
|
+
get the messages for a list of threads (chats) ids
|
25
|
+
:param thread_ids:
|
26
|
+
:param threads_client:
|
27
|
+
:return:
|
28
|
+
"""
|
29
|
+
all_thread_messages = []
|
30
|
+
for thread_id in thread_ids:
|
31
|
+
thread_messages = self.get_thread_messages(thread_id=thread_id)
|
32
|
+
all_thread_messages.append(thread_messages)
|
33
|
+
|
34
|
+
return all_thread_messages
|
@@ -175,23 +175,24 @@ def instantiate_client(client: type[T] , url: str | None=None) -> T:
|
|
175
175
|
raise FileNotFoundError(message)
|
176
176
|
|
177
177
|
|
178
|
+
def get_arm_architectures () -> list[str]:
|
179
|
+
# NOTE: intentionally omitting 32 bit arm architectures.
|
180
|
+
return ["aarch64", "arm64", "arm", "aarch64_be", "armv8b", "armv8l"]
|
181
|
+
|
182
|
+
|
178
183
|
def get_architecture () -> str:
|
179
184
|
arch = platform.machine().lower()
|
180
185
|
if arch in ("amd64", "x86_64"):
|
181
186
|
return "amd64"
|
182
|
-
|
183
|
-
|
184
|
-
return "386"
|
185
|
-
|
186
|
-
elif arch in ("aarch64", "arm64", "arm"):
|
187
|
-
return "arm"
|
187
|
+
elif arch in get_arm_architectures():
|
188
|
+
return arch
|
188
189
|
|
189
190
|
else:
|
190
191
|
raise Exception("Unsupported architecture %s" % arch)
|
191
192
|
|
192
193
|
|
193
194
|
def is_arm_architecture () -> bool:
|
194
|
-
return platform.machine().lower() in (
|
195
|
+
return platform.machine().lower() in get_arm_architectures()
|
195
196
|
|
196
197
|
|
197
198
|
def get_os_type () -> str:
|
@@ -201,3 +202,24 @@ def get_os_type () -> str:
|
|
201
202
|
|
202
203
|
else:
|
203
204
|
raise Exception("Unsupported operating system %s" % system)
|
205
|
+
|
206
|
+
def concat_bin_files(target_bin_file: str, source_files: list[str], read_chunk_size: int = None,
|
207
|
+
delete_source_files_post: bool = True) -> None:
|
208
|
+
if read_chunk_size is None:
|
209
|
+
# default read chunk size is 100 MB.
|
210
|
+
read_chunk_size = 100 * 1024 * 1024
|
211
|
+
|
212
|
+
with open(target_bin_file, "wb") as target:
|
213
|
+
for source_file in source_files:
|
214
|
+
with open(source_file, "rb") as source:
|
215
|
+
while True:
|
216
|
+
source_chunk = source.read(read_chunk_size)
|
217
|
+
|
218
|
+
if source_chunk:
|
219
|
+
target.write(source_chunk)
|
220
|
+
|
221
|
+
else:
|
222
|
+
break
|
223
|
+
|
224
|
+
if delete_source_files_post is True:
|
225
|
+
os.remove(source_file)
|
@@ -49,8 +49,28 @@ services:
|
|
49
49
|
MAX_POOL: 60
|
50
50
|
DEPLOYMENT_MODE: laptop
|
51
51
|
SUFFIXLIST: ${CM_SUFFIXLIST:-[]}
|
52
|
+
BACKEND_BASE_URL: http://localhost:3001
|
53
|
+
CALLBACK_URL: http://localhost:3001/auth/oauth2/callback
|
52
54
|
ports:
|
53
55
|
- 3001:3001
|
56
|
+
|
57
|
+
wxo-server-connections-ui:
|
58
|
+
image: ${CONNECTIONS_UI_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-connections-ui:${CONNECTIONS_UI_TAG:-latest}
|
59
|
+
platform: linux/amd64
|
60
|
+
profiles: [connections-ui]
|
61
|
+
environment:
|
62
|
+
PORT: 3412
|
63
|
+
WXO_CONNECTIONS_URL: http://wxo-server-connection-manager:3001
|
64
|
+
DEPLOYMENT_MODE: laptop
|
65
|
+
WXO_URL: http://localhost:3412
|
66
|
+
ENV: production
|
67
|
+
WXO_SERVER_URL: http://localhost:4321
|
68
|
+
TENANT_ID: ${REACT_APP_TENANT_ID}
|
69
|
+
WXO_CHAT_URL: http://localhost:3000
|
70
|
+
ports:
|
71
|
+
- "3412:3412"
|
72
|
+
networks:
|
73
|
+
- default
|
54
74
|
|
55
75
|
ai-gateway:
|
56
76
|
image: ${AI_GATEWAY_REGISTRY:-us.icr.io/watson-orchestrate-private}/ai-gateway:${AI_GATEWAY_TAG:-latest}
|
@@ -73,6 +93,24 @@ services:
|
|
73
93
|
environment:
|
74
94
|
JWT_SECRET: ${JWT_SECRET}
|
75
95
|
DEPLOYMENT_PLATFORM: laptop-lite
|
96
|
+
CALLBACK_HOST_URL: ${CALLBACK_HOST_URL:-}
|
97
|
+
REDIS_URL: redis://wxo-server-redis:6379/0
|
98
|
+
entrypoint: >
|
99
|
+
sh -c '
|
100
|
+
if [ ! -z "$$CALLBACK_HOST_URL" ]; then
|
101
|
+
GATEWAY_IP=$$(echo "$$CALLBACK_HOST_URL" | sed "s|http://||" | cut -d: -f1)
|
102
|
+
export CALL_BACK_URL="http://$$GATEWAY_IP:8989"
|
103
|
+
echo "Auto-configured CALL_BACK_URL: $$CALL_BACK_URL"
|
104
|
+
else
|
105
|
+
export CALL_BACK_URL="http://wxo-agent-gateway:8989"
|
106
|
+
echo "Using fallback CALL_BACK_URL: $$CALL_BACK_URL"
|
107
|
+
fi
|
108
|
+
if [ $$# -eq 0 ]; then
|
109
|
+
exec ./conditional_script.sh
|
110
|
+
else
|
111
|
+
exec "$$@"
|
112
|
+
fi
|
113
|
+
'
|
76
114
|
|
77
115
|
ui:
|
78
116
|
image: ${UI_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-chat:${UITAG:-latest}
|
@@ -105,6 +143,7 @@ services:
|
|
105
143
|
STANDALONE: "true"
|
106
144
|
STREAM_TIMEOUT: ${STREAM_TIMEOUT:-120000}
|
107
145
|
WXO_VOICE_URL: http://localhost:9876/v1
|
146
|
+
DPS_CACHE_URL: http://localhost:18083
|
108
147
|
command: "./StartServer.sh"
|
109
148
|
ports:
|
110
149
|
- "3000:4002"
|
@@ -127,13 +166,13 @@ services:
|
|
127
166
|
AGENTS_OPS_RUNTIME_ENDPOINT: https://frontend-server:443
|
128
167
|
DPI_WO_WDU_SERVER_ENDPOINT: https://wxo-doc-processing-service:8080
|
129
168
|
DPI_RAG_SERVER_ENDPOINT: https://wxo-doc-processing-llm-service:8083
|
130
|
-
IBM_DPS_CACHE_SERVICE:
|
169
|
+
IBM_DPS_CACHE_SERVICE: http://wxo-doc-processing-cache:8080
|
131
170
|
DOCPROC_BASE_URL: http://wxo-doc-processing-infra-standalone:9080
|
132
171
|
BUILDER_ASYNC_CALLBACK_ENDPOINT: http://wxo-builder:4025
|
133
172
|
DOCPROC_ENABLED: ${DOCPROC_ENABLED:-false}
|
134
173
|
IS_OBSERVABILITY_FEATURE_ENABLED: "true"
|
135
174
|
ALLOW_INSECURE_TLS: "true"
|
136
|
-
ENABLE_EDIT_PROMPTS: "
|
175
|
+
ENABLE_EDIT_PROMPTS: "true"
|
137
176
|
LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
|
138
177
|
ENABLE_EMBED_SCRIPT: "true"
|
139
178
|
command: 'npm start'
|
@@ -202,7 +241,7 @@ services:
|
|
202
241
|
- "wxo-server-minio"
|
203
242
|
|
204
243
|
wxo-milvus-etcd:
|
205
|
-
image: quay.io/coreos/etcd
|
244
|
+
image: ${ETCD_REGISTRY:-quay.io}/coreos/etcd:${ETCD_TAG:-v3.5.18}
|
206
245
|
environment:
|
207
246
|
- ETCD_AUTO_COMPACTION_MODE=revision
|
208
247
|
- ETCD_AUTO_COMPACTION_RETENTION=1000
|
@@ -353,6 +392,10 @@ services:
|
|
353
392
|
ES_HOST: http://elasticsearch:9200
|
354
393
|
ORIGIN_HEADER: "internal"
|
355
394
|
LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
|
395
|
+
WATSONX_SERVER: WXO
|
396
|
+
EVALUATION_PLATFORM: lite-local
|
397
|
+
AGENTOPS_BACKEND_URL: https://frontend-server:443
|
398
|
+
OBSERVABILITY_POSTGRES_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@wxo-server-db:5432/wxo_observability
|
356
399
|
|
357
400
|
wxo-server-worker:
|
358
401
|
image: ${WORKER_REGISTRY:-us.icr.io/watson-orchestrate-private}/wxo-server-conversation_controller:${WORKER_TAG:-latest}
|
@@ -453,6 +496,10 @@ services:
|
|
453
496
|
CPD_VERIFY: ${CPD_VERIFY}
|
454
497
|
CALLBACK_HOST_URL: ${CALLBACK_HOST_URL:-http://wxo-server:4321}
|
455
498
|
LANGFLOW_ENABLED: ${LANGFLOW_ENABLED:-false}
|
499
|
+
WATSONX_SERVER: WXO
|
500
|
+
EVALUATION_PLATFORM: lite-local
|
501
|
+
AGENTOPS_BACKEND_URL: https://frontend-server:443
|
502
|
+
OBSERVABILITY_POSTGRES_URL: postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD:-postgres}@wxo-server-db:5432/wxo_observability
|
456
503
|
|
457
504
|
tools-runtime-manager:
|
458
505
|
image: ${TRM_REGISTRY:-us.icr.io/watson-orchestrate-private}/tools-runtime-manager:${TRM_TAG:-latest}
|
@@ -533,7 +580,7 @@ services:
|
|
533
580
|
# IBM AGENT-OPS
|
534
581
|
########################
|
535
582
|
elasticsearch:
|
536
|
-
image: docker.elastic.co/elasticsearch/elasticsearch
|
583
|
+
image: ${ELASTICSEARCH_REGISTRY:-docker.elastic.co}/elasticsearch/elasticsearch:${ELASTICSEARCH_TAG:-8.19.0}
|
537
584
|
profiles: [ibm-telemetry]
|
538
585
|
environment:
|
539
586
|
- discovery.type=single-node
|
@@ -813,6 +860,7 @@ services:
|
|
813
860
|
AUTHORIZATION_URL: ${AUTHORIZATION_URL}
|
814
861
|
WO_AUTH_TYPE: ${WO_AUTH_TYPE}
|
815
862
|
FLOW_CALLBACK_REQUEST_RETRIES: "1"
|
863
|
+
DOCPROC_CACHE_SERVER_URL: http://wxo-doc-processing-cache:8080
|
816
864
|
healthcheck:
|
817
865
|
test: curl -k http://localhost:9044/readiness --fail
|
818
866
|
interval: 30s
|
@@ -858,13 +906,13 @@ services:
|
|
858
906
|
SERVICE_NAME: wxo-doc-processing-service
|
859
907
|
LOG_LEVEL: info
|
860
908
|
VERIFY_CLIENT_CERT: 0
|
861
|
-
SERVICE_URL: ${SERVICE_URL:-
|
909
|
+
SERVICE_URL: ${SERVICE_URL:-http://wxo-doc-processing-cache:8080}
|
862
910
|
RATE_LIMITING_ENABLED: "false"
|
863
911
|
SHOULD_CACHE_IMAGES: "false"
|
864
912
|
HANDWRITING_ENABLED: "true"
|
865
913
|
WDU_RUNTIME_URL: wdu-runtime:8080
|
866
914
|
WDU_TIMEOUT_SECS: "180"
|
867
|
-
IBM_DPS_CACHE_SERVICE:
|
915
|
+
IBM_DPS_CACHE_SERVICE: http://wxo-doc-processing-cache:8080
|
868
916
|
profiles:
|
869
917
|
- docproc
|
870
918
|
depends_on:
|
@@ -959,6 +1007,8 @@ services:
|
|
959
1007
|
VERIFY_CLIENT_CERT: 1
|
960
1008
|
# S3_USE_SSL: false
|
961
1009
|
# S3_VERIFY_CERT: false
|
1010
|
+
ISTIO_ENABLED: true
|
1011
|
+
IS_ADK_ENV: true
|
962
1012
|
profiles:
|
963
1013
|
- docproc
|
964
1014
|
depends_on:
|
@@ -971,7 +1021,7 @@ services:
|
|
971
1021
|
# volumes:
|
972
1022
|
# - ./docker/wo_doc_processing_rag_base/etc/certs:/etc/certs
|
973
1023
|
healthcheck:
|
974
|
-
test: ["CMD-SHELL", "curl -fk
|
1024
|
+
test: ["CMD-SHELL", "curl -fk http://localhost:8080/ping"]
|
975
1025
|
interval: 30s
|
976
1026
|
timeout: 30s
|
977
1027
|
retries: 10
|
@@ -1030,7 +1080,7 @@ services:
|
|
1030
1080
|
LOG_LEVEL: info
|
1031
1081
|
WATSONX_API_ENDPOINT: ${WATSONX_URL:-https://us-south.ml.cloud.ibm.com}
|
1032
1082
|
WXO_SERVER_BASE_URL : http://wxo-server:4321
|
1033
|
-
IBM_DPS_CACHE_SERVICE: 'wxo-doc-processing-cache:8080'
|
1083
|
+
IBM_DPS_CACHE_SERVICE: 'http://wxo-doc-processing-cache:8080'
|
1034
1084
|
profiles:
|
1035
1085
|
- docproc
|
1036
1086
|
depends_on:
|
@@ -58,41 +58,44 @@ REGISTRY_URL=
|
|
58
58
|
|
59
59
|
|
60
60
|
|
61
|
-
SERVER_TAG=
|
61
|
+
SERVER_TAG=24-09-2025-17d7c67
|
62
62
|
SERVER_REGISTRY=
|
63
63
|
|
64
|
-
WORKER_TAG=
|
64
|
+
WORKER_TAG=24-09-2025-17d7c67
|
65
65
|
WORKER_REGISTRY=
|
66
66
|
|
67
67
|
AI_GATEWAY_TAG=20-08-2025-9ed6d40
|
68
68
|
AI_GATEWAY_REGISTRY=
|
69
69
|
|
70
|
-
AGENT_GATEWAY_TAG=
|
70
|
+
AGENT_GATEWAY_TAG=19-10-2025-e48ad3a
|
71
71
|
AGENT_GATEWAY_REGISTRY=
|
72
72
|
|
73
73
|
DB_REGISTRY=
|
74
74
|
# If you build multiarch set all three of these to the same, we have a pr against main
|
75
75
|
# to not have this separation, but we can merge it later
|
76
|
-
DBTAG=
|
77
|
-
AMDDBTAG=
|
78
|
-
ARM64DBTAG=
|
76
|
+
DBTAG=17-09-2025-8a9aff2
|
77
|
+
AMDDBTAG=17-09-2025-8a9aff2
|
78
|
+
ARM64DBTAG=17-09-2025-8a9aff2
|
79
79
|
|
80
80
|
UI_REGISTRY=
|
81
|
-
UITAG=
|
81
|
+
UITAG=22-09-2025-e35f498
|
82
82
|
|
83
83
|
CM_REGISTRY=
|
84
|
-
CM_TAG=
|
84
|
+
CM_TAG=16-09-2025-e33b344
|
85
85
|
|
86
|
-
|
86
|
+
CONNECTIONS_UI_REGISTRY=
|
87
|
+
CONNECTIONS_UI_TAG=15-09-2025-98aa9da
|
88
|
+
|
89
|
+
TRM_TAG=16-09-2025-cb6b9df
|
87
90
|
TRM_REGISTRY=
|
88
91
|
|
89
|
-
TR_TAG=
|
92
|
+
TR_TAG=24-09-2025-a515038
|
90
93
|
TR_REGISTRY=
|
91
94
|
|
92
|
-
BUILDER_TAG=
|
95
|
+
BUILDER_TAG=24-09-2025-f9b68d8
|
93
96
|
BUILDER_REGISTRY=
|
94
97
|
|
95
|
-
FLOW_RUNTIME_TAG=
|
98
|
+
FLOW_RUNTIME_TAG=22-09-2025-0bd3f58
|
96
99
|
FLOW_RUMTIME_REGISTRY=
|
97
100
|
|
98
101
|
|
@@ -105,7 +108,7 @@ JAEGER_PROXY_REGISTRY=
|
|
105
108
|
SOCKET_HANDLER_TAG=29-05-2025
|
106
109
|
SOCKET_HANDLER_REGISTRY=
|
107
110
|
|
108
|
-
CPE_TAG=
|
111
|
+
CPE_TAG=24-09-2025-2be3101
|
109
112
|
CPE_REGISTRY=
|
110
113
|
|
111
114
|
VOICE_CONTROLLER_TAG=12-09-2025-0e04772
|
@@ -118,12 +121,18 @@ LANGFLOW_IMAGE=
|
|
118
121
|
WDU_TAG=2.7.0
|
119
122
|
WDU_REGISTRY=
|
120
123
|
|
121
|
-
DOCPROC_DPS_TAG=
|
122
|
-
DOCPROC_LLMSERVICE_TAG=
|
123
|
-
DOCPROC_CACHE_TAG=
|
124
|
-
DOCPROC_DPI_TAG=
|
124
|
+
DOCPROC_DPS_TAG=20250910-165658-290-c566031
|
125
|
+
DOCPROC_LLMSERVICE_TAG=20250915-main-139-7a36ad3
|
126
|
+
DOCPROC_CACHE_TAG=20250916-master-86-454157f
|
127
|
+
DOCPROC_DPI_TAG=20250910-214413-288-a348dfd9
|
125
128
|
DOCPROC_REGISTRY=
|
126
129
|
|
130
|
+
ETCD_TAG=
|
131
|
+
ETCD_REGISTRY=
|
132
|
+
|
133
|
+
ELASTICSEARCH_TAG=
|
134
|
+
ELASTICSEARCH_REGISTRY=
|
135
|
+
|
127
136
|
# END -- IMAGE REGISTRIES AND TAGS
|
128
137
|
|
129
138
|
CPD_VERIFY=true
|
@@ -8,6 +8,8 @@ import logging
|
|
8
8
|
import inspect
|
9
9
|
from typing import Callable, Optional, Sequence
|
10
10
|
from pydantic import BaseModel
|
11
|
+
|
12
|
+
from ...agent_builder.models.types import ListVirtualModel
|
11
13
|
from ..types import extract_node_spec, UserNodeSpec, FlowSpec
|
12
14
|
|
13
15
|
from .flow import FlowFactory, Flow
|
@@ -33,8 +35,11 @@ def flow(*args,
|
|
33
35
|
description: str|None=None,
|
34
36
|
input_schema: type[BaseModel] | None = None,
|
35
37
|
output_schema: type[BaseModel] | None = None,
|
38
|
+
private_schema: type[BaseModel] | None = None,
|
36
39
|
initiators: Sequence[str] = (),
|
37
|
-
schedulable: bool = False
|
40
|
+
schedulable: bool = False,
|
41
|
+
llm_model: str|ListVirtualModel|None=None,
|
42
|
+
agent_conversation_memory_turns_limit: int|None=None):
|
38
43
|
"""Decorator to mark a function as a flow model builder."""
|
39
44
|
|
40
45
|
def decorator(func: Callable):
|
@@ -59,8 +64,11 @@ def flow(*args,
|
|
59
64
|
description = node_spec.description,
|
60
65
|
input_schema = input_schema,
|
61
66
|
output_schema = output_schema,
|
67
|
+
private_schema = private_schema,
|
62
68
|
initiators = initiators,
|
63
|
-
schedulable = schedulable
|
69
|
+
schedulable = schedulable,
|
70
|
+
llm_model = llm_model,
|
71
|
+
agent_conversation_memory_turns_limit = agent_conversation_memory_turns_limit)
|
64
72
|
|
65
73
|
# logger.info("Creating flow model: %s", a_model.spec.name)
|
66
74
|
|