feat: support Gemini via Vertex AI as LLM provider (#4030)

Co-authored-by: kartik-mem0 <kartik.labhshetwar@mem0.ai>
This commit is contained in:
Aayush Soni
2026-06-16 16:59:06 +05:30
committed by GitHub
co-authored by kartik-mem0
parent 7c841a2bce
commit d772f9a961
4 changed files with 160 additions and 5 deletions
+25 -4
View File
@@ -1,5 +1,5 @@
import os
from typing import Dict, List, Optional
from typing import Dict, List, Optional, Union
try:
from google import genai
@@ -8,18 +8,39 @@ except ImportError:
raise ImportError("The 'google-genai' library is required. Please install it using 'pip install google-genai'.")
from mem0.configs.llms.base import BaseLlmConfig
from mem0.configs.llms.gemini import GeminiConfig
from mem0.llms.base import LLMBase
class GeminiLLM(LLMBase):
def __init__(self, config: Optional[BaseLlmConfig] = None):
def __init__(self, config: Optional[Union[BaseLlmConfig, GeminiConfig, Dict]] = None):
# Convert to GeminiConfig if needed
if config is None:
config = GeminiConfig()
elif isinstance(config, dict):
config = GeminiConfig(**config)
elif isinstance(config, BaseLlmConfig) and not isinstance(config, GeminiConfig):
config = GeminiConfig(
model=config.model,
temperature=config.temperature,
api_key=config.api_key,
max_tokens=config.max_tokens,
top_p=config.top_p,
top_k=config.top_k,
enable_vision=config.enable_vision,
vision_details=config.vision_details,
)
super().__init__(config)
if not self.config.model:
self.config.model = "gemini-2.0-flash"
api_key = self.config.api_key or os.getenv("GOOGLE_API_KEY")
self.client = genai.Client(api_key=api_key)
if self.config.vertexai:
self.client = genai.Client(vertexai=True, project=self.config.project, location=self.config.location)
else:
api_key = self.config.api_key or os.getenv("GOOGLE_API_KEY")
self.client = genai.Client(api_key=api_key)
def _parse_response(self, response, tools):
"""