#!/usr/bin/env python3 """ Simple API Client Example - No more CSRF complexity! This shows how easy it is to use the LDR API with the new client. All the CSRF token handling is done automatically. """ from local_deep_research.api import LDRClient, quick_query # Configuration USERNAME = "your_username" # Change this! PASSWORD = "your_password" # Change this! def example_1_simple(): """Simplest possible usage - one line research.""" print("=== Example 1: One-liner ===") # Just one line to get a research summary! summary = quick_query(USERNAME, PASSWORD, "What is machine learning?") print(f"Summary: {summary[:200]}...") def example_2_client(): """Using the client for multiple operations.""" print("\n=== Example 2: Client Usage ===") # Create client client = LDRClient() # Login once if not client.login(USERNAME, PASSWORD): print("Login failed!") return # Now just use it - no more CSRF hassles! try: # Do research result = client.quick_research("What are neural networks?") print("Research complete!") print(f"Summary: {result['summary'][:200]}...") print(f"Sources found: {len(result.get('sources', []))}") # Check settings settings = client.get_settings() print( f"\nYou have {len(settings.get('settings', {}))} settings configured" ) # Get history history = client.get_history() print(f"You have {len(history)} items in history") finally: client.logout() def example_3_context_manager(): """Using context manager for automatic cleanup.""" print("\n=== Example 3: Context Manager ===") # Automatic login/logout with context manager with LDRClient() as client: if client.login(USERNAME, PASSWORD): # Start research without waiting result = client.quick_research( "What is quantum computing?", wait_for_result=False ) print(f"Research started with ID: {result['research_id']}") # Do other things... print("Doing other work while research runs...") # Later, get the results final_result = client.wait_for_research(result["research_id"]) print(f"Research complete: {final_result['summary'][:100]}...") def example_4_batch_research(): """Running multiple research queries efficiently.""" print("\n=== Example 4: Batch Research ===") questions = [ "What is DNA?", "How do vaccines work?", "What causes earthquakes?", ] with LDRClient() as client: if not client.login(USERNAME, PASSWORD): print("Login failed!") return # Start all research tasks research_ids = [] for question in questions: result = client.quick_research(question, wait_for_result=False) research_ids.append((question, result["research_id"])) print(f"Started: {question}") print("\nWaiting for all results...") # Collect all results for question, research_id in research_ids: try: result = client.wait_for_research(research_id, timeout=120) print(f"\n{question}") print(f"→ {result['summary'][:150]}...") except Exception as e: print(f"\n{question}") print(f"→ Error: {e}") if __name__ == "__main__": print("LDR Simple Client Examples") print("=" * 50) print("\nBefore: Complex CSRF handling, HTML parsing, manual polling...") print("After: Just login() and quick_research()!") print("\nMake sure:") print("1. LDR server is running: python -m local_deep_research.web.app") print("2. You've updated USERNAME and PASSWORD in this script") print("=" * 50) # Uncomment the examples you want to run: # example_1_simple() # example_2_client() # example_3_context_manager() # example_4_batch_research() print("\nUncomment the examples in the script to run them!")