The synchronous client provides blocking operations for interacting with RunAgent. Perfect for scripts, simple applications, and when you don’t need concurrent operations.
response = client.run_generic_with_metadata({"query": "Test"})# Access result and metadataprint(response.result) # Actual agent responseprint(response.execution_time) # Time takenprint(response.tokens_used) # Token usageprint(response.agent_version) # Agent version
# Maintain conversation contextsession_id = "conv-123"# First messageresponse1 = client.run_generic({ "query": "My name is Alice", "session_id": session_id})# Follow-up messageresponse2 = client.run_generic({ "query": "What's my name?", "session_id": session_id})# Should remember "Alice"
# Good - create onceclient = RunAgentClient(agent_id="...")for item in items: client.run_generic(item)# Bad - create every timefor item in items: client = RunAgentClient(agent_id="...") client.run_generic(item)
Handle Timeouts
Copy
try: result = client.run_generic(data, timeout=10)except TimeoutError: # Handle timeout appropriately result = {"error": "Request timed out"}
Log Requests
Copy
import logginglogging.basicConfig(level=logging.INFO)logger = logging.getLogger(__name__)def run_with_logging(client, data): logger.info(f"Request: {data}") try: result = client.run_generic(data) logger.info(f"Response: {result}") return result except Exception as e: logger.error(f"Error: {e}") raise