📌 新手提示:本文结尾提供了一键部署脚本(Windows / macOS / Linux 通用),自动完成 Python 环境、SDK 安装与 API Key 配置,想省事的同学直接拉到文末运行即可。

前言

DeepSeek 是中国本土的大模型团队,做出来的模型在代码、推理、中文理解上一直处于第一梯队——而且相比海外大厂,国内用户注册、充值、调用全都畅通无阻,不需要海外信用卡,也不需要科学上网。这是它最"亲民"的地方。

和 Claude 一样,DeepSeek 也开放了 API(应用程序编程接口)——就是"程序调用通道":写几行代码,就能让 DeepSeek 的模型住进你自己的程序里,自动写代码、做分析、当客服。

本教程面向零基础读者,四步走:

  1. 注册账号,拿到 API Key(钥匙)
  2. 装好 Python 环境
  3. 跑通第一个 DeepSeek 调用
  4. 看懂定价、常见报错,把它用起来

官方文档:https://api-docs.deepseek.com/(国内可直接访问)。

一、注册账号并获取 API Key

  1. 打开 https://platform.deepseek.com,用手机号或邮箱注册
  2. 登录后点左侧「API Keys」,创建一个新 Key,立刻复制保存(形如 sk- 开头的一长串,只显示一次,丢了要重建)
  3. 如果需要调用付费模型,先去「充值」页充一点钱(按量扣费,充多少用多少,没有月租;充值与赠送余额并存时系统会优先扣赠送余额)

⚠️ Key 相当于你的"钱包钥匙",别截图发给别人,别提交到公开的代码仓库(GitHub 会扫描并提示风险)。

二、准备 Python 环境

确认终端里 python3 可用(不会开终端的同学见文末脚本,全部自动化):

python3 --version

看到 Python 3.x.x 即可。然后装官方示例用的 OpenAI 官方 Python 包(deepseek 复用 OpenAI 的 SDK,所以不用装 deepseek 自己的包):

mkdir deepseek-quickstart && cd deepseek-quickstart
python3 -m venv .venv && source .venv/bin/activate
pip install openai
  • python3 -m venv .venv:创建独立虚拟环境。解释:把本项目依赖的包装在自己的目录里,不污染系统。
  • pip install openai:安装 OpenAI 官方 Python 包(pip 是 Python 的包管理器)。DeepSeek 的 API 和 OpenAI 格式完全兼容,所以直接用官方 SDK 就行。

pip 慢或失败时加镜像:pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple

三、跑通第一个调用

新建文件 hello_deepseek.py,粘贴以下内容(deepseek-v4-pro 是高级推理模型,中文名"深度思维",官方推荐的中文 API 模型;想省钱/要快就用 deepseek-v4-flash):

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get('DEEPSEEK_API_KEY'),
    base_url="https://api.deepseek.com"
)

response = client.chat.completions.create(
    model="deepseek-v4-pro",
    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)

运行:

export DEEPSEEK_API_KEY="你的key"
python hello_deepseek.py

💡 两个模型怎么选

  • deepseek-v4-flash:快、便宜,日常对话/批量任务首选(官方定价:输出高峰 $1.32 / 百万 token)
  • deepseek-v4-pro:推理能力更强,适合写代码、深度分析(输出高峰 $3.96 / 百万 token)
  • 两者上下文都支持 1M token(百万级),长文档总结毫无压力

四、逐行拆解这段代码

代码作用
from openai import OpenAI引入 OpenAI 官方 SDK(DeepSeek 兼容)
api_key=os.environ.get('DEEPSEEK_API_KEY')从环境变量(存在操作系统里的配置值,相当于"存钥匙的口袋")读 Key,前提是你先 export
base_url="https://api.deepseek.com"关键一行:把请求地址指向 DeepSeek,而不是 OpenAI。这就是"OpenAI 兼容"的玩法——同一个 SDK,换个地址就是另一家
client.chat.completions.create(...)发起一次对话请求(chat 补全接口:给对话记录,模型回下一条)
model="deepseek-v4-pro"选模型
messages=[...]对话历史,每条含 role(角色)与 content(内容);system 条目给模型立人设
reasoning_effort="high" + extra_body={"thinking": {"type": "enabled"}}开启深度思考模式,权重给"想清楚再回答"(v4 系列默认 thinking 开启,这两个参数可调)
response.choices[0].message.content从返回结果里取出模型回答的文本

