Skip to content

Commit aed3a1b

Browse files
fix: Use module-level storage for original method
Co-Authored-By: Alex Reibman <meta.alex.r@gmail.com>
1 parent a27b2e4 commit aed3a1b

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

agentops/llms/providers/gemini.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
from agentops.log_config import logger
88
from agentops.singleton import singleton
99

10+
# Store original methods at module level
11+
_ORIGINAL_METHODS = {}
12+
1013

1114
@singleton
1215
class 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']

agentops/llms/tracker.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,12 @@ def override_api(self):
222222
import os
223223
api_key = os.getenv("GEMINI_API_KEY")
224224
if api_key:
225-
genai.configure(api_key=api_key)
226-
model = genai.GenerativeModel("gemini-1.5-flash")
227-
provider = GeminiProvider()
228-
provider.override()
225+
try:
226+
genai.configure(api_key=api_key)
227+
provider = GeminiProvider()
228+
provider.override()
229+
except Exception as e:
230+
logger.warning(f"Failed to initialize Gemini provider: {str(e)}")
229231
else:
230232
logger.warning("GEMINI_API_KEY environment variable is required for Gemini integration")
231233
else:

0 commit comments

Comments
 (0)