一、添加文件
nano /root/projects/paddlenlp_similarity_server.py
from flask import Flask, request, jsonify
import paddle
from paddlenlp import Taskflow
import json
import uuid
app = Flask(__name__)
# 初始化文本相似度模型
similarity = Taskflow("text_similarity")
@app.route('/')
def hello_world():
return 'PaddleNLP Text Similarity API'
@app.post('/similarity')
def calculate_similarity():
# 获取请求数据
data = request.get_json()
if not data or 'text_pairs' not in data:
return jsonify({"error": "Missing 'text_pairs' in request body"}), 400
try:
# 计算文本相似度
results = similarity(data['text_pairs'])
# 构造响应
response = {
"success": True,
"results": results
}
return jsonify(response)
except Exception as e:
return jsonify({"error": str(e)}), 500
if __name__ == '__main__':
app.run(host='0.0.0.0', port=9001)
二、运行
docker run -d \
--restart unless-stopped \
-p 9001:9001 \
-v ~/paddlenlp_models:/models \
-v /root/projects:/app \
-v /root/projects/paddlenlp:/root/.paddlenlp/taskflow/text_similarity \
--name paddlenlp_similarity \
registry.baidubce.com/paddlepaddle/paddle:2.6.0 \
bash -c "
pip install paddlenlp==2.6 -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn && \
python /app/paddlenlp_similarity_server.py
"
#常用操作
docker ps
docker stop 2f4f7e82ca01
docker rm 2f4f7e82ca01
docker logs 2f4f7e82ca01
curl --location --request POST 'http://localhost:9001/similarity' \
--header 'Content-Type: application/json' \
--data-raw '{
"text_pairs": [
["这个苹果很好吃", "这个香蕉很好吃"],
["今天天气真好", "今天天气不错"]
]
}'