Skip to content

Commit 1a51fb4

Browse files
authored
fix(google_gemini.py): copilot recommendations implemented
1 parent b29125d commit 1a51fb4

File tree

1 file changed

+35
-8
lines changed

1 file changed

+35
-8
lines changed

pipelines/google/google_gemini.py

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,8 @@ class Valves(BaseModel):
195195
description="Vertex AI RAG Store path for grounding (e.g., projects/PROJECT/locations/LOCATION/ragCorpora/DATA_STORE_ID). Only used when USE_VERTEX_AI is true.",
196196
)
197197
USE_PERMISSIVE_SAFETY: bool = Field(
198-
default=os.getenv("GOOGLE_USE_PERMISSIVE_SAFETY", "false").lower() == "true",
198+
default=os.getenv("GOOGLE_USE_PERMISSIVE_SAFETY", "false").lower()
199+
== "true",
199200
description="Use permissive safety settings for content generation.",
200201
)
201202
MODEL_CACHE_TTL: int = Field(
@@ -212,7 +213,9 @@ class Valves(BaseModel):
212213
"this is prepended to it. Leave empty to disable.",
213214
)
214215
ENABLE_FORWARD_USER_INFO_HEADERS: bool = Field(
215-
default=os.getenv("GOOGLE_ENABLE_FORWARD_USER_INFO_HEADERS", "false").lower()
216+
default=os.getenv(
217+
"GOOGLE_ENABLE_FORWARD_USER_INFO_HEADERS", "false"
218+
).lower()
216219
== "true",
217220
description="Whether to forward user information headers.",
218221
)
@@ -576,14 +579,38 @@ def _get_client(self) -> genai.Client:
576579
and hasattr(self, "user")
577580
and self.user
578581
):
579-
headers = {
580-
"X-OpenWebUI-User-Name": self.user.name,
581-
"X-OpenWebUI-User-Id": self.user.id,
582-
"x-openwebui-user-email": self.user.email,
583-
"X-OpenWebUI-User-Role": self.user.role,
582+
583+
def sanitize_header_value(value: Any, max_length: int = 255) -> str:
584+
if value is None:
585+
return ""
586+
# Convert to string and remove all control characters
587+
sanitized = re.sub(r"[\x00-\x1F\x7F]", "", str(value))
588+
sanitized = sanitized.strip()
589+
return (
590+
sanitized[:max_length]
591+
if len(sanitized) > max_length
592+
else sanitized
593+
)
594+
595+
user_attrs = {
596+
"X-OpenWebUI-User-Name": sanitize_header_value(
597+
getattr(self.user, "name", None)
598+
),
599+
"X-OpenWebUI-User-Id": sanitize_header_value(
600+
getattr(self.user, "id", None)
601+
),
602+
"X-OpenWebUI-User-Email": sanitize_header_value(
603+
getattr(self.user, "email", None)
604+
),
605+
"X-OpenWebUI-User-Role": sanitize_header_value(
606+
getattr(self.user, "role", None)
607+
),
584608
}
609+
headers = {k: v for k, v in user_attrs.items() if v not in (None, "")}
585610
options = types.HttpOptions(
586-
api_version=self.valves.API_VERSION, base_url=self.valves.BASE_URL, headers=headers
611+
api_version=self.valves.API_VERSION,
612+
base_url=self.valves.BASE_URL,
613+
headers=headers,
587614
)
588615
return genai.Client(
589616
api_key=EncryptedStr.decrypt(self.valves.GOOGLE_API_KEY),

0 commit comments

Comments
 (0)