33from dataclasses import replace
44from 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
2233from deepeval .tracing .tracing import Observer
2334from 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
6374class 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" ,
0 commit comments