@@ -292,6 +292,83 @@ def create(
292292 raise ApiError (status_code = _response .status_code , body = _response .text )
293293 raise ApiError (status_code = _response .status_code , body = _response_json )
294294
295+ def delete (
296+ self ,
297+ prompt_name : str ,
298+ * ,
299+ label : typing .Optional [str ] = None ,
300+ version : typing .Optional [int ] = None ,
301+ request_options : typing .Optional [RequestOptions ] = None ,
302+ ) -> None :
303+ """
304+ Delete prompt versions. If neither version nor label is specified, all versions of the prompt are deleted.
305+
306+ Parameters
307+ ----------
308+ prompt_name : str
309+ The name of the prompt
310+
311+ label : typing.Optional[str]
312+ Optional label to filter deletion. If specified, deletes all prompt versions that have this label.
313+
314+ version : typing.Optional[int]
315+ Optional version to filter deletion. If specified, deletes only this specific version of the prompt.
316+
317+ request_options : typing.Optional[RequestOptions]
318+ Request-specific configuration.
319+
320+ Returns
321+ -------
322+ None
323+
324+ Examples
325+ --------
326+ from langfuse.client import FernLangfuse
327+
328+ client = FernLangfuse(
329+ x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME",
330+ x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION",
331+ x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY",
332+ username="YOUR_USERNAME",
333+ password="YOUR_PASSWORD",
334+ base_url="https://yourhost.com/path/to/api",
335+ )
336+ client.prompts.delete(
337+ prompt_name="promptName",
338+ )
339+ """
340+ _response = self ._client_wrapper .httpx_client .request (
341+ f"api/public/v2/prompts/{ jsonable_encoder (prompt_name )} " ,
342+ method = "DELETE" ,
343+ params = {"label" : label , "version" : version },
344+ request_options = request_options ,
345+ )
346+ try :
347+ if 200 <= _response .status_code < 300 :
348+ return
349+ if _response .status_code == 400 :
350+ raise Error (pydantic_v1 .parse_obj_as (typing .Any , _response .json ())) # type: ignore
351+ if _response .status_code == 401 :
352+ raise UnauthorizedError (
353+ pydantic_v1 .parse_obj_as (typing .Any , _response .json ())
354+ ) # type: ignore
355+ if _response .status_code == 403 :
356+ raise AccessDeniedError (
357+ pydantic_v1 .parse_obj_as (typing .Any , _response .json ())
358+ ) # type: ignore
359+ if _response .status_code == 405 :
360+ raise MethodNotAllowedError (
361+ pydantic_v1 .parse_obj_as (typing .Any , _response .json ())
362+ ) # type: ignore
363+ if _response .status_code == 404 :
364+ raise NotFoundError (
365+ pydantic_v1 .parse_obj_as (typing .Any , _response .json ())
366+ ) # type: ignore
367+ _response_json = _response .json ()
368+ except JSONDecodeError :
369+ raise ApiError (status_code = _response .status_code , body = _response .text )
370+ raise ApiError (status_code = _response .status_code , body = _response_json )
371+
295372
296373class AsyncPromptsClient :
297374 def __init__ (self , * , client_wrapper : AsyncClientWrapper ):
@@ -585,3 +662,88 @@ async def main() -> None:
585662 except JSONDecodeError :
586663 raise ApiError (status_code = _response .status_code , body = _response .text )
587664 raise ApiError (status_code = _response .status_code , body = _response_json )
665+
666+ async def delete (
667+ self ,
668+ prompt_name : str ,
669+ * ,
670+ label : typing .Optional [str ] = None ,
671+ version : typing .Optional [int ] = None ,
672+ request_options : typing .Optional [RequestOptions ] = None ,
673+ ) -> None :
674+ """
675+ Delete prompt versions. If neither version nor label is specified, all versions of the prompt are deleted.
676+
677+ Parameters
678+ ----------
679+ prompt_name : str
680+ The name of the prompt
681+
682+ label : typing.Optional[str]
683+ Optional label to filter deletion. If specified, deletes all prompt versions that have this label.
684+
685+ version : typing.Optional[int]
686+ Optional version to filter deletion. If specified, deletes only this specific version of the prompt.
687+
688+ request_options : typing.Optional[RequestOptions]
689+ Request-specific configuration.
690+
691+ Returns
692+ -------
693+ None
694+
695+ Examples
696+ --------
697+ import asyncio
698+
699+ from langfuse.client import AsyncFernLangfuse
700+
701+ client = AsyncFernLangfuse(
702+ x_langfuse_sdk_name="YOUR_X_LANGFUSE_SDK_NAME",
703+ x_langfuse_sdk_version="YOUR_X_LANGFUSE_SDK_VERSION",
704+ x_langfuse_public_key="YOUR_X_LANGFUSE_PUBLIC_KEY",
705+ username="YOUR_USERNAME",
706+ password="YOUR_PASSWORD",
707+ base_url="https://yourhost.com/path/to/api",
708+ )
709+
710+
711+ async def main() -> None:
712+ await client.prompts.delete(
713+ prompt_name="promptName",
714+ )
715+
716+
717+ asyncio.run(main())
718+ """
719+ _response = await self ._client_wrapper .httpx_client .request (
720+ f"api/public/v2/prompts/{ jsonable_encoder (prompt_name )} " ,
721+ method = "DELETE" ,
722+ params = {"label" : label , "version" : version },
723+ request_options = request_options ,
724+ )
725+ try :
726+ if 200 <= _response .status_code < 300 :
727+ return
728+ if _response .status_code == 400 :
729+ raise Error (pydantic_v1 .parse_obj_as (typing .Any , _response .json ())) # type: ignore
730+ if _response .status_code == 401 :
731+ raise UnauthorizedError (
732+ pydantic_v1 .parse_obj_as (typing .Any , _response .json ())
733+ ) # type: ignore
734+ if _response .status_code == 403 :
735+ raise AccessDeniedError (
736+ pydantic_v1 .parse_obj_as (typing .Any , _response .json ())
737+ ) # type: ignore
738+ if _response .status_code == 405 :
739+ raise MethodNotAllowedError (
740+ pydantic_v1 .parse_obj_as (typing .Any , _response .json ())
741+ ) # type: ignore
742+ if _response .status_code == 404 :
743+ raise NotFoundError (
744+ pydantic_v1 .parse_obj_as (typing .Any , _response .json ())
745+ ) # type: ignore
746+ _response_json = _response .json ()
747+ except JSONDecodeError :
748+ raise ApiError (status_code = _response .status_code , body = _response .text )
749+ raise ApiError (status_code = _response .status_code , body = _response_json )
0 commit comments