| Server IP : 3.147.158.171 / Your IP : 216.73.216.88 Web Server : Apache/2.4.67 (Amazon Linux) OpenSSL/3.5.5 System : Linux ip-172-31-2-178.us-east-2.compute.internal 6.1.172-216.329.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Wed May 20 06:31:34 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.21 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /tsai/www/html/api.turmansolutions.ai/ |
Upload File : |
#!/usr/bin/env python
"""Test script for Tavily search integration"""
import sys
import os
# Add the project root to path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from app.services.chat import ChatService
def test_search():
"""Test Tavily search functionality"""
print("Testing Tavily Search Integration")
print("=" * 50)
cs = ChatService()
# Test 1: Basic search
print("\nTest 1: Searching for 'latest tech news'...")
results = cs.search_current_events('latest tech news', max_results=3)
print(f"Found {len(results)} results")
if results:
print("\nFirst result:")
print(f" Title: {results[0].get('title', 'N/A')}")
print(f" URL: {results[0].get('url', 'N/A')}")
print(f" Published: {results[0].get('published_date', 'N/A')}")
print(f" Score: {results[0].get('score', 'N/A')}")
print(f" Content (first 200 chars): {results[0].get('content', 'N/A')[:200]}...")
# Check for enhanced fields
if 'raw_content' in results[0]:
raw_len = len(results[0].get('raw_content', ''))
print(f" Raw content length: {raw_len} characters")
else:
print(" Raw content: NOT AVAILABLE (enable include_raw_content)")
if 'images' in results[0]:
images = results[0].get('images', [])
print(f" Images found: {len(images)}")
if images:
print(f" First image: {images[0]}")
else:
print(" Images: NOT AVAILABLE (enable include_images)")
else:
print(" No results found (check TAVILY_API_KEY in .env)")
# Test 2: Sports news search
print("\n\nTest 2: Searching for 'latest sports scores'...")
results = cs.search_current_events('latest sports scores', max_results=3)
print(f"Found {len(results)} results")
if results:
print("\nResults:")
for i, result in enumerate(results, 1):
print(f" {i}. {result.get('title', 'N/A')}")
# Test 3: Fact-checking with temporal context
print("\n\nTest 3: Fact-checking with temporal context...")
search_results = cs.search_current_events('Claude Code revenue 2025', max_results=3)
if not search_results:
print(" Skipped (no search results)")
else:
# Mock article about recent event
article_title = "Claude Code Reaches $1B Revenue Milestone"
article_body = """Claude Code, Anthropic's AI coding assistant, reached a $1 billion
run-rate revenue achievement just six months after its public launch in May 2025."""
print(f" Running fact-check with {len(search_results)} sources...")
# Run fact-check
try:
fact_check, model, provider = cs.fact_check_article(
article_title=article_title,
article_body=article_body,
images=[],
original_model=None,
search_results=search_results
)
print(f" Model: {provider} {model}")
print(f" Fact-check length: {len(fact_check)} characters")
print(f" First 300 chars: {fact_check[:300]}...")
# Check for temporal context markers
has_temporal_markers = any(marker in fact_check for marker in ['CURRENT EVENT', 'RECENT', 'days ago', 'weeks ago'])
print(f" Contains temporal context: {has_temporal_markers}")
if has_temporal_markers:
print(" ✓ Temporal context successfully included in fact-check")
else:
print(" ⚠ Warning: No temporal context markers found in fact-check")
except Exception as e:
print(f" Error during fact-check: {e}")
print("\n" + "=" * 50)
print("Test complete!")
if __name__ == "__main__":
test_search()