134 lines
4.1 KiB
Python
134 lines
4.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test script to diagnose Langfuse connectivity issues
|
|
"""
|
|
import json
|
|
import sys
|
|
|
|
print("=" * 60)
|
|
print("Langfuse Connection Diagnostic Tool")
|
|
print("=" * 60)
|
|
|
|
# Test 1: Check if required modules are installed
|
|
print("\n1. Checking required modules...")
|
|
try:
|
|
import boto3
|
|
print(" ✓ boto3 installed")
|
|
except ImportError:
|
|
print(" ✗ boto3 NOT installed")
|
|
sys.exit(1)
|
|
|
|
try:
|
|
from langfuse import Langfuse
|
|
print(" ✓ langfuse installed")
|
|
except ImportError:
|
|
print(" ✗ langfuse NOT installed")
|
|
sys.exit(1)
|
|
|
|
try:
|
|
from botocore.exceptions import ClientError
|
|
print(" ✓ botocore installed")
|
|
except ImportError:
|
|
print(" ✗ botocore NOT installed")
|
|
sys.exit(1)
|
|
|
|
# Test 2: Fetch secrets from AWS Secrets Manager
|
|
print("\n2. Fetching secrets from AWS Secrets Manager...")
|
|
secrets = None
|
|
try:
|
|
secret_name = "assistente-db-secrets-manager"
|
|
region_name = "us-east-1"
|
|
|
|
session = boto3.session.Session()
|
|
client = session.client(
|
|
service_name='secretsmanager',
|
|
region_name=region_name
|
|
)
|
|
|
|
get_secret_value_response = client.get_secret_value(SecretId=secret_name)
|
|
secret = get_secret_value_response['SecretString']
|
|
secrets = json.loads(secret)
|
|
|
|
print(f" ✓ Successfully fetched secrets")
|
|
print(f" ✓ Found keys: {list(secrets.keys())}")
|
|
|
|
# Check for Langfuse keys
|
|
has_public_key = 'LANGFUSE-PUBLIC-KEY' in secrets
|
|
has_secret_key = 'LANGFUSE-SECRET-KEY' in secrets
|
|
|
|
print(f" {'✓' if has_public_key else '✗'} LANGFUSE-PUBLIC-KEY {'found' if has_public_key else 'MISSING'}")
|
|
print(f" {'✓' if has_secret_key else '✗'} LANGFUSE-SECRET-KEY {'found' if has_secret_key else 'MISSING'}")
|
|
|
|
if not has_public_key or not has_secret_key:
|
|
print("\n ⚠ Langfuse credentials not found in Secrets Manager!")
|
|
secrets = None
|
|
|
|
except ClientError as e:
|
|
print(f" ⚠ Error fetching secrets: {e}")
|
|
print(" Will try with manual input...")
|
|
secrets = None
|
|
except Exception as e:
|
|
print(f" ⚠ Unexpected error: {e}")
|
|
print(" Will try with manual input...")
|
|
secrets = None
|
|
|
|
# If AWS Secrets Manager failed, try manual input
|
|
if secrets is None:
|
|
print("\n Please provide Langfuse credentials manually:")
|
|
public_key = input(" Enter LANGFUSE-PUBLIC-KEY: ").strip()
|
|
secret_key = input(" Enter LANGFUSE-SECRET-KEY: ").strip()
|
|
|
|
if not public_key or not secret_key:
|
|
print(" ✗ Both keys are required!")
|
|
sys.exit(1)
|
|
|
|
secrets = {
|
|
'LANGFUSE-PUBLIC-KEY': public_key,
|
|
'LANGFUSE-SECRET-KEY': secret_key
|
|
}
|
|
print(" ✓ Manual credentials provided")
|
|
|
|
# Test 3: Initialize Langfuse client
|
|
print("\n3. Initializing Langfuse client...")
|
|
try:
|
|
host = "http://98.92.98.83:3000"
|
|
langfuse = Langfuse(
|
|
public_key=secrets['LANGFUSE-PUBLIC-KEY'],
|
|
secret_key=secrets['LANGFUSE-SECRET-KEY'],
|
|
host=host
|
|
)
|
|
print(f" ✓ Langfuse client initialized with host: {host}")
|
|
except Exception as e:
|
|
print(f" ✗ Error initializing Langfuse: {e}")
|
|
sys.exit(1)
|
|
|
|
# Test 4: Test API connectivity
|
|
print("\n4. Testing Langfuse API connectivity...")
|
|
try:
|
|
# Create a simple test trace
|
|
trace = langfuse.trace(
|
|
name="connection_test",
|
|
user_id="diagnostic_script"
|
|
)
|
|
print(" ✓ Test trace created")
|
|
|
|
# Try to flush
|
|
langfuse.flush()
|
|
print(" ✓ Data flushed to Langfuse")
|
|
|
|
print("\n" + "=" * 60)
|
|
print("SUCCESS: Langfuse connection is working properly!")
|
|
print("=" * 60)
|
|
|
|
except Exception as e:
|
|
print(f" ✗ Error communicating with Langfuse: {e}")
|
|
print(f"\n Error details: {type(e).__name__}: {str(e)}")
|
|
|
|
# Additional diagnostic info
|
|
print("\n Troubleshooting tips:")
|
|
print(" - Verify the Langfuse server is running")
|
|
print(" - Check if the host URL is correct")
|
|
print(" - Verify your API keys are valid in Langfuse UI")
|
|
print(" - Check network connectivity to the Langfuse server")
|
|
sys.exit(1)
|