diff --git a/parea/client.py b/parea/client.py index 972e29c7..df8c0768 100644 --- a/parea/client.py +++ b/parea/client.py @@ -120,6 +120,14 @@ def auto_trace_openai_clients(self, integration: Optional[str]) -> None: if integration: self._client.add_integration(integration) + if integration == "marvin": + import marvin + + marvin.utilities.openai.Client = patch_openai_client_classes(marvin.utilities.openai.Client, self) + marvin.utilities.openai.AsyncClient = patch_openai_client_classes(marvin.utilities.openai.AsyncClient, self) + marvin.utilities.openai.AzureOpenAI = patch_openai_client_classes(marvin.utilities.openai.AzureOpenAI, self) + marvin.utilities.openai.AsyncAzureOpenAI = patch_openai_client_classes(marvin.utilities.openai.AsyncAzureOpenAI, self) + def trace_dspy(self): from parea.utils.trace_integrations.dspy import DSPyInstrumentor diff --git a/parea/cookbook/trace_marvin.py b/parea/cookbook/trace_marvin.py new file mode 100644 index 00000000..ba934da5 --- /dev/null +++ b/parea/cookbook/trace_marvin.py @@ -0,0 +1,21 @@ +import os + +import marvin +from dotenv import load_dotenv +from pydantic import BaseModel, Field + +from parea import Parea + +load_dotenv() + +p = Parea(api_key=os.getenv("PAREA_API_KEY")) +p.auto_trace_openai_clients("marvin") + + +class Location(BaseModel): + city: str + state: str = Field(description="2-letter abbreviation") + + +result = marvin.cast("the big apple", Location) +print(result) diff --git a/pyproject.toml b/pyproject.toml index 2e4d9d1c..01143a7f 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.155" +version = "0.2.156" description = "Parea python sdk" readme = "README.md" authors = ["joel-parea-ai "]