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

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

至于 grok 的后期再更新,这个 grok 也需要梯子,所以先编写 DeepSeek,原生实现还是比使用现成的要好,自主性更好,更好的掌握!
- 博客原文:https://bornforthis.cn/blog/2025/Other/19-Big-Model-API.html
- 公众号原文:https://mp.weixin.qq.com/s/spCas9G16hQ30cyz73-aEA
- 完整代码:https://github.com/AndersonHJB/BornforthisData
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.txt
3.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.0
4.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.md
5. 优化时刻
为了提升交互体验,我们可以在用户等待 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.txt
6.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 画图工具自动出人物立绘、场景图 |
我们下篇文章,再见!
记得留言,我超宠粉!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)