一个可独立运行的 Java 示例,演示如何通过 HttpClient 调用 DeepSeek 的 OpenAI 兼容聊天接口,并在控制台输出原始 JSON 与提取的回复。
- 安装 Java 11 或更高版本(需要
java.net.http.HttpClient)。 - 可访问
https://api.deepseek.com/v1/chat/completions的网络环境。 - 已获取 DeepSeek API Key。
- 进入项目目录:
cd d:\git\SpringAi_Demo
- 设置 API Key(任选其一):
- 使用环境变量
Api_Key:$env:Api_Key = "你的密钥"
- 或使用环境变量
DEEPSEEK_API_KEY:$env:DEEPSEEK_API_KEY = "你的密钥"
- 或运行时 JVM 参数:
java -DDEEPSEEK_API_KEY=你的密钥 DeepSeekClient "你的提示词"
- 使用环境变量
- 编译(确保 UTF-8 编码):
javac -encoding UTF-8 DeepSeekClient.java
- 运行:
java DeepSeekClient "你好,帮我写一首小诗"
- 基本示例:
java DeepSeekClient "讲个简短笑话"
- 指定 JVM 参数传入密钥:
java -DDEEPSEEK_API_KEY=你的密钥 DeepSeekClient "给我一首七言绝句"
程序会打印:
[Raw JSON]:完整的接口返回 JSON 字符串。[Assistant]:尝试从choices[0].message.content中提取的助手回复内容。
- API 端点:
https://api.deepseek.com/v1/chat/completions - 模型常量:在
DeepSeekClient.java顶部的MODEL,默认deepseek-chat,可根据需要调整。 - API Key 获取顺序:
DEEPSEEK_API_KEY(环境变量)DEEPSEEK_API_KEY(JVM 系统属性)Api_Key(环境变量)Api_Key(JVM 系统属性)
- 编译时中文注释或字符串报错(GBK 不可映射字符):
- 请使用
javac -encoding UTF-8 DeepSeekClient.java。
- 请使用
- 运行时报错“未找到 API 密钥”:
- 请确认已设置
Api_Key或DEEPSEEK_API_KEY,或在运行时通过-DDEEPSEEK_API_KEY传入。
- 请确认已设置
- 网络连接失败:
- 请检查本机网络、代理、或防火墙是否放行到
api.deepseek.com。
- 请检查本机网络、代理、或防火墙是否放行到
- 仅使用 JDK 自带的
HttpClient,无第三方依赖。 - 为了简化示例,回复内容的提取使用了正则在 JSON 中查找
content字段,生产环境建议引入如 Jackson/Gson 进行可靠的 JSON 解析。
- 封装为 Spring Bean(例如使用
WebClient或集成 Spring AI)。 - 增加更完善的错误处理与重试机制。
- 添加日志输出到文件(目前仅控制台输出),并支持日志级别配置。
d:\git\SpringAi_Demo\
├── DeepSeekClient.java // 示例代码
├── DeepSeekClient.class // 编译生成(运行前需编译)
└── README.md // 使用说明