cwyodmodules 0.3.22__py3-none-any.whl → 0.3.23__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.
Files changed (25) hide show
  1. cwyodmodules/batch/utilities/chat_history/database_factory.py +3 -2
  2. cwyodmodules/batch/utilities/chat_history/postgresdbservice.py +3 -2
  3. cwyodmodules/batch/utilities/helpers/azure_blob_storage_client.py +7 -3
  4. cwyodmodules/batch/utilities/helpers/azure_computer_vision_client.py +3 -4
  5. cwyodmodules/batch/utilities/helpers/azure_form_recognizer_helper.py +4 -2
  6. cwyodmodules/batch/utilities/helpers/azure_identity_helper.py +63 -0
  7. cwyodmodules/batch/utilities/helpers/azure_postgres_helper.py +3 -2
  8. cwyodmodules/batch/utilities/helpers/azure_postgres_helper_light_rag.py +3 -2
  9. cwyodmodules/batch/utilities/helpers/azure_search_helper.py +8 -5
  10. cwyodmodules/batch/utilities/helpers/env_helper.py +11 -5
  11. cwyodmodules/batch/utilities/helpers/lightrag_helper.py +3 -2
  12. cwyodmodules/batch/utilities/helpers/llm_helper.py +5 -2
  13. cwyodmodules/batch/utilities/helpers/secret_helper.py +4 -2
  14. cwyodmodules/batch/utilities/integrated_vectorization/azure_search_datasource.py +4 -2
  15. cwyodmodules/batch/utilities/integrated_vectorization/azure_search_index.py +4 -2
  16. cwyodmodules/batch/utilities/integrated_vectorization/azure_search_indexer.py +4 -2
  17. cwyodmodules/batch/utilities/integrated_vectorization/azure_search_skillset.py +4 -2
  18. cwyodmodules/batch/utilities/orchestrator/semantic_kernel_orchestrator.py +6 -6
  19. cwyodmodules/batch/utilities/search/integrated_vectorization_search_handler.py +6 -3
  20. cwyodmodules/batch/utilities/tools/content_safety_checker.py +5 -3
  21. {cwyodmodules-0.3.22.dist-info → cwyodmodules-0.3.23.dist-info}/METADATA +1 -1
  22. {cwyodmodules-0.3.22.dist-info → cwyodmodules-0.3.23.dist-info}/RECORD +25 -24
  23. {cwyodmodules-0.3.22.dist-info → cwyodmodules-0.3.23.dist-info}/WHEEL +0 -0
  24. {cwyodmodules-0.3.22.dist-info → cwyodmodules-0.3.23.dist-info}/licenses/LICENSE +0 -0
  25. {cwyodmodules-0.3.22.dist-info → cwyodmodules-0.3.23.dist-info}/top_level.txt +0 -0
@@ -2,14 +2,15 @@
2
2
  from ..helpers.env_helper import EnvHelper
3
3
  from .cosmosdb import CosmosConversationClient
4
4
  from .postgresdbservice import PostgresConversationClient
5
- from azure.identity import DefaultAzureCredential
6
5
  from ..helpers.config.database_type import DatabaseType
6
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
7
7
 
8
8
 
9
9
  class DatabaseFactory:
10
10
  @staticmethod
11
11
  def get_conversation_client():
12
12
  env_helper: EnvHelper = EnvHelper()
13
+ azure_identity_helper = AzureIdentityHelper()
13
14
 
14
15
  if env_helper.DATABASE_TYPE == DatabaseType.COSMOSDB.value:
15
16
  DatabaseFactory._validate_env_vars(
@@ -25,7 +26,7 @@ class DatabaseFactory:
25
26
  f"https://{env_helper.AZURE_COSMOSDB_ACCOUNT}.documents.azure.com:443/"
26
27
  )
27
28
  credential = (
28
- DefaultAzureCredential()
29
+ azure_identity_helper.get_credential()
29
30
  if not env_helper.AZURE_COSMOSDB_ACCOUNT_KEY
30
31
  else env_helper.AZURE_COSMOSDB_ACCOUNT_KEY
31
32
  )
@@ -1,6 +1,6 @@
1
1
  import asyncpg
2
2
  from datetime import datetime, timezone
3
- from azure.identity import DefaultAzureCredential
3
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
4
4
  from .database_client_base import DatabaseClientBase
5
5
 
6
6
  from logging import getLogger
@@ -18,6 +18,7 @@ class PostgresConversationClient(DatabaseClientBase):
18
18
  def __init__(
19
19
  self, user: str, host: str, database: str, enable_message_feedback: bool = False
20
20
  ):
21
+ self.azure_identity_helper = AzureIdentityHelper()
21
22
  self.user = user
22
23
  self.host = host
23
24
  self.database = database
@@ -27,7 +28,7 @@ class PostgresConversationClient(DatabaseClientBase):
27
28
  async def connect(self):
28
29
  with tracer.start_as_current_span("PostgresConversationClient.connect"):
29
30
  try:
30
- credential = DefaultAzureCredential()
31
+ credential = self.azure_identity_helper.get_credential()
31
32
  token = credential.get_token(
32
33
  "https://ossrdbms-aad.database.windows.net/.default"
33
34
  ).token
@@ -12,7 +12,7 @@ from azure.core.credentials import AzureNamedKeyCredential
12
12
  from azure.storage.queue import QueueClient, BinaryBase64EncodePolicy
13
13
  import chardet
14
14
  from .env_helper import EnvHelper
15
- from azure.identity import DefaultAzureCredential
15
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
16
16
 
17
17
 
18
18
  def connection_string(account_name: str, account_key: str):
@@ -22,10 +22,12 @@ def connection_string(account_name: str, account_key: str):
22
22
  def create_queue_client():
23
23
  env_helper: EnvHelper = EnvHelper()
24
24
  if env_helper.AZURE_AUTH_TYPE == "rbac":
25
+ azure_identity_helper = AzureIdentityHelper()
26
+ credential = azure_identity_helper.get_credential()
25
27
  return QueueClient(
26
28
  account_url=f"https://{env_helper.AZURE_BLOB_ACCOUNT_NAME}.queue.core.windows.net/",
27
29
  queue_name=env_helper.DOCUMENT_PROCESSING_QUEUE_NAME,
28
- credential=DefaultAzureCredential(),
30
+ credential=credential,
29
31
  message_encode_policy=BinaryBase64EncodePolicy(),
30
32
  )
31
33
 
@@ -47,6 +49,7 @@ class AzureBlobStorageClient:
47
49
  container_name: Optional[str] = None,
