"""DeepSeek AI 标签生成工具"""
import os
from openai import OpenAI


class TagGenerator:
    """使用DeepSeek生成标签"""

    def __init__(self):
        self.api_key = os.environ.get('DEEPSEEK_API_KEY')
        self.base_url = os.environ.get('DEEPSEEK_BASE_URL', 'https://api.deepseek.com')
        self.client = None

        # 如果有API key，初始化客户端
        if self.api_key:
            self.client = OpenAI(
                api_key=self.api_key,
                base_url=self.base_url
            )

    def generate_tags(self, name, description, existing_tags=None):
        """
        根据产品名称和描述生成标签

        Args:
            name: 产品名称
            description: 产品描述
            existing_tags: 现有标签列表（用于参考）

        Returns:
            list: 生成的标签列表
        """
        # 检查是否配置了API key
        if not self.client:
            raise ValueError("DEEPSEEK_API_KEY未配置，请在.env文件中添加")

        try:
            # 构建提示词
            existing_tags_str = ""
            if existing_tags:
                existing_tags_str = f"\n\n系统中已有的标签参考：\n{', '.join(existing_tags)}\n尽量使用已有标签，如果合适的话。"

            prompt = f"""你是一个AI工具导航网站的标签生成助手。根据以下产品信息，生成3-5个最合适的标签。

产品名称: {name}

产品描述: {description}
{existing_tags_str}

要求：
1. 标签应该准确描述产品的功能、类型或应用场景
2. 每个标签2-4个汉字
3. 标签要具体且有区分度
4. 如果是AI工具，可以标注具体的AI类型（如"GPT"、"图像生成"等）
5. 只返回标签，用逗号分隔，不要其他说明

示例输出格式：写作助手,营销,GPT,内容生成

请生成标签："""

            # 调用DeepSeek API
            response = self.client.chat.completions.create(
                model="deepseek-chat",
                messages=[
                    {"role": "system", "content": "你是一个专业的AI工具分类专家，擅长为各类AI产品生成准确的标签。"},
                    {"role": "user", "content": prompt}
                ],
                temperature=0.7,
                max_tokens=100
            )

            # 解析返回的标签
            tags_text = response.choices[0].message.content.strip()
            tags = [tag.strip() for tag in tags_text.split(',') if tag.strip()]

            # 限制标签数量为3-5个
            if len(tags) > 5:
                tags = tags[:5]

            return tags

        except Exception as e:
            print(f"DeepSeek标签生成失败: {str(e)}")
            return []

    def generate_news_summary(self, url, content):
        """
        生成新闻摘要（未来功能）

        Args:
            url: 新闻链接
            content: 新闻内容

        Returns:
            str: 新闻摘要
        """
        # TODO: 实现新闻摘要生成
        pass
