# This file was auto-generated by Fern from our API Definition. import typing from json.decoder import JSONDecodeError from ..core.api_error import ApiError from ..core.client_wrapper import AsyncClientWrapper, SyncClientWrapper from ..core.http_response import AsyncHttpResponse, HttpResponse from ..core.pydantic_utilities import parse_obj_as from ..core.request_options import RequestOptions from ..errors.unprocessable_entity_error import UnprocessableEntityError from ..types.improve_prompt_response import ImprovePromptResponse # this is used as the default value for optional parameters OMIT = typing.cast(typing.Any, ...) class RawPromptsClient: def __init__(self, *, client_wrapper: SyncClientWrapper): self._client_wrapper = client_wrapper def improve_prompt( self, *, use_case: str, prompt: str, context: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> HttpResponse[ImprovePromptResponse]: """ Improve a prompt based on a specific use-case Parameters ---------- use_case : str The use-case for prompt improvement prompt : str The original prompt to improve context : typing.Optional[str] Additional context about the user's needs request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- HttpResponse[ImprovePromptResponse] Successful Response """ _response = self._client_wrapper.httpx_client.request( "v1/prompts/improve", method="POST", params={ "use-case": use_case, }, json={ "context": context, "prompt": prompt, }, headers={ "content-type": "application/json", }, request_options=request_options, omit=OMIT, ) try: if 200 <= _response.status_code < 300: _data = typing.cast( ImprovePromptResponse, parse_obj_as( type_=ImprovePromptResponse, # type: ignore object_=_response.json(), ), ) return HttpResponse(response=_response, data=_data) if _response.status_code == 422: raise UnprocessableEntityError( headers=dict(_response.headers), body=typing.cast( typing.Optional[typing.Any], parse_obj_as( type_=typing.Optional[typing.Any], # type: ignore object_=_response.json(), ), ), ) _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json) class AsyncRawPromptsClient: def __init__(self, *, client_wrapper: AsyncClientWrapper): self._client_wrapper = client_wrapper async def improve_prompt( self, *, use_case: str, prompt: str, context: typing.Optional[str] = OMIT, request_options: typing.Optional[RequestOptions] = None, ) -> AsyncHttpResponse[ImprovePromptResponse]: """ Improve a prompt based on a specific use-case Parameters ---------- use_case : str The use-case for prompt improvement prompt : str The original prompt to improve context : typing.Optional[str] Additional context about the user's needs request_options : typing.Optional[RequestOptions] Request-specific configuration. Returns ------- AsyncHttpResponse[ImprovePromptResponse] Successful Response """ _response = await self._client_wrapper.httpx_client.request( "v1/prompts/improve", method="POST", params={ "use-case": use_case, }, json={ "context": context, "prompt": prompt, }, headers={ "content-type": "application/json", }, request_options=request_options, omit=OMIT, ) try: if 200 <= _response.status_code < 300: _data = typing.cast( ImprovePromptResponse, parse_obj_as( type_=ImprovePromptResponse, # type: ignore object_=_response.json(), ), ) return AsyncHttpResponse(response=_response, data=_data) if _response.status_code == 422: raise UnprocessableEntityError( headers=dict(_response.headers), body=typing.cast( typing.Optional[typing.Any], parse_obj_as( type_=typing.Optional[typing.Any], # type: ignore object_=_response.json(), ), ), ) _response_json = _response.json() except JSONDecodeError: raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response.text) raise ApiError(status_code=_response.status_code, headers=dict(_response.headers), body=_response_json)