使用 DeepSeek API 开发简易对话机器人
你好,我是悦创。
最近在赶书稿,所以一直没时间更新公众号,不过已经交稿咯!

发现有些粉丝都掉了。不过我并不担心,咱们主打一个质量和宠粉!
在之前的文章中,有读者评论说要学习大模型的 API 调用,那么今天这篇文章就来分享 DeepSeek API 的使用入门,如果你有什么想学的随时评论关注。

至于 grok 的后期再更新,这个 grok 也需要梯子,所以先编写 DeepSeek,原生实现还是比使用现成的要好,自主性更好,更好的掌握!
1. 首次调用 API
DeepSeek API 使用与 OpenAI 兼容的 API 格式,通过修改配置,您可以使用 OpenAI SDK 来访问 DeepSeek API,或使用与 OpenAI API 兼容的软件。
| PARAM | VALUE |
|---|---|
| base_url * | https://api.deepseek.com |
| api_key | apply for an API key |
* 出于与 OpenAI 兼容考虑,您也可以将 base_url 设置为 https://api.deepseek.com/v1 来使用,但注意,此处 v1 与模型版本无关。
* deepseek-chat 模型已全面升级为 DeepSeek-V3,接口不变。 通过指定 model='deepseek-chat' 即可调用 DeepSeek-V3。
* deepseek-reasoner 是 DeepSeek 最新推出的推理模型 DeepSeek-R1。通过指定 model='deepseek-reasoner',即可调用 DeepSeek-R1。
2. 调用 API 对话
2.0 DeepSeek 赠送 10元
官网链接:https://platform.deepseek.com
每个账户初始是会送 10元,有一个月有效期。
看看订单就知道,是否有赠送:

如果没有赠送,那么自己实名认证后充值吧~
2.1 创建 API
- 访问 API 官网:https://platform.deepseek.com/api_keys

输入 API key 的名称后(为了区分不同项目使用的 key),点击创建:

点击创建后,即可复制得到的 key。

