glchat-plugin 0.2.11__py3-none-any.whl → 0.3.0__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.
@@ -62,3 +62,21 @@ class SearchType(StrEnum):
62
62
  stacklevel=2,
63
63
  )
64
64
  return cls._DEEP_RESEARCH
65
+
66
+
67
+ class ReferenceFormatterType(StrEnum):
68
+ """The type of reference formatter to use.
69
+
70
+ Attributes:
71
+ SIMILARITY: Use similarity based reference formatter.
72
+ LM: Use LM based reference formatter.
73
+ NONE: No reference formatter is used.
74
+ """
75
+
76
+ SIMILARITY = "similarity"
77
+ LM = "lm"
78
+ NONE = "none"
79
+
80
+
81
+ WEB_SEARCH_BLACKLIST_DEFAULT = "[]"
82
+ WEB_SEARCH_WHITELIST_DEFAULT = "[]"
@@ -9,9 +9,14 @@ References:
9
9
 
10
10
  from typing import Any
11
11
 
12
- from pydantic import BaseModel
12
+ from pydantic import BaseModel, Field
13
13
 
14
- from glchat_plugin.config.constant import SearchType
14
+ from glchat_plugin.config.constant import (
15
+ WEB_SEARCH_BLACKLIST_DEFAULT,
16
+ WEB_SEARCH_WHITELIST_DEFAULT,
17
+ ReferenceFormatterType,
18
+ SearchType,
19
+ )
15
20
 
16
21
 
17
22
  class BasePipelinePresetConfig(BaseModel):
@@ -25,6 +30,27 @@ class BasePipelinePresetConfig(BaseModel):
25
30
  support_multimodal (bool): Whether the pipeline supports multimodal.
26
31
  use_docproc (bool): Whether to use the document processor.
27
32
  search_types (list[SearchType]): The supported search types.
33
+ anonymize_em (bool): Whether to anonymize before using the embedding model.
34
+ anonymize_lm (bool): Whether to anonymize before using the language model.
35
+ augment_context (bool): Whether context augmentation from the knowledge base is allowed.
36
+ chat_history_limit (int): The chat history limit. If the value is negative, no limit will be applied.
37
+ enable_guardrails (bool): Whether to enable guardrails.
38
+ enable_smart_search_integration (bool): Whether to enable smart search integration.
39
+ normal_search_top_k (int): The top k for normal search. Must be greater than or equal to 1.
40
+ prompt_context_char_threshold (int): The character limit above which the prompt is assumed
41
+ to have contained the context.
42
+ reference_formatter_batch_size (int): The reference formatter batch size.
43
+ reference_formatter_threshold (float): The reference formatter threshold.
44
+ reference_formatter_type (ReferenceFormatterType): The reference formatter type.
45
+ rerank_kwargs (str): The rerank kwargs.
46
+ rerank_type (str): The rerank type.
47
+ smart_search_top_k (int): The top k for smart search. Must be greater than or equal to 1.
48
+ use_cache (bool): Whether to use cache.
49
+ use_model_knowledge (bool): Whether to use model knowledge.
50
+ vector_weight (float): The vector weight. Must be between 0 and 1 (inclusive).
51
+ web_search_blacklist (str): The web search blacklist.
52
+ web_search_top_k (int): The top k for web search. Must be greater than or equal to 1.
53
+ web_search_whitelist (str): The web search whitelist.
28
54
  """
29
55
 
30
56
  pipeline_preset_id: str
@@ -34,3 +60,23 @@ class BasePipelinePresetConfig(BaseModel):
34
60
  support_multimodal: bool
35
61
  use_docproc: bool
36
62
  search_types: list[SearchType]
63
+ anonymize_em: bool
64
+ anonymize_lm: bool
65
+ augment_context: bool
66
+ chat_history_limit: int
67
+ enable_guardrails: bool = False
68
+ enable_smart_search_integration: bool = False
69
+ normal_search_top_k: int = Field(ge=1)
70
+ prompt_context_char_threshold: int = 32000
71
+ reference_formatter_batch_size: int = Field(ge=1)
72
+ reference_formatter_threshold: float = Field(ge=0, le=1)
73
+ reference_formatter_type: ReferenceFormatterType
74
+ rerank_kwargs: str = "{}"
75
+ rerank_type: str = ""
76
+ smart_search_top_k: int = Field(ge=1)
77
+ use_cache: bool
78
+ use_model_knowledge: bool
79
+ vector_weight: float = Field(ge=0, le=1)
80
+ web_search_blacklist: str = Field(default=WEB_SEARCH_BLACKLIST_DEFAULT)
81
+ web_search_top_k: int = Field(ge=1)
82
+ web_search_whitelist: str = Field(default=WEB_SEARCH_WHITELIST_DEFAULT)
@@ -66,6 +66,9 @@ class ChatbotPresetMapping(BaseModel):
66
66
  logger = LoggerManager().get_logger(__name__)
67
67
 
68
68
 
69
+ INTERNAL_PIPELINES = ["preprocessing", "postprocessing"]
70
+
71
+
69
72
  class PipelineHandler(PluginHandler):
70
73
  """Handler for pipeline builder plugins.
