from flask import Flask, render_template, request, redirect, url_for import requests import json from dotenv import load_dotenv import os # 加载环境变量 load_dotenv() app = Flask(__name__) # DeepSeek API 配置 DEEPSEEK_API_KEY = os.getenv('DEEPSEEK_API_KEY', 'sk-137bb3c986b640ae838d2cd2bfbca1dc') DEEPSEEK_API_URL = 'https://api.deepseek.com/v1/chat/completions' def generate_decision_points(workshop): """使用DeepSeek API生成决策要点""" # 构建辩论内容的摘要 debate_summary = "辩论内容:\n" for item in workshop['debate_content']: debate_summary += f"{item['role']}: {item['opinion']}\n" # 构建系统提示 system_prompt = f"你是一个决策分析专家,需要基于以下辩论内容,为'{workshop['name']}'工作坊生成全面的决策要点。工作坊目标是:{workshop['goal']}。请从多个角度分析,提取关键决策点,并提供具体的建议。" # 构建请求数据 data = { "model": "deepseek-chat", "messages": [ {"role": "system", "content": system_prompt}, {"role": "user", "content": debate_summary} ], "temperature": 0.7, "max_tokens": 1000 } # 发送请求 headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {DEEPSEEK_API_KEY}' } try: response = requests.post(DEEPSEEK_API_URL, headers=headers, data=json.dumps(data)) response.raise_for_status() result = response.json() decision_points = result['choices'][0]['message']['content'] return decision_points except Exception as e: # 错误处理,返回简单的决策要点 decision_points = [] for content in workshop['debate_content']: decision_points.append(f"{content['role']}: {content['opinion'][:100]}...") return "\n".join(decision_points) # 存储工作坊数据的临时字典 workshops = {} @app.route('/') def index(): return render_template('index.html', workshops=workshops) @app.route('/create', methods=['GET', 'POST']) def create_workshop(): if request.method == 'POST': workshop_id = len(workshops) + 1 workshop_name = request.form['workshop_name'] workshop_goal = request.form['workshop_goal'] workshops[workshop_id] = { 'name': workshop_name, 'goal': workshop_goal, 'roles': [], 'debate_content': [], 'decision_points': [] } return redirect(url_for('configure_roles', workshop_id=workshop_id)) return render_template('create_workshop.html') @app.route('/workshop//roles', methods=['GET', 'POST']) def configure_roles(workshop_id): if workshop_id not in workshops: return redirect(url_for('index')) if request.method == 'POST': role_name = request.form['role_name'] role_perspective = request.form['role_perspective'] workshops[workshop_id]['roles'].append({ 'name': role_name, 'perspective': role_perspective }) if 'add_more' in request.form: return redirect(url_for('configure_roles', workshop_id=workshop_id)) else: return redirect(url_for('start_debate', workshop_id=workshop_id)) return render_template('configure_roles.html', workshop=workshops[workshop_id], workshop_id=workshop_id) @app.route('/workshop//debate', methods=['GET', 'POST']) def start_debate(workshop_id): if workshop_id not in workshops: return redirect(url_for('index')) if request.method == 'POST': role_index = int(request.form['role_index']) role_opinion = request.form['role_opinion'] workshops[workshop_id]['debate_content'].append({ 'role': workshops[workshop_id]['roles'][role_index]['name'], 'opinion': role_opinion }) return redirect(url_for('start_debate', workshop_id=workshop_id)) return render_template('start_debate.html', workshop=workshops[workshop_id], workshop_id=workshop_id) @app.route('/workshop//results') def show_results(workshop_id): if workshop_id not in workshops: return redirect(url_for('index')) # 使用DeepSeek API生成决策要点 workshop = workshops[workshop_id] decision_points = generate_decision_points(workshop) workshop['decision_points'] = decision_points return render_template('results.html', workshop=workshop, workshop_id=workshop_id) if __name__ == '__main__': app.run(debug=True)