"""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_features(self, name, description, url=""):
        """
        根据产品名称和描述生成主要功能列表

        Args:
            name: 产品名称
            description: 产品描述
            url: 产品URL（可选）

        Returns:
            str: 生成的功能列表（Markdown格式）
        """
        # 检查是否配置了API key
        if not self.client:
            raise ValueError("DEEPSEEK_API_KEY未配置，请在.env文件中添加")

        try:
            # 构建提示词
            url_info = f"\n产品网址: {url}" if url else ""

            prompt = f"""你是一个AI工具导航网站的内容编辑助手。根据以下产品信息，生成详细的主要功能列表。

产品名称: {name}

产品描述: {description}{url_info}

要求：
1. 生成5-8个主要功能点
2. 每个功能点要具体、清晰、有吸引力
3. 使用Markdown无序列表格式（以"- "开头）
4. 每个功能点一行，简洁有力（10-30字）
5. 突出产品的核心价值和特色功能
6. 使用专业但易懂的语言
7. 不要添加任何标题或额外说明，直接输出功能列表

示例输出格式：
- 智能文本生成，支持多种写作场景
- 实时语法检查和优化建议
- 多语言翻译，准确率高达95%
- 一键生成营销文案和广告语
- 团队协作，支持多人同时编辑

请生成功能列表："""

            # 调用DeepSeek API
            response = self.client.chat.completions.create(
                model="deepseek-chat",
                messages=[
                    {"role": "system", "content": "你是一个专业的AI产品文案专家，擅长提炼产品核心功能和价值点。"},
                    {"role": "user", "content": prompt}
                ],
                temperature=0.7,
                max_tokens=500
            )

            # 获取返回的功能列表
            features_text = response.choices[0].message.content.strip()

            return features_text

        except Exception as e:
            print(f"DeepSeek功能生成失败: {str(e)}")
            return ""

    def generate_description(self, name, short_desc="", url=""):
        """
        根据产品名称和简短描述生成详细介绍

        Args:
            name: 产品名称
            short_desc: 简短描述
            url: 产品URL（可选）

        Returns:
            str: 生成的详细介绍（Markdown格式）
        """
        # 检查是否配置了API key
        if not self.client:
            raise ValueError("DEEPSEEK_API_KEY未配置，请在.env文件中添加")

        try:
            # 构建提示词
            url_info = f"\n产品网址: {url}" if url else ""
            short_desc_info = f"\n简短描述: {short_desc}" if short_desc else ""

            prompt = f"""你是一个AI工具导航网站的内容编辑助手。根据以下产品信息，生成详细、专业且吸引人的产品介绍。

产品名称: {name}{short_desc_info}{url_info}

要求：
1. 生成200-400字的详细介绍
2. 包含以下内容：
   - 产品定位和核心价值（这是什么产品，解决什么问题）
   - 主要特点和优势（为什么选择这个产品）
   - 适用场景和目标用户（谁会用，用在哪里）
3. 使用Markdown格式，可以包含：
   - 段落分隔（空行）
   - 加粗重点内容（**文字**）
   - 列表（- 列表项）
4. 语言专业但易懂，突出产品价值
5. 不要添加标题，直接输出正文内容
6. 语气客观、事实性强，避免过度营销

示例输出格式：
ChatGPT是由OpenAI开发的**先进对话式AI助手**，基于GPT-4大语言模型构建。它能够理解和生成自然语言，为用户提供智能对话、内容创作、代码编写等多种服务。

**核心优势：**
- 强大的语言理解和生成能力
- 支持多轮对话，上下文连贯
- 覆盖编程、写作、翻译等多个领域

适用于内容创作者、程序员、学生等各类用户，可用于日常问答、文案撰写、学习辅导、编程助手等多种场景。

请生成详细介绍："""

            # 调用DeepSeek API
            response = self.client.chat.completions.create(
                model="deepseek-chat",
                messages=[
                    {"role": "system", "content": "你是一个专业的AI产品文案专家，擅长撰写准确、客观、有吸引力的产品介绍。"},
                    {"role": "user", "content": prompt}
                ],
                temperature=0.7,
                max_tokens=800
            )

            # 获取返回的详细介绍
            description_text = response.choices[0].message.content.strip()

            return description_text

        except Exception as e:
            print(f"DeepSeek详细介绍生成失败: {str(e)}")
            return ""

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

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

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