# Please install OpenAI SDK first: `pip3 install openai`
import os
from dotenv import load_dotenv
from openai import OpenAI

# 这一行代码，可以加载当前路径下的.env文件（文件名不能改）
load_dotenv()

def dm01_deepseek():
    # 创建OpenAI的对象，使用OpenAI的方式调用大模型（DeepSeek）
    client = OpenAI(
        api_key='sk-eeaf7fdfe21b4d39bfb9567fdbcd433b',
        base_url="https://api.deepseek.com")

    # 是以OpenAI的客户端调用（请求）DeepSeek的大模型
    # role：角色，在大模型中，常见的有三种角色（system、user、assistant）
    # system：系统角色，也就是告诉大模型，你是一个什么身份（定位）
    # user：普通用户角色，也就是用户输入的普通提示词
    # assistant：助手角色，也就是大模型返回的内容
    response = client.chat.completions.create(
        model="deepseek-v4-flash",
        messages=[
            {"role": "system", "content": "You are a helpful assistant"},
            {"role": "user", "content": "Hello"},
        ],
        stream=False,
        reasoning_effort="high",
        extra_body={"thinking": {"type": "enabled"}}
    )

    print(response.choices[0].message.content)


# 使用dotenv库的方式来管理.env文件，更安全
# pip install python-dotenv==1.2.1
# 注意：文件名必须是.env，不能改！！！
def dm02_deepseek():
    client = OpenAI(
        api_key=os.getenv("API_KEY"),
        base_url=os.getenv("BASE_URL"))

    response = client.chat.completions.create(
        model=os.getenv("MODEL_NAME"),
        messages=[
            {"role": "system", "content": "You are a helpful assistant"},
            {"role": "user", "content": "Hello"},
        ],
        stream=False)

    print(response.choices[0].message.content)


# 使用DeepSeek完成新闻文本分类
def dm03_deepseek():
    # 创建客户端
    client = OpenAI(api_key=os.getenv("API_KEY"), base_url=os.getenv("BASE_URL"))
    # 定义变量，用来保存提示词
    system_prompt = """
    你是一个新闻短文本分类专家，现在需要文本进行分类，一共有十个类别，分别是：
    finance
    realty
    stocks
    education
    science
    society
    politics
    sports
    game
    entertainment
    
    你必须把输入的文本划分为其中某一个类别，最终只需要输出对应的类别即可，不要输出其他内容。
    """
    user_prompt = """
    请对如下文本进行分类。
    文本：《赛猪》激情只等你的加入！
    """
    result = client.chat.completions.create(model=os.getenv("MODEL_NAME"),
                                            messages=[{'role': 'system', 'content': system_prompt},
                                                      {'role': 'user', 'content': user_prompt}])
    print(result.choices[0].message.content)


if __name__ == '__main__':
    # dm01_deepseek()
    # dm02_deepseek()
    dm03_deepseek()