🚀 使用 Django 和 DeepSeek API 构建智能聊天机器人:完整开发指南
探索如何构建一个功能丰富、界面美观的 AI 聊天应用,支持深度思考和实时对话
在人工智能飞速发展的今天,构建一个属于自己的智能聊天机器人已经不再是遥不可及的梦想。本文将带你一步步使用 Django 框架和 DeepSeek API 构建一个功能完整的 AI 聊天应用,支持实时对话、深度思考模式和美观的用户界面!✨
🌟 项目概述
这个项目是一个全栈 Web 应用,具有以下核心功能:
- 🤖 智能对话:集成 DeepSeek AI 大语言模型
- 💭 深度思考模式:让 AI 更深入地分析复杂问题
- 💾 对话历史管理:自动保存和分类聊天记录
- 🎨 现代化 UI:支持亮色/暗色主题切换
- 📱 响应式设计:完美适配桌面和移动设备
- ⚡ 实时流式响应:体验流畅的对话交互
🛠️ 技术栈
后端技术
- Django 5.2 - Python Web 框架
- MySQL - 关系型数据库
- DeepSeek API - AI 语言模型接口
- Django MDEditor - Markdown 编辑器支持
前端技术
- 原生 HTML/CSS/JavaScript - 轻量级前端方案
- Marked.js - Markdown 渲染
- Highlight.js - 代码语法高亮
- Font Awesome - 图标库
- Google Fonts - 优美字体
📁 项目结构
deepseek-chatbot/
├── chat/
│ ├── models.py # 数据模型
│ ├── views.py # 视图逻辑
│ └── urls.py # 路由配置
├── templates/
│ └── chat.html # 主界面模板
├── static/ # 静态资源
└── settings.py # Django 配置
💾 数据模型设计
让我们先来看看核心的数据结构:
# chat/models.py
class Conversation(models.Model):
"""会话模型,管理每个独立的对话窗口"""
title = models.CharField("会话标题", max_length=200)
created_at = models.DateTimeField("创建时间", auto_now_add=True)
class Meta:
ordering = ['-created_at']
verbose_name = '会话窗口'
class ChatHistory(models.Model):
"""聊天记录模型,存储具体的问答内容"""
conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE)
question = models.TextField("用户问题")
answer = MDTextField(verbose_name="AI回答") # 支持 Markdown
created_at = models.DateTimeField("创建时间", auto_now_add=True)
is_ai = models.BooleanField("是否AI回答", default=True)
这种设计支持多轮对话和会话管理,每个会话可以包含多条聊天记录,非常适合实际的聊天场景。📊
🔧 核心后端实现
流式对话接口
# chat/views.py
@csrf_exempt
def get_answer(request):
def event_stream():
question = request.GET.get('question', '')
conversation_id = request.GET.get('conversation_id')
deep_thought = request.GET.get('deep_thought', 'false') == 'true'
# 会话管理逻辑
if not conversation_id or conversation_id == 'null':
title = generate_conversation_title(question)
conversation = Conversation.objects.create(title=title)
is_new_conversation = True
else:
conversation = Conversation.objects.get(id=conversation_id)
is_new_conversation = False
# API 调用配置
headers = {
"Authorization": f"Bearer {settings.DEEPSEEK_API_KEY}",
"Content-Type": "application/json",
"Accept": "text/event-stream"
}
# 深度思考模式参数调整
if deep_thought:
payload = {
"messages": [{"role": "user", "content": question}],
"model": "deepseek-chat",
"temperature": 0.3, # 更低温度,更确定性
"max_tokens": 4000, # 更多 tokens
"top_p": 0.9,
"stream": True
}
else:
payload = {
"messages": [{"role": "user", "content": question}],
"model": "deepseek-chat",
"temperature": 0.7, # 更高创造性
"stream": True
}
# 流式处理响应
with requests.post(settings.DEEPSEEK_API_URL, headers=headers,
json=payload, stream=True) as response:
response.raise_for_status()
full_answer = ""
for line in response.iter_lines():
if line:
decoded_line = line.decode('utf-8')
if decoded_line.startswith('data: '):
try:
data = json.loads(decoded_line[6:])
if data.get('choices'):
delta = data['choices'][0].get('delta', {})
if 'content' in delta:
content = delta['content']
full_answer += content
# 实时推送内容到前端
yield json.dumps({
"type": "chunk",
"content": content,
"conversation_id": conversation.id
}) + "\n\n"
except Exception as e:
print(f"解析错误: {str(e)}")
continue
# 保存完整回答到数据库
chat_history.answer = full_answer
chat_history.save()
return StreamingHttpResponse(event_stream(), content_type='text/event-stream')
这个实现的关键点:🎯
- 流式处理:使用 Server-Sent Events (SSE) 实现实时响应
- 错误处理:完善的异常捕获和处理机制
- 会话管理:自动创建和管理对话上下文
- 参数调优:根据深度思考模式调整 AI 参数
🎨 前端界面设计
现代化 UI 组件
前端采用了玻璃拟态设计和渐变色彩,提供出色的视觉体验:
<!-- 聊天消息组件 -->
<div class="message answer">
<div class="message-avatar">AI</div>
<div class="message-content">
<div class="message-bubble">
<div class="markdown-content">
<!-- Markdown 渲染内容 -->
</div>
</div>
</div>
</div>
<!-- 深度思考指示器 -->
<div class="deep-thought-indicator">
<i class="fas fa-brain"></i>
<span>深度思考模式中,AI正在深入分析您的问题...</span>
</div>
实时交互功能
// 实时对话处理
async function submitQuestion() {
const question = input.value.trim();
if (!question) return;
// 显示用户消息
addMessage(question, true);
// 显示打字指示器
const typingIndicator = showTypingIndicator();
// 流式获取 AI 响应
const response = await fetch(`/get_answer/?question=${encodeURIComponent(question)}`);
const reader = response.body.getReader();
let fullContent = '';
while (true) {
const { done, value } = await reader.read();
if (done) break;
// 处理流式数据
const chunk = decoder.decode(value);
const data = JSON.parse(chunk);
if (data.type === 'chunk') {
fullContent += data.content;
// 实时更新界面
updateMessageContent(fullContent);
}
}
}
⚙️ 配置和部署
Django 设置
# settings.py
import os
from pathlib import Path
from dotenv import load_dotenv
load_dotenv()
BASE_DIR = Path(__file__).resolve().parent.parent
# DeepSeek API 配置
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
DEEPSEEK_API_URL = os.getenv("DEEPSEEK_API_URL")
# 数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'deepseek',
'USER': 'root',
'PASSWORD': '123456',
'HOST': 'localhost',
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'},
}
}
# 国际化设置
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
环境变量配置
创建 .env 文件:
DEEPSEEK_API_KEY=your_deepseek_api_key_here
DEEPSEEK_API_URL=https://api.deepseek.com/v1/chat/completions
🚀 运行项目
1. 环境准备
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# 安装依赖
pip install django requests python-dotenv mysqlclient django-mdeditor
2. 数据库设置
# 创建数据库
mysql -u root -p
CREATE DATABASE deepseek CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# Django 数据库迁移
python manage.py makemigrations
python manage.py migrate
3. 启动服务
python manage.py runserver
访问 http://localhost:8000 即可体验你的 AI 聊天机器人!🎉
📋部分截图如下:






