3rd_fix download
This commit is contained in:
118
test_dify_simple.py
Normal file
118
test_dify_simple.py
Normal file
@@ -0,0 +1,118 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
簡化的 Dify 客戶端測試 - 不依賴資料庫
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
import requests
|
||||
import time
|
||||
|
||||
# Fix encoding for Windows console
|
||||
if sys.stdout.encoding != 'utf-8':
|
||||
sys.stdout.reconfigure(encoding='utf-8')
|
||||
if sys.stderr.encoding != 'utf-8':
|
||||
sys.stderr.reconfigure(encoding='utf-8')
|
||||
|
||||
def test_dify_direct():
|
||||
"""直接測試 Dify API"""
|
||||
|
||||
# 從環境變數或配置檔案讀取 Dify 配置
|
||||
base_url = "https://dify.theaken.com/v1"
|
||||
api_key = "app-SmB3TwVMcp5OyQviYeAoTden" # 正確的API Key
|
||||
|
||||
print("=== 簡化 Dify API 測試 ===")
|
||||
print(f"Base URL: {base_url}")
|
||||
print(f"API Key: {api_key[:10]}...{api_key[-4:]}")
|
||||
|
||||
# 準備測試請求
|
||||
test_text = "保证烤箱设备之稳定性及延长其使用寿命"
|
||||
print(f"\n測試翻譯文本: {test_text}")
|
||||
|
||||
# 構建請求 - 使用修正後的格式
|
||||
query = f"""Task: Translate ONLY into English from Chinese.
|
||||
|
||||
Rules:
|
||||
- Output translation text ONLY (no source text, no notes, no questions, no language-detection remarks).
|
||||
- Preserve original line breaks.
|
||||
- Do NOT wrap in quotes or code blocks.
|
||||
- Maintain original formatting and structure.
|
||||
|
||||
{test_text.strip()}"""
|
||||
|
||||
request_data = {
|
||||
'inputs': {},
|
||||
'response_mode': 'blocking',
|
||||
'user': f"user_1",
|
||||
'query': query
|
||||
}
|
||||
|
||||
headers = {
|
||||
'Authorization': f'Bearer {api_key}',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
|
||||
try:
|
||||
print(f"\n📡 發送請求到 Dify API...")
|
||||
start_time = time.time()
|
||||
|
||||
response = requests.post(
|
||||
f"{base_url}/chat-messages",
|
||||
json=request_data,
|
||||
headers=headers,
|
||||
timeout=30
|
||||
)
|
||||
|
||||
end_time = time.time()
|
||||
response_time = int((end_time - start_time) * 1000)
|
||||
|
||||
print(f"⏱️ 回應時間: {response_time}ms")
|
||||
print(f"📈 狀態碼: {response.status_code}")
|
||||
|
||||
if response.status_code == 200:
|
||||
result = response.json()
|
||||
|
||||
# 提取翻譯結果
|
||||
translated_text = result.get('answer', '').strip()
|
||||
|
||||
print(f"\n✅ 翻譯成功!")
|
||||
print(f"🔤 原文: {test_text}")
|
||||
print(f"🌍 譯文: {translated_text}")
|
||||
|
||||
# 檢查使用統計
|
||||
metadata = result.get('metadata', {})
|
||||
usage = metadata.get('usage', {})
|
||||
|
||||
if usage:
|
||||
print(f"\n📊 使用統計:")
|
||||
print(f" 提示 Token: {usage.get('prompt_tokens', 'N/A')}")
|
||||
print(f" 回應 Token: {usage.get('completion_tokens', 'N/A')}")
|
||||
print(f" 總 Token: {usage.get('total_tokens', 'N/A')}")
|
||||
print(f" 總成本: ${usage.get('total_price', 'N/A')}")
|
||||
|
||||
return {
|
||||
'success': True,
|
||||
'translated_text': translated_text,
|
||||
'response_time_ms': response_time,
|
||||
'usage': usage
|
||||
}
|
||||
else:
|
||||
print(f"❌ API 請求失敗:")
|
||||
print(f" 狀態碼: {response.status_code}")
|
||||
print(f" 回應: {response.text}")
|
||||
return {'success': False, 'error': f"HTTP {response.status_code}"}
|
||||
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"❌ 網路請求錯誤: {e}")
|
||||
return {'success': False, 'error': str(e)}
|
||||
|
||||
except Exception as e:
|
||||
print(f"❌ 未知錯誤: {e}")
|
||||
return {'success': False, 'error': str(e)}
|
||||
|
||||
if __name__ == "__main__":
|
||||
result = test_dify_direct()
|
||||
print(f"\n🏁 測試結果: {'成功' if result['success'] else '失敗'}")
|
||||
if not result['success']:
|
||||
print(f"錯誤詳情: {result['error']}")
|
Reference in New Issue
Block a user