流程一句话:你(构造 messages)→ api.deepseek.com → 模型思考并生成 → 返回回答文本

五、多轮对话(进阶一步)

想连续聊,就把历史消息按顺序全放进 messages

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get('DEEPSEEK_API_KEY'),
    base_url="https://api.deepseek.com"
)

messages = [
    {"role": "system", "content": "你是耐心的中文客服。先道歉,再解决问题。"},
    {"role": "user", "content": "我的会员没生效!"},
    {"role": "assistant", "content": "非常抱歉!我来帮您查一下,请问是通过哪个渠道充值的?"},
    {"role": "user", "content": "微信,卡了十分钟了"},
]

resp = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=messages,
    stream=False,
)

print(resp.choices[0].message.content)

user → assistant → user 的交替结构就是"多轮对话"的地基——所有聊天机器人都这样工作。

六、定价怎么看(一份钱花明白)

DeepSeek 按 token 计费(token 是模型处理文本的最小单位,1 个汉字约 1~2 个 token),以下为官方定价(2026-08),单位为每 100 万 token 的美元价

项目deepseek-v4-flashdeepseek-v4-pro
输入(缓存命中,非高峰)$0.007$0.022
输入(正常,非高峰)$0.22$0.66
输出(非高峰)$0.66$1.98
输出(高峰)$1.32$3.96
  • 高峰时段:UTC 周一至周五 01:00-04:00 与 06:00-10:00(北京时间早 9 点中午 12 点和下午 2 点6 点一带),其余为非高峰(半价)
  • 省钱的点:开启缓存命中的重复输入(比如常用 system 提示词)价格只有正常输入的约 1/30;把重复用的对话头拆出来复用,成本差距巨大
  • 完整定价页:https://api-docs.deepseek.com/quick_start/pricing

七、常见报错速查

报错现象含义解决
401 Authentication FailsKey 无效检查 DEEPSEEK_API_KEY 是否正确、是否带空格、export 是否执行了
402 Insufficient Balance余额不足去平台「充值」页充值
429 Rate Limit请求太频繁稍等重试;并发限制:v4-flash 2500 / v4-pro 500
400 Invalid Request参数错误检查 model 名、messages 结构
连接超时网络不通DeepSeek 国内直连一般没问题;若是公司/学校网络受限,换网络或走中转

八、多个模型想一把 Key 管到底?(中转方案)

DeepSeek 官方体验很好,但如果你同时还想调 Claude、GPT、GLM、Kimi 这些模型,每家的账号、Key、余额管理起来很麻烦——这时候国内开发者的常见做法是接入 API 中转站:一个账号一把 Key,统一按 token 计费,base_url 换成中转站地址就能在代码里切换任意模型,几乎零改动。

