Skip to content

Commit 5b7f298

Browse files
.
1 parent 33c9dcd commit 5b7f298

3 files changed

Lines changed: 47 additions & 32 deletions

File tree

deepeval/openai_agents/runner.py

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,32 @@
33
from dataclasses import replace
44
from typing import List, Any
55

6-
from agents import (
7-
RunConfig,
8-
RunResult,
9-
RunResultStreaming,
10-
Runner as AgentsRunner,
11-
)
12-
from agents.agent import Agent
13-
from agents.models.interface import ModelProvider
14-
from agents.items import TResponseInputItem
15-
from agents.lifecycle import RunHooks
16-
from agents.memory import Session
17-
from agents.run import DEFAULT_MAX_TURNS
18-
from agents.run import AgentRunner
19-
from agents.run_context import TContext
20-
from agents.models.interface import Model
6+
try:
7+
from agents import (
8+
RunConfig,
9+
RunResult,
10+
RunResultStreaming,
11+
Runner as AgentsRunner,
12+
)
13+
from agents.agent import Agent
14+
from agents.models.interface import ModelProvider
15+
from agents.items import TResponseInputItem
16+
from agents.lifecycle import RunHooks
17+
from agents.memory import Session
18+
from agents.run import DEFAULT_MAX_TURNS
19+
from agents.run import AgentRunner
20+
from agents.run_context import TContext
21+
from agents.models.interface import Model
22+
agents_available = True
23+
except:
24+
agents_available = False
25+
26+
def is_agents_available():
27+
if not agents_available:
28+
raise ImportError(
29+
"agents is required for this integration. Install it via your package manager"
30+
)
31+
2132

2233
from deepeval.tracing.tracing import Observer
2334
from deepeval.tracing.context import current_span_context, current_trace_context
@@ -57,8 +68,8 @@ def patched_get_model(cls, agent: Agent[Any], run_config: RunConfig) -> Model:
5768
AgentRunner._get_model = patched_get_model
5869
_PATCHED_DEFAULT_GET_MODEL = True
5970

60-
61-
_patch_default_agent_runner_get_model()
71+
if agents_available:
72+
_patch_default_agent_runner_get_model()
6273

6374
class Runner(AgentsRunner):
6475

@@ -85,7 +96,7 @@ async def run(
8596
user_id: str | None = None,
8697
**kwargs, # backwards compatibility
8798
) -> RunResult:
88-
99+
is_agents_available()
89100
# _patch_default_agent_runner_get_model()
90101

91102
with Observer(
@@ -154,6 +165,7 @@ def run_sync(
154165
user_id: str | None = None,
155166
**kwargs,
156167
) -> RunResult:
168+
is_agents_available()
157169
input_val = input
158170

159171
update_trace_attributes(
@@ -223,7 +235,7 @@ def run_streamed(
223235
user_id: str | None = None,
224236
**kwargs, # backwards compatibility
225237
) -> RunResultStreaming:
226-
238+
is_agents_available()
227239
# Manually enter observer; we'll exit when streaming finishes
228240
observer = Observer(
229241
span_type="custom",

tests/test_integrations/test_openai_agents/multi_agents.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from deepeval.openai_agents import Agent, Runner
21
import asyncio
2+
from deepeval.openai_agents import Agent, Runner
33
from deepeval.prompt import Prompt
44
from deepeval.openai_agents import DeepEvalTracingProcessor
55

@@ -27,15 +27,18 @@
2727
instructions="Handoff to the appropriate agent based on the language of the request.",
2828
handoffs=[spanish_agent, english_agent],
2929
)
30-
3130
async def main():
32-
result = await Runner.run(
33-
triage_agent, input="Hola, ¿cómo estás?",
34-
metric_collection="test_collection_1",
35-
tags=["test"],
36-
thread_id="test",
37-
)
38-
39-
print(result.final_output)
40-
41-
asyncio.run(main())
31+
# result = await Runner.run(
32+
# triage_agent, input="Hola, ¿cómo estás?",
33+
# metric_collection="test_collection_1",
34+
# tags=["test"],
35+
# thread_id="test",
36+
# )
37+
38+
runner = Runner()
39+
result = runner.run_streamed(triage_agent, "Hola, ¿cómo estás?", metric_collection="test_collection_1", thread_id="test")
40+
async for chunk in result.stream_events():
41+
print(chunk, end="", flush=True)
42+
print("="*50)
43+
44+
# asyncio.run(main())

tests/test_integrations/test_openai_agents/streaming.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ async def main():
1010
print(chunk, end="", flush=True)
1111
print("="*50)
1212

13-
asyncio.run(main())
13+
# asyncio.run(main())

0 commit comments

Comments
 (0)