From e3c1bed334ec54f6e016dcf1ac5f82d2d449a00b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=B4=A2=E6=A2=A6=E9=9C=B2?= Date: Thu, 8 Jan 2026 21:51:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=20app.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 196 --------------------------------------------------------- 1 file changed, 196 deletions(-) delete mode 100644 app.py diff --git a/app.py b/app.py deleted file mode 100644 index fda840b..0000000 --- a/app.py +++ /dev/null @@ -1,196 +0,0 @@ -import os -from flask import Flask, render_template, request, jsonify -from dotenv import load_dotenv -import dashscope -from dashscope import Generation -from datetime import datetime -import json - -load_dotenv() -dashscope.api_key = os.getenv("DASHSCOPE_API_KEY") - -app = Flask(__name__) - -# -------------------------- -# 配置 -# -------------------------- -SCENE_PROMPTS = { - "general": "这是通用写作场景,语言自然清晰。", - "media": "这是自媒体写作,语言有吸引力,适合传播。", - "script": "这是剧本写作,语言有画面感和情绪张力。", - "essay": "这是学生作文写作,结构清晰、表达规范。", - "academic_scene": "这是学术写作,语言严谨、逻辑清楚。" -} - -POLISH_STYLES = { - "formal": "正式、书面", - "literary": "文学性强、有文采", - "spoken": "口语化、自然", - "business": "商务、专业", - "internet": "网络风格、轻松" -} - -history_records = [] -MAX_HISTORY = 10 - -# -------------------------- -# AI 调用 -# -------------------------- -def call_ai(prompt): - resp = Generation.call(model="qwen-turbo", prompt=prompt) - if resp.status_code == 200: - return resp.output.text - return "❌ AI 调用失败" - -# -------------------------- -# 多版本润色 -# -------------------------- -def multi_version_rewrite(text, style): - prompt = f""" -请对以下文本进行润色,生成 3 个不同版本: -要求: -1. 保持原意 -2. 风格:{style} -3. 输出 3 个版本,分别标记 版本1/版本2/版本3 -原文: -{text} -""" - return call_ai(prompt) - -# -------------------------- -# 扩写 -# -------------------------- -def expand_text(text, target_length): - """ - 扩写文本到指定长度(字数/字符) - """ - prompt = f""" -请将以下文本扩写,保持原意,但丰富细节和表达,使字数达到 {target_length} 字左右。 -可以生成 3 个不同版本,分别标记 版本1/版本2/版本3。 -原文: -{text} -""" - return call_ai(prompt) - -# -------------------------- -# 修改原因生成 -# -------------------------- -def generate_revision_reason(original, revised): - prompt = f""" -请对下面两段文本进行对比,说明修改的原因。 -仅输出文字说明,不要高亮或格式化。 - -原文: -{original} - -改写后: -{revised} - -请详细说明改动原因。 -""" - return call_ai(prompt) - -# -------------------------- -# 文学参考 -# -------------------------- -def generate_literary_reference(text): - prompt = f""" -请理解下面这句话的含义,然后给出 3 条 -“文学作品风格中的相似表达示例”。 - -要求: -1. 不是原文引用 -2. 给出【风格参考作者】和【作品名】 -3. 仅作为文学风格参考 - -输出格式: -1. 句子内容 - —— 风格参考:作者《作品名》 - -原句: -{text} -""" - return call_ai(prompt) - -# -------------------------- -# 历史记录 -# -------------------------- -def save_history(data, result): - history_records.insert(0, { - "time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"), - "mode": data.get("mode"), - "scene": data.get("scene"), - "input": data.get("text", "")[:100], - "output": result[:200] - }) - if len(history_records) > MAX_HISTORY: - history_records.pop() - -# -------------------------- -# 情感分析 -# -------------------------- -def sentiment_analysis(text): - prompt = f""" -请分析下面文本的情感倾向,仅返回严格 JSON 格式: -{{"positive": %, "neutral": %, "negative": %}} -文本: -{text} -""" - result = call_ai(prompt) - try: - parsed = json.loads(result.replace(":", ":").replace("%","")) - return parsed - except: - return {"positive":0, "neutral":0, "negative":0} - -# -------------------------- -# 路由 -# -------------------------- -@app.route("/") -def index(): - return render_template("index.html") - -@app.route("/rewrite", methods=["POST"]) -def rewrite(): - data = request.json - text = data.get("text","") - mode = data.get("mode") - scene = data.get("scene","general") - - # 根据模式生成文本 - if mode=="polish": - style = data.get("style","formal") - result = multi_version_rewrite(text, style) - elif mode=="expand": - target_length = data.get("target_length", 300) - result = expand_text(text, target_length) - else: - result = f"普通生成模式:{text}" # 保留原功能 - - save_history(data, result) - return jsonify({"result": result}) - -@app.route("/literary", methods=["POST"]) -def literary(): - text = request.json.get("text","") - return jsonify({"reference": generate_literary_reference(text)}) - -@app.route("/history") -def history(): - return jsonify(history_records) - -@app.route("/revision_reason", methods=["POST"]) -def revision_reason(): - data = request.json - original = data.get("original","") - revised = data.get("revised","") - reason = generate_revision_reason(original, revised) - return jsonify({"reason": reason}) - -@app.route("/sentiment", methods=["POST"]) -def sentiment(): - text = request.json.get("text","") - return jsonify({"result": sentiment_analysis(text)}) - -if __name__=="__main__": - app.run(debug=True)