Move tracing toggle and max child turns to .env file

This commit is contained in:
akhisud3195 2025-05-06 22:47:35 +05:30
parent e59a8b75cf
commit 69316aee60
5 changed files with 29 additions and 32 deletions

View file

@ -7,7 +7,5 @@
"max_messages_per_turn": 20,
"max_messages_per_error_escalation_turn": 15,
"escalate_errors": true,
"max_overall_turns": 25,
"max_calls_per_child_agent": 1,
"enable_tracing": false
"max_overall_turns": 25
}

View file

@ -16,6 +16,10 @@ app = Quart(__name__)
master_config = read_json_from_file("./configs/default_config.json")
print("Master config:", master_config)
# Get environment variables with defaults
MAX_CALLS_PER_CHILD_AGENT = int(os.environ.get('MAX_CALLS_PER_CHILD_AGENT', '1'))
ENABLE_TRACING = os.environ.get('ENABLE_TRACING', 'false').lower() == 'true'
# filter out agent transfer messages using a function
def is_agent_transfer_message(msg):
if (msg.get("role") == "assistant" and
@ -63,9 +67,6 @@ async def chat():
request_data = await request.get_json()
print("Request:", json.dumps(request_data))
# Add enable_tracing from master_config to request_data
request_data["enable_tracing"] = master_config.get("enable_tracing", False)
# filter out agent transfer messages
input_messages = [msg for msg in request_data["messages"] if not is_agent_transfer_message(msg)]
@ -93,10 +94,11 @@ async def chat():
tool_configs=data.get("tools", []),
prompt_configs=data.get("prompts", []),
start_turn_with_start_agent=master_config.get("start_turn_with_start_agent", False),
max_calls_per_child_agent=master_config.get("max_calls_per_child_agent", 1),
max_calls_per_child_agent=MAX_CALLS_PER_CHILD_AGENT,
state=data.get("state", {}),
additional_tool_configs=[RAG_TOOL, CLOSE_CHAT_TOOL],
complete_request=data
complete_request=data,
enable_tracing=ENABLE_TRACING
):
if event_type == 'message':
messages.append(event_data)
@ -135,9 +137,6 @@ async def chat_stream():
print("Request:", request_data.decode('utf-8'))
request_data = json.loads(request_data)
# Add enable_tracing from master_config to request_data
request_data["enable_tracing"] = master_config.get("enable_tracing", False)
# filter out agent transfer messages
input_messages = [msg for msg in request_data["messages"] if not is_agent_transfer_message(msg)]
@ -164,10 +163,11 @@ async def chat_stream():
tool_configs=request_data.get("tools", []),
prompt_configs=request_data.get("prompts", []),
start_turn_with_start_agent=master_config.get("start_turn_with_start_agent", False),
max_calls_per_child_agent=master_config.get("max_calls_per_child_agent", 1),
max_calls_per_child_agent=MAX_CALLS_PER_CHILD_AGENT,
state=request_data.get("state", {}),
additional_tool_configs=[RAG_TOOL, CLOSE_CHAT_TOOL],
complete_request=request_data
complete_request=request_data,
enable_tracing=ENABLE_TRACING
):
if event_type == 'message':
yield format_sse(event_data, "message")

View file

@ -192,9 +192,6 @@ async def run_turn_streamed(
async for event in stream_result.stream_events():
try:
print('-'*100)
print(f"Event: {event}")
print('-'*100)
# Handle web search events
if event.type == "raw_response_event":
web_search_messages = handle_web_search_event(event, current_agent)
@ -211,7 +208,6 @@ async def run_turn_streamed(
# Handle agent transfer
elif event.type == "agent_updated_stream_event":
# print(f"\nAgent transfer attempt: {current_agent.name} -> {event.new_agent.name}")
# Skip self-transfers
if current_agent.name == event.new_agent.name:

View file

@ -281,7 +281,7 @@ async def run_streamed(
messages,
external_tools=None,
tokens_used=None,
enable_tracing=False # Changed default to False
enable_tracing=False
):
"""
Wrapper function for initializing and running the Swarm client in streaming mode.
@ -319,25 +319,26 @@ async def run_streamed(
add_trace_processor(trace_processor)
trace_processor_added = True
# Create a trace context only if tracing is enabled
trace_ctx = None
if enable_tracing:
trace_ctx = trace(f"Agent turn: {agent.name}")
trace_ctx.__enter__()
# Get the stream result
# Get the stream result without trace context first
stream_result = Runner.run_streamed(agent, formatted_messages)
# Patch the stream_events method to ensure trace context is maintained if tracing is enabled
# If tracing is enabled, wrap the stream_events to handle tracing
if enable_tracing:
original_stream_events = stream_result.stream_events
async def wrapped_stream_events():
try:
async for event in original_stream_events():
yield event
finally:
if trace_ctx:
trace_ctx.__exit__(None, None, None)
# Create trace context inside the async function
with trace(f"Agent turn: {agent.name}") as trace_ctx:
try:
async for event in original_stream_events():
yield event
except GeneratorExit:
# Handle generator exit gracefully
raise
except Exception as e:
print(f"Error in stream events: {str(e)}")
raise
stream_result.stream_events = wrapped_stream_events
return stream_result

View file

@ -56,6 +56,8 @@ services:
- PROVIDER_BASE_URL=${PROVIDER_BASE_URL}
- PROVIDER_API_KEY=${PROVIDER_API_KEY}
- PROVIDER_DEFAULT_MODEL=${PROVIDER_DEFAULT_MODEL}
- MAX_CALLS_PER_CHILD_AGENT=${MAX_CALLS_PER_CHILD_AGENT}
- ENABLE_TRACING=${ENABLE_TRACING}
restart: unless-stopped
copilot: