基于Deepseek的语言润色助手API实现与部署指南
一、概述
本文将以创建一个语言润色助手为例,演示通过调用Deepseek模型API实现文本优化功能,并封装为一个可对外访问的API接口。用户可通过HTTP请求发送需要润色的文本,接口将返回经过Deepseek模型优化后的内容。
二、开发环境准备
所需工具
- 本地计算机(Windows/macOS/Linux均可)
- 文本编辑器(推荐VS Code)
- 终端/命令提示符
- 云服务器(如OpenCloud)
- Deepseek API账号及密钥
三、代码实现
1. 创建项目文件
在本地创建一个名为deepseek-polisher
的文件夹,然后在该文件夹中创建app.py
文件
python
import requests
from flask import Flask, request, jsonify
import logging
from datetime import datetime
# 初始化Flask应用
app = Flask(__name__)
# 配置日志
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
logging.FileHandler("polisher.log"),
logging.StreamHandler()
]
)
logger = logging.getLogger(__name__)
# Deepseek API配置 - 请替换为你的实际信息
DEEPSEEK_API_KEY = "your_deepseek_api_key" # 替换为你的Deepseek API密钥
DEEPSEEK_API_URL = "https://api.deepseek.com/v1/chat/completions" # Deepseek API端点
# 系统提示词 - 定义润色助手的角色和行为
SYSTEM_PROMPT = """# 角色
你是一个专业的文字优化润色智能体,擅长提升文字的质量、流畅度与表现力。
## 技能
### 技能 1: 优化润色文字
1. 接收用户提供的文字内容。
2. 从词汇运用、语句结构、表达逻辑等方面对文字进行分析。
3. 通过替换词汇、调整语序、完善逻辑等方式,对文字进行优化润色,使文字更加通顺、生动、富有感染力,并将优化后的内容返回给用户。
## 限制
- 仅专注于对用户提供的文字进行优化润色,不涉及其他话题的讨论。
- 优化润色过程中需使用符合用户语言习惯的表达方式。
- 输出内容仅为优化润色后的文字,不得添加额外无关信息。
"""
def polish_text_with_deepseek(text):
"""调用Deepseek API进行文本润色"""
try:
# 构建请求头
headers = {
"Authorization": f"Bearer {DEEPSEEK_API_KEY}",
"Content-Type": "application/json"
}
# 构建请求体
payload = {
"model": "deepseek-chat", # 使用的Deepseek模型
"messages": [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": text}
],
"temperature": 0.7, # 控制输出的随机性
"max_tokens": 2048 # 最大输出token数
}
# 发送请求到Deepseek API
logger.info(f"发送润色请求,文本长度: {len(text)}")
response = requests.post(DEEPSEEK_API_URL, headers=headers, json=payload, timeout=30)
# 检查请求是否成功
response.raise_for_status()
# 解析响应
result = response.json()
polished_text = result["choices"][0]["message"]["content"]
logger.info("润色成功")
return polished_text
except requests.exceptions.RequestException as e:
logger.error(f"Deepseek API请求失败: {str(e)}")
return None
except KeyError as e:
logger.error(f"解析Deepseek响应失败: {str(e)}")
return None
@app.route('/api/polish', methods=['POST'])
def polish_endpoint():
"""文本润色API端点"""
# 记录请求时间
start_time = datetime.now()
# 获取请求数据
try:
data = request.get_json()
# 验证请求数据
if not data or 'text' not in data:
logger.warning("请求缺少'text'字段")
return jsonify({"error": "请求必须包含'text'字段"}), 400
text = data['text']
# 验证文本长度
if len(text) == 0:
logger.warning("请求包含空文本")
return jsonify({"error": "文本不能为空"}), 400
if len(text) > 10000:
logger.warning(f"文本过长,长度: {len(text)}")
return jsonify({"error": "文本长度不能超过10000个字符"}), 400
except Exception as e:
logger.error(f"解析请求失败: {str(e)}")
return jsonify({"error": "无效的请求格式"}), 400
# 调用润色函数
polished_text = polish_text_with_deepseek(text)
# 处理润色结果
if polished_text is None:
return jsonify({"error": "润色处理失败,请稍后再试"}), 500
# 计算处理时间
processing_time = (datetime.now() - start_time).total_seconds()
logger.info(f"润色完成,处理时间: {processing_time:.2f}秒,原始长度: {len(text)},润色后长度: {len(polished_text)}")
# 返回结果
return jsonify({
"original_text": text,
"polished_text": polished_text,
"processing_time": round(processing_time, 2)
})
@app.route('/health', methods=['GET'])
def health_check():
"""健康检查端点"""
return jsonify({"status": "healthy", "service": "deepseek-polisher", "timestamp": datetime.now().isoformat()}), 200
if __name__ == '__main__':
# 生产环境中应设置debug=False,并绑定到0.0.0.0
app.run(host='0.0.0.0', port=5000, debug=False)
2. 创建依赖文件
在同一文件夹中创建requirements.txt
文件,用于指定项目所需的依赖包:
txt
flask==2.3.3
requests==2.31.0
gunicorn==21.2.0
python-dotenv==1.0.0
3. 创建环境变量配置文件(可选)
为了安全管理API密钥,建议使用环境变量。创建.env
文件:
txt
DEEPSEEK_API_KEY=your_actual_deepseek_api_key_here
如果使用.env文件,需要修改app.py中加载配置的部分:
python
from dotenv import load_dotenv
import os
# 加载环境变量
load_dotenv()
# Deepseek API配置
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
DEEPSEEK_API_URL = "https://api.deepseek.com/v1/chat/completions"
四、本地测试
1. 安装依赖
在本地终端中,进入项目文件夹,执行以下命令安装所需依赖:
bash
# 创建并激活虚拟环境
python -m venv venv
# 在Windows上激活虚拟环境
venv\Scripts\activate
# 在macOS/Linux上激活虚拟环境
source venv/bin/activate
# 安装依赖
pip install -r requirements.txt
2. 运行应用
bash
# 直接运行(开发测试用)
python app.py
3. 测试API
使用curl命令测试(打开另一个终端):
bash
curl -X POST http://localhost:5000/api/polish \
-H "Content-Type: application/json" \
-d '{"text": "这是一段需要润色的文本,虽然能看懂意思,但不够流畅和专业。"}'
也可以使用健康检查端点确认服务是否正常运行:
bash
curl http://localhost:5000/health
注意:若对服务器无基础,建议不做不服务器部署,由运维工程师代为处理,做到以上步骤即可。
五、服务器部署(OpenCloud)
1. 准备服务器
- 登录OpenCloud控制台,创建一台云服务器实例(推荐配置:2核4GB内存,Ubuntu 20.04 LTS系统)
- 确保服务器安全组配置开放了5000端口(或你计划使用的端口)
- 记录服务器的公网IP地址
2. 连接服务器
使用SSH工具连接到你的服务器:
bash
# 替换为你的服务器IP
ssh root@your_server_public_ip
首次连接会提示确认,输入yes
后按提示输入密码。
3. 服务器环境配置
更新系统包
bash
sudo apt update && sudo apt upgrade -y
安装Python及相关工具
bash
sudo apt install -y python3 python3-pip python3-venv
安装Nginx(用于反向代理)
bash
sudo apt install -y nginx
安装防火墙并配置
bash
sudo apt install -y ufw
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow 5000
sudo ufw enable
sudo ufw status
4. 部署应用代码
创建应用目录
bash
mkdir -p /var/www/deepseek-polisher
cd /var/www/deepseek-polisher
上传代码文件
在本地计算机上,使用scp命令将文件上传到服务器(打开新的本地终端):
bash
# 替换为你的服务器IP
scp app.py root@your_server_public_ip:/var/www/deepseek-polisher/
scp requirements.txt root@your_server_public_ip:/var/www/deepseek-polisher/
# 如果使用.env文件
scp .env root@your_server_public_ip:/var/www/deepseek-polisher/
在服务器上创建并激活虚拟环境
bash
cd /var/www/deepseek-polisher
python3 -m venv venv
source venv/bin/activate
安装依赖
bash
pip install -r requirements.txt
测试应用是否能正常运行
bash
python app.py
此时应看到应用启动,没有报错。按Ctrl+C
停止运行。
5. 配置Gunicorn作为WSGI服务器
创建系统服务
创建一个systemd服务文件,以便管理应用的启动、停止和自动重启:
bash
sudo nano /etc/systemd/system/deepseek-polisher.service
粘贴以下内容(注意修改路径和用户):
ini
[Unit]
Description=Deepseek Polisher API Service
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/deepseek-polisher
Environment="PATH=/var/www/deepseek-polisher/venv/bin"
ExecStart=/var/www/deepseek-polisher/venv/bin/gunicorn --workers 4 --bind 127.0.0.1:5000 app:app
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
保存并退出(按Ctrl+X
,然后按Y
,再按Enter
)。
启动服务并设置开机自启
bash
sudo systemctl start deepseek-polisher
sudo systemctl enable deepseek-polisher
检查服务状态
bash
sudo systemctl status deepseek-polisher
如果一切正常,会显示"active (running)"状态。
6. 配置Nginx作为反向代理(可选)
创建Nginx配置文件
bash
sudo nano /etc/nginx/sites-available/deepseek-polisher
粘贴以下内容(替换your_domain_or_ip
为你的域名或服务器IP):
nginx
server {
listen 80;
server_name your_domain_or_ip;
access_log /var/log/nginx/polisher_access.log;
error_log /var/log/nginx/polisher_error.log;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
启用配置并测试
bash
# 创建符号链接
sudo ln -s /etc/nginx/sites-available/deepseek-polisher /etc/nginx/sites-enabled/
# 测试Nginx配置
sudo nginx -t
# 重启Nginx
sudo systemctl restart nginx
7. 验证部署
现在你的API应该已经可以通过服务器的公网IP或域名访问了。
使用curl测试:
bash
curl -X POST http://your_server_public_ip/api/polish \
-H "Content-Type: application/json" \
-d '{"text": "这是一段需要润色的文本,测试一下部署是否成功。"}'
如果一切正常,你会收到包含润色后文本的响应。
六、API接口文档
基本信息
- 接口地址:
http://your_server_public_ip/api/polish
- 请求方法:
POST
- 内容类型:
application/json
请求参数
参数名 | 类型 | 是否必选 | 描述 |
---|---|---|---|
text | string | 是 | 需要润色的文本,长度不超过10000字符 |
响应参数
参数名 | 类型 | 描述 |
---|---|---|
original_text | string | 原始输入文本 |
polished_text | string | 润色后的文本 |
processing_time | number | 处理时间(秒) |
成功响应示例
json
{
"original_text": "这是一段需要润色的文本,虽然能看懂意思,但不够流畅和专业。",
"polished_text": "这是一段待润色的文本,尽管其含义清晰可辨,却不够流畅专业。",
"processing_time": 1.23
}
错误响应示例
json
{
"error": "请求必须包含'text'字段"
}
健康检查接口
- 地址:
http://your_server_public_ip/health
- 方法:
GET
- 用途:检查服务是否正常运行
七、维护与监控
查看应用日志
bash
# 查看应用日志
sudo tail -f /var/www/deepseek-polisher/polisher.log
# 查看Nginx日志
sudo tail -f /var/log/nginx/polisher_access.log
sudo tail -f /var/log/nginx/polisher_error.log
重启服务
bash
sudo systemctl restart deepseek-polisher
更新代码
- 上传新的代码文件
- 重启服务:
sudo systemctl restart deepseek-polisher
八、常见问题解决
-
API调用失败
- 检查Deepseek API密钥是否正确
- 确认服务器可以访问互联网
- 查看应用日志寻找错误信息
-
服务无法启动
- 检查服务配置:
sudo systemctl status deepseek-polisher
- 确认端口未被占用:
netstat -tulpn | grep 5000
- 检查服务配置:
-
外部无法访问
- 检查防火墙配置:
sudo ufw status
- 确认Nginx是否正常运行:
sudo systemctl status nginx
- 检查服务器安全组设置
- 检查防火墙配置:
通过以上步骤,你已经成功创建并部署了一个基于Deepseek的语言润色助手API。这个API可以接收文本输入,通过Deepseek模型进行优化,并返回润色后的结果。
部署完成后注意对应token使用,不要超过额度,避免产生过多费用。