diff --git a/parea/client.py b/parea/client.py index df8c0768..1865faba 100644 --- a/parea/client.py +++ b/parea/client.py @@ -93,12 +93,7 @@ def wrap_openai_client(self, client: "OpenAI", integration: Optional[str] = None BetaWrappers(client).init() if integration: - self._client.add_integration(integration) - - if integration == "instructor": - from parea.utils.trace_integrations.instructor import instrument_instructor_validation_errors - - instrument_instructor_validation_errors() + self._add_integration(integration) def wrap_anthropic_client(self, client: "Anthropic", integration: Optional[str] = None) -> None: from parea.wrapper.anthropic.anthropic import AnthropicWrapper @@ -106,7 +101,15 @@ def wrap_anthropic_client(self, client: "Anthropic", integration: Optional[str] AnthropicWrapper().init(log=logger_all_possible, cache=self.cache, client=client) if integration: - self._client.add_integration(integration) + self._add_integration(integration) + + def _add_integration(self, integration: str) -> None: + self._client.add_integration(integration) + + if integration == "instructor": + from parea.utils.trace_integrations.instructor import instrument_instructor_validation_errors + + instrument_instructor_validation_errors() def auto_trace_openai_clients(self, integration: Optional[str]) -> None: import openai diff --git a/parea/wrapper/wrapper.py b/parea/wrapper/wrapper.py index 1f7ba673..f6994798 100644 --- a/parea/wrapper/wrapper.py +++ b/parea/wrapper/wrapper.py @@ -87,7 +87,12 @@ def _init_trace(self, kwargs) -> Tuple[str, datetime, contextvars.Token]: if template_inputs := kwargs.pop("template_inputs", None): for m in kwargs.get("messages", []): if isinstance(m, dict) and "content" in m: - m["content"] = safe_format_template_to_prompt(m["content"], **template_inputs) + if isinstance(m["content"], str): + m["content"] = safe_format_template_to_prompt(m["content"], **template_inputs) + elif isinstance(m["content"], list): + for i, item in enumerate(m["content"]): + if isinstance(item, dict) and "text" in item: + m["content"][i]["text"] = safe_format_template_to_prompt(item["text"], **template_inputs) depth = len(new_trace_context) - 1 root_trace_id = new_trace_context[0] diff --git a/pyproject.toml b/pyproject.toml index 2d195b53..10f1c67c 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.159" +version = "0.2.160" description = "Parea python sdk" readme = "README.md" authors = ["joel-parea-ai "]