Skip to content

Commit d8a19fd

Browse files
authored
(fix): start session no longer throws on agent ops
1 parent 7cfaceb commit d8a19fd

File tree

2 files changed

+71
-24
lines changed

2 files changed

+71
-24
lines changed

src/multion/client.py

Lines changed: 58 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import typing
2-
32
from .base_client import AsyncBaseMultiOn, BaseMultiOn
43
from .sessions.wrapped_client import (
54
WrappedAsyncSessionsClient,
@@ -52,27 +51,48 @@ def __init__(
5251
agentops_api_key: typing.Optional[str] = os.getenv("AGENTOPS_API_KEY"),
5352
**kwargs
5453
):
54+
5555
super().__init__(*args, **kwargs)
56-
self.sessions = WrappedSessionsClient(client_wrapper=self._client_wrapper)
57-
if agentops_api_key is not None:
56+
self._agentops_api_key = agentops_api_key
57+
58+
self.sessions = WrappedSessionsClient(
59+
client_wrapper=self._client_wrapper, use_agentops=self._agentops_api_key is not None)
60+
61+
if self._agentops_api_key is not None:
5862
agentops.init(
5963
api_key=agentops_api_key,
6064
parent_key=os.getenv("AGENTOPS_PARENT_KEY"),
6165
auto_start_session=False,
6266
)
6367

64-
@agentops.record_function(event_name="browse") # type: ignore
65-
@wraps_function(BaseMultiOn.browse)
66-
def browse(self, *args, **kwargs) -> BrowseOutput:
67-
agentops.start_session(tags=["multion-sdk"])
68+
@wraps_function(BaseMultiOn.browse) # type: ignore
69+
def _browse(self, *args, **kwargs) -> BrowseOutput:
6870
return super().browse(*args, **kwargs)
6971

70-
@agentops.record_function(event_name="retrieve") # type: ignore
71-
@wraps_function(BaseMultiOn.retrieve)
72-
def retrieve(self, *args, **kwargs) -> RetrieveOutput:
73-
agentops.start_session(tags=["multion-sdk"])
72+
@wraps_function(BaseMultiOn.retrieve) # type: ignore
73+
def _retrieve(self, *args, **kwargs) -> RetrieveOutput:
7474
return super().retrieve(*args, **kwargs)
7575

76+
def browse(self, *args, **kwargs) -> BrowseOutput:
77+
if self._agentops_api_key is not None:
78+
agentops.start_session(tags=["multion-sdk"])
79+
80+
@agentops.record_function(event_name="browse")
81+
def wrapped_browse(*args, **kwargs):
82+
return self._browse(*args, **kwargs)
83+
return wrapped_browse(*args, **kwargs)
84+
return self._browse(*args, **kwargs)
85+
86+
def retrieve(self, *args, **kwargs) -> RetrieveOutput:
87+
if self._agentops_api_key is not None:
88+
agentops.start_session(tags=["multion-sdk"])
89+
90+
@agentops.record_function(event_name="retrieve")
91+
def wrapped_retrieve(*args, **kwargs):
92+
return self._retrieve(*args, **kwargs)
93+
return wrapped_retrieve(*args, **kwargs)
94+
return self._retrieve(*args, **kwargs)
95+
7696

7797
class AsyncMultiOn(AsyncBaseMultiOn):
7898
"""
@@ -111,22 +131,40 @@ def __init__(
111131
**kwargs
112132
):
113133
super().__init__(*args, **kwargs)
114-
self.sessions = WrappedAsyncSessionsClient(client_wrapper=self._client_wrapper)
134+
self._agentops_api_key = agentops_api_key
135+
self.sessions = WrappedAsyncSessionsClient(client_wrapper=self._client_wrapper,
136+
use_agentops=self._agentops_api_key is not None)
115137
if agentops_api_key is not None:
116138
agentops.init(
117139
api_key=agentops_api_key,
118140
parent_key=os.getenv("AGENTOPS_PARENT_KEY"),
119141
auto_start_session=False,
120142
)
121143

122-
@agentops.record_function(event_name="browse") # type: ignore
123-
@wraps_function(AsyncBaseMultiOn.browse)
124-
async def browse(self, *args, **kwargs) -> BrowseOutput:
125-
agentops.start_session(tags=["multion-sdk"])
144+
@wraps_function(AsyncBaseMultiOn.browse) # type: ignore
145+
async def _browse(self, *args, **kwargs) -> BrowseOutput:
126146
return await super().browse(*args, **kwargs)
127147

128-
@agentops.record_function(event_name="retrieve") # type: ignore
129-
@wraps_function(BaseMultiOn.retrieve)
130-
async def retrieve(self, *args, **kwargs) -> RetrieveOutput:
131-
agentops.start_session(tags=["multion-sdk"])
148+
@wraps_function(BaseMultiOn.retrieve) # type: ignore
149+
async def _retrieve(self, *args, **kwargs) -> RetrieveOutput:
132150
return await super().retrieve(*args, **kwargs)
151+
152+
async def browse(self, *args, **kwargs) -> BrowseOutput:
153+
if self._agentops_api_key is not None:
154+
agentops.start_session(tags=["multion-sdk"])
155+
156+
@agentops.record_function(event_name="browse")
157+
async def wrapped_browse(*args, **kwargs):
158+
return await self._browse(*args, **kwargs)
159+
return await wrapped_browse(*args, **kwargs)
160+
return await self._browse(*args, **kwargs)
161+
162+
async def retrieve(self, *args, **kwargs) -> RetrieveOutput:
163+
if self._agentops_api_key is not None:
164+
agentops.start_session(tags=["multion-sdk"])
165+
166+
@agentops.record_function(event_name="retrieve")
167+
async def wrapped_retrieve(*args, **kwargs):
168+
return await self._retrieve(*args, **kwargs) # type: ignore
169+
return await wrapped_retrieve(*args, **kwargs)
170+
return await self._retrieve(*args, **kwargs) # type: ignore

src/multion/sessions/wrapped_client.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from ..wrappers import wraps_function
12
from multion.sessions.client import AsyncSessionsClient, SessionsClient
23
import agentops # type: ignore
34
from agentops import ActionEvent, LLMEvent, ErrorEvent # type: ignore
@@ -11,13 +12,16 @@
1112
# this is used as the default value for optional parameters
1213
OMIT = typing.cast(typing.Any, ...)
1314

14-
from ..wrappers import wraps_function
15-
1615

1716
class WrappedSessionsClient(SessionsClient):
17+
def __init__(self, use_agentops: bool = False, *args, **kwargs):
18+
super().__init__(*args, **kwargs)
19+
self.use_agentops = use_agentops
20+
1821
@wraps_function(SessionsClient.create) # type: ignore
1922
def create(self, *args, **kwargs) -> SessionCreated:
20-
agentops.start_session(tags=["multion-sdk"])
23+
if self.use_agentops:
24+
agentops.start_session(tags=["multion-sdk"])
2125
try:
2226
return super().create(*args, **kwargs)
2327
except Exception as e:
@@ -68,9 +72,14 @@ def close(self, *args, **kwargs) -> SessionsCloseResponse:
6872

6973

7074
class WrappedAsyncSessionsClient(AsyncSessionsClient):
75+
def __init__(self, use_agentops: bool = False, *args, **kwargs):
76+
super().__init__(*args, **kwargs)
77+
self.use_agentops = use_agentops
78+
7179
@wraps_function(AsyncSessionsClient.create) # type: ignore
7280
async def create(self, *args, **kwargs) -> SessionCreated:
73-
agentops.start_session(tags=["multion-sdk"])
81+
if self.use_agentops:
82+
agentops.start_session(tags=["multion-sdk"])
7483
try:
7584
return await super().create(*args, **kwargs)
7685
except Exception as e:

0 commit comments

Comments
 (0)