#!/usr/bin/env python3 """Test Dify API with composite API key format.""" import json import os import httpx # The proxy expects composite format: || # Main Dify uses: http://yw-dify.dc.servyou-it.com/v1|app-UaTWYdBSwN6VktKQlbh5YN5H|Chat # Approval should use: http://yw-dify.dc.servyou-it.com/v1|app-JWI7u1LTn9XPVe95KL6dHzPx|Chat PROXY_URL = "http://yw-dify.dc.servyou-it.com/dify2openai/v1/chat/completions" APPROVAL_KEY_RAW = "app-JWI7u1LTn9XPVe95KL6dHzPx" APPROVAL_KEY_COMPOSITE = "http://yw-dify.dc.servyou-it.com/v1|app-JWI7u1LTn9XPVe95KL6dHzPx|Chat" body = { "model": "dify", "messages": [ {"role": "user", "content": "我要申请VPN"}, ], "temperature": 0, } # Test 1: Raw API key (current, failing) print("=== Test 1: Raw API key (current) ===") headers = {"Authorization": f"Bearer {APPROVAL_KEY_RAW}", "Content-Type": "application/json"} try: resp = httpx.post(PROXY_URL, json=body, headers=headers, timeout=15.0) print(f" HTTP: {resp.status_code}") print(f" Body: {resp.text[:300]}") except Exception as e: print(f" ERROR: {e}") # Test 2: Composite API key print("\n=== Test 2: Composite API key ===") headers = {"Authorization": f"Bearer {APPROVAL_KEY_COMPOSITE}", "Content-Type": "application/json"} try: resp = httpx.post(PROXY_URL, json=body, headers=headers, timeout=30.0) print(f" HTTP: {resp.status_code}") print(f" Body: {resp.text[:500]}") if resp.status_code == 200: data = resp.json() choices = data.get("choices") or [] if choices: content = choices[0].get("message", {}).get("content", "") print(f" Content: {content[:300]}") try: parsed = json.loads(content) print(f" Parsed JSON: {json.dumps(parsed, ensure_ascii=False, indent=2)}") except: print(f" Content is not JSON") except Exception as e: print(f" ERROR: {e}") # Test 3: Check main Dify key format print("\n=== Test 3: Main Dify env vars ===") print(f" DIFY_API_KEY = {os.environ.get('DIFY_API_KEY', 'NOT SET')}") print(f" DIFY_API_URL = {os.environ.get('DIFY_API_URL', 'NOT SET')}")