在这个 AI 快速发展的时代,拥有一个自己的智能聊天机器人不再是遥不可及的梦想。本教程将带你一步步使用 DeepSeek API 创建一个功能强大的聊天机器人,无需复杂的编程知识。
目录
为什么要用 DeepSeek?
DeepSeek 提供了强大而且部分免费的语言模型 API。它的优势包括:
- 支持中英双语对话
- 具备强大的理解和生成能力
- 可以进行知识问答和创意写作
- API 调用简单方便
准备工作
在开始之前,你需要:
-
获取 API 密钥
- 访问 DeepSeek 官网
- 注册账号并登录
- 在控制台获取 API Key
-
安装必要的工具
- Python 3.7 或更高版本
- 包管理工具 pip
-
安装依赖包
pip install requests python-dotenv flask
代码实现
1. 基础配置
首先创建一个 .env
文件来存储你的 API 密钥:
DEEPSEEK_API_KEY=你的API密钥
2. 创建主程序
创建一个名为 chatbot.py
的文件:
import os
from dotenv import load_dotenv
from flask import Flask, request, jsonify
import requests
# 加载环境变量
load_dotenv()
app = Flask(__name__)
# DeepSeek API 配置
DEEPSEEK_API_KEY = os.getenv('DEEPSEEK_API_KEY')
API_URL = 'https://api.deepseek.com/v1/chat/completions'
def get_bot_response(user_message):
headers = {
'Authorization': f'Bearer {DEEPSEEK_API_KEY}',
'Content-Type': 'application/json'
}
data = {
'messages': [
{'role': 'user', 'content': user_message}
],
'model': 'deepseek-chat',
'temperature': 0.7
}
response = requests.post(API_URL, headers=headers, json=data)
return response.json()['choices'][0]['message']['content']
@app.route('/chat', methods=['POST'])
def chat():
user_message = request.json.get('message', '')
bot_response = get_bot_response(user_message)
return jsonify({'response': bot_response})
if __name__ == '__main__':
app.run(debug=True, port=5000)
3. 创建简单的网页界面
创建一个 templates
文件夹,并在其中创建 index.html
:
<!DOCTYPE html>
<html>
<head>
<title>我的聊天机器人</title>
<meta charset="UTF-8">
<style>
.chat-container {
max-width: 600px;
margin: 20px auto;
padding: 20px;
border: 1px solid #ddd;
border-radius: 8px;
}
.chat-box {
height: 400px;
overflow-y: auto;
margin-bottom: 20px;
padding: 10px;
border: 1px solid #eee;
}
.message {
margin: 10px 0;
padding: 10px;
border-radius: 5px;
}
.user-message {
background-color: #e3f2fd;
margin-left: 20%;
}
.bot-message {
background-color: #f5f5f5;
margin-right: 20%;
}
</style>
</head>
<body>
<div class="chat-container">
<div class="chat-box" id="chatBox"></div>
<div class="input-area">
<input type="text" id="userInput" style="width: 80%">
<button onclick="sendMessage()">发送</button>
</div>
</div>
<script>
function sendMessage() {
const userInput = document.getElementById('userInput');
const message = userInput.value;
if (!message) return;
// 显示用户消息
addMessage(message, true);
userInput.value = '';
// 发送到服务器
fetch('/chat', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ message: message })
})
.then(response => response.json())
.then(data => {
addMessage(data.response, false);
});
}
function addMessage(message, isUser) {
const chatBox = document.getElementById('chatBox');
const messageDiv = document.createElement('div');
messageDiv.className = `message ${isUser ? 'user-message' : 'bot-message'}`;
messageDiv.textContent = message;
chatBox.appendChild(messageDiv);
chatBox.scrollTop = chatBox.scrollHeight;
}
// 按回车发送消息
document.getElementById('userInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
sendMessage();
}
});
</script>
</body>
</html>
进阶定制
1. 个性化设置
你可以通过修改 API 调用参数来调整机器人的行为:
data = {
'messages': [
# 设置机器人的角色和个性
{'role': 'system', 'content': '你是一个专业的客服助手,性格温和友善'},
{'role': 'user', 'content': user_message}
],
'model': 'deepseek-chat',
'temperature': 0.7, # 控制回答的创造性,0-1之间
'max_tokens': 1000 # 控制回答的最大长度
}
2. 添加记忆功能
为了让对话更连贯,可以添加对话历史记录:
from collections import deque
# 存储对话历史
conversation_history = deque(maxlen=10) # 最多保存10轮对话
def get_bot_response(user_message):
# 将历史对话添加到请求中
messages = list(conversation_history)
messages.append({'role': 'user', 'content': user_message})
# API调用代码...
# 保存对话历史
conversation_history.append({'role': 'user', 'content': user_message})
conversation_history.append({'role': 'assistant', 'content': bot_response})
return bot_response
常见问题解答
Q1: API 调用失败怎么办?
- 检查 API 密钥是否正确
- 确认网络连接正常
- 查看 API 调用限制是否超额
Q2: 如何改进回答质量?
- 调整 temperature 参数(降低可获得更确定的答案)
- 优化 system prompt 设置
- 适当增加上下文信息
Q3: 如何部署到生产环境?
- 使用 Gunicorn 或 uWSGI 作为生产服务器
- 添加错误处理和日志记录
- 实现用户认证和限流机制
结语
通过本教程,你已经学会了如何使用 DeepSeek API 创建一个基础的聊天机器人。你可以基于这个框架继续添加更多功能,比如:
- 多轮对话管理
- 情感分析
- 特定领域的知识库集成
- 多语言支持
记住,好的聊天机器人需要不断优化和调试。通过收集用户反馈,你可以逐步改进机器人的表现,使其更好地服务于你的需求。