Skip to content

Commit 8d6b248

Browse files
authored
feat(genai): support model profiles (#1373)
1 parent f58afb4 commit 8d6b248

File tree

7 files changed

+479
-7
lines changed

7 files changed

+479
-7
lines changed

libs/genai/langchain_google_genai/chat_models.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import json
77
import logging
88
import mimetypes
9+
import re
910
import time
1011
import uuid
1112
import warnings
@@ -58,6 +59,8 @@
5859
from langchain_core.language_models import (
5960
LangSmithParams,
6061
LanguageModelInput,
62+
ModelProfile,
63+
ModelProfileRegistry,
6164
is_openai_data_block,
6265
)
6366
from langchain_core.language_models.chat_models import BaseChatModel
@@ -124,6 +127,7 @@
124127
ImageBytesLoader,
125128
image_bytes_to_b64_string,
126129
)
130+
from langchain_google_genai.data._profiles import _PROFILES
127131

128132
from . import _genai_extension as genaix
129133

@@ -137,6 +141,13 @@
137141
"__gemini_function_call_thought_signatures__"
138142
)
139143

144+
_MODEL_PROFILES = cast("ModelProfileRegistry", _PROFILES)
145+
146+
147+
def _get_default_model_profile(model_name: str) -> ModelProfile:
148+
default = _MODEL_PROFILES.get(model_name) or {}
149+
return default.copy()
150+
140151

141152
def _bytes_to_base64(data: bytes) -> str:
142153
return base64.b64encode(data).decode("utf-8")
@@ -2070,6 +2081,14 @@ def async_client(self) -> v1betaGenerativeServiceAsyncClient:
20702081
)
20712082
return self.async_client_running
20722083

2084+
@model_validator(mode="after")
2085+
def _set_model_profile(self) -> Self:
2086+
"""Set model profile if not overridden."""
2087+
if self.profile is None:
2088+
model_id = re.sub(r"-\d{3}$", "", self.model.replace("models/", ""))
2089+
self.profile = _get_default_model_profile(model_id)
2090+
return self
2091+
20732092
@property
20742093
def _identifying_params(self) -> dict[str, Any]:
20752094
"""Get the identifying parameters."""
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
"""Model profile data. All edits should be made in profile_augmentations.toml."""

0 commit comments

Comments
 (0)