12345678910111213141516171819202122232425262728293031323334 |
- from typing import Optional
- from langchain.callbacks import CallbackManager
- from core.callback_handler.std_out_callback_handler import DifyStdOutCallbackHandler
- from core.chain.sensitive_word_avoidance_chain import SensitiveWordAvoidanceChain
- from core.chain.tool_chain import ToolChain
- class ChainBuilder:
- @classmethod
- def to_tool_chain(cls, tool, **kwargs) -> ToolChain:
- return ToolChain(
- tool=tool,
- input_key=kwargs.get('input_key', 'input'),
- output_key=kwargs.get('output_key', 'tool_output'),
- callback_manager=CallbackManager([DifyStdOutCallbackHandler()])
- )
- @classmethod
- def to_sensitive_word_avoidance_chain(cls, tool_config: dict, **kwargs) -> Optional[
- SensitiveWordAvoidanceChain]:
- sensitive_words = tool_config.get("words", "")
- if tool_config.get("enabled", False) \
- and sensitive_words:
- return SensitiveWordAvoidanceChain(
- sensitive_words=sensitive_words.split(","),
- canned_response=tool_config.get("canned_response", ''),
- output_key="sensitive_word_avoidance_output",
- callback_manager=CallbackManager([DifyStdOutCallbackHandler()]),
- **kwargs
- )
- return None
|