@@ -43,7 +43,7 @@ class YandexGPTCompletionOptions(pydantic.BaseModel):
4343
4444
4545class YandexGPTRequest (pydantic .BaseModel ):
46- model_config = pydantic .ConfigDict (protected_namespaces = ())
46+ model_config = pydantic .ConfigDict (protected_namespaces = (), extra = "allow" )
4747 model_uri : str = pydantic .Field (alias = "modelUri" )
4848 completion_options : YandexGPTCompletionOptions = pydantic .Field (alias = "completionOptions" )
4949 messages : list [Message ]
@@ -96,7 +96,12 @@ def _build_request(self, payload: dict[str, typing.Any]) -> httpx.Request:
9696 )
9797
9898 def _prepare_payload (
99- self , * , messages : str | list [Message ], temperature : float = 0.2 , stream : bool
99+ self ,
100+ * ,
101+ messages : str | list [Message ],
102+ temperature : float = 0.2 ,
103+ stream : bool ,
104+ extra : dict [str , typing .Any ] | None ,
100105 ) -> dict [str , typing .Any ]:
101106 messages = [UserMessage (messages )] if isinstance (messages , str ) else messages
102107 return YandexGPTRequest (
@@ -105,10 +110,15 @@ def _prepare_payload(
105110 stream = stream , temperature = temperature , maxTokens = self .config .max_tokens
106111 ),
107112 messages = messages ,
113+ ** extra or {},
108114 ).model_dump (mode = "json" , by_alias = True )
109115
110- async def request_llm_message (self , messages : str | list [Message ], temperature : float = 0.2 ) -> str :
111- payload : typing .Final = self ._prepare_payload (messages = messages , temperature = temperature , stream = False )
116+ async def request_llm_message (
117+ self , messages : str | list [Message ], * , temperature : float = 0.2 , extra : dict [str , typing .Any ] | None = None
118+ ) -> str :
119+ payload : typing .Final = self ._prepare_payload (
120+ messages = messages , temperature = temperature , stream = False , extra = extra
121+ )
112122
113123 try :
114124 response : typing .Final = await make_http_request (
@@ -128,9 +138,11 @@ async def _iter_completion_messages(self, response: httpx.Response) -> typing.As
128138
129139 @contextlib .asynccontextmanager
130140 async def stream_llm_partial_messages (
131- self , messages : str | list [Message ], temperature : float = 0.2
141+ self , messages : str | list [Message ], * , temperature : float = 0.2 , extra : dict [ str , typing . Any ] | None = None
132142 ) -> typing .AsyncIterator [typing .AsyncIterable [str ]]:
133- payload : typing .Final = self ._prepare_payload (messages = messages , temperature = temperature , stream = True )
143+ payload : typing .Final = self ._prepare_payload (
144+ messages = messages , temperature = temperature , stream = True , extra = extra
145+ )
134146
135147 try :
136148 async with make_streaming_http_request (
0 commit comments