65 lines
2.5 KiB
Python
65 lines
2.5 KiB
Python
import os
|
|
from typing import Optional
|
|
|
|
from mem0.configs.llms.base import BaseLlmConfig
|
|
|
|
|
|
class GeminiConfig(BaseLlmConfig):
|
|
"""
|
|
Configuration class for Google Gemini LLM.
|
|
|
|
Supports both the Gemini Developer API (via API key) and Vertex AI (via GCP credentials).
|
|
"""
|
|
|
|
def __init__(
|
|
self,
|
|
# Base parameters
|
|
model: Optional[str] = None,
|
|
temperature: float = 0.1,
|
|
api_key: Optional[str] = None,
|
|
max_tokens: int = 2000,
|
|
top_p: float = 0.1,
|
|
top_k: int = 1,
|
|
enable_vision: bool = False,
|
|
vision_details: Optional[str] = "auto",
|
|
http_client_proxies: Optional[dict] = None,
|
|
# Gemini-specific parameters
|
|
vertexai: Optional[bool] = None,
|
|
project: Optional[str] = None,
|
|
location: Optional[str] = None,
|
|
):
|
|
"""
|
|
Initialize Gemini configuration.
|
|
|
|
Args:
|
|
model: Gemini model to use (e.g., "gemini-2.0-flash"), defaults to None
|
|
temperature: Controls randomness, defaults to 0.1
|
|
api_key: Google API key for the Gemini Developer API, defaults to None
|
|
max_tokens: Maximum tokens to generate, defaults to 2000
|
|
top_p: Nucleus sampling parameter, defaults to 0.1
|
|
top_k: Top-k sampling parameter, defaults to 1
|
|
enable_vision: Enable vision capabilities, defaults to False
|
|
vision_details: Vision detail level, defaults to "auto"
|
|
http_client_proxies: HTTP client proxy settings, defaults to None
|
|
vertexai: Whether to use Vertex AI backend. If None, checks GOOGLE_GENAI_USE_VERTEXAI env var.
|
|
project: GCP project ID for Vertex AI. If None, checks GOOGLE_CLOUD_PROJECT env var.
|
|
location: GCP location for Vertex AI. If None, checks GOOGLE_CLOUD_LOCATION env var.
|
|
"""
|
|
super().__init__(
|
|
model=model,
|
|
temperature=temperature,
|
|
api_key=api_key,
|
|
max_tokens=max_tokens,
|
|
top_p=top_p,
|
|
top_k=top_k,
|
|
enable_vision=enable_vision,
|
|
vision_details=vision_details,
|
|
http_client_proxies=http_client_proxies,
|
|
)
|
|
|
|
if vertexai is None:
|
|
vertexai = os.getenv("GOOGLE_GENAI_USE_VERTEXAI", "").lower() in ("true", "1", "yes")
|
|
self.vertexai = vertexai
|
|
self.project = project or os.getenv("GOOGLE_CLOUD_PROJECT")
|
|
self.location = location or os.getenv("GOOGLE_CLOUD_LOCATION", "us-central1")
|