From 70dcdb9a5536097762fc94752f7492137a68fbae Mon Sep 17 00:00:00 2001 From: csgulati09 Date: Sat, 24 Aug 2024 16:29:51 +0530 Subject: [PATCH 1/4] feat: span_name + time logic changed --- .../portkey_langchain_callback_handler.py | 21 +++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/portkey_ai/langchain/portkey_langchain_callback_handler.py b/portkey_ai/langchain/portkey_langchain_callback_handler.py index c6a1d163..f254d641 100644 --- a/portkey_ai/langchain/portkey_langchain_callback_handler.py +++ b/portkey_ai/langchain/portkey_langchain_callback_handler.py @@ -5,7 +5,6 @@ from uuid import UUID, uuid4 from portkey_ai.api_resources.apis.logger import Logger import re -from datetime import datetime try: from langchain_core.callbacks.base import BaseCallbackHandler @@ -68,7 +67,7 @@ def on_llm_start( info_obj = self.start_event_information( run_id, parent_run_id, - "llm_start", + serialized.get("name", "llm"), self.global_trace_id, request_payload, self.metadata, @@ -88,8 +87,8 @@ def on_llm_end( """Run when LLM ends running.""" start_time = self.event_map["llm_start_" + str(run_id)]["start_time"] - end_time = int(datetime.now().timestamp()) - total_time = (end_time - start_time) * 1000 + end_time = time.time() + total_time = f"{((end_time - start_time) * 1000):04.0f}" response_payload = self.on_llm_end_transformer(response, kwargs=kwargs) self.event_map["llm_start_" + str(run_id)]["response"] = response_payload @@ -126,7 +125,7 @@ def on_chain_start( info_obj = self.start_event_information( run_id, parent_span_id, - "chain_start", + request_payload.get("name", "chain"), self.global_trace_id, request_payload, self.metadata, @@ -147,8 +146,8 @@ def on_chain_end( """Run when chain ends running.""" start_time = self.event_map["chain_start_" + str(run_id)]["start_time"] - end_time = int(datetime.now().timestamp()) - total_time = (end_time - start_time) * 1000 + end_time = time.time() + total_time = f"{((end_time - start_time) * 1000):04.0f}" response_payload = self.on_chain_end_transformer(outputs) @@ -185,7 +184,7 @@ def on_tool_start( info_obj = self.start_event_information( run_id, parent_run_id, - "tool_start", + request_payload.get("serialized", {}).get("name", "tool"), self.global_trace_id, request_payload, self.metadata, @@ -205,8 +204,8 @@ def on_tool_end( """Run when tool ends running.""" start_time = self.event_map["tool_start_" + str(run_id)]["start_time"] - end_time = int(datetime.now().timestamp()) - total_time = (end_time - start_time) * 1000 + end_time = time.time() + total_time = f"{((end_time - start_time) * 1000):04.0f}" response_payload = self.on_tool_end_transformer(output) self.event_map["tool_start_" + str(run_id)]["response"] = response_payload @@ -252,7 +251,7 @@ def start_event_information( request_payload, metadata=None, ): - start_time = int(datetime.now().timestamp()) + start_time = time.time() return { "span_id": str(span_id), "parent_span_id": str(parent_span_id), From 3176a22e8a7b39d29afb92dc03ae21050f568d21 Mon Sep 17 00:00:00 2001 From: csgulati09 Date: Sat, 24 Aug 2024 16:55:44 +0530 Subject: [PATCH 2/4] feat: sending type and tags in payload --- .../langchain/portkey_langchain_callback_handler.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/portkey_ai/langchain/portkey_langchain_callback_handler.py b/portkey_ai/langchain/portkey_langchain_callback_handler.py index f254d641..8266f802 100644 --- a/portkey_ai/langchain/portkey_langchain_callback_handler.py +++ b/portkey_ai/langchain/portkey_langchain_callback_handler.py @@ -70,6 +70,8 @@ def on_llm_start( serialized.get("name", "llm"), self.global_trace_id, request_payload, + "llm", + tags, self.metadata, ) self.event_map["llm_start_" + str(run_id)] = info_obj @@ -128,6 +130,8 @@ def on_chain_start( request_payload.get("name", "chain"), self.global_trace_id, request_payload, + "chain", + tags, self.metadata, ) @@ -187,6 +191,8 @@ def on_tool_start( request_payload.get("serialized", {}).get("name", "tool"), self.global_trace_id, request_payload, + "tool", + tags, self.metadata, ) self.event_map["tool_start_" + str(run_id)] = info_obj @@ -249,6 +255,8 @@ def start_event_information( span_name, trace_id, request_payload, + type, + tags, metadata=None, ): start_time = time.time() @@ -259,6 +267,8 @@ def start_event_information( "trace_id": trace_id, "request": request_payload, "start_time": start_time, + "type": type, + "tags": tags, "metadata": metadata, } From 4a91474c4a55b94b6867397dc42c834ac9fccef2 Mon Sep 17 00:00:00 2001 From: csgulati09 Date: Sat, 24 Aug 2024 17:34:54 +0530 Subject: [PATCH 3/4] feat: introducing source_metadata --- .../portkey_langchain_callback_handler.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/portkey_ai/langchain/portkey_langchain_callback_handler.py b/portkey_ai/langchain/portkey_langchain_callback_handler.py index 8266f802..d08a50c9 100644 --- a/portkey_ai/langchain/portkey_langchain_callback_handler.py +++ b/portkey_ai/langchain/portkey_langchain_callback_handler.py @@ -16,12 +16,13 @@ class LangchainCallbackHandler(BaseCallbackHandler): def __init__( self, api_key: str, - metadata: Optional[Dict[str, Any]] = {}, + metadata: Optional[Dict[str, Any]] = None, ) -> None: super().__init__() self.api_key = api_key - self.metadata = metadata + self.metadata: Dict[str, Any] = metadata or {} + self.metadata.update({"_source": "Langchain", "_source_type": "Agent"}) self.portkey_logger = Logger(api_key=api_key) @@ -260,6 +261,13 @@ def start_event_information( metadata=None, ): start_time = time.time() + source_metadata = {} + if type: + source_metadata.update({"type": type}) + if len(tags): + source_metadata.update({"tags": tags}) + if source_metadata: + metadata.update({"source_metadata": json.dumps(source_metadata)}) return { "span_id": str(span_id), "parent_span_id": str(parent_span_id), @@ -267,8 +275,6 @@ def start_event_information( "trace_id": trace_id, "request": request_payload, "start_time": start_time, - "type": type, - "tags": tags, "metadata": metadata, } From 0ec684644c1fe7dd0eaa233438b5fcc0553f5e67 Mon Sep 17 00:00:00 2001 From: csgulati09 Date: Mon, 26 Aug 2024 12:22:52 +0530 Subject: [PATCH 4/4] fix: self.metadata issue fixed --- .../langchain/portkey_langchain_callback_handler.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/portkey_ai/langchain/portkey_langchain_callback_handler.py b/portkey_ai/langchain/portkey_langchain_callback_handler.py index d08a50c9..945f758d 100644 --- a/portkey_ai/langchain/portkey_langchain_callback_handler.py +++ b/portkey_ai/langchain/portkey_langchain_callback_handler.py @@ -135,7 +135,6 @@ def on_chain_start( tags, self.metadata, ) - self.event_map["chain_start_" + str(run_id)] = info_obj pass @@ -256,18 +255,20 @@ def start_event_information( span_name, trace_id, request_payload, - type, + span_type, tags, metadata=None, ): start_time = time.time() source_metadata = {} - if type: - source_metadata.update({"type": type}) + portkey_metadata = {} + portkey_metadata.update(metadata) + if span_type: + source_metadata.update({"type": span_type}) if len(tags): source_metadata.update({"tags": tags}) if source_metadata: - metadata.update({"source_metadata": json.dumps(source_metadata)}) + portkey_metadata.update({"source_metadata": json.dumps(source_metadata)}) return { "span_id": str(span_id), "parent_span_id": str(parent_span_id), @@ -275,7 +276,7 @@ def start_event_information( "trace_id": trace_id, "request": request_payload, "start_time": start_time, - "metadata": metadata, + "metadata": portkey_metadata, } def serialize(self, obj):