Skip to content

Commit 20d25e7

Browse files
committed
feat: add log sampling
1 parent 3a85aaf commit 20d25e7

File tree

4 files changed

+11
-3
lines changed

4 files changed

+11
-3
lines changed

cookbook/openai/tracing_with_openai_with_functions.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
openai.api_key = os.getenv("OPENAI_API_KEY")
1818

1919
p = Parea(api_key=os.getenv("PAREA_API_KEY"))
20+
p.wrap_openai_client(openai)
2021

2122
functions = [
2223
{

parea/schemas/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class Completion:
2727
log_omit_inputs: bool = False
2828
log_omit_outputs: bool = False
2929
log_omit: bool = False
30+
log_sample_rate: float = 1.0
3031
experiment_uuid: Optional[str] = None
3132
project_uuid: str = "default"
3233

@@ -123,6 +124,7 @@ class TraceLog(EvaluatedLog):
123124
output_for_eval_metrics: Optional[str] = None
124125
evaluation_metric_names: Optional[List[str]] = field(factory=list)
125126
apply_eval_frac: float = 1.0
127+
log_sample_rate: float = 1.0
126128
feedback_score: Optional[float] = None
127129

128130
# info filled from decorator

parea/utils/trace_utils.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,11 @@ def fill_trace_data(trace_id: str, data: Dict[str, Any], scenario: UpdateTraceSc
130130
trace_data.get()[trace_id].error = data["error"]
131131
trace_data.get()[trace_id].status = "error"
132132
elif scenario == UpdateTraceScenario.CHAIN:
133-
trace_data.get()[trace_id].parent_trace_id = data["parent_trace_id"]
134-
trace_data.get()[data["parent_trace_id"]].children.append(trace_id)
133+
parent_trace_id = data["parent_trace_id"]
134+
trace_data.get()[trace_id].parent_trace_id = parent_trace_id
135+
trace_data.get()[parent_trace_id].children.append(trace_id)
136+
if trace_data.get()[parent_trace_id].log_sample_rate != trace_data.get()[trace_id].log_sample_rate:
137+
trace_data.get()[trace_id].log_sample_rate = trace_data.get()[parent_trace_id].log_sample_rate
135138
elif scenario == UpdateTraceScenario.LANGCHAIN_CHILD:
136139
trace_data.get()[data["parent_trace_id"]].children.append(trace_id)
137140
elif scenario == UpdateTraceScenario.OPENAICONFIG:
@@ -162,6 +165,7 @@ def trace(
162165
log_omit_outputs: Optional[bool] = False,
163166
overwrite_trace_id: Optional[str] = None,
164167
overwrite_inputs: Optional[Dict[str, Any]] = None,
168+
log_sample_rate: Optional[float] = 1.0,
165169
):
166170
def init_trace(func_name, _parea_target_field, args, kwargs, func) -> Tuple[str, datetime, contextvars.Token]:
167171
start_time = timezone_aware_now()
@@ -224,6 +228,7 @@ def init_trace(func_name, _parea_target_field, args, kwargs, func) -> Tuple[str,
224228
deployment_id=deployment_id,
225229
depth=depth,
226230
execution_order=execution_order,
231+
log_sample_rate=log_sample_rate,
227232
)
228233

229234
if parent_trace_id:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ build-backend = "poetry.core.masonry.api"
66
[tool.poetry]
77
name = "parea-ai"
88
packages = [{ include = "parea" }]
9-
version = "0.2.199"
9+
version = "0.2.200"
1010
description = "Parea python sdk"
1111
readme = "README.md"
1212
authors = ["joel-parea-ai <[email protected]>"]

0 commit comments

Comments
 (0)