Skip to content

Commit

Permalink
feat(specs): add generate code endpoint to ingestion specs (generated)
Browse files Browse the repository at this point in the history
algolia/api-clients-automation#3489

Co-authored-by: algolia-bot <[email protected]>
Co-authored-by: Clément Vannicatte <[email protected]>
  • Loading branch information
algolia-bot and shortcuts committed Aug 7, 2024
1 parent 84aac6e commit fdd1edf
Show file tree
Hide file tree
Showing 3 changed files with 199 additions and 1 deletion.
70 changes: 69 additions & 1 deletion algoliasearch/ingestion/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@
from algoliasearch.ingestion.models.event_sort_keys import EventSortKeys
from algoliasearch.ingestion.models.event_status import EventStatus
from algoliasearch.ingestion.models.event_type import EventType
from algoliasearch.ingestion.models.generate_transformation_code_payload import (
GenerateTransformationCodePayload,
)
from algoliasearch.ingestion.models.generate_transformation_code_response import (
GenerateTransformationCodeResponse,
)
from algoliasearch.ingestion.models.list_authentications_response import (
ListAuthenticationsResponse,
)
Expand Down Expand Up @@ -1477,6 +1483,68 @@ async def enable_task_v1(
await self.enable_task_v1_with_http_info(task_id, request_options)
).deserialize(TaskUpdateResponse)

async def generate_transformation_code_with_http_info(
self,
generate_transformation_code_payload: GenerateTransformationCodePayload,
request_options: Optional[Union[dict, RequestOptions]] = None,
) -> ApiResponse[str]:
"""
Generates code for the selected model based on the given prompt.
Required API Key ACLs:
- addObject
- deleteIndex
- editSettings
:param generate_transformation_code_payload: (required)
:type generate_transformation_code_payload: GenerateTransformationCodePayload
:param request_options: The request options to send along with the query, they will be merged with the transporter base parameters (headers, query params, timeouts, etc.). (optional)
:return: Returns the raw algoliasearch 'APIResponse' object.
"""

if generate_transformation_code_payload is None:
raise ValueError(
"Parameter `generate_transformation_code_payload` is required when calling `generate_transformation_code`."
)

_data = {}
if generate_transformation_code_payload is not None:
_data = generate_transformation_code_payload

return await self._transporter.request(
verb=Verb.POST,
path="/1/transformations/models",
request_options=self._request_options.merge(
data=dumps(bodySerializer(_data)),
user_request_options=request_options,
),
use_read_transporter=False,
)

async def generate_transformation_code(
self,
generate_transformation_code_payload: GenerateTransformationCodePayload,
request_options: Optional[Union[dict, RequestOptions]] = None,
) -> GenerateTransformationCodeResponse:
"""
Generates code for the selected model based on the given prompt.
Required API Key ACLs:
- addObject
- deleteIndex
- editSettings
:param generate_transformation_code_payload: (required)
:type generate_transformation_code_payload: GenerateTransformationCodePayload
:param request_options: The request options to send along with the query, they will be merged with the transporter base parameters (headers, query params, timeouts, etc.). (optional)
:return: Returns the deserialized response in a 'GenerateTransformationCodeResponse' result object.
"""
return (
await self.generate_transformation_code_with_http_info(
generate_transformation_code_payload, request_options
)
).deserialize(GenerateTransformationCodeResponse)

async def get_authentication_with_http_info(
self,
authentication_id: Annotated[
Expand Down Expand Up @@ -3167,7 +3235,7 @@ async def list_transformation_models_with_http_info(

return await self._transporter.request(
verb=Verb.GET,
path="/1/transformations/copilot",
path="/1/transformations/models",
request_options=self._request_options.merge(
user_request_options=request_options,
),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# coding: utf-8

"""
Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
"""

from __future__ import annotations

from json import loads
from typing import Any, Dict, Optional, Self

from pydantic import BaseModel, ConfigDict, Field, StrictStr


class GenerateTransformationCodePayload(BaseModel):
"""
GenerateTransformationCodePayload
"""

id: StrictStr
system_prompt: Optional[StrictStr] = Field(default=None, alias="systemPrompt")
user_prompt: StrictStr = Field(alias="userPrompt")

model_config = ConfigDict(
use_enum_values=True, populate_by_name=True, validate_assignment=True
)

def to_json(self) -> str:
return self.model_dump_json(by_alias=True, exclude_unset=True)

@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of GenerateTransformationCodePayload from a JSON string"""
return cls.from_dict(loads(json_str))

def to_dict(self) -> Dict[str, Any]:
"""Return the dictionary representation of the model using alias.
This has the following differences from calling pydantic's
`self.model_dump(by_alias=True)`:
* `None` is only added to the output dict for nullable fields that
were set at model initialization. Other fields with value `None`
are ignored.
"""
_dict = self.model_dump(
by_alias=True,
exclude={},
exclude_none=True,
)
return _dict

@classmethod
def from_dict(cls, obj: Dict) -> Self:
"""Create an instance of GenerateTransformationCodePayload from a dict"""
if obj is None:
return None

if not isinstance(obj, dict):
return cls.model_validate(obj)

_obj = cls.model_validate(
{
"id": obj.get("id"),
"systemPrompt": obj.get("systemPrompt"),
"userPrompt": obj.get("userPrompt"),
}
)
return _obj
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# coding: utf-8

"""
Code generated by OpenAPI Generator (https://openapi-generator.tech), manual changes will be lost - read more on https://github.com/algolia/api-clients-automation. DO NOT EDIT.
"""

from __future__ import annotations

from json import loads
from typing import Any, Dict, Optional, Self

from pydantic import BaseModel, ConfigDict, Field, StrictStr


class GenerateTransformationCodeResponse(BaseModel):
"""
GenerateTransformationCodeResponse
"""

generated_code: Optional[StrictStr] = Field(default=None, alias="generatedCode")

model_config = ConfigDict(
use_enum_values=True, populate_by_name=True, validate_assignment=True
)

def to_json(self) -> str:
return self.model_dump_json(by_alias=True, exclude_unset=True)

@classmethod
def from_json(cls, json_str: str) -> Self:
"""Create an instance of GenerateTransformationCodeResponse from a JSON string"""
return cls.from_dict(loads(json_str))

def to_dict(self) -> Dict[str, Any]:
"""Return the dictionary representation of the model using alias.
This has the following differences from calling pydantic's
`self.model_dump(by_alias=True)`:
* `None` is only added to the output dict for nullable fields that
were set at model initialization. Other fields with value `None`
are ignored.
"""
_dict = self.model_dump(
by_alias=True,
exclude={},
exclude_none=True,
)
return _dict

@classmethod
def from_dict(cls, obj: Dict) -> Self:
"""Create an instance of GenerateTransformationCodeResponse from a dict"""
if obj is None:
return None

if not isinstance(obj, dict):
return cls.model_validate(obj)

_obj = cls.model_validate({"generatedCode": obj.get("generatedCode")})
return _obj

0 comments on commit fdd1edf

Please sign in to comment.