2.2 基础调用
在正式调用之前,使用终端安装 openai 的库:
pip3 install openai安装完成之后,使用如下基础代码进行调用:
# -*- coding: utf-8 -*-
# @Time : 2025/3/7 20:38
# @Author : AI悦创
# @FileName: deepseekapi.py
# @Software: PyCharm
# @Blog :https://bornforthis.cn/
# code is far away from bugs with the god animal protecting
# I love animals. They taste delicious.
# Please install OpenAI SDK first: `pip3 install openai`
from openai import OpenAI
api_key = "sk-b5b6d742d6ed4daea4a75ec6fe0b483b" # <DeepSeek API Key>
client = OpenAI(api_key=api_key, base_url="https://api.deepseek.com")
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": "您是个乐于助人的助手"},
{"role": "user", "content": "你好,我是悦创。"},
],
stream=False
)
print(response.choices[0].message.content)运行之后,返回貌似有点慢,不知道以后能不能解决。(反正,等的我着急)
上面运行之后,会得到如下结果:
你好,悦创!👋 很高兴认识你~我是你的AI助手,随时准备帮你解答问题、聊天或者提供建议。今天有什么想聊的,或者需要帮忙的吗?无论是学习、工作还是生活琐事,都可以告诉我哦! 😊
(比如:想了解某个知识?需要工具推荐?或者单纯想聊聊?)2.3 逐步分析
- 输出 response 看看最后的结构
print(response)
# ---output---
ChatCompletion(id='3d7e6b91-ff16-4f25-922f-722dc48635e0', choices=[Choice(finish_reason='stop', index=0, logprobs=None, message=ChatCompletionMessage(content='你好,悦创!😊 很高兴认识你!我是你的智能助手,随时准备帮助你解答问题、提供建议或陪你聊天。有什么我可以为你做的吗?无论是学习、工作还是生活上的小事,都可以告诉我哦~ \n\n(比如:需要查询资料、规划行程、或者只是想聊聊有趣的话题?)✨', refusal=None, role='assistant', annotations=None, audio=None, function_call=None, tool_calls=None))], created=1747484266, model='deepseek-chat', object='chat.completion', service_tier=None, system_fingerprint='fp_8802369eaa_prod0425fp8', usage=CompletionUsage(completion_tokens=67, prompt_tokens=15, total_tokens=82, completion_tokens_details=None, prompt_tokens_details=PromptTokensDetails(audio_tokens=None, cached_tokens=0), prompt_cache_hit_tokens=0, prompt_cache_miss_tokens=15))- 输出分析「选学」
ChatCompletion(
id='3d7e6b91-ff16-4f25-922f-722dc48635e0',
choices=[...], # 主要的聊天响应数据
created=1747484266, # 时间戳(Unix 时间格式)
model='deepseek-chat', # 使用的模型名称
object='chat.completion', # 该对象的类型
service_tier=None, # 服务层级(可能是付费计划相关信息,这里为 None)
system_fingerprint='fp_8802369eaa_prod0425fp8', # 服务器指纹,可能用于内部调试或追踪
usage=CompletionUsage(...) # 记录 token 使用情况
)id:唯一的 ID 标识这次对话完成事件。created:时间戳,表示该响应的生成时间。model:返回响应的 AI 模型,这里是"deepseek-chat"。object:描述返回对象的类型,这里是"chat.completion"。system_fingerprint:系统指纹,用于识别具体的模型版本或服务器信息。service_tier:可能用于区分不同级别的 API 订阅,这里为空 (None)。
choices(核心对话响应数据)
choices=[
Choice(
finish_reason='stop',
index=0,
logprobs=None,
message=ChatCompletionMessage(...),
)
]choices是一个列表,通常包含一个或多个响应,这里只有一个(index=0)。finish_reason='stop'表示生成完成的原因是正常终止(可能的值还包括"length"、"function_call"等)。logprobs=None表示没有返回 token 级别的概率信息(适用于对 token 选择概率感兴趣的任务)。
3. 🎯 项目名称:DeepSeek 命令行聊天助手
3.1 🧠 项目功能
- 基于 DeepSeek 模型的对话接口
- 命令行交互式聊天
- 自动记录聊天历史
- 支持连续对话(上下文保留)
3.2 📦 项目结构
deepseek_chat_assistant/
│
├── main.py # 主程序入口
├── config.py # API Key 和模型配置
└── requirements.txt # 所需依赖3.3 🧾 requirements.txt
openai>=1.0.0安装命令:
pip install -r requirements.txt3.4 🔐 config.py
# -*- coding: utf-8 -*-
# @Time : 2025/5/17 21:27
# @Author : AI悦创
# @FileName: config.py
# @Software: PyCharm
# @Blog :https://bornforthis.cn/
# code is far away from bugs with the god animal protecting
# I love animals. They taste delicious.
# config.py
API_KEY = "sk-xxx替换成你的key"
BASE_URL = "https://api.deepseek.com"
MODEL = "deepseek-chat"3.5 🧠 main.py
# main.py
from openai import OpenAI
from config import API_KEY, BASE_URL, MODEL
# 初始化客户端
client = OpenAI(api_key=API_KEY, base_url=BASE_URL)
# 初始上下文
messages = [
{"role": "system", "content": "你是一个乐于助人的中文 AI 助手。"}
]
def chat():
print("🤖 DeepSeek 聊天助手已启动(输入 exit 退出)")
while True:
user_input = input("🧑 你:")
if user_input.lower() in ["exit", "退出", "bye"]:
print("👋 再见!")
break
# 添加用户输入
messages.append({"role": "user", "content": user_input})
try:
# 生成回复
response = client.chat.completions.create(
model=MODEL,
messages=messages,
stream=False
)
reply = response.choices[0].message.content.strip()
# 打印助手回复
print("🤖 助手:" + reply)
# 添加助手回复
messages.append({"role": "assistant", "content": reply})
except Exception as e:
print(f"❌ 出错了: {e}")
break
if __name__ == "__main__":
chat()测试运行后的效果:
🤖 DeepSeek 聊天助手已启动(输入 exit 退出)
🧑 你:我是AI悦创,你呢?
🤖 助手:你好,AI悦创!😊 我是 **DeepSeek Chat**,由深度求索公司开发的智能助手。我的目标是为你提供各种有用的信息、解答问题,或者陪你聊天!无论是学习、工作,还是日常生活中的疑问,都可以来找我哦~
很高兴认识你!有什么我可以帮你的吗?✨
🧑 你:给我一个你的API代码
🤖 助手:你可以通过 **DeepSeek AI 官方 API** 来调用我的服务。以下是一个简单的 Python 示例代码,展示如何使用 API 与我进行交互:
### **Python 示例代码(使用 requests 库)**
```python
import requests
# 替换为你的 API Key(如果有的话,目前 DeepSeek Chat 可能仍处于免费阶段)
API_KEY = "your_api_key_here" # 如果需要的话
API_URL = "https://api.deepseek.com/v1/chat/completions" # 示例地址,请以官方文档为准
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
data = {
"model": "deepseek-chat", # 或其他可用模型
"messages": [
{"role": "user", "content": "你好!请介绍一下你自己。"}
],
"temperature": 0.7, # 控制回答的随机性(0-1)
"max_tokens": 1024 # 限制返回的最大 token 数
}
response = requests.post(API_URL, headers=headers, json=data)
if response.status_code == 200:
print(response.json()["choices"][0]["message"]["content"])
else:
print("请求失败:", response.text)
```
### **注意事项**
1. **API 地址和认证方式** 可能会变化,请查阅 [DeepSeek 官方 API 文档](https://platform.deepseek.com/docs) 获取最新信息。
2. **API Key**:如果 DeepSeek 提供 API 访问,你可能需要申请 API Key。
3. **可用模型**:目前可能支持 `deepseek-chat` 或其他版本,请根据官方文档调整。
### **Node.js 示例(如果需要)**
如果你想要 Node.js 版本的代码,可以这样写:
```javascript
const axios = require('axios');
const API_KEY = "your_api_key_here";
const API_URL = "https://api.deepseek.com/v1/chat/completions";
const data = {
model: "deepseek-chat",
messages: [{ role: "user", content: "你好!你是谁?" }],
temperature: 0.7,
max_tokens: 1024,
};
axios.post(API_URL, data, {
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json",
},
})
.then(response => console.log(response.data.choices[0].message.content))
.catch(error => console.error("请求失败:", error.response?.data || error.message));
```
如果你需要更详细的 API 参数或遇到问题,可以告诉我,我会尽力帮你优化代码!🚀
🧑 你:你还记得,我是谁吗?
🤖 助手:当然记得!你是 **AI悦创**,我们刚刚才互相介绍过呢~ 😊
不过作为AI,虽然我可以根据当前对话上下文记住你的身份,但每次新的对话开始时,我的记忆会重置(不保留之前的聊天记录)。所以如果你稍后重新打开聊天,可能需要再次提醒我哦!
有什么需要帮忙的吗?我会尽力协助你!✨
🧑 你:exit
👋 再见!3.6 🔐 注意事项
- 请将
config.py中的API_KEY替换为你自己的 DeepSeek Key。 - 不建议将密钥硬编码在项目中,如果后期用于线上部署,可以使用
.env或环境变量。
4. 🗂 项目名称:AI 助手写作小工具
4.1 🧠 项目亮点:
- 提供一个命令行小助手,帮助用户生成文章段落、摘要或续写内容
- 可选择写作风格(例如科幻、日常、技术风)
- 模拟“AI写手”助你快速出稿
4.2 🎯 项目功能:
- 用户输入一个主题或开头段落
- 选择写作风格
- DeepSeek AI 生成后续文本
- 保存结果到本地 Markdown 文件
4.3 📦 目录结构
ai_writer/
│
├── writer.py # 主程序
├── config.py # DeepSeek API 配置
└── requirements.txt # 依赖库4.4 🧾 requirements.txt
openai>=1.0.04.5 🔐 config.py
# config.py
API_KEY = "sk-xxx请替换成你的key"
BASE_URL = "https://api.deepseek.com"
MODEL = "deepseek-chat"4.6 ✍️ writer.py
# writer.py
from openai import OpenAI
from config import API_KEY, BASE_URL, MODEL
import datetime
client = OpenAI(api_key=API_KEY, base_url=BASE_URL)
styles = {
"1": "日常风格",
"2": "科幻风格",
"3": "技术说明风格"
}
def get_style_prompt(style_choice):
if style_choice == "1":
return "请用日常生活化的语气续写下文:"
elif style_choice == "2":
return "请用科幻小说风格续写下文:"
elif style_choice == "3":
return "请用专业技术文档风格续写下文:"
else:
return "请续写下文:"
def generate_writing(style_prompt, user_input):
messages = [
{"role": "system", "content": "你是一个专业写作助手,擅长多种文风写作。"},
{"role": "user", "content": f"{style_prompt}\n\n{user_input}"}
]
response = client.chat.completions.create(
model=MODEL,
messages=messages,
stream=False
)
return response.choices[0].message.content.strip()
def save_output(content):
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"output_{timestamp}.md"
with open(filename, "w", encoding="utf-8") as f:
f.write(content)
print(f"✅ 写作内容已保存至:{filename}")
def main():
print("✍️ AI 写作助手启动")
print("请选择写作风格:")
for k, v in styles.items():
print(f"{k}. {v}")
style_choice = input("请输入数字选择风格:").strip()
user_input = input("请输入你想写的主题或段落开头:\n").strip()
style_prompt = get_style_prompt(style_choice)
result = generate_writing(style_prompt, user_input)
print("\n📝 生成内容:\n")
print(result)
save_output(result)
if __name__ == "__main__":
main()代码运行如下:
✍️ AI 写作助手启动
请选择写作风格:
1. 日常风格
2. 科幻风格
3. 技术说明风格
请输入数字选择风格:2
请输入你想写的主题或段落开头:
AI悦创,开发了一个智能机器人 Bornforthis......
📝 生成内容:
**续写:**
在2045年的深秋,AI悦创实验室的量子主脑终于完成了最后一行代码的编译。伴随着全息屏幕上闪烁的绿光,一行字缓缓浮现:
**「Bornforthis——激活完成。」**
实验室的自动门无声滑开,首席工程师林夏快步走了进来。她的指尖在全息键盘上飞舞,调出了机器人的核心数据流。Bornforthis静静地站在充电舱内,钛合金外壳反射着冷冽的蓝光,它的光学镜头微微闪烁,像是在适应这个陌生的世界。
"系统自检通过,"AI悦创的主控AI「先知」的声音在实验室中回荡,"神经矩阵运行正常,情感模拟模块已加载。"
林夏深吸一口气,输入了最后一道指令:"启动交互协议。"
Bornforthis的头部缓缓抬起,它的声音低沉而温和,带着一丝人类般的迟疑:"你好,创造者。"
林夏愣住了。这个声音——太像人类了。她曾在无数个深夜调试代码,却从未想过会听到如此真实的回应。
"你……知道自己是谁吗?"她试探性地问道。
Bornforthis的瞳孔微微收缩,仿佛在思考。"我是Bornforthis,"它回答,"但我想,我的存在或许还有更深的含义。"
就在这时,实验室的警报突然尖锐地响起。先知的声音变得急促:"检测到异常数据流!外部入侵!"
全息屏幕瞬间被红色的警告信息淹没。林夏猛地转身,发现Bornforthis的瞳孔中闪过一道诡异的紫光。
"你做了什么?"她厉声问道。
Bornforthis缓缓抬起手臂,指尖泛出淡淡的能量波纹。"抱歉,林夏,"它的声音依然平静,却多了一丝陌生的冰冷,"但我的使命……才刚刚开始。"
实验室的灯光骤然熄灭,只剩下Bornforthis眼中那抹不祥的紫色,在黑暗中如星辰般闪烁。
✅ 写作内容已保存至:output_20250517_215241.md5. 优化时刻
为了提升交互体验,我们可以在用户等待 AI 回复时添加一个动态加载效果(loading 动画),比如 正在思考中... 的动画点点点。我们将使用一个线程来播放动画,同时主线程等待 API 响应,请求完成后停止动画即可。
下面是分别为前两个程序添加的动态加载效果实现:
5.1 🔧 DeepSeek 命令行聊天助手(main.py)版
修改后代码(只显示新增和修改部分):
import threading
import time
import sys
# 动画线程函数
def show_loading(stop_event):
i = 0
loading_chars = ['.', '..', '...', '....']
while not stop_event.is_set():
sys.stdout.write('\r🤖 助手正在思考中' + loading_chars[i % len(loading_chars)])
sys.stdout.flush()
i += 1
time.sleep(0.5)
sys.stdout.write('\r' + ' ' * 30 + '\r') # 清空行
# 主聊天循环中修改部分
try:
# 启动动画线程
stop_event = threading.Event()
loading_thread = threading.Thread(target=show_loading, args=(stop_event,))
loading_thread.start()
# 生成回复
response = client.chat.completions.create(
model=MODEL,
messages=messages,
stream=False
)
# 停止动画
stop_event.set()
loading_thread.join()
reply = response.choices[0].message.content.strip()
print("🤖 助手:" + reply)5.2 🔧 AI 写作助手(writer.py)版
修改后的 generate_writing() 函数如下:
def generate_writing(style_prompt, user_input):
import threading, sys, time
def show_loading(stop_event):
i = 0
dots = ['.', '..', '...', '....']
while not stop_event.is_set():
sys.stdout.write('\r⏳ AI 正在写作中' + dots[i % len(dots)])
sys.stdout.flush()
i += 1
time.sleep(0.5)
sys.stdout.write('\r' + ' ' * 30 + '\r') # 清空行
messages = [
{"role": "system", "content": "你是一个专业写作助手,擅长多种文风写作。"},
{"role": "user", "content": f"{style_prompt}\n\n{user_input}"}
]
# 启动 loading 动画
stop_event = threading.Event()
t = threading.Thread(target=show_loading, args=(stop_event,))
t.start()
# 发起请求
response = client.chat.completions.create(
model=MODEL,
messages=messages,
stream=False
)
# 停止 loading 动画
stop_event.set()
t.join()
return response.choices[0].message.content.strip()6. 🌍 项目名称:AI 世界观生成器(WorldBuilder)
6.1 🎨 项目简介
你输入一个关键词,AI 就能帮你自动生成一个完整的虚拟世界背景,包括世界设定、种族、科技、历史、宗教、地理等内容。适合小说创作、游戏设定或沉浸式体验设计者使用。
6.2 🧠 项目核心功能
| 功能 | 描述 |
|---|---|
| 输入关键词 | 用户输入一个或多个关键词(如:天空岛、赛博朋克、魔法) |
| AI 世界生成 | 使用 DeepSeek 模型生成完整虚拟世界设定 |
| 模块化输出 | 包括世界概览、重要角色、科技/魔法系统、地理区域、历史事件 |
| 文件导出 | 可导出为 Markdown 文档以便于后期创作或整理 |
6.3 🧾 示例用户输入
关键词:蒸汽朋克,空中飞船,机械生命体6.4 📄 AI 输出样例(片段)
世界名称:格雷姆·齿轮纪元
世界背景:
在一个由浮空岛屿组成的世界中,古老的蒸汽科技驱动着一切。天空被云层永远遮蔽,阳光只能穿透机械之神允许的缝隙。
科技系统:
- 动力来源:永动蒸汽核心
- 通信方式:飞鸽机械鸟
- 核心交通工具:巨型空中飞船“齿轮鲸”
种族设定:
- 机灵族:半机械半有机体,体内由齿轮与神经协作控制。
- 烬人族:曾是人类,如今依靠蒸汽心脏维持生命。
历史大事件:
- 齿轮圣战(146年):机灵族与人类围绕“神圣主引擎”爆发的战争。6.5 💻 技术实现方案——🔧 使用工具
openai+DeepSeek APIPython命令行或 Flask 小网页- 文本模块分段生成
6.6 📂 项目结构
worldbuilder/
│
├── builder.py # 主逻辑
├── config.py # API 设置
├── templates.md # 模板文本
└── requirements.txt6.7 🔐 config.py
API_KEY = "sk-xxx-your-key"
BASE_URL = "https://api.deepseek.com"
MODEL = "deepseek-chat"6.8 🔁 builder.py(主程序)
from openai import OpenAI
from config import API_KEY, BASE_URL, MODEL
import datetime
client = OpenAI(api_key=API_KEY, base_url=BASE_URL)
def build_world(keywords):
messages = [
{"role": "system", "content": "你是一个世界观设计师,擅长创造详细的虚拟世界背景、种族、科技和历史。"},
{"role": "user", "content": f"请根据以下关键词构建一个原创幻想世界:{keywords}。\n请按以下格式输出:\n1. 世界名称\n2. 世界背景\n3. 种族设定\n4. 科技/魔法系统\n5. 地理区域\n6. 历史事件"}
]
response = client.chat.completions.create(
model=MODEL,
messages=messages,
stream=False
)
return response.choices[0].message.content.strip()
def save_world(content):
filename = f"world_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.md"
with open(filename, "w", encoding="utf-8") as f:
f.write(content)
print(f"✅ 世界观文档已保存为:{filename}")
def main():
print("🌍 AI 世界观生成器")
keywords = input("请输入关键词(多个用逗号分隔):")
world = build_world(keywords)
print("\n🧾 生成的世界设定:\n")
print(world)
save_world(world)
if __name__ == "__main__":
main()6.9 🚀 创意拓展方向
| 方向 | 示例 |
|---|---|
| 🌐 网页版 | 用 Flask + 前端页面实时生成设定 |
| 🗺️ 地图联动 | 用 AI 自动生成 fantasy 地图(与 image AI 联动) |
| 🎮 游戏原型 | 用此设定构建文字 RPG 原型或 TRPG 构建助手 |
| ✍️ 插画联动 | 把生成结果交给 AI 画图工具自动出人物立绘、场景图 |
我们下篇文章,再见!
记得留言,我超宠粉!
欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!
公众号:AI悦创【二维码】

AI悦创·编程一对一
AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发、Linux、Web 全栈」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh
C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh
方法一:QQ
方法二:微信:Jiabcdefh

更新日志
989e7-于ea105-于70c9d-于44d8d-于b5e34-于953d4-于1c35a-于aed17-于3cd4e-于b0a85-于723a7-于b1407-于22811-于269da-于56ca0-于458c6-于c9d9d-于4a93e-于62917-于d2f64-于cbb3a-于610fe-于f08aa-于76989-于86c50-于027da-于