💡 功能亮点
🔄 智能会话管理
- 自动生成有意义的对话标题
- 支持多会话并行管理
- 历史记录持久化存储
🧠 深度思考模式
- 针对复杂问题的深度分析
- 调整 AI 参数以获得更准确的回答
- 可视化思考过程指示
📝 Markdown 支持
- 完整的 Markdown 渲染
- 代码语法高亮
- 表格、列表等丰富格式
🎨 主题系统
- 亮色/暗色主题切换
- 平滑的过渡动画
- 响应式设计适配
🔧 扩展建议
这个项目还有很多可以扩展的方向:
-
用户系统 🔐
- 用户注册和登录
- 个人对话历史
- 个性化设置
-
高级功能 🚀
- 文件上传和处理
- 联网搜索能力
- 语音输入输出
-
部署优化 ☁️
- Docker 容器化
- Redis 缓存支持
- Nginx 反向代理
📊 性能优化
数据库优化
# 使用 select_related 减少查询
conversations = Conversation.objects.select_related().all()
# 分页加载历史记录
from django.core.paginator import Paginator
paginator = Paginator(conversations, 20)
前端优化
// 虚拟滚动优化大量消息
// 防抖搜索功能
// 图片懒加载
🎯 总结
通过这个项目,我们成功构建了一个功能完整的 AI 聊天应用,涵盖了从前端界面到后端 API 集成的全栈开发流程。关键的技术要点包括:
- ✅ Django 流式响应 实现实时对话
- ✅ 现代化前端设计 提供优质用户体验
- ✅ 智能会话管理 组织对话内容
- ✅ Markdown 渲染 美化 AI 回答显示
- ✅ 深度思考模式 增强复杂问题处理能力
这个项目不仅展示了如何集成现代 AI API,还体现了良好的软件工程实践,包括模块化设计、错误处理和用户体验优化。
开始构建你的 AI 聊天机器人吧! 这个项目为你提供了坚实的基础,你可以基于它继续添加更多创新功能,打造属于你自己的智能助手。🌈
如果有任何问题或想法,欢迎在评论区交流讨论!💬
Django集成DeepSeek构建AI聊天机器人
492

被折叠的 条评论
为什么被折叠?