以云间 API 中转站(https://cloudzone-api.cyou/)为例:香港节点国内直连,支持 DeepSeek V4(低至官方 0.3 倍)、Claude、GPT、GLM、Kimi、Qwen 等 90+ 模型,OpenAI 兼容格式——上面所有代码只需把 base_url 换一行:

from openai import OpenAI

client = OpenAI(
    base_url="https://cloudzone-api.cyou/v1",   # 中转站 OpenAI 兼容端点,以控制台显示为准
    api_key="你的中转站Key",
)

resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

判断标准:任何 OpenAI 兼容服务都能用 openai SDK 接入,换 base_url + api_key 即可,其他代码一字不改。这也是 LLM 生态最具价值的地方——调模型的代码写一次,终身通用。

尾声

DeepSeek API 是国产大模型里接入门槛最低、性价比最高的一档:国内直连、支付宝充值、OpenAI 兼容、百万上下文,官方文档也是最清晰的那批。

往后走,你可以把它接进自己的脚本做批处理、做个人知识库问答、甚至做成一个完整的小应用——调 API 的套路和本文完全一样。

如果不想手动配环境,直接运行文末一键脚本(自动检测网络、自动装环境、引导配置 Key——默认配置云间 API 中转站,输入 N 也可用自己的官方 Key)。想另一条路的话,也可以在云间 API(https://cloudzone-api.cyou/)注册一把 Key,Claude / GPT / GLM / DeepSeek 全家桶一个账号管齐,按 token 精确计费。


附:一键部署脚本

不方便下载的同学可以直接复制下方完整源码,新建文本文档粘贴后改后缀为 .sh(macOS/Linux/WSL)或 .ps1(Windows)运行。也可以下载现成文件:

macOS / Linux / WSL(.sh)

#!/usr/bin/env bash
set -u
# ============================================================
#  DeepSeek API 使用教程 一键脚本(macOS / Linux / WSL)
#  公开源码,欢迎审查 —— 不放心可先复制给 AI 判断
#  默认配置:云间 API 中转站(https://cloudzone-api.cyou/)
# ============================================================

GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; CYAN='\033[0;36m'; NC='\033[0m'
info()  { echo -e "${GREEN}[INFO]${NC} $1"; }
warn()  { echo -e "${YELLOW}[WARN]${NC} $1"; }
error() { echo -e "${RED}[ERROR]${NC} $1"; }
step()  { echo -e "${CYAN}[STEP]${NC} $1"; }

CLOUDZONE_URL="https://cloudzone-api.cyou"
CLOUDZONE_API_BASE="https://cloudzone-api.cyou/v1"
DEEPSEEK_OFFICIAL_BASE="https://api.deepseek.com"

detect_network() {
  step "检测网络环境(国内 / 国外)..."
  if curl -fsI --max-time 5 "https://claude.ai" >/dev/null 2>&1; then
    info "可直连 claude.ai,判定为海外网络"
    echo "overseas"
  else
    warn "无法直连 claude.ai,判定为国内网络环境(将自动切换国内镜像)"
    echo "domestic"
  fi
}

check_python() {
  step "检查 Python 3..."
  if command -v python3 >/dev/null 2>&1 && python3 --version >/dev/null 2>&1; then
    PY="python3"
    info "找到 python3:$(python3 --version 2>&1)"
    return 0
  fi
  error "未找到 python3。请先安装:https://www.python.org/downloads/ (Windows 建议使用 WSL 后执行本脚本)"
  return 1
}

setup_env() {
  local net="$1"
  step "创建虚拟环境并安装 openai SDK(约 1-2 分钟)..."
  mkdir -p deepseek-quickstart && cd deepseek-quickstart || return 1
  python3 -m venv .venv 2>/dev/null || { error "创建虚拟环境失败,手动执行:python3 -m venv .venv"; return 1; }
  # shellcheck disable=SC1091
  source .venv/bin/activate || { warn "激活虚拟环境失败,继续使用系统环境"; }

  step "安装 openai SDK(DeepSeek 官方兼容包)..."
  local pypi="https://pypi.org/simple"
  if [ "$net" = "domestic" ]; then
    pypi="https://pypi.tuna.tsinghua.edu.cn/simple"
  fi

  if pip install openai -i "$pypi" --timeout 60 >/dev/null 2>&1; then
    info "SDK 安装成功"
    return 0
  fi
  warn "主源失败,回退备用镜像(阿里云 PyPI)..."
  if pip install openai -i "https://mirrors.aliyun.com/pypi/simple" --timeout 60 >/dev/null 2>&1; then
    info "备用镜像安装成功"
    return 0
  fi
  error "SDK 安装失败。请手动执行:pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple"
  return 1
}

configure_api() {
  step "配置 API Key..."
  echo ""
  echo "调用 DeepSeek 需要 API Key。两个选择:"
  echo "  官方渠道:platform.deepseek.com 注册,国内直连、支付宝充值"
  echo "  云间 API 中转站:一把 Key 同时调 DeepSeek / Claude / GPT / GLM 等 90+ 模型,DeepSeek V4 低至官方 0.3 倍"
  echo ""
  echo "是否跳转云间 API 注册并获取 Key?"
  echo "  Y - 立即跳转至 ${CLOUDZONE_URL}"
  echo "  N - 使用我自己的 Key(官方或第三方)"
  read -r -p "请选择 [Y/N]: " choice

  local API_KEY=""
  local BASE_URL="$CLOUDZONE_API_BASE"
  if [ "${choice:-N}" = "Y" ] || [ "${choice:-N}" = "y" ]; then
    info "正在打开浏览器..."
    if command -v xdg-open >/dev/null 2>&1; then
      xdg-open "$CLOUDZONE_URL" >/dev/null 2>&1
    elif command -v open >/dev/null 2>&1; then
      open "$CLOUDZONE_URL" >/dev/null 2>&1
    else
      warn "无法自动打开浏览器,请手动访问:$CLOUDZONE_URL"
    fi
    echo "注册后在控制台复制 Key(以 sk- 开头)。"
    read -r -p "粘贴你的 API Key: " API_KEY
    read -r -p "中转地址(直接回车用默认 ${CLOUDZONE_API_BASE}): " input_base
    [ -n "${input_base:-}" ] && BASE_URL="$input_base"
  else
    read -r -s -p "请输入你的 API Key (sk-...): " API_KEY
    echo
    echo "官方 Key 请用默认地址 https://api.deepseek.com;中转站 Key 请填其中转地址。"
    read -r -p "API 地址(直接回车用默认 ${DEEPSEEK_OFFICIAL_BASE}): " input_base
    BASE_URL="${input_base:-$DEEPSEEK_OFFICIAL_BASE}"
  fi

  if [ -z "${API_KEY:-}" ]; then
    error "未输入 API Key,跳过配置。可稍后手动设置环境变量后重跑。"
    return 1
  fi

  local SHELL_RC=""
  case "$SHELL" in
    */zsh)  SHELL_RC="$HOME/.zshrc" ;;
    */bash) SHELL_RC="$HOME/.bashrc" ;;
    *)      SHELL_RC="$HOME/.profile" ;;
  esac

  info "写入环境变量到 $SHELL_RC(仅 DEEPSEEK_API_KEY 与 DEEPSEEK_BASE_URL 两个变量,原值备份 .bak)"
  if [ -f "$SHELL_RC" ]; then
    sed -i.bak '/DEEPSEEK_API_KEY/d; /DEEPSEEK_BASE_URL/d' "$SHELL_RC"
  fi
  {
    echo ""
    echo "# DeepSeek API - 由一键脚本写入"
    echo "export DEEPSEEK_API_KEY=\"$API_KEY\""
    echo "export DEEPSEEK_BASE_URL=\"$BASE_URL\""
  } >> "$SHELL_RC"

  export DEEPSEEK_API_KEY="$API_KEY"
  export DEEPSEEK_BASE_URL="$BASE_URL"

  info "配置完成!"
  echo "  API Key : ${API_KEY:0:10}********"
  echo "  Base URL: $BASE_URL"
  echo ""
  warn "新开终端窗口后永久生效,或立即执行:source $SHELL_RC"
}

