mlops-agent / test_streaming.py
Abid Ali Awan
refactor: Revise system prompts and enhance output extraction in Gradio application to improve clarity, formatting, and user interaction during data operations, while streamlining the chat response process.
788acd9
#!/usr/bin/env python3
"""
Test the optimized single-phase streaming functionality
"""
import os
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
from app import MAIN_SYSTEM_PROMPT, MCP_TOOLS, client, MODEL
def test_streaming_with_tools():
"""
Test that the single-phase streaming works correctly
"""
csv_url = "https://mcp-1st-birthday-mlops-agent.hf.space/gradio_api/file=/tmp/gradio/6abcca54f954f2ad99a8f8f330dc6e8082f03ef3090458d97c274efcc76d0170/heart.csv"
user_with_file = f"[Uploaded CSV file URL: {csv_url}]\n\nAnalyze this dataset and show me basic statistics"
print("Testing Single-Phase Streaming...")
print(f"Input: {user_with_file[:100]}...")
print("-" * 60)
stream = client.responses.create(
model=MODEL,
instructions=MAIN_SYSTEM_PROMPT,
input=user_with_file,
tools=MCP_TOOLS,
reasoning={"effort": "low"},
stream=True,
)
print("Streaming Response:")
print("=" * 60)
final_text = ""
chunk_count = 0
for event in stream:
if event.type == "response.output_text.delta":
chunk_count += 1
final_text += event.delta
print(f"[Chunk {chunk_count}] {event.delta[:50]}...")
elif event.type == "response.completed":
print("=" * 60)
print(f"Total chunks: {chunk_count}")
print(f"Total length: {len(final_text)} characters")
print("FINAL RESPONSE:")
print(final_text)
break
return final_text
def test_streaming_without_tools():
"""
Test that regular streaming works for non-tool requests
"""
print("\nTesting Regular Streaming (No Tools)...")
print("-" * 60)
stream = client.responses.create(
model=MODEL,
instructions=MAIN_SYSTEM_PROMPT,
input="Hello! Can you explain what MLOps is in simple terms?",
reasoning={"effort": "low"},
stream=True,
)
print("Streaming Response:")
print("=" * 60)
final_text = ""
chunk_count = 0
for event in stream:
if event.type == "response.output_text.delta":
chunk_count += 1
final_text += event.delta
print(f"[Chunk {chunk_count}] {event.delta[:50]}...")
elif event.type == "response.completed":
print("=" * 60)
print(f"Total chunks: {chunk_count}")
print(f"Total length: {len(final_text)} characters")
print("FINAL RESPONSE:")
print(final_text)
break
return final_text
if __name__ == "__main__":
print("Starting Streaming Tests")
print("=" * 60)
# Test 1: With MCP tools
response1 = test_streaming_with_tools()
# Test 2: Without tools
response2 = test_streaming_without_tools()
print("\n" + "=" * 60)
print("✅ Both streaming tests completed successfully!")
print("✅ Single-phase approach working correctly!")
print("✅ MCP tools returning natural language responses!")
print("✅ Response is properly streaming in chunks!")
print("=" * 60)