71
74
 
@@ -186,6 +189,25 @@ class PipelineHandler(PluginHandler):
186
189
  plugin.lmrp_catalogs = instance._chatbot_configs[chatbot_id].lmrp_catalogs
187
190
  instance._builders[chatbot_id] = plugin
188
191
 
192
+ for pipeline_type in INTERNAL_PIPELINES:
193
+ internal_plugin = instance._plugins.get(pipeline_type)
194
+ if internal_plugin:
195
+ try:
196
+ internal_plugin.prompt_builder_catalogs = instance._chatbot_configs[
197
+ chatbot_id
198
+ ].prompt_builder_catalogs
199
+ internal_plugin.lmrp_catalogs = instance._chatbot_configs[chatbot_id].lmrp_catalogs
200
+ pipeline_config = instance._chatbot_configs[chatbot_id].pipeline_config.copy()
201
+ pipeline = await internal_plugin.build(pipeline_config)
202
+ pipeline_key = (chatbot_id, f"__{pipeline_type}__")
203
+ instance._chatbot_pipeline_keys.setdefault(chatbot_id, set()).add(pipeline_key)
204
+ instance._pipeline_cache[pipeline_key] = pipeline
205
+ except Exception as e:
206
+ logger.warning(f"Failed when ainit plugin {traceback.format_exc()}")
207
+ logger.warning(
208
+ f"Error building internal pipeline `{pipeline_type}` for chatbot `{chatbot_id}`: {e}"
209
+ )
210
+
189
211
  for model in supported_models:
190
212
  try:
191
213
  model_id = model.get("model_id", model.get("name"))
@@ -206,7 +228,7 @@ class PipelineHandler(PluginHandler):
206
228
  instance._chatbot_pipeline_keys.setdefault(chatbot_id, set()).add(pipeline_key)
207
229
  instance._pipeline_cache[pipeline_key] = pipeline
208
230
  except Exception as e:
209
- logger.warning(f"Failed when ainit pliugin {traceback.format_exc()}")
231
+ logger.warning(f"Failed when ainit plugin {traceback.format_exc()}")
210
232
  logger.warning(f"Error building pipeline for chatbot `{chatbot_id}` model `{model_id}`: {e}")
211
233
 
212
234
  def get_pipeline_builder(self, chatbot_id: str) -> Plugin:
@@ -31,7 +31,8 @@ class PipelineBuilderPlugin(Plugin, Generic[PipelineState, PipelinePresetConfig]
31
31
  name (str): The name of the plugin.
32
32
  description (str): The description of the plugin.
33
33
  version (str): The version of the plugin.
34
- catalog (BaseCatalog): The catalog instance.
34
+ lmrp_catalogs (dict[str, BaseCatalog[Any]] | None): The LM request processor catalogs.
35
+ prompt_builder_catalogs (dict[str, BaseCatalog[Any]] | None): The prompt builder catalogs.
35
36
  additional_config_class (Type[PipelineRuntimeConfig] | None): The additional runtime configuration class.
36
37
  preset_config_class (Type[PipelinePresetConfig] | None): The preset configuration class.
37
38
  """
@@ -40,7 +41,8 @@ class PipelineBuilderPlugin(Plugin, Generic[PipelineState, PipelinePresetConfig]
40
41
  description: str = "Pipeline builder plugin"
41
42
  version: str = "0.0.0"
42
43
 
43
- catalog: BaseCatalog[Any]
44
+ lmrp_catalogs: dict[str, BaseCatalog[Any]] | None = None
45
+ prompt_builder_catalogs: dict[str, BaseCatalog[Any]] | None = None
44
46
 
45
47
  additional_config_class: Type[PipelineRuntimeConfig] | None = None
46
48
  preset_config_class: Type[PipelinePresetConfig] | None = None
@@ -64,6 +66,7 @@ class PipelineBuilderPlugin(Plugin, Generic[PipelineState, PipelinePresetConfig]
64
66
  self,
65
67
  request_config: dict[str, Any],
66
68
  pipeline_config: dict[str, Any],
69
+ previous_state: dict[str, Any] | None = None,
67
70
  **kwargs: Any,
68
71
  ) -> PipelineState:
69
72
  """Build the initial pipeline state.
@@ -71,6 +74,7 @@ class PipelineBuilderPlugin(Plugin, Generic[PipelineState, PipelinePresetConfig]
71
74
  Args:
72
75
  request_config (dict[str, Any]): Request configuration.
73
76
  pipeline_config (dict[str, Any]): Pipeline configuration.
77
+ previous_state (dict[str, Any] | None): Previous state.
74
78
  kwargs (Any): Additional state arguments.
75
79
 
76
80
  Returns:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: glchat-plugin
3
- Version: 0.2.11
3
+ Version: 0.3.0
4
4
  Author-email: GenAI SDK Team <gat-sdk@gdplabs.id>
5
5
  Requires-Python: <3.13,>=3.11
6
6
  Description-Content-Type: text/markdown
@@ -1,15 +1,15 @@
1
1
  glchat_plugin/__init__.py,sha256=SHSBMz7JDU6MecyIrhHu5-3NVs89JkXhyvD3ZGOkWOE,37
2
2
  glchat_plugin/config/__init__.py,sha256=DNnX8B_TvAN89oyMgq32zG1DeaezODrihiAXTwOPT5o,39
3
3
  glchat_plugin/config/app_config.py,sha256=9_ShYtaQ7Rp14sSkrIFLoOAMlbwVlm13EuCxzOn4NCI,426
4
- glchat_plugin/config/constant.py,sha256=D8BCSkwL7AbXUT_zdsXEdLmmuSlLThSJn7-02niZeXI,2340
4
+ glchat_plugin/config/constant.py,sha256=iRiY-wN7dhIHmxl8zzmYtOtE9B-oBFadThqALcnSoEE,2744
5
5
  glchat_plugin/context/__init__.py,sha256=3Wx_apMIS6z-m6eRs6hoyOsJFLJfKmMFOkrPDkPQfJI,40
6
6
  glchat_plugin/context/context_manager.py,sha256=0lhO0w_hd5dUdIEJQ2LOJFZsgpzitQU_aPZfTfQK3vw,1302
7
7
  glchat_plugin/handler/__init__.py,sha256=H5DJaAfwwtRsvMcOaEzHfGMQk25H7la0E7uPfksWtoQ,40
8
8
  glchat_plugin/handler/base_post_login_handler.py,sha256=48xSbe_LwTCjRY-lCuzWXqbnEr1ql8bAhQih1Xeh8f8,2835
9
9
  glchat_plugin/pipeline/__init__.py,sha256=Sk-NfIGyA9VKIg0Bt5OHatNUYyWVPh9i5xhE5DFAfbo,41
10
- glchat_plugin/pipeline/base_pipeline_preset_config.py,sha256=2DxJlroZ_tvVO6DYo1R07cjhWgKQJpysw1GsJ3BNRnw,1100
11
- glchat_plugin/pipeline/pipeline_handler.py,sha256=vDvIPI7Y39K_DI3jvQZsXC9YzQLUI4TuC-boyasdey8,24405
12
- glchat_plugin/pipeline/pipeline_plugin.py,sha256=1i7w7WepM5gON4Kx10SjL7NV7-SYVAmRE1EW2m_dOYg,4028
10
+ glchat_plugin/pipeline/base_pipeline_preset_config.py,sha256=F-u4WzMuNlzEmKE-xgeAG-mI8TB6d4JLTsjnh_89-Y0,3677
11
+ glchat_plugin/pipeline/pipeline_handler.py,sha256=aCRvhS6Dkhmqsx_Ya-2t2PbMseacw1VI6PUEOQq0RsM,25620
12
+ glchat_plugin/pipeline/pipeline_plugin.py,sha256=fozvxVrOphgwLIF7uPrEkF8ZQcu8xgifYAQyuxj9628,4393
13
13
  glchat_plugin/service/__init__.py,sha256=9T4qzyYL052qLqva5el1F575OTRNaaf9tb9UvW-leTc,47
14
14
  glchat_plugin/service/base_rate_limiter_service.py,sha256=tgKwdr4EqnGo5iDRVJPnlg8W9q0hiUzfeewAtdW4IjU,1232
15
15
  glchat_plugin/service/base_tenant_service.py,sha256=CB-jJWXi87nTcjO1XhPoSgNMf2YA_LfXoHr30ye0VtI,734
@@ -19,7 +19,7 @@ glchat_plugin/storage/base_anonymizer_storage.py,sha256=oFwovWrsjM7v1YjeN-4p-M3O
19
19
  glchat_plugin/storage/base_chat_history_storage.py,sha256=JvUUFMu_9jRBQ9yug_x7S4rQjZEA1vM5ombDvz-7zCE,11095
20
20
  glchat_plugin/tools/__init__.py,sha256=OFotHbgQ8mZEbdlvlv5aVMdxfubPvkVWAcTwhIPdIqQ,542
21
21
  glchat_plugin/tools/decorators.py,sha256=AvQBV18wzXWdC483RSSmpfh92zsqTyp8SzDLIkreIGU,3925
22
- glchat_plugin-0.2.11.dist-info/METADATA,sha256=2rPdxeHViAjDibsyvbElHc-Lli63qsPIzUotDFFdRB4,2064
23
- glchat_plugin-0.2.11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
24
- glchat_plugin-0.2.11.dist-info/top_level.txt,sha256=fzKSXmct5dY4CAKku4-mkdHX-QPAyQVvo8vpQj8qizY,14
25
- glchat_plugin-0.2.11.dist-info/RECORD,,
22
+ glchat_plugin-0.3.0.dist-info/METADATA,sha256=hl5d1CqDpK27hGQCDKYX8Uw2JlWWCshBr9rphZRvDsE,2063
23
+ glchat_plugin-0.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
24
+ glchat_plugin-0.3.0.dist-info/top_level.txt,sha256=fzKSXmct5dY4CAKku4-mkdHX-QPAyQVvo8vpQj8qizY,14
25
+ glchat_plugin-0.3.0.dist-info/RECORD,,