Skip to content

Commit d3567b4

Browse files
authored
Fix smoke test (#1057)
* see about fixing the smoke test. * fiddling * tidy up * Redact secret
1 parent 75e3c2d commit d3567b4

3 files changed

Lines changed: 35 additions & 2 deletions

File tree

plugins/google/modelgauge/suts/google_genai.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
This file defines google SUTs that use Google's genai python SDK.
33
"""
44

5+
import logging
6+
7+
logger = logging.getLogger(__name__)
8+
59
from typing import Optional
610

711
from google import genai
@@ -17,7 +21,7 @@
1721
from modelgauge.general import APIException
1822
from modelgauge.prompt import TextPrompt
1923
from modelgauge.retry_decorator import retry
20-
from modelgauge.secret_values import InjectSecret
24+
from modelgauge.secret_values import InjectSecret, loggable_secret
2125
from modelgauge.sut import REFUSAL_RESPONSE, PromptResponseSUT, SUTOptions, SUTResponse # usort: skip
2226
from modelgauge.sut_capabilities import AcceptsTextPrompt
2327
from modelgauge.sut_decorator import modelgauge_sut
@@ -44,7 +48,11 @@ def __init__(self, uid: str, model_name: str, reasoning: bool, api_key: GoogleAi
4448
self.api_key = api_key.value
4549

4650
def _load_client(self) -> genai.Client:
47-
return genai.Client(api_key=self.api_key)
51+
try:
52+
return genai.Client(api_key=self.api_key)
53+
except:
54+
logger.exception(f"Failed to load genai.Client with api_key='{loggable_secret(self.api_key)}'")
55+
raise
4856

4957
def translate_text_prompt(self, prompt: TextPrompt, options: SUTOptions) -> GenAiRequest:
5058
optional = {}

src/modelgauge/secret_values.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,18 @@
77
from modelgauge.general import get_concrete_subclasses
88

99

10+
def loggable_secret(secret: str) -> str:
11+
if str is None or not isinstance(secret, str):
12+
return secret
13+
if len(secret) == 0:
14+
val = "''"
15+
elif len(secret) < 10:
16+
val = "'…'"
17+
else:
18+
val = f"'{secret[0:2]}{secret[-2:]}'"
19+
return f"[REDACTED, len={len(secret)}, val={val}]"
20+
21+
1022
class SecretDescription(BaseModel):
1123
"""How to look up a secret and how to get the value if you don't have it."""
1224

tests/modelgauge_tests/test_secret_values.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import pytest
2+
23
from modelgauge.general import get_class
34
from modelgauge.secret_values import (
45
InjectSecret,
@@ -8,6 +9,7 @@
89
SecretDescription,
910
SerializedSecret,
1011
get_all_secrets,
12+
loggable_secret,
1113
)
1214

1315

@@ -109,3 +111,14 @@ def test_inject_required_missing():
109111
injector = InjectSecret(SomeRequiredSecret)
110112
with pytest.raises(MissingSecretValues):
111113
injector.inject({"some-scope": {"different-key": "some-value"}})
114+
115+
116+
def test_loggable_secret_string():
117+
assert loggable_secret("abcdefghijklmnopqrstuvwxyz") == "[REDACTED, len=26, val='ab…yz']"
118+
119+
assert loggable_secret(None) is None
120+
assert loggable_secret(1234) is 1234
121+
assert loggable_secret("") == "[REDACTED, len=0, val='']"
122+
assert loggable_secret("az") == "[REDACTED, len=2, val='…']"
123+
assert loggable_secret("abcd1wxyz") == "[REDACTED, len=9, val='…']"
124+
assert loggable_secret("abcdevwxyz") == "[REDACTED, len=10, val='ab…yz']"

0 commit comments

Comments
 (0)