From 2efaa2804aab67e92c01a954c3b1ce73d0595ef3 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Thu, 27 Jun 2024 09:22:41 -0300 Subject: [PATCH] refactor: Update LangSmithTracer to use convert_to_langchain_types from utils.py --- .../base/langflow/services/tracing/utils.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/backend/base/langflow/services/tracing/utils.py diff --git a/src/backend/base/langflow/services/tracing/utils.py b/src/backend/base/langflow/services/tracing/utils.py new file mode 100644 index 000000000..a90c94c99 --- /dev/null +++ b/src/backend/base/langflow/services/tracing/utils.py @@ -0,0 +1,34 @@ +from typing import Any, Dict + +from langflow.schema.data import Data + + +def convert_to_langchain_type(value): + from langflow.schema.message import Message + + if isinstance(value, dict): + for key, _value in value.copy().items(): + _value = convert_to_langchain_type(_value) + value[key] = _value + elif isinstance(value, list): + value = [convert_to_langchain_type(v) for v in value] + elif isinstance(value, Message): + if "prompt" in value: + value = value.load_lc_prompt() + elif value.sender: + value = value.to_lc_message() + else: + value = value.to_lc_document() + elif isinstance(value, Data): + if "text" in value.data: + value = value.to_lc_document() + else: + value = value.data + return value + + +def convert_to_langchain_types(io_dict: Dict[str, Any]): + converted = {} + for key, value in io_dict.items(): + converted[key] = convert_to_langchain_type(value) + return converted