#!/usr/bin/env python3
import json
import urllib.request
import urllib.error
import getpass
import sys
import os

# ==========================================
# 1. 配置区域 (在此填写你的信息)
# ==========================================

API_KEY = "sk-P6q7gthfyuBRopXzf26iUVoDuyU6z1wp2XUfaadyXAcnzoGi"
BASE_URL = "https://api.xn--p8rt33c.top/v1"
MODEL = "deepseek-v4-flash"

# 在这里填写系统提示词 (System Prompt)
SYSTEM_PROMPT = "你是一个高效的助手。接下来用户会向你发送一系列问题，你只需要直接回复答案即可"

# ==========================================
# 2. 程序核心逻辑
# ==========================================

def chat_completion(messages):
    url = BASE_URL.rstrip("/") + "/chat/completions"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {API_KEY}",
    }
    data = {
        "model": MODEL,
        "messages": messages,
        "temperature": 0.7,
    }

    req = urllib.request.Request(
        url=url,
        data=json.dumps(data).encode("utf-8"),
        headers=headers,
        method="POST",
    )

    try:
        with urllib.request.urlopen(req) as response:
            result = json.loads(response.read().decode("utf-8"))
        return result["choices"][0]["message"]["content"]
    except Exception:
        return None

def main():
    # 初始化对话历史
    messages = [
        {"role": "system", "content": SYSTEM_PROMPT}
    ]

    while True:
        try:
            # 彻底隐秘：没有任何提示符，输入不回显
            user_input = getpass.getpass("").strip()

            if not user_input:
                continue

            # --- 特殊指令处理 ---

            # 清屏指令
            if user_input.lower() == "clear":
                os.system('clear')
                continue

            # 退出指令
            if user_input.lower() in ["exit", "quit", "q"]:
                break

            # --- 正常对话处理 ---

            messages.append({"role": "user", "content": user_input})

            # 发送请求并获取回复
            reply = chat_completion(messages)

            if reply:
                # 只显示 AI 的回复
                print(reply)
                # 增加一个换行，保持视觉间隔
                print("")

                # 存入历史记录以维持上下文
                messages.append({"role": "assistant", "content": reply})

        except KeyboardInterrupt:
            # Ctrl+C 退出
            break

if __name__ == "__main__":
    main()
