Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions langfuse/api/unstable/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@
CreateEvaluatorRequest_Code,
CreateEvaluatorRequest_LlmAsJudge,
CreateLlmAsJudgeEvaluatorRequest,
DeleteEvaluatorResponse,
Evaluator,
EvaluatorBase,
Evaluator_Code,
Expand Down Expand Up @@ -121,6 +122,7 @@
"CreateLlmAsJudgeEvaluatorRequest": ".evaluators",
"DateTimeEvaluationRuleFilter": ".commons",
"DeleteEvaluationRuleResponse": ".evaluation_rules",
"DeleteEvaluatorResponse": ".evaluators",
"EvaluationRule": ".evaluation_rules",
"EvaluationRuleArrayOptionsFilterOperator": ".commons",
"EvaluationRuleBooleanFilterOperator": ".commons",
Expand Down Expand Up @@ -242,6 +244,7 @@ def __dir__():
"CreateLlmAsJudgeEvaluatorRequest",
"DateTimeEvaluationRuleFilter",
"DeleteEvaluationRuleResponse",
"DeleteEvaluatorResponse",
"EvaluationRule",
"EvaluationRuleArrayOptionsFilterOperator",
"EvaluationRuleBooleanFilterOperator",
Expand Down
3 changes: 3 additions & 0 deletions langfuse/api/unstable/evaluators/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
CreateEvaluatorRequest_Code,
CreateEvaluatorRequest_LlmAsJudge,
CreateLlmAsJudgeEvaluatorRequest,
DeleteEvaluatorResponse,
Evaluator,
EvaluatorBase,
Evaluator_Code,
Expand All @@ -27,6 +28,7 @@
"CreateEvaluatorRequest_Code": ".types",
"CreateEvaluatorRequest_LlmAsJudge": ".types",
"CreateLlmAsJudgeEvaluatorRequest": ".types",
"DeleteEvaluatorResponse": ".types",
"Evaluator": ".types",
"EvaluatorBase": ".types",
"Evaluator_Code": ".types",
Expand Down Expand Up @@ -70,6 +72,7 @@ def __dir__():
"CreateEvaluatorRequest_Code",
"CreateEvaluatorRequest_LlmAsJudge",
"CreateLlmAsJudgeEvaluatorRequest",
"DeleteEvaluatorResponse",
"Evaluator",
"EvaluatorBase",
"Evaluator_Code",
Expand Down
105 changes: 105 additions & 0 deletions langfuse/api/unstable/evaluators/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from ...core.request_options import RequestOptions
from .raw_client import AsyncRawEvaluatorsClient, RawEvaluatorsClient
from .types.create_evaluator_request import CreateEvaluatorRequest
from .types.delete_evaluator_response import DeleteEvaluatorResponse
from .types.evaluator import Evaluator
from .types.evaluators import Evaluators

Expand Down Expand Up @@ -211,6 +212,54 @@ def get(
_response = self._raw_client.get(evaluator_id, request_options=request_options)
return _response.data

def delete(
self,
evaluator_id: str,
*,
request_options: typing.Optional[RequestOptions] = None,
) -> DeleteEvaluatorResponse:
"""
Delete an evaluator.

Important behavior:
- This deletes the evaluator including all of its stored versions; `evaluatorId` may reference any version.
- The API returns `409` while evaluation rules still reference the evaluator. Delete those evaluation rules first.
- Langfuse-managed evaluators (`scope=managed`) cannot be deleted; the API returns `403`.
- Scores already produced by the evaluator are not deleted.

Parameters
----------
evaluator_id : str
Evaluator identifier returned by the evaluator endpoints.

request_options : typing.Optional[RequestOptions]
Request-specific configuration.

Returns
-------
DeleteEvaluatorResponse

Examples
--------
from langfuse import LangfuseAPI

client = LangfuseAPI(
x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME",
x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION",
x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY",
username="YOUR_USERNAME",
password="YOUR_PASSWORD",
base_url="https://yourhost.com/path/to/api",
)
client.unstable.evaluators.delete(
evaluator_id="evaluatorId",
)
"""
_response = self._raw_client.delete(
evaluator_id, request_options=request_options
)
return _response.data


class AsyncEvaluatorsClient:
def __init__(self, *, client_wrapper: AsyncClientWrapper):
Expand Down Expand Up @@ -435,3 +484,59 @@ async def main() -> None:
evaluator_id, request_options=request_options
)
return _response.data

async def delete(
self,
evaluator_id: str,
*,
request_options: typing.Optional[RequestOptions] = None,
) -> DeleteEvaluatorResponse:
"""
Delete an evaluator.

Important behavior:
- This deletes the evaluator including all of its stored versions; `evaluatorId` may reference any version.
- The API returns `409` while evaluation rules still reference the evaluator. Delete those evaluation rules first.
- Langfuse-managed evaluators (`scope=managed`) cannot be deleted; the API returns `403`.
- Scores already produced by the evaluator are not deleted.

Parameters
----------
evaluator_id : str
Evaluator identifier returned by the evaluator endpoints.

request_options : typing.Optional[RequestOptions]
Request-specific configuration.

Returns
-------
DeleteEvaluatorResponse

Examples
--------
import asyncio

from langfuse import AsyncLangfuseAPI

client = AsyncLangfuseAPI(
x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME",
x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION",
x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY",
username="YOUR_USERNAME",
password="YOUR_PASSWORD",
base_url="https://yourhost.com/path/to/api",
)


async def main() -> None:
await client.unstable.evaluators.delete(
evaluator_id="evaluatorId",
)


asyncio.run(main())
"""
_response = await self._raw_client.delete(
evaluator_id, request_options=request_options
)
return _response.data
Loading