mirror of
https://github.com/LearningCircuit/local-deep-research.git
synced 2026-06-16 03:51:07 +03:00
Provides a much simpler way to use the LDR API by abstracting away all the
authentication complexity. Users no longer need to manually handle CSRF tokens,
parse HTML, or manage sessions.
Changes:
- Add LDRClient class that handles all auth complexity internally
- Add quick_query() function for one-line research queries
- Automatic CSRF token extraction and management
- Context manager support for auto-cleanup
- Built-in polling for research results
Example usage is now as simple as:
```python
summary = quick_query("user", "pass", "What is DNA?")
```
This addresses user feedback about API complexity while maintaining
security through proper CSRF protection.
132 lines
4.0 KiB
Python
132 lines
4.0 KiB
Python
#!/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!")
|