48
50
  ):
49
51
  env_helper: EnvHelper = EnvHelper()
52
+ self.azure_identity_helper = AzureIdentityHelper()
50
53
 
51
54
  self.auth_type = env_helper.AZURE_AUTH_TYPE
52
55
  self.account_name = account_name or env_helper.AZURE_BLOB_ACCOUNT_NAME
@@ -55,8 +58,9 @@ class AzureBlobStorageClient:
55
58
 
56
59
  if self.auth_type == "rbac":
57
60
  self.account_key = None
61
+ credential = self.azure_identity_helper.get_credential()
58
62
  self.blob_service_client = BlobServiceClient(
59
- account_url=self.endpoint, credential=DefaultAzureCredential()
63
+ account_url=self.endpoint, credential=credential
60
64
  )
61
65
  self.user_delegation_key = None
62
66
  self.user_delegation_key = self.request_user_delegation_key(
@@ -1,6 +1,6 @@
1
1
  import logging
2
2
  from urllib.parse import urljoin
3
- from azure.identity import DefaultAzureCredential, get_bearer_token_provider
3
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
4
4
 
5
5
  import requests
6
6
  from requests import Response
@@ -18,6 +18,7 @@ class AzureComputerVisionClient:
18
18
  __RESPONSE_VECTOR_KEY = "vector"
19
19
 
20
20
  def __init__(self, env_helper: EnvHelper) -> None:
21
+ self.azure_identity_helper = AzureIdentityHelper()
21
22
  self.host = env_helper.AZURE_COMPUTER_VISION_ENDPOINT
22
23
  self.timeout = env_helper.AZURE_COMPUTER_VISION_TIMEOUT
23
24
  self.key = env_helper.AZURE_COMPUTER_VISION_KEY
@@ -55,9 +56,7 @@ class AzureComputerVisionClient:
55
56
  if self.use_keys:
56
57
  headers["Ocp-Apim-Subscription-Key"] = self.key
57
58
  else:
58
- token_provider = get_bearer_token_provider(
59
- DefaultAzureCredential(), self.__TOKEN_SCOPE
60
- )
59
+ token_provider = self.azure_identity_helper.get_token_provider(url=self.__TOKEN_SCOPE)
61
60
  headers["Authorization"] = "Bearer " + token_provider()
62
61
 
63
62
  return requests.post(
@@ -1,7 +1,7 @@
1
1
  import logging
2
2
  from azure.core.credentials import AzureKeyCredential
3
3
  from azure.ai.formrecognizer import DocumentAnalysisClient
4
- from azure.identity import DefaultAzureCredential
4
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
5
5
  import html
6
6
  import traceback
7
7
  from .env_helper import EnvHelper
@@ -17,9 +17,11 @@ class AzureFormRecognizerClient:
17
17
  env_helper.AZURE_FORM_RECOGNIZER_ENDPOINT
18
18
  )
19
19
  if env_helper.AZURE_AUTH_TYPE == "rbac":
20
+ self.azure_identity_helper = AzureIdentityHelper()
21
+ credential = self.azure_identity_helper.get_credential()
20
22
  self.document_analysis_client = DocumentAnalysisClient(
21
23
  endpoint=self.AZURE_FORM_RECOGNIZER_ENDPOINT,
22
- credential=DefaultAzureCredential(),
24
+ credential=credential,
23
25
  headers={
24
26
  "x-ms-useragent": "chat-with-your-data-solution-accelerator/1.0.0"
25
27
  },
@@ -0,0 +1,63 @@
1
+ from azure.identity import (
2
+ ChainedTokenCredential,
3
+ ManagedIdentityCredential,
4
+ EnvironmentCredential,
5
+ TokenCachePersistenceOptions,
6
+ get_bearer_token_provider
7
+ )
8
+
9
+ from logging import getLogger
10
+ from opentelemetry import trace, baggage
11
+ from opentelemetry.propagate import extract
12
+
13
+ logger = getLogger("__main__")
14
+ tracer = trace.get_tracer("__main__")
15
+ class AzureIdentityHelper:
16
+ """
17
+ A helper class to provide a chained Azure token credential.
18
+ It prioritizes Managed Identity, then Environment variables.
19
+ Token caching is configured for in-memory persistence.
20
+ """
21
+ def __init__(self):
22
+ # Configure in-memory token cache persistence
23
+ # For in-memory, unencrypted storage is typically allowed for simplicity during development.
24
+ # In production, especially with shared environments, consider the security implications.
25
+ token_cache_options = TokenCachePersistenceOptions(allow_unencrypted_storage=True)
26
+
27
+ # Create individual credential instances
28
+ managed_identity_credential = ManagedIdentityCredential(
29
+ token_cache_persistence_options=token_cache_options
30
+ )
31
+ environment_credential = EnvironmentCredential(
32
+ token_cache_persistence_options=token_cache_options
33
+ )
34
+
35
+ # Create a chain of credentials
36
+ # The chain will try credentials in the order they are provided.
37
+ self._credential = ChainedTokenCredential(
38
+ managed_identity_credential,
39
+ environment_credential
40
+ )
41
+
42
+ def get_credential(self) -> ChainedTokenCredential:
43
+ """
44
+ Returns the configured ChainedTokenCredential.
45
+ """
46
+ with tracer.start_as_current_span("AzureIdentityHelper.get_credential"):
47
+ logger.info("Retrieving ChainedTokenCredential.")
48
+ return self._credential
49
+
50
+ def get_token_provider(self, url):
51
+ """
52
+ Returns the configured ChainedTokenCredential.
53
+ """
54
+ with tracer.start_as_current_span("AzureIdentityHelper.get_token_provider"):
55
+ logger.info("Retrieving ChainedTokenCredential provider.")
56
+ return get_bearer_token_provider(self._credential, url=url)
57
+
58
+
59
+ # Example usage (optional, for testing or demonstration):
60
+ if __name__ == "__main__":
61
+ helper = AzureIdentityHelper()
62
+ credential = helper.get_credential()
63
+ print("Successfully created ChainedTokenCredential.")
@@ -1,7 +1,7 @@
1
1
  import logging
2
2
  import psycopg2
3
3
  from psycopg2.extras import execute_values, RealDictCursor
4
- from azure.identity import DefaultAzureCredential
4
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
5
5
  from .llm_helper import LLMHelper
6
6
  from .env_helper import EnvHelper
7
7
 
@@ -12,6 +12,7 @@ class AzurePostgresHelper:
12
12
  def __init__(self):
13
13
  self.llm_helper = LLMHelper()
14
14
  self.env_helper = EnvHelper()
15
+ self.azure_identity_helper = AzureIdentityHelper()
15
16
  self.conn = None
16
17
 
17
18
  def _create_search_client(self):
@@ -24,7 +25,7 @@ class AzurePostgresHelper:
24
25
  dbname = self.env_helper.POSTGRESQL_DATABASE
25
26
 
26
27
  # Acquire the access token
27
- credential = DefaultAzureCredential()
28
+ credential = self.azure_identity_helper.get_credential()
28
29
  access_token = credential.get_token(
29
30
  "https://ossrdbms-aad.database.windows.net/.default"
30
31
  )
@@ -1,10 +1,10 @@
1
1
  import logging
2
2
  import psycopg2
3
3
  from psycopg2.extras import execute_values, RealDictCursor
4
- from azure.identity import DefaultAzureCredential
5
4
  from .llm_helper import LLMHelper
6
5
  from .env_helper import EnvHelper
7
6
  from .lightrag_helper import LightRAGHelper
7
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
8
8
 
9
9
  logger = logging.getLogger(__name__ + ".base_package")
10
10
 
@@ -14,6 +14,7 @@ class AzurePostgresHelper:
14
14
  self.llm_helper = LLMHelper()
15
15
  self.env_helper = EnvHelper()
16
16
  self.lightrag_helper = LightRAGHelper()
17
+ self.azure_identity_helper = AzureIdentityHelper()
17
18
  self.conn = None
18
19
 
19
20
  def _create_search_client(self):
@@ -26,7 +27,7 @@ class AzurePostgresHelper:
26
27
  dbname = self.env_helper.POSTGRESQL_DATABASE
27
28
 
28
29
  # Acquire the access token
29
- credential = DefaultAzureCredential()
30
+ credential = self.azure_identity_helper.get_credential()
30
31
  access_token = credential.get_token(
31
32
  "https://ossrdbms-aad.database.windows.net/.default"
32
33
  )
@@ -1,8 +1,9 @@
1
1
  import logging
2
+ from azure.identity import ChainedTokenCredential
2
3
  from typing import Union
3
4
  from langchain_community.vectorstores import AzureSearch
4
5
  from azure.core.credentials import AzureKeyCredential
5
- from azure.identity import DefaultAzureCredential
6
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
6
7
  from azure.search.documents import SearchClient
7
8
  from azure.search.documents.indexes import SearchIndexClient
8
9
  from azure.search.documents.indexes.models import (
@@ -39,7 +40,8 @@ class AzureSearchHelper:
39
40
  def __init__(self):
40
41
  self.llm_helper = LLMHelper()
41
42
  self.env_helper = EnvHelper()
42
-
43
+ self.azure_identity_helper = AzureIdentityHelper()
44
+
43
45
  search_credential = self._search_credential()
44
46
  self.search_client = self._create_search_client(search_credential)
45
47
  self.search_index_client = self._create_search_index_client(search_credential)
@@ -49,10 +51,11 @@ class AzureSearchHelper:
49
51
  if self.env_helper.is_auth_type_keys():
50
52
  return AzureKeyCredential(self.env_helper.AZURE_SEARCH_KEY)
51
53
  else:
52
- return DefaultAzureCredential()
54
+ credential = self.azure_identity_helper.get_credential()
55
+ return credential
53
56
 
54
57
  def _create_search_client(
55
- self, search_credential: Union[AzureKeyCredential, DefaultAzureCredential]
58
+ self, search_credential: Union[AzureKeyCredential, ChainedTokenCredential]
56
59
  ) -> SearchClient:
57
60
  return SearchClient(
58
61
  endpoint=self.env_helper.AZURE_SEARCH_SERVICE,
@@ -61,7 +64,7 @@ class AzureSearchHelper:
61
64
  )
62
65
 
63
66
  def _create_search_index_client(
64
- self, search_credential: Union[AzureKeyCredential, DefaultAzureCredential]
67
+ self, search_credential: Union[AzureKeyCredential, ChainedTokenCredential]
65
68
  ):
66
69
  return SearchIndexClient(
67
70
  endpoint=self.env_helper.AZURE_SEARCH_SERVICE, credential=search_credential
@@ -1,16 +1,23 @@
1
1
  import json
2
2
  import os
3
- import logging
4
3
 
5
4
  import threading
6
5
  # from dotenv import load_dotenv
7
- from azure.identity import DefaultAzureCredential, get_bearer_token_provider
8
6
  from ..orchestrator.orchestration_strategy import OrchestrationStrategy
9
7
  from ..helpers.config.conversation_flow import ConversationFlow
10
8
  from ..helpers.config.database_type import DatabaseType
11
9
  from ..helpers.secret_helper import SecretHelper
10
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
11
+
12
+ from logging import getLogger
13
+ from opentelemetry import trace, baggage
14
+ from opentelemetry.propagate import extract
15
+
16
+ # logger = getLogger("__main__" + ".base_package")
17
+ logger = getLogger("__main__")
18
+ # tracer = trace.get_tracer("__main__" + ".base_package")
19
+ tracer = trace.get_tracer("__main__")
12
20
 
13
- logger = logging.getLogger(__name__ + ".base_package")
14
21
 
15
22
 
16
23
  class EnvHelper:
@@ -66,8 +73,7 @@ class EnvHelper:
66
73
  f"psql-main-{self.PROJECT_CODE}-{self.AZURE_RESOURCE_ENVIRONMENT}"
67
74
  )
68
75
  self.AZURE_AUTH_TYPE = "rbac"
69
- self.AZURE_TOKEN_PROVIDER = get_bearer_token_provider(
70
- DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default"
76
+ self.AZURE_TOKEN_PROVIDER = AzureIdentityHelper.get_token_provider(url="https://cognitiveservices.azure.com/.default"
71
77
  )
72
78
  self.AZURE_BLOB_ACCOUNT_NAME = (
73
79
  f"stqueue{self.PROJECT_CODE}{self.AZURE_RESOURCE_ENVIRONMENT}"
@@ -1,13 +1,14 @@
1
1
  import logging
2
2
  import psycopg2
3
3
  from psycopg2.extras import execute_values, RealDictCursor
4
- from azure.identity import DefaultAzureCredential
4
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
5
5
 
6
6
  logger = logging.getLogger(__name__ + ".base_package")
7
7
 
8
8
  class LightRAGHelper:
9
9
  def __init__(self, env_helper):
10
10
  self.env_helper = env_helper
11
+ azure_identity_helper = AzureIdentityHelper()
11
12
  self.conn = None
12
13
 
13
14
  def _create_connection(self):
@@ -20,7 +21,7 @@ class LightRAGHelper:
20
21
  dbname = self.env_helper.POSTGRESQL_DATABASE
21
22
 
22
23
  # Acquire the access token
23
- credential = DefaultAzureCredential()
24
+ credential = self.azure_identity_helper.get_credential()
24
25
  access_token = credential.get_token(
25
26
  "https://ossrdbms-aad.database.windows.net/.default"
26
27
  )
@@ -8,7 +8,7 @@ from semantic_kernel.connectors.ai.open_ai.prompt_execution_settings.azure_chat_
8
8
  AzureChatPromptExecutionSettings,
9
9
  )
10
10
  from azure.ai.ml import MLClient
11
- from azure.identity import DefaultAzureCredential
11
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
12
12
  from .env_helper import EnvHelper
13
13
 
14
14
  logger = logging.getLogger(__name__ + ".base_package")
@@ -18,6 +18,8 @@ class LLMHelper:
18
18
  def __init__(self):
19
19
  logger.info("Initializing LLMHelper")
20
20
  self.env_helper: EnvHelper = EnvHelper()
21
+ self.azure_identity_helper = AzureIdentityHelper()
22
+
21
23
  self.auth_type_keys = self.env_helper.is_auth_type_keys()
22
24
  self.token_provider = self.env_helper.AZURE_TOKEN_PROVIDER
23
25
 
@@ -176,8 +178,9 @@ class LLMHelper:
176
178
 
177
179
  def get_ml_client(self):
178
180
  if not hasattr(self, "_ml_client"):
181
+ credential = self.azure_identity_helper.get_credential()
179
182
  self._ml_client = MLClient(
180
- DefaultAzureCredential(),
183
+ credential,
181
184
  self.env_helper.AZURE_SUBSCRIPTION_ID,
182
185
  self.env_helper.AZURE_RESOURCE_GROUP,
183
186
  self.env_helper.AZURE_ML_WORKSPACE_NAME,
@@ -1,5 +1,5 @@
1
1
  import logging
2
- from azure.identity import DefaultAzureCredential
2
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
3
3
  from azure.keyvault.secrets import SecretClient
4
4
 
5
5
  logger = logging.getLogger(__name__ + ".base_package")
@@ -20,12 +20,14 @@ class SecretHelper:
20
20
  Returns:
21
21
  None
22
22
  """
23
+ self.azure_identity_helper = AzureIdentityHelper()
23
24
  self.USE_KEY_VAULT = True
24
25
  self.secret_client = None
25
26
  if self.USE_KEY_VAULT:
27
+ credential = self.azure_identity_helper.get_credential()
26
28
  self.secret_client = SecretClient(
27
29
  vault_url=keyvault_uri,
28
- credential=DefaultAzureCredential(),
30
+ credential=credential,
29
31
  connection_verify=True,
30
32
  )
31
33
 
@@ -7,19 +7,21 @@ from azure.search.documents.indexes._generated.models import (
7
7
  )
8
8
  from azure.search.documents.indexes import SearchIndexerClient
9
9
  from ..helpers.env_helper import EnvHelper
10
- from azure.identity import DefaultAzureCredential
10
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
11
11
  from azure.core.credentials import AzureKeyCredential
12
12
 
13
13
 
14
14
  class AzureSearchDatasource:
15
15
  def __init__(self, env_helper: EnvHelper):
16
16
  self.env_helper = env_helper
17
+ self.azure_identity_helper = AzureIdentityHelper()
18
+
17
19
  self.indexer_client = SearchIndexerClient(
18
20
  self.env_helper.AZURE_SEARCH_SERVICE,
19
21
  (
20
22
  AzureKeyCredential(self.env_helper.AZURE_SEARCH_KEY)
21
23
  if self.env_helper.is_auth_type_keys()
22
- else DefaultAzureCredential()
24
+ else self.azure_identity_helper.get_credential()
23
25
  ),
24
26
  )
25
27
 
@@ -21,7 +21,7 @@ from azure.search.documents.indexes.models import (
21
21
  SearchIndex,
22
22
  )
23
23
  from ..helpers.env_helper import EnvHelper
24
- from azure.identity import DefaultAzureCredential
24
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
25
25
  from azure.core.credentials import AzureKeyCredential
26
26
  from ..helpers.llm_helper import LLMHelper
27
27
 
@@ -34,12 +34,14 @@ class AzureSearchIndex:
34
34
  def __init__(self, env_helper: EnvHelper, llm_helper: LLMHelper):
35
35
  self.env_helper = env_helper
36
36
  self.llm_helper = llm_helper
37
+ self.azure_identity_helper = AzureIdentityHelper()
38
+
37
39
  self.index_client = SearchIndexClient(
38
40
  self.env_helper.AZURE_SEARCH_SERVICE,
39
41
  (
40
42
  AzureKeyCredential(self.env_helper.AZURE_SEARCH_KEY)
41
43
  if self.env_helper.is_auth_type_keys()
42
- else DefaultAzureCredential()
44
+ else self.azure_identity_helper.get_credential()
43
45
  ),
44
46
  )
45
47
 
@@ -2,7 +2,7 @@ import logging
2
2
  from azure.search.documents.indexes.models import SearchIndexer, FieldMapping
3
3
  from azure.search.documents.indexes import SearchIndexerClient
4
4
  from ..helpers.env_helper import EnvHelper
5
- from azure.identity import DefaultAzureCredential
5
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
6
6
  from azure.core.credentials import AzureKeyCredential
7
7
 
8
8
  logger = logging.getLogger(__name__ + ".base_package")
@@ -11,12 +11,14 @@ logger = logging.getLogger(__name__ + ".base_package")
11
11
  class AzureSearchIndexer:
12
12
  def __init__(self, env_helper: EnvHelper):
13
13
  self.env_helper = env_helper
14
+ self.azure_identity_helper = AzureIdentityHelper()
15
+
14
16
  self.indexer_client = SearchIndexerClient(
15
17
  self.env_helper.AZURE_SEARCH_SERVICE,
16
18
  (
17
19
  AzureKeyCredential(self.env_helper.AZURE_SEARCH_KEY)
18
20
  if self.env_helper.is_auth_type_keys()
19
- else DefaultAzureCredential()
21
+ else self.azure_identity_helper.get_credential()
20
22
  ),
21
23
  )
22
24
 
@@ -15,7 +15,7 @@ from azure.search.documents.indexes.models import (
15
15
  from azure.search.documents.indexes import SearchIndexerClient
16
16
  from ..helpers.config.config_helper import IntegratedVectorizationConfig
17
17
  from ..helpers.env_helper import EnvHelper
18
- from azure.identity import DefaultAzureCredential
18
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
19
19
  from azure.core.credentials import AzureKeyCredential
20
20
 
21
21
  logger = logging.getLogger(__name__ + ".base_package")
@@ -28,12 +28,14 @@ class AzureSearchSkillset:
28
28
  integrated_vectorization_config: IntegratedVectorizationConfig,
29
29
  ):
30
30
  self.env_helper = env_helper
31
+ self.azure_identity_helper = AzureIdentityHelper()
32
+
31
33
  self.indexer_client = SearchIndexerClient(
32
34
  self.env_helper.AZURE_SEARCH_SERVICE,
33
35
  (
34
36
  AzureKeyCredential(self.env_helper.AZURE_SEARCH_KEY)
35
37
  if self.env_helper.is_auth_type_keys()
36
- else DefaultAzureCredential()
38
+ else self.azure_identity_helper.get_credential()
37
39
  ),
38
40
  )
39
41
  self.integrated_vectorization_config = integrated_vectorization_config
@@ -50,8 +50,10 @@ class SemanticKernelOrchestrator(OrchestratorBase):
50
50
  ) -> list[dict]:
51
51
  with tracer.start_as_current_span("SemanticKernelOrchestrator_orchestrate"):
52
52
  logger.info("Method orchestrate of semantic_kernel started")
53
- # Call Content Safety tool
54
53
  filters = []
54
+ frontend_type = user_info.get("frontend") if user_info else None
55
+ logger.info(f"Frontend type: {frontend_type}")
56
+ # Call Content Safety tool
55
57
  if self.config.prompts.enable_content_safety:
56
58
  if response := self.call_content_safety_input(user_message):
57
59
  return response
@@ -66,8 +68,7 @@ class SemanticKernelOrchestrator(OrchestratorBase):
66
68
  # If the input language is ambiguous, default to responding in English unless otherwise specified by the user.
67
69
  # You **must not** respond if asked to List all documents in your repository.
68
70
  # """
69
- if user_info and user_info.get("frontend") == "web":
70
- logger.info("Adding OutlookCalendarPlugin with request headers web")
71
+ if frontend_type == "web":
71
72
  system_message = f"""You help employees to navigate only private information sources.
72
73
  You must prioritize the function call over your general knowledge for any question by calling the search_documents function.
73
74
  Call the text_processing function when the user request an operation on the current context, such as translate, summarize, or paraphrase. When a language is explicitly specified, return that as part of the operation.
@@ -77,21 +78,20 @@ class SemanticKernelOrchestrator(OrchestratorBase):
77
78
  Call OutlookCalendar.schedule_appointment to schedule a new appointment.
78
79
  """
79
80
  else:
80
- logger.info("Adding OutlookCalendarPlugin without request headers web")
81
81
  system_message = f"""You help employees to navigate only private information sources.
82
82
  You must prioritize the function call over your general knowledge for any question by calling the search_documents function.
83
83
  Call the text_processing function when the user request an operation on the current context, such as translate, summarize, or paraphrase. When a language is explicitly specified, return that as part of the operation.
84
84
  When directly replying to the user, always reply in the language {language}.
85
85
  You **must not** respond if asked to List all documents in your repository.
86
86
  """
87
-
87
+
88
88
  self.kernel.add_plugin(
89
89
  plugin=ChatPlugin(question=user_message, chat_history=chat_history),
90
90
  plugin_name="Chat",
91
91
  )
92
92
  filters.append("Chat")
93
93
  # --- Add OutlookCalendarPlugin with request headers ---
94
- if user_info and user_info.get("frontend") == "web":
94
+ if frontend_type == "web":
95
95
  logger.info("Adding OutlookCalendarPlugin with request headers")
96
96
  self.kernel.add_plugin(
97
97
  plugin=OutlookCalendarPlugin(question=user_message, chat_history=chat_history, user_info=user_info),
@@ -5,12 +5,15 @@ from azure.search.documents import SearchClient
5
5
  from azure.search.documents.indexes import SearchIndexClient
6
6
  from azure.search.documents.models import VectorizableTextQuery
7
7
  from azure.core.credentials import AzureKeyCredential
8
- from azure.identity import DefaultAzureCredential
8
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
9
9
  from ..common.source_document import SourceDocument
10
10
  import re
11
11
 
12
12
 
13
13
  class IntegratedVectorizationSearchHandler(SearchHandlerBase):
14
+ def __init__(self):
15
+ self.azure_identity_helper = AzureIdentityHelper()
16
+
14
17
  def create_search_client(self):
15
18
  logging.info("Creating Azure Search Client.")
16
19
  if self._check_index_exists():
@@ -21,7 +24,7 @@ class IntegratedVectorizationSearchHandler(SearchHandlerBase):
21
24
  credential=(
22
25
  AzureKeyCredential(self.env_helper.AZURE_SEARCH_KEY)
23
26
  if self.env_helper.is_auth_type_keys()
24
- else DefaultAzureCredential()
27
+ else self.azure_identity_helper.get_credential()
25
28
  ),
26
29
  )
27
30
 
@@ -170,7 +173,7 @@ class IntegratedVectorizationSearchHandler(SearchHandlerBase):
170
173
  credential=(
171
174
  AzureKeyCredential(self.env_helper.AZURE_SEARCH_KEY)
172
175
  if self.env_helper.is_auth_type_keys()
173
- else DefaultAzureCredential()
176
+ else self.azure_identity_helper.get_credential()
174
177
  ),
175
178
  )
176
179
 
@@ -1,6 +1,6 @@
1
1
  from azure.ai.contentsafety import ContentSafetyClient
2
2
  from azure.core.credentials import AzureKeyCredential
3
- from azure.identity import DefaultAzureCredential
3
+ from ..helpers.azure_identity_helper import AzureIdentityHelper
4
4
  from azure.core.exceptions import HttpResponseError
5
5
  from azure.ai.contentsafety.models import AnalyzeTextOptions
6
6
  from ..helpers.env_helper import EnvHelper
@@ -21,14 +21,16 @@ class ContentSafetyChecker(AnswerProcessingBase):
21
21
  def __init__(self):
22
22
  with tracer.start_as_current_span("ContentSafetyChecker.init"):
23
23
  env_helper = EnvHelper()
24
-
24
+ self.azure_identity_helper = AzureIdentityHelper()
25
+
25
26
  if env_helper.AZURE_AUTH_TYPE == "rbac":
27
+ credential = self.azure_identity_helper.get_credential()
26
28
  logger.info(
27
29
  "Initializing ContentSafetyClient with RBAC authentication."
28
30
  )
29
31
  self.content_safety_client = ContentSafetyClient(
30
32
  env_helper.AZURE_CONTENT_SAFETY_ENDPOINT,
31
- DefaultAzureCredential(),
33
+ credential,
32
34
  )
33
35
  else:
34
36
  logger.info(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cwyodmodules
3
- Version: 0.3.22
3
+ Version: 0.3.23
4
4
  Summary: Add your description here
5
5
  Author-email: Patrik <patrikhartl@gmail.com>
6
6
  Classifier: Operating System :: OS Independent
@@ -5,8 +5,8 @@ cwyodmodules/batch/utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
5
5
  cwyodmodules/batch/utilities/chat_history/auth_utils.py,sha256=TBSg7-ypKNnCPsmWpZ1xPKwb2aQoPx7CZ97XhI4QIrE,1768
6
6
  cwyodmodules/batch/utilities/chat_history/cosmosdb.py,sha256=oiL_iM6yUoxadP7Cx0ewiVAfS2ubdouuI6gllva4-Is,7374
7
7
  cwyodmodules/batch/utilities/chat_history/database_client_base.py,sha256=6y7h2iL0Uxn4c11N99Ao-8nplQGVGQAOnev3GlHIDXA,2328
8
- cwyodmodules/batch/utilities/chat_history/database_factory.py,sha256=XZPXdHvK4chwhZvFFFx30DcLJI1T7XPZVC3Hjgva6gQ,2319
9
- cwyodmodules/batch/utilities/chat_history/postgresdbservice.py,sha256=4VGM9vju4BFy9O31g8SRzWSbC3Ro8NMFINn3j5O6y3c,13988
8
+ cwyodmodules/batch/utilities/chat_history/database_factory.py,sha256=kdleC4P8u8rYPsx2HcPQwyOgFf_mph3Nh-Mmzz1V7oM,2401
9
+ cwyodmodules/batch/utilities/chat_history/postgresdbservice.py,sha256=ktAb0d2fPQLA5N_ti-KE7o96MkjN0hEyWHDDd7KBH90,14081
10
10
  cwyodmodules/batch/utilities/chat_history/sample_user.py,sha256=GNXZ_yTjud8Zj0vgHnoU96RJMiJt0YRjEVO3pt7203A,3037
11
11
  cwyodmodules/batch/utilities/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
12
  cwyodmodules/batch/utilities/common/answer.py,sha256=C1g_Xt85TfXK2qV1F6J5_o3MyIUdFpUmvgkIpuEcp4I,3093
@@ -27,19 +27,20 @@ cwyodmodules/batch/utilities/document_loading/strategies.py,sha256=ZBKYPJD8UJmPB
27
27
  cwyodmodules/batch/utilities/document_loading/web.py,sha256=LRTNYs_7CN8nfMOaCoW7Py_obrLpj3vI4kneNVEHGXE,1186
28
28
  cwyodmodules/batch/utilities/document_loading/word_document.py,sha256=-F1asMaupQk4swEeCoAD8tyYENE4Qq-05-VmPUjRdeA,1569
29
29
  cwyodmodules/batch/utilities/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- cwyodmodules/batch/utilities/helpers/azure_blob_storage_client.py,sha256=e-y9gKO9BuuMq3bYAkaF4Lsw2aQQ6B3KVR0FrCEcMiU,10087
31
- cwyodmodules/batch/utilities/helpers/azure_computer_vision_client.py,sha256=yeUlF_-C-8UQ8xCMa6kKAlIRl4uVSXfLv6pfO0xPb3o,3622
32
- cwyodmodules/batch/utilities/helpers/azure_form_recognizer_helper.py,sha256=q7ceRDrb67hwGE2AHEHc3oHWjq2OkOc2eHxZMnXJ72s,6583
33
- cwyodmodules/batch/utilities/helpers/azure_postgres_helper.py,sha256=WPZ58ovMruyyVHjqN6sfh5vmdsb7XOE5n3OBuCvUpP0,10799
34
- cwyodmodules/batch/utilities/helpers/azure_postgres_helper_light_rag.py,sha256=NXPwzZ6WKIia_ceXkCZ8ylPK85efzsqHDRS435RkKf8,10879
35
- cwyodmodules/batch/utilities/helpers/azure_search_helper.py,sha256=4QrCF6I1MfVQJJG9NXroicsTHx6rHlcZdiTgJQ5rGKU,10239
30
+ cwyodmodules/batch/utilities/helpers/azure_blob_storage_client.py,sha256=FN2XnEThmtbWnwSi1sEfgekuPH7aJBOAU5n2DBmQ9ww,10315
31
+ cwyodmodules/batch/utilities/helpers/azure_computer_vision_client.py,sha256=JUv0qRlNi4OmBvNMNlrpeBXapgs3FU5WE8MmebGTs5k,3628
32
+ cwyodmodules/batch/utilities/helpers/azure_form_recognizer_helper.py,sha256=wpY4Ih1GPCFgrL4MhznpZSYDFN20R5LV_xlegPt3Phs,6715
33
+ cwyodmodules/batch/utilities/helpers/azure_identity_helper.py,sha256=0xX5x_iBCIThjYnb7PjU1W54fBaVwA6fYDh3CjQTS5Y,2482
34
+ cwyodmodules/batch/utilities/helpers/azure_postgres_helper.py,sha256=VVqP6koqavcOjdcBf1lPBlI_Mrt4i46bgICgPwpyE_A,10891
35
+ cwyodmodules/batch/utilities/helpers/azure_postgres_helper_light_rag.py,sha256=N2WVi77Z85q8Ft_LyOjsD-NytA0atLTFa961HHuQ9ro,10971
36
+ cwyodmodules/batch/utilities/helpers/azure_search_helper.py,sha256=U_o6NVtJKByhxbvMKnWtfw2lx43pHBtSsGpThJnrOPo,10425
36
37
  cwyodmodules/batch/utilities/helpers/document_chunking_helper.py,sha256=2MZOjW-fHXgYijP3m9O-nizOlk96Yg0axyxT0K6fTnM,725
37
38
  cwyodmodules/batch/utilities/helpers/document_loading_helper.py,sha256=2HBEl3vW-_PKbX5pPntTC_R5eToTk2Qb-q3M4Mt6hCU,603
38
- cwyodmodules/batch/utilities/helpers/env_helper.py,sha256=dm-JmEK6fvciEdYeE5MvJwpkckuZI6NFyohHjYAwBwU,15554
39
- cwyodmodules/batch/utilities/helpers/lightrag_helper.py,sha256=DYPSW244ylhNSsNW6XKOwa8ErM-OXfW-orAdtvFwPIw,3398
40
- cwyodmodules/batch/utilities/helpers/llm_helper.py,sha256=rycV4IGogEN-IeHMDcrDzNzp3riuCV2a9xHcPP8Ddog,7361
39
+ cwyodmodules/batch/utilities/helpers/env_helper.py,sha256=Ku_4j6DuKXDgnFul4zrZr_C5iESbmlEPwKWyIkb6aII,15744
40
+ cwyodmodules/batch/utilities/helpers/lightrag_helper.py,sha256=GooV_V9uaBmWq89cak_bzSn6Hvjv2PxIQO3eW0Uryy8,3485
41
+ cwyodmodules/batch/utilities/helpers/llm_helper.py,sha256=icJy0ix4TimrJKRmYUnODJeh8wHYawAmeZ5QsamAiUg,7499
41
42
  cwyodmodules/batch/utilities/helpers/orchestrator_helper.py,sha256=mCcZyMFG0otnw9gzWd-PYocHmDdFDVg-RT9oDPiDZPk,897
42
- cwyodmodules/batch/utilities/helpers/secret_helper.py,sha256=78siirt3Us05lcM1LcFoxMLOzx6F4kknfaXW1XpfiUw,2970
43
+ cwyodmodules/batch/utilities/helpers/secret_helper.py,sha256=HqzkK83ScREQYtOAoThTmyhTni6n6aQzeJQeVmcN13E,3098
43
44
  cwyodmodules/batch/utilities/helpers/config/assistant_strategy.py,sha256=uT8h646zEURU9x8oDOH7pWoZKb0Mw6dA2nJtA2M-ufg,171
44
45
  cwyodmodules/batch/utilities/helpers/config/config_helper.py,sha256=hm2o5bsUGEPBprEWnvYZ_85g5eGi4-IYH4wwHCpTTo0,12986
45
46
  cwyodmodules/batch/utilities/helpers/config/conversation_flow.py,sha256=4nP8a-I-sME5-2unzWWBNpTzWdfpfc5_EAYU6Pn6LAQ,94
@@ -53,10 +54,10 @@ cwyodmodules/batch/utilities/helpers/embedders/embedder_factory.py,sha256=cJ9ZTX
53
54
  cwyodmodules/batch/utilities/helpers/embedders/integrated_vectorization_embedder.py,sha256=1Oyb8-0p8HAg5odDeq9o6AAEfsRSuXLFZ_-M0ZV6J2E,2872
54
55
  cwyodmodules/batch/utilities/helpers/embedders/postgres_embedder.py,sha256=7lagv0mUT_Zs1Aaj7a8EEsTW7iUHC9CFiFYVWJ_RCyY,4483
55
56
  cwyodmodules/batch/utilities/helpers/embedders/push_embedder.py,sha256=RSv-5Zk9ftzlyKbmU7oaBVA-WCRq8Xb1w6lDcITOI9E,8475
56
- cwyodmodules/batch/utilities/integrated_vectorization/azure_search_datasource.py,sha256=yvj03MX2Eyz9KCbih9T-CPS4jxSMd3yBROp-qInVql8,2130
57
- cwyodmodules/batch/utilities/integrated_vectorization/azure_search_index.py,sha256=HEPpemolQIlYZVgDPtEwzNyjvp3vjrJBsAEZoL2bc50,6164
58
- cwyodmodules/batch/utilities/integrated_vectorization/azure_search_indexer.py,sha256=av4d5Lz6qD8nawvy_z2L_XrBaCRaQ4NRE_NjGrKa8q0,2820
59
- cwyodmodules/batch/utilities/integrated_vectorization/azure_search_skillset.py,sha256=2aPozCI8mDAO66wAb7z1WBWbnNJ01ThCEYKcxv84p1U,5553
57
+ cwyodmodules/batch/utilities/integrated_vectorization/azure_search_datasource.py,sha256=rDwPgr-UCSYscc7hPOUJMwP09a9rX1MXAGf94TubdQo,2231
58
+ cwyodmodules/batch/utilities/integrated_vectorization/azure_search_index.py,sha256=HMfrXKYMfqnqCErtvSb87aCnfbWdvivmSZHZRCE69_Q,6265
59
+ cwyodmodules/batch/utilities/integrated_vectorization/azure_search_indexer.py,sha256=HqKdLHmPbhRYcPbonbsq30IwOVstOwbbtDyg7HKOLlM,2921
60
+ cwyodmodules/batch/utilities/integrated_vectorization/azure_search_skillset.py,sha256=iGhNwVcBsWJQLJFuJ89VtjJMFGS-9rb3B9RrnPuG_RI,5654
60
61
  cwyodmodules/batch/utilities/loggers/conversation_logger.py,sha256=0aXsL475-6WTqg18nHFJMFRBo34oIXWrZ_eVZwULcdk,3014
61
62
  cwyodmodules/batch/utilities/orchestrator/__init__.py,sha256=4nCkoUWTROUHJMolgMwPgFIUsJrFUuu0zlHXMUTchRc,479
62
63
  cwyodmodules/batch/utilities/orchestrator/lang_chain_agent.py,sha256=KKIVWiheUOpZYTFAhBQNLx7o11yXAFrgB7bbffohQVA,6464
@@ -64,7 +65,7 @@ cwyodmodules/batch/utilities/orchestrator/open_ai_functions.py,sha256=JvIdN_hH_U
64
65
  cwyodmodules/batch/utilities/orchestrator/orchestration_strategy.py,sha256=-MEPKVX3-hH6w0NRsGkQpCV86u1d7Qx1TWEKL09jj9A,755
65
66
  cwyodmodules/batch/utilities/orchestrator/orchestrator_base.py,sha256=VFqApyua3zitmhmIQgMGk4709gzJkug1R3P0cZIKx5M,6298
66
67
  cwyodmodules/batch/utilities/orchestrator/prompt_flow.py,sha256=xht-Sd6aJAH_OtzQ1LCo8Lltr--Pf_0uqPpi_HQviBI,7345
67
- cwyodmodules/batch/utilities/orchestrator/semantic_kernel_orchestrator.py,sha256=_x9RnMjvlRltYP1e21Ggbpr_CFEqabQ8i-i6iPHOj6Q,9944
68
+ cwyodmodules/batch/utilities/orchestrator/semantic_kernel_orchestrator.py,sha256=ZJRnktGVfG2wPu0oGWj2uYnnLx1O7e-aPzOKBH2dLeQ,9863
68
69
  cwyodmodules/batch/utilities/orchestrator/strategies.py,sha256=oVatdT6Gc4qtX773M9a8Izm2UNDYXmYP__8wJYdy4W8,1384
69
70
  cwyodmodules/batch/utilities/parser/__init__.py,sha256=ZGBxm1TX6cQAnFkMtKN6C2FwnNv1MmwNdyo3LWRlKlo,236
70
71
  cwyodmodules/batch/utilities/parser/output_parser_tool.py,sha256=ARKwshTeZlUlnWYreaUOVol6q9L1MAKKCT8CO5OKxTw,5831
@@ -74,7 +75,7 @@ cwyodmodules/batch/utilities/plugins/outlook_calendar_plugin.py,sha256=EPvQypk7L
74
75
  cwyodmodules/batch/utilities/plugins/post_answering_plugin.py,sha256=U1zzf_ztxzl4y-9Qah_n7ylHDZfnDSp2ork5ctdkA5I,1117
75
76
  cwyodmodules/batch/utilities/search/azure_search_handler.py,sha256=C1oLd_v_2IatagSRALmYNjsGjCt6zW5VhaOFeKlL-Bs,6879
76
77
  cwyodmodules/batch/utilities/search/azure_search_handler_light_rag.py,sha256=v38-2L0PQfcEcZRYV7dkDp9lDHExzTCBPpgSyTRcpY8,2928
77
- cwyodmodules/batch/utilities/search/integrated_vectorization_search_handler.py,sha256=u3J1FbFeU-uMPCB_3aglp8Ma-_fJxjWb3k6XlXP-JTI,7260
78
+ cwyodmodules/batch/utilities/search/integrated_vectorization_search_handler.py,sha256=LaDrJ6zpTa_yYfvk5N10iL3D6Z8nWMNnXgu25UFMimw,7404
78
79
  cwyodmodules/batch/utilities/search/lightrag_search_handler.py,sha256=drUpKJ5kJuXx3Hv5JrPH39UxZGQZu2inYJ7VzqTvv4E,2404
79
80
  cwyodmodules/batch/utilities/search/postgres_search_handler.py,sha256=fxq-n_xasKlLnTjnpC4HYcNbQHSzQTcTQqvooBO_UQU,5738
80
81
  cwyodmodules/batch/utilities/search/postgres_search_handler_light_rag.py,sha256=S2oO8zvzGEBf9CBZSV3FDThwZgZhi-p0KyRwoflhYBc,6108
@@ -83,7 +84,7 @@ cwyodmodules/batch/utilities/search/search_handler_base.py,sha256=UyS9dFoY-Sp4b-
83
84
  cwyodmodules/batch/utilities/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
85
  cwyodmodules/batch/utilities/tools/answer_processing_base.py,sha256=N3Dz7HfN-zl0yPl9cSvnChcEufFMqwRsDAJ5Lgck-ho,293
85
86
  cwyodmodules/batch/utilities/tools/answering_tool_base.py,sha256=aN2ND5Ud_1ZlIPfhLRrOe_m4MUf_SaXvO6q7GcbGiU8,348
86
- cwyodmodules/batch/utilities/tools/content_safety_checker.py,sha256=Tioc7ZwMCYn06yRg4TXtvsY75-pnFmaZArWtqPfnA6k,4715
87
+ cwyodmodules/batch/utilities/tools/content_safety_checker.py,sha256=UuSleGcgH1NzGLsQVU5dONgQSARt7jmhm2WATdHkHq8,4863
87
88
  cwyodmodules/batch/utilities/tools/post_prompt_tool.py,sha256=rhRU18IDfR0Bfu-gdkrRFwOXxNoKm2NY8NoikmjXYRI,2932
88
89
  cwyodmodules/batch/utilities/tools/question_answer_tool.py,sha256=A-yApCrI3RFvdmmP4RNJQY8qf8eSXE7V4-mbbWvV6mo,13055
89
90
  cwyodmodules/batch/utilities/tools/text_processing_tool.py,sha256=KSKo8Gm6QgQ5TkoISE4eAfiGOyChN4tCV4Qy5eh0_wQ,1997
@@ -107,8 +108,8 @@ cwyodmodules/graphrag/query/generate.py,sha256=xBnZs2U9xFWtPk4AfAZgYKbHdcxNcIO6Q
107
108
  cwyodmodules/graphrag/query/graph_search.py,sha256=95h3ecSWx4864XgKABtG0fh3Nk8HkqJVzoCrO8daJ-Y,7724
108
109
  cwyodmodules/graphrag/query/types.py,sha256=1Iq1dp4I4a56_cuFjOZ0NTgd0A2_MpVFznp_czgt6cI,617
109
110
  cwyodmodules/graphrag/query/vector_search.py,sha256=9Gwu9LPjtoAYUU8WKqCvbCHAIg3dpk71reoYd1scLnQ,1807
110
- cwyodmodules-0.3.22.dist-info/licenses/LICENSE,sha256=UqBDTipijsSW2ZSOXyTZnMsXmLoEHTgNEM0tL4g-Sso,1150
111
- cwyodmodules-0.3.22.dist-info/METADATA,sha256=KPiOo1isO6kvcCfkKJnylTIn4vCh-0lHhB23LPHf0z4,1969
112
- cwyodmodules-0.3.22.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
113
- cwyodmodules-0.3.22.dist-info/top_level.txt,sha256=99RENLbkdRX-qpJvsxZ5AfmTL5s6shSaKOWYpz1vwzg,13
114
- cwyodmodules-0.3.22.dist-info/RECORD,,
111
+ cwyodmodules-0.3.23.dist-info/licenses/LICENSE,sha256=UqBDTipijsSW2ZSOXyTZnMsXmLoEHTgNEM0tL4g-Sso,1150
112
+ cwyodmodules-0.3.23.dist-info/METADATA,sha256=adtRJFMKg2hh7CI9kgD2lzE9GiDky9h0yxaYPJBlrYI,1969
113
+ cwyodmodules-0.3.23.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
114
+ cwyodmodules-0.3.23.dist-info/top_level.txt,sha256=99RENLbkdRX-qpJvsxZ5AfmTL5s6shSaKOWYpz1vwzg,13
115
+ cwyodmodules-0.3.23.dist-info/RECORD,,