#!/usr/bin/env python3
"""Test Qwen 3.7 Flash via the same worker process that Graphiti uses."""
import subprocess, json, time
key = ""
with open("/etc/graphiti/graphiti.env") as f:
for line in f:
if line.startswith("OPENROUTER_API_KEY="):
key = line.split("=", 1)[1].strip()
break
payload = {
"model": "qwen/qwen3.7-flash",
"messages": [{"role": "user", "content": '{"test": true}'}],
"effective_timeout": 60,
"api_key": key,
"base_url": "https://openrouter.ai/api/v1",
"graphiti_phase": "test_llm_call",
"llm_call_index": 0,
}
result = subprocess.run(
['docker', 'exec', 'graphiti-service', 'python3', '-c',
'''
import asyncio, json, sys
sys.path.insert(0, '/app')
async def test():
from llm_call_worker import call
result = await call(sys.argv[1] if len(sys.argv) > 1 else "")
return result
payload = json.loads(''' + json.dumps(payload).replace('"', '\\"') + ''')
result = asyncio.run(test())
print(json.dumps(result, indent=2))
'''],
capture_output=True, text=True, timeout=90, cwd='/opt/struktur/graphiti'
)
print("STDOUT:")
try:
out = result.stdout.strip()
data = json.loads(out)
print(f"OK: {data.get('ok')}")
print(f"Raw content present: {bool(data.get('raw'))}")
print(f"Content length: {len(data.get('raw',''))}")
print(f"Content preview: {repr(data.get('raw','')[:200])}")
print(f"Provider: {data.get('provider_request_id','N/A')}")
print(f"Input tokens: {data.get('input_tokens')}")
print(f"Output tokens: {data.get('output_tokens')}")
except:
print(f"Error parsing JSON. Output: {out[:500]}")
if result.stderr:
print(f"\nSTDERR:\n{result.stderr[:300]}")