write_demo() {
  step "生成示例代码 hello_deepseek.py ..."
  cat > hello_deepseek.py <<'PYEOF'
import os
from openai import OpenAI

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

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "用一句话介绍你自己"},
    ],
    stream=False,
)

print(response.choices[0].message.content)
PYEOF
  info "已生成 deepseek-quickstart/hello_deepseek.py"
}

main() {
  echo "============================================"
  echo "  DeepSeek API 使用教程 一键脚本"
  echo "  适用于 macOS / Linux / WSL"
  echo "  默认接入:云间 API 中转站"
  echo "============================================"
  echo ""

  local NET
  NET=$(detect_network)

  if ! check_python; then
    error "缺少 Python 3,脚本终止。请先安装 Python 后重跑。"
    exit 1
  fi

  if ! setup_env "$NET"; then
    error "环境准备失败,脚本终止。请按上方提示手动处理。"
    exit 1
  fi

  configure_api || warn "Key 未配置,示例代码仍会生成,运行时需要先 export DEEPSEEK_API_KEY"

  write_demo

  echo ""
  echo "============================================"
  info "全部完成!"
  echo "  运行示例:cd deepseek-quickstart && source .venv/bin/activate && python hello_deepseek.py"
  echo "============================================"
}

main "$@"

Windows(.ps1)

Windows 运行 .ps1 若提示执行策略限制:打开 PowerShell 输入 Set-ExecutionPolicy -Scope Process Bypass 后回车,再运行脚本。-Scope Process 仅对当前窗口生效,关掉即恢复,不会改动系统全局策略(系统默认限制来自安全设计,不要为了省事永久 Bypass)。

# ============================================================
#  DeepSeek API 使用教程 一键脚本(Windows PowerShell)
#  公开源码,欢迎审查 -- 不放心可先复制给 AI 判断
#  默认配置:云间 API 中转站(https://cloudzone-api.cyou/)
# ============================================================
$ErrorActionPreference = "Stop"

function Write-Info  { Write-Host "[INFO] $args" -ForegroundColor Green }
function Write-Warn  { Write-Host "[WARN] $args" -ForegroundColor Yellow }
function Write-Err   { Write-Host "[ERROR] $args" -ForegroundColor Red }
function Write-Step  { Write-Host "[STEP] $args" -ForegroundColor Cyan }

$CLOUDZONE_URL = "https://cloudzone-api.cyou"
$CLOUDZONE_API_BASE = "https://cloudzone-api.cyou/v1"
$DEEPSEEK_OFFICIAL_BASE = "https://api.deepseek.com"

function Detect-Network {
    Write-Step "检测网络环境(国内 / 国外)..."
    try {
        $null = Invoke-WebRequest -Uri "https://claude.ai" -Method Head -TimeoutSec 5 -UseBasicParsing
        Write-Info "可直连 claude.ai,判定为海外网络"
        return "overseas"
    } catch {
        Write-Warn "无法直连 claude.ai,判定为国内网络环境(将自动切换国内镜像)"
        return "domestic"
    }
}

function Find-Python {
    Write-Step "检查 Python 3..."
    $python = $null
    foreach ($candidate in @("python", "py")) {
        try {
            $out = & $candidate --version 2>&1
            if ($LASTEXITCODE -eq 0) { $python = $candidate; break }
        } catch { }
    }
    if ($null -eq $python) {
        Write-Err "未找到 Python。请先安装:https://www.python.org/downloads/ (安装时勾选 Add Python to PATH)"
        return $null
    }
    Write-Info "找到 Python:$(& $python --version 2>&1)"
    return $python
}

function Setup-Env {
    param([string]$Net)
    Write-Step "创建虚拟环境并安装 openai SDK(约 1-2 分钟)..."
    New-Item -ItemType Directory -Force -Path "deepseek-quickstart" | Out-Null
    Set-Location "deepseek-quickstart"

    & $script:PY -m venv .venv
    if ($LASTEXITCODE -ne 0) {
        Write-Err "创建虚拟环境失败,手动执行:$script:PY -m venv .venv"
        return $false
    }
    $script:PY = Join-Path (Get-Location) ".venv\Scripts\python.exe"

    Write-Step "安装 openai SDK(DeepSeek 官方兼容包)..."
    $pypi = if ($Net -eq "domestic") { "https://pypi.tuna.tsinghua.edu.cn/simple" } else { "https://pypi.org/simple" }

    & $script:PY -m pip install openai -i $pypi --timeout 60 2>$null
    if ($LASTEXITCODE -eq 0) {
        Write-Info "SDK 安装成功"
        return $true
    }
    Write-Warn "主源失败,回退备用镜像(阿里云 PyPI)..."
    & $script:PY -m pip install openai -i "https://mirrors.aliyun.com/pypi/simple" --timeout 60 2>$null
    if ($LASTEXITCODE -eq 0) {
        Write-Info "备用镜像安装成功"
        return $true
    }
    Write-Err "SDK 安装失败。请手动执行:$script:PY -m pip install openai -i https://pypi.tuna.tsinghua.edu.cn/simple"
    return $false
}

