Skip to content

Commit fb57594

Browse files
authored
fix(evaluators): update route api (#3977)
1 parent 786d49f commit fb57594

4 files changed

Lines changed: 20 additions & 9 deletions

File tree

packages/traceloop-sdk/traceloop/sdk/evaluator/evaluator.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def __init__(self, async_http_client: httpx.AsyncClient):
5454

5555
@staticmethod
5656
def _build_evaluator_request(
57+
evaluator_slug: str,
5758
task_id: str,
5859
experiment_id: str,
5960
experiment_run_id: str,
@@ -69,21 +70,25 @@ def _build_evaluator_request(
6970
input_schema_mapping=schema_mapping,
7071
evaluator_version=evaluator_version,
7172
evaluator_config=evaluator_config,
73+
evaluator_slug=evaluator_slug,
7274
task_id=task_id,
7375
experiment_id=experiment_id,
7476
experiment_run_id=experiment_run_id,
7577
)
7678

77-
async def _execute_evaluator_request(
79+
async def _execute_experiment_evaluator_request(
7880
self,
7981
evaluator_slug: str,
82+
experiment_slug: str,
83+
experiment_run_id: str,
84+
task_id: str,
8085
request: ExecuteEvaluatorRequest,
8186
timeout_in_sec: int = 120,
8287
) -> ExecuteEvaluatorResponse:
8388
"""Execute evaluator request and return response"""
8489
body = request.model_dump()
8590
client = self._async_http_client
86-
full_url = f"/v2/evaluators/slug/{evaluator_slug}/execute"
91+
full_url = f"/v2/experiments/{experiment_slug}/runs/{experiment_run_id}/tasks/{task_id}"
8792
response = await client.post(
8893
full_url, json=body, timeout=httpx.Timeout(timeout_in_sec)
8994
)
@@ -99,6 +104,7 @@ async def _execute_evaluator_request(
99104
async def run_experiment_evaluator(
100105
self,
101106
evaluator_slug: str,
107+
experiment_slug: str,
102108
task_id: str,
103109
experiment_id: str,
104110
experiment_run_id: str,
@@ -126,11 +132,11 @@ async def run_experiment_evaluator(
126132
_validate_evaluator_input(evaluator_slug, input, evaluator_config)
127133

128134
request = self._build_evaluator_request(
129-
task_id, experiment_id, experiment_run_id, input, evaluator_version, evaluator_config
135+
evaluator_slug, task_id, experiment_id, experiment_run_id, input, evaluator_version, evaluator_config
130136
)
131137

132-
execute_response = await self._execute_evaluator_request(
133-
evaluator_slug, request, timeout_in_sec
138+
execute_response = await self._execute_experiment_evaluator_request(
139+
evaluator_slug, experiment_slug, experiment_run_id, task_id, request, timeout_in_sec
134140
)
135141

136142
sse_client = SSEClient(shared_client=self._async_http_client)
@@ -145,6 +151,7 @@ async def run_experiment_evaluator(
145151
async def trigger_experiment_evaluator(
146152
self,
147153
evaluator_slug: str,
154+
experiment_slug: str,
148155
task_id: str,
149156
experiment_id: str,
150157
experiment_run_id: str,
@@ -170,11 +177,11 @@ async def trigger_experiment_evaluator(
170177
_validate_evaluator_input(evaluator_slug, input, evaluator_config)
171178

172179
request = self._build_evaluator_request(
173-
task_id, experiment_id, experiment_run_id, input, evaluator_version, evaluator_config
180+
evaluator_slug, task_id, experiment_id, experiment_run_id, input, evaluator_version, evaluator_config
174181
)
175182

176-
execute_response = await self._execute_evaluator_request(
177-
evaluator_slug, request, 120
183+
execute_response = await self._execute_experiment_evaluator_request(
184+
evaluator_slug, experiment_slug, experiment_run_id, task_id, request, 120
178185
)
179186

180187
# Return execution_id without waiting for SSE result

packages/traceloop-sdk/traceloop/sdk/evaluator/model.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class ExecuteEvaluatorRequest(BaseModel):
1919
input_schema_mapping: InputSchemaMapping
2020
evaluator_version: Optional[str] = None
2121
evaluator_config: Optional[Dict[str, Any]] = None
22+
evaluator_slug: str
2223
task_id: str
2324
experiment_id: str
2425
experiment_run_id: str

packages/traceloop-sdk/traceloop/sdk/experiment/experiment.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ async def run_single_row(row: Optional[Dict[str, Any]]) -> TaskResponse:
190190
eval_result = (
191191
await self._evaluator.run_experiment_evaluator(
192192
evaluator_slug=evaluator_slug,
193+
experiment_slug=experiment_slug,
193194
evaluator_version=evaluator_version,
194195
evaluator_config=evaluator_config,
195196
task_id=task_id,
@@ -203,6 +204,7 @@ async def run_single_row(row: Optional[Dict[str, Any]]) -> TaskResponse:
203204
else:
204205
await self._evaluator.trigger_experiment_evaluator(
205206
evaluator_slug=evaluator_slug,
207+
experiment_slug=experiment_slug,
206208
evaluator_version=evaluator_version,
207209
evaluator_config=evaluator_config,
208210
task_id=task_id,
@@ -436,7 +438,7 @@ def _create_task(
436438
output=task_output,
437439
)
438440
response = self._http_client.post(
439-
f"/experiments/{experiment_slug}/runs/{experiment_run_id}/task",
441+
f"/experiments/{experiment_slug}/runs/{experiment_run_id}/tasks",
440442
body.model_dump(mode="json"),
441443
)
442444
if response is None:

packages/traceloop-sdk/traceloop/sdk/guardrails/guardrails.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,7 @@ async def execute_evaluator(
201201
# Use dummy IDs for guardrails (they don't need experiment tracking)
202202
result = await self._evaluator.run_experiment_evaluator(
203203
evaluator_slug=slug,
204+
experiment_slug="guardrail",
204205
task_id="guardrail",
205206
experiment_id="guardrail",
206207
experiment_run_id="guardrail",

0 commit comments

Comments
 (0)