77from agentops .log_config import logger
88from agentops .singleton import singleton
99
10+ # Store original methods at module level
11+ _ORIGINAL_METHODS = {}
12+
1013
1114@singleton
1215class GeminiProvider (BaseProvider ):
@@ -16,7 +19,11 @@ class GeminiProvider(BaseProvider):
1619 is called and the google.generativeai package is imported. No manual
1720 initialization is required."""
1821
19- _original_generate = None # Store as class attribute
22+ """Provider for Google's Gemini API.
23+
24+ This provider is automatically detected and initialized when agentops.init()
25+ is called and the google.generativeai package is imported. No manual
26+ initialization is required."""
2027
2128 def __init__ (self , client = None ):
2229 """Initialize the Gemini provider.
@@ -127,8 +134,8 @@ def override(self):
127134 import google .generativeai as genai
128135
129136 # Store original method if not already stored
130- if GeminiProvider . _original_generate is None :
131- GeminiProvider . _original_generate = genai .GenerativeModel .generate_content
137+ if 'generate_content' not in _ORIGINAL_METHODS :
138+ _ORIGINAL_METHODS [ 'generate_content' ] = genai .GenerativeModel .generate_content
132139
133140 # Store provider instance for the closure
134141 provider = self
@@ -138,8 +145,8 @@ def patched_function(self, *args, **kwargs):
138145 session = kwargs .pop ("session" , None ) # Always try to pop session, returns None if not present
139146
140147 # Call original method and track event
141- if GeminiProvider . _original_generate :
142- result = GeminiProvider . _original_generate (self , * args , ** kwargs )
148+ if 'generate_content' in _ORIGINAL_METHODS :
149+ result = _ORIGINAL_METHODS [ 'generate_content' ] (self , * args , ** kwargs )
143150 return provider .handle_response (result , kwargs , init_timestamp , session = session )
144151 else :
145152 logger .error ("Original generate_content method not found. Cannot proceed with override." )
@@ -154,6 +161,6 @@ def undo_override(self):
154161 Note:
155162 This method is called automatically by AgentOps during cleanup.
156163 Users should not call this method directly."""
157- if GeminiProvider . _original_generate is not None :
164+ if 'generate_content' in _ORIGINAL_METHODS :
158165 import google .generativeai as genai
159- genai .GenerativeModel .generate_content = GeminiProvider . _original_generate
166+ genai .GenerativeModel .generate_content = _ORIGINAL_METHODS [ 'generate_content' ]
0 commit comments