function Configure-Api {
    Write-Step "配置 API Key..."
    Write-Host ""
    Write-Host "调用 DeepSeek 需要 API Key。两个选择:"
    Write-Host "  官方渠道:platform.deepseek.com 注册,国内直连、支付宝充值"
    Write-Host "  云间 API 中转站:一把 Key 同时调 DeepSeek / Claude / GPT / GLM 等 90+ 模型,DeepSeek V4 低至官方 0.3 倍"
    Write-Host ""
    Write-Host "是否跳转云间 API 注册并获取 Key?"
    Write-Host "  Y - 立即跳转至 $CLOUDZONE_URL"
    Write-Host "  N - 使用我自己的 Key(官方或第三方)"
    $choice = Read-Host "请选择 [Y/N]"

    $apiKey = ""
    $baseUrl = $CLOUDZONE_API_BASE
    if ($choice -eq "Y" -or $choice -eq "y") {
        Write-Info "正在打开浏览器..."
        try {
            Start-Process "$CLOUDZONE_URL"
        } catch {
            Write-Warn "无法自动打开浏览器,请手动访问:$CLOUDZONE_URL"
        }
        Write-Host "注册后在控制台复制 Key(以 sk- 开头)。"
    } else {
        $baseUrl = $DEEPSEEK_OFFICIAL_BASE
        Write-Host "官方 Key 请用默认地址 https://api.deepseek.com;中转站 Key 请填其中转地址。"
    }

    $sec = Read-Host "粘贴你的 API Key(输入时不显示字符)" -AsSecureString
    $bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($sec)
    $apiKey = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($bstr)
    [System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)

    if ([string]::IsNullOrWhiteSpace($apiKey)) {
        Write-Err "未输入 API Key,跳过配置。可稍后手动设置环境变量后重跑。"
        return $false
    }

    $inputBase = Read-Host "API 地址(直接回车用默认 ${baseUrl})"
    if (-not [string]::IsNullOrWhiteSpace($inputBase)) { $baseUrl = $inputBase }

    # 写入用户级环境变量(永久),并导出到当前会话。原因:示例代码从环境变量自动读取 Key。
    [Environment]::SetEnvironmentVariable("DEEPSEEK_API_KEY", $apiKey, "User")
    [Environment]::SetEnvironmentVariable("DEEPSEEK_BASE_URL", $baseUrl, "User")
    $env:DEEPSEEK_API_KEY = $apiKey
    $env:DEEPSEEK_BASE_URL = $baseUrl

    Write-Info "配置完成!"
    Write-Host "  API Key : $($apiKey.Substring(0, [Math]::Min(10, $apiKey.Length)))********"
    Write-Host "  Base URL: $baseUrl"
    Write-Host ""
    Write-Warn "新开终端窗口后永久生效(当前会话已立即生效)"
    return $true
}

function Write-Demo {
    Write-Step "生成示例代码 hello_deepseek.py ..."
    @'
import os
from openai import OpenAI

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

response = client.chat.completions.create(
    model="deepseek-v4-flash",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "用一句话介绍你自己"},
    ],
    stream=False,
)

print(response.choices[0].message.content)
'@ | Set-Content -Path "hello_deepseek.py" -Encoding UTF8
    Write-Info "已生成 deepseek-quickstart/hello_deepseek.py"
}

Write-Host "============================================"
Write-Host "  DeepSeek API 使用教程 一键脚本"
Write-Host "  适用于 Windows(PowerShell)"
Write-Host "  默认接入:云间 API 中转站"
Write-Host "============================================"
Write-Host ""

$net = Detect-Network

$script:PY = Find-Python
if ($null -eq $script:PY) {
    Write-Err "缺少 Python,脚本终止。请先安装 Python 后重跑。"
    exit 1
}

if (-not (Setup-Env -Net $net)) {
    Write-Err "环境准备失败,脚本终止。请按上方提示手动处理。"
    exit 1
}

if (-not (Configure-Api)) {
    Write-Warn "Key 未配置,示例代码仍会生成,运行时需要先设置 DEEPSEEK_API_KEY"
}

Write-Demo

Write-Host ""
Write-Host "============================================"
Write-Info "全部完成!"
Write-Host "  运行示例:cd deepseek-quickstart; .\.venv\Scripts\python hello_deepseek.py"
Write-Host "============================================"