4040from ..providers import Provider , infer_provider
4141from ..settings import ModelSettings
4242from ..tools import ToolDefinition
43- from . import (
44- Model ,
45- ModelRequestParameters ,
46- StreamedResponse ,
47- check_allow_model_requests ,
48- download_item ,
49- get_user_agent ,
50- )
43+ from . import Model , ModelRequestParameters , StreamedResponse , check_allow_model_requests , download_item , get_user_agent
5144
5245LatestGeminiModelNames = Literal [
5346 'gemini-2.0-flash' ,
@@ -108,10 +101,9 @@ class GeminiModel(Model):
108101 client : httpx .AsyncClient = field (repr = False )
109102
110103 _model_name : GeminiModelName = field (repr = False )
111- _provider : Literal [ 'google-gla' , 'google-vertex' ] | Provider [httpx .AsyncClient ] | None = field (repr = False )
104+ _provider : Provider [httpx .AsyncClient ] = field (repr = False )
112105 _auth : AuthProtocol | None = field (repr = False )
113106 _url : str | None = field (repr = False )
114- _system : str = field (default = 'gemini' , repr = False )
115107
116108 def __init__ (
117109 self ,
@@ -132,11 +124,10 @@ def __init__(
132124 settings: Default model settings for this model instance.
133125 """
134126 self ._model_name = model_name
135- self ._provider = provider
136127
137128 if isinstance (provider , str ):
138129 provider = infer_provider (provider )
139- self ._system = provider . name
130+ self ._provider = provider
140131 self .client = provider .client
141132 self ._url = str (self .client .base_url )
142133
@@ -147,6 +138,16 @@ def base_url(self) -> str:
147138 assert self ._url is not None , 'URL not initialized' # pragma: no cover
148139 return self ._url # pragma: no cover
149140
141+ @property
142+ def model_name (self ) -> GeminiModelName :
143+ """The model name."""
144+ return self ._model_name
145+
146+ @property
147+ def system (self ) -> str :
148+ """The model provider."""
149+ return self ._provider .name
150+
150151 async def request (
151152 self ,
152153 messages : list [ModelMessage ],
@@ -175,16 +176,6 @@ async def request_stream(
175176 ) as http_response :
176177 yield await self ._process_streamed_response (http_response , model_request_parameters )
177178
178- @property
179- def model_name (self ) -> GeminiModelName :
180- """The model name."""
181- return self ._model_name
182-
183- @property
184- def system (self ) -> str :
185- """The system / model provider."""
186- return self ._system
187-
188179 def _get_tools (self , model_request_parameters : ModelRequestParameters ) -> _GeminiTools | None :
189180 tools = [_function_from_abstract_tool (t ) for t in model_request_parameters .tool_defs .values ()]
190181 return _GeminiTools (function_declarations = tools ) if tools else None
@@ -237,7 +228,7 @@ async def _make_request(
237228 request_data ['safetySettings' ] = gemini_safety_settings
238229
239230 if gemini_labels := model_settings .get ('gemini_labels' ):
240- if self ._system == 'google-vertex' :
231+ if self ._provider . name == 'google-vertex' :
241232 request_data ['labels' ] = gemini_labels # pragma: lax no cover
242233
243234 headers = {'Content-Type' : 'application/json' , 'User-Agent' : get_user_agent ()}
0 commit comments