|
2 | 2 |
|
3 | 3 | from langchain_core.language_models import BaseChatModel |
4 | 4 |
|
5 | | -from uipath_langchain.chat import UiPathBaseLLMClient |
6 | 5 | from uipath_langchain.chat.types import ( |
7 | 6 | APIFlavor, |
8 | 7 | LLMProvider, |
|
30 | 29 | } |
31 | 30 |
|
32 | 31 |
|
33 | | -def get_payload_handler(model: BaseChatModel) -> ModelPayloadHandler: |
| 32 | +def get_payload_handler(model: BaseChatModel) -> ModelPayloadHandler | None: |
34 | 33 | """Get the appropriate payload handler for a model. |
35 | 34 |
|
36 | 35 | Args: |
37 | | - model: A UiPath chat model instance with llm_provider and api_flavor. |
| 36 | + model: A UiPath chat model instance with llm_provider and api_flavor. |
38 | 37 |
|
39 | 38 | Returns: |
40 | | - A ModelPayloadHandler instance for the model. |
41 | | -
|
42 | | - Raises: |
43 | | - TypeError: If the model doesn't implement UiPathBaseLLMClient. |
44 | | - ValueError: If no handler is registered for the model's provider/API flavor. |
| 39 | + A ModelPayloadHandler instance for the model or None if could not be determined. |
45 | 40 | """ |
46 | | - if not isinstance(model, UiPathBaseLLMClient): |
47 | | - raise TypeError( |
48 | | - f"Model {type(model).__name__} does not implement UiPathBaseLLMClient" |
49 | | - ) |
50 | | - key = (model.api_config.vendor_type, model.api_config.api_flavor) |
51 | | - handler_class = _HANDLER_REGISTRY.get(key) |
52 | | - |
53 | | - if handler_class is None: |
54 | | - raise ValueError( |
55 | | - f"No payload handler registered for provider={model.api_config.vendor_type}, " |
56 | | - f"api_flavor={model.api_config.api_flavor}" |
57 | | - ) |
| 41 | + try: |
| 42 | + key = (model.api_config.vendor_type, model.api_config.api_flavor) |
| 43 | + handler_class = _HANDLER_REGISTRY[key] |
| 44 | + except (AttributeError, KeyError) as _: |
| 45 | + return None |
58 | 46 |
|
59 | 47 | return handler_class() |
0 commit comments