import os
import requests
import json
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()
# ========== 模型相关 ==========
# 从.env文件获取模型API配置
BASE_URL = os.getenv("BASE_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1")
API_KEY = os.getenv("OPENAI_API_KEY", "sk-c5a912a6bc8e4c9cbdbdf68232352a03")
TEMPERATURE = float(os.getenv("MODEL_TEMPERATURE", "0.7"))


def translate(content, target_language):
    """
    翻译文本内容到目标语言

    :param content: 要翻译的内容
    :param target_language: 目标语言，如'en'(英语), 'zh'(中文), 'ja'(日语), 'fr'(法语)等
    :return: 翻译后的内容，如果翻译失败则返回原文和错误信息
    """
    if not content or not target_language:
        return {"error": "内容或目标语言不能为空", "translated_text": content}

    # 确保API密钥已设置
    if not API_KEY:
        return {"error": "API密钥未设置，请检查.env文件", "translated_text": content}

    try:
        # 构建API请求头
        headers = {
            "Content-Type": "application/json",
            "Authorization": f"Bearer {API_KEY}",
        }

        # 构建翻译提示
        prompt = f"请将以下内容翻译成{target_language}，只返回翻译结果，不要包含任何解释或原文：\n\n{content}"

        # 构建API请求体
        data = {
            "model": "qwen-max",  # 使用通义千问模型，可以根据实际需要更改
            "messages": [{"role": "user", "content": prompt}],
            "temperature": TEMPERATURE,
        }

        # 发送API请求
        response = requests.post(
            f"{BASE_URL}/chat/completions", headers=headers, json=data
        )

        # 解析响应
        if response.status_code == 200:
            result = response.json()
            translated_text = result["choices"][0]["message"]["content"].strip()
            return {"translated_text": translated_text}
        else:
            error_message = (
                f"翻译失败，状态码: {response.status_code}, 响应: {response.text}"
            )
            return {"error": error_message, "translated_text": content}

    except Exception as e:
        return {"error": f"翻译过程中发生错误: {str(e)}", "translated_text": content}
