From c3ef132347ea988221d5403acebfe6cfb7778871 Mon Sep 17 00:00:00 2001 From: Joel Alexander Date: Tue, 4 Jun 2024 16:58:48 -0400 Subject: [PATCH 1/4] helper for lamdas --- parea/__init__.py | 2 +- parea/utils/trace_utils.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/parea/__init__.py b/parea/__init__.py index 3e3bf081..a8201cb3 100644 --- a/parea/__init__.py +++ b/parea/__init__.py @@ -18,7 +18,7 @@ from parea.experiment.experiment import Experiment from parea.helpers import gen_trace_id, write_trace_logs_to_csv from parea.parea_logger import parea_logger -from parea.utils.trace_utils import get_current_trace_id, get_root_trace_id, trace, trace_insert +from parea.utils.trace_utils import clear_trace_context, get_current_trace_id, get_root_trace_id, trace, trace_insert from parea.wrapper.openai_raw_api_tracer import aprocess_stream_and_yield, process_stream_and_yield from parea.wrapper.utils import convert_openai_raw_to_log diff --git a/parea/utils/trace_utils.py b/parea/utils/trace_utils.py index 96f0c576..292d4117 100644 --- a/parea/utils/trace_utils.py +++ b/parea/utils/trace_utils.py @@ -34,6 +34,14 @@ execution_order_counters = contextvars.ContextVar("execution_order_counters", default={}) +def clear_trace_context(): + global trace_context, trace_data, thread_ids_running_evals, execution_order_counters + trace_context = contextvars.ContextVar("trace_context", default=[]) + trace_data = contextvars.ContextVar("trace_data", default={}) + thread_ids_running_evals = contextvars.ContextVar("thread_ids_running_evals", default=[]) + execution_order_counters = contextvars.ContextVar("execution_order_counters", default={}) + + def log_in_thread(target_func: Callable, data: Dict[str, Any]): logging_thread = threading.Thread(target=target_func, kwargs=data) logging_thread.start() From 06466acbf7fa15a8f769cc6b155d43c6ddbb7cc6 Mon Sep 17 00:00:00 2001 From: Joel Alexander Date: Tue, 4 Jun 2024 17:08:14 -0400 Subject: [PATCH 2/4] helper for lamdas --- parea/utils/trace_integrations/langchain.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/parea/utils/trace_integrations/langchain.py b/parea/utils/trace_integrations/langchain.py index 035410cb..770e3cff 100644 --- a/parea/utils/trace_integrations/langchain.py +++ b/parea/utils/trace_integrations/langchain.py @@ -1,5 +1,6 @@ from typing import Union +import logging from uuid import UUID from langchain_core.tracers import BaseTracer @@ -11,6 +12,8 @@ from parea.schemas.log import TraceIntegrations from parea.utils.trace_utils import fill_trace_data, get_current_trace_id, get_root_trace_id +logger = logging.getLogger() + class PareaAILangchainTracer(BaseTracer): parent_trace_id: UUID @@ -24,20 +27,25 @@ def _persist_run(self, run: Union[Run, LLMRun, ChainRun, ToolRun]) -> None: # using .dict() since langchain Run class currently set to Pydantic v1 data = run.dict() data["_parea_root_trace_id"] = self._parea_root_trace_id or None - if run.execution_order == 1: + # check if run has an attribute execution order + if hasattr(run, "execution_order") and run.execution_order == 1: data["_parea_parent_trace_id"] = self._parea_parent_trace_id or None + else: + logger.warning("Execution order is not set for Langchain. May not be able to connect root trace.") parea_logger.record_vendor_log(data, TraceIntegrations.LANGCHAIN) def get_parent_trace_id(self) -> UUID: return self.parent_trace_id def _on_run_create(self, run: Run) -> None: - if run.execution_order == 1: - # need to check if any traces already exist\ + if hasattr(run, "execution_order") and run.execution_order == 1: + # need to check if any traces already exist self._parea_root_trace_id = get_root_trace_id() if parent_trace_id := get_current_trace_id(): self._parea_parent_trace_id = parent_trace_id fill_trace_data(str(run.id), {"parent_trace_id": parent_trace_id}, UpdateTraceScenario.LANGCHAIN_CHILD) + else: + logger.warning("Execution order is not set for Langchain. May not be able to connect root trace.") def _on_llm_end(self, run: Run) -> None: self._persist_run(run) From 66ad7423eea093a9cf772262e09c1460e92ae6db Mon Sep 17 00:00:00 2001 From: Joel Alexander Date: Tue, 4 Jun 2024 17:10:15 -0400 Subject: [PATCH 3/4] helper for lamdas --- parea/utils/trace_integrations/langchain.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/parea/utils/trace_integrations/langchain.py b/parea/utils/trace_integrations/langchain.py index 770e3cff..879adce8 100644 --- a/parea/utils/trace_integrations/langchain.py +++ b/parea/utils/trace_integrations/langchain.py @@ -30,8 +30,6 @@ def _persist_run(self, run: Union[Run, LLMRun, ChainRun, ToolRun]) -> None: # check if run has an attribute execution order if hasattr(run, "execution_order") and run.execution_order == 1: data["_parea_parent_trace_id"] = self._parea_parent_trace_id or None - else: - logger.warning("Execution order is not set for Langchain. May not be able to connect root trace.") parea_logger.record_vendor_log(data, TraceIntegrations.LANGCHAIN) def get_parent_trace_id(self) -> UUID: @@ -44,8 +42,6 @@ def _on_run_create(self, run: Run) -> None: if parent_trace_id := get_current_trace_id(): self._parea_parent_trace_id = parent_trace_id fill_trace_data(str(run.id), {"parent_trace_id": parent_trace_id}, UpdateTraceScenario.LANGCHAIN_CHILD) - else: - logger.warning("Execution order is not set for Langchain. May not be able to connect root trace.") def _on_llm_end(self, run: Run) -> None: self._persist_run(run) From 619ea262df065c69ae8c41617da6201fbf20e389 Mon Sep 17 00:00:00 2001 From: Joel Alexander Date: Tue, 4 Jun 2024 17:10:25 -0400 Subject: [PATCH 4/4] helper for lamdas --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 4f5382c3..47c60a0c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "parea-ai" packages = [{ include = "parea" }] -version = "0.2.165" +version = "0.2.166" description = "Parea python sdk" readme = "README.md" authors = ["joel-parea-ai "]