Skip to content

Commit 4cbb9ea

Browse files
.
1 parent 3d5cd1c commit 4cbb9ea

2 files changed

Lines changed: 27 additions & 8 deletions

File tree

deepeval/integrations/portkey/patcher.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from deepeval.metrics import BaseMetric
77
try:
88
from portkey_ai import Portkey
9-
from portkey_ai.api_resources.apis.chat_complete import Completions
9+
from portkey_ai.api_resources.apis.chat_complete import Completions, ChatCompletions
1010
is_portkey_installed = True
1111
except Exception:
1212
is_portkey_installed = False
@@ -44,7 +44,7 @@ def new_create(*args, **kwargs):
4444
func_name="LLM",
4545
) as observer:
4646
result = original_create(*args, **kwargs)
47-
observer.result = result
47+
observer.result = extract_chat_completion_messages(result)
4848
current_span_context.get().input = kwargs.get("messages")
4949
return result
5050

@@ -53,4 +53,27 @@ def new_create(*args, **kwargs):
5353

5454
def instrument():
5555
is_portkey_available()
56-
_patch_portkey_init()
56+
_patch_portkey_init()
57+
58+
def extract_chat_completion_messages(result: ChatCompletions):
59+
try:
60+
choices = None
61+
if hasattr(result, "choices"):
62+
choices = result.choices
63+
elif isinstance(result, dict):
64+
choices = result.get("choices")
65+
66+
messages = []
67+
if isinstance(choices, list):
68+
for c in choices:
69+
message = None
70+
if hasattr(c, "message"):
71+
message = c.message
72+
elif isinstance(c, dict):
73+
message = c.get("message")
74+
if message is not None:
75+
messages.append(make_json_serializable(message))
76+
77+
return messages if messages else make_json_serializable(result)
78+
except Exception:
79+
return make_json_serializable(result)

tests/test_integrations/test_portkey/portkey_app.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,15 @@
11
import os
2-
from dotenv import load_dotenv
32
from portkey_ai import Portkey
43

5-
load_dotenv()
6-
74
from deepeval.integrations.portkey import instrument
85
instrument()
96

107
config = {
118
"provider": 'openai',
12-
"api_key": os.getenv("PORTKEY_API_KEY")
9+
"api_key": os.getenv("OPENAI_API_KEY")
1310
}
1411

1512
client = Portkey(config = config, metric_collection="test_collection_1")
16-
print(client)
1713

1814
# Example: Send a chat completion request
1915
response = client.chat.completions.create(

0 commit comments

Comments
 (0)