{"repo": "483218131/ai-mind", "files": {"app.py": {"cd20dac66288365cadd6b454f260387bb0b648ad": {"t": 1785745405.241738, "n": 3745, "h": "95e5cc236c317abd", "c": "from flask import Flask, render_template, request, jsonify, send_from_directory\nimport os\nimport requests\nimport time\nimport json\nfrom flask_cors import CORS # 添加CORS支持\nfrom config import *\n\n\napp = Flask(__name__, static_folder='static')\nCORS(app) # 启用CORS支持\n\n@app.route('/')\ndef index():\n return render_template('index.html')\n\n@app.route('/generate', methods=['POST'])\ndef generate_mindmap():\n try:\n topic = request.json.get('topic')\n if not topic:\n return jsonify({'error': '请输入主题'}), 400\n \n if len(topic) > 100: # 添加长度限制\n return jsonify({'error': '主题长度不能超过100个字符'}), 400\n \n # 如果没有API密钥,返回测试数据\n print(f\"DEEPSEEK_API_KEY 的值是: {DEEPSEEK_API_KEY}\")\n if not DEEPSEEK_API_KEY:\n print(\"Returning test data...\") # 添加日志\n print(\"Original TEST_MARKDOWN:\\n\", TEST_MARKDOWN) # 添加日志\n optimized_md = optimize_markdown(TEST_MARKDOWN) # 优化测试数据格式\n print(\"Optimized TEST_MARKDOWN:\\n\", optimized_md) # 添加日志\n return jsonify({'markdown': optimized_md})\n \n \n # 调用Deepseek API生成思维导图内容\n headers = {\n 'Authorization': f'Bearer {DEEPSEEK_API_KEY}',\n 'Content-Type': 'application/json'\n }\n \n data = {\n 'model': DEFAULT_MODEL,\n 'messages': [\n {'role': 'system', 'content': MINDMAP_PROMPT_TEMPLATE.format(topic=topic)},\n {'role': 'user', 'content': f'请为我生成一个关于\"{topic}\"的思维导图'}\n ],\n 'temperature': TEMPERATURE,\n 'max_tokens': MAX_TOKENS\n }\n \n try:\n response = requests.post(\n API_ENDPOINT,\n json=data,\n headers=headers,\n timeout=180 # 添加30秒超时\n )\n response.raise_for_status() # 检查HTTP状态码\n response_json = response.json()\n \n # 检查API响应格式\n if 'choices' not in response_json or not response_json['choices']:\n raise ValueError('API响应格式错误')\n \n # 提取生成的Markdown内容\n markdown_content = response_json['choices'][0]['message']['content']\n # 优化Markdown格式\n optimized_content = optimize_markdown(markdown_content)\n return jsonify({'markdown': optimized_content})\n \n except requests.Timeout:\n return jsonify({'error': '请求超时,请稍后重试'}), 504\n except requests.ConnectionError:\n return jsonify({'error': '网络连接失败,请检查网络设置'}), 503\n except requests.HTTPError as e:\n return jsonify({'error': f'API服务器错误: {e.response.status_code}'}), e.response.status_code\n except ValueError as e:\n return jsonify({'error': str(e)}), 500\n except Exception as e:\n return jsonify({'error': f'服务器错误: {str(e)}'}), 500\n \n except requests.RequestException as e: # 专门处理API请求错误\n return jsonify({'error': f'API请求失败: {str(e)}'}), 503\n except Exception as e:\n return jsonify({'error': f'服务器错误: {str(e)}'}), 500\n\ndef optimize_markdown(content):\n \"\"\"优化Markdown格式,确保适合Markmap渲染\"\"\"\n # 确保标题层级连续\n lines = content.split('\\n')\n optimized_lines = []\n \n for line in lines:\n # 将数字列表转换为无序列表\n if line.strip().startswith(tuple(f\"{i}.\" for i in range(1, 10))):\n line = line.replace(line.split()[0], \"-\", 1)\n optimized_lines.append(line)\n \n return '\\n'.join(optimized_lines)\n\n@app.route('/healthcheck')\ndef health_check():\n return jsonify({\n 'api_available': bool(DEEPSEEK_API_KEY),\n 'test_data_sample': TEST_MARKDOWN[:100] + '...'\n })\n\nif __name__ == '__main__':\n app.run(debug=True)"}, "725b5cde235ceb458a94c458cd2e36ae7c5612e1": {"t": 1785752863.8357458, "n": 3745, "h": "95e5cc236c317abd", "c": "from flask import Flask, render_template, request, jsonify, send_from_directory\nimport os\nimport requests\nimport time\nimport json\nfrom flask_cors import CORS # 添加CORS支持\nfrom config import *\n\n\napp = Flask(__name__, static_folder='static')\nCORS(app) # 启用CORS支持\n\n@app.route('/')\ndef index():\n return render_template('index.html')\n\n@app.route('/generate', methods=['POST'])\ndef generate_mindmap():\n try:\n topic = request.json.get('topic')\n if not topic:\n return jsonify({'error': '请输入主题'}), 400\n \n if len(topic) > 100: # 添加长度限制\n return jsonify({'error': '主题长度不能超过100个字符'}), 400\n \n # 如果没有API密钥,返回测试数据\n print(f\"DEEPSEEK_API_KEY 的值是: {DEEPSEEK_API_KEY}\")\n if not DEEPSEEK_API_KEY:\n print(\"Returning test data...\") # 添加日志\n print(\"Original TEST_MARKDOWN:\\n\", TEST_MARKDOWN) # 添加日志\n optimized_md = optimize_markdown(TEST_MARKDOWN) # 优化测试数据格式\n print(\"Optimized TEST_MARKDOWN:\\n\", optimized_md) # 添加日志\n return jsonify({'markdown': optimized_md})\n \n \n # 调用Deepseek API生成思维导图内容\n headers = {\n 'Authorization': f'Bearer {DEEPSEEK_API_KEY}',\n 'Content-Type': 'application/json'\n }\n \n data = {\n 'model': DEFAULT_MODEL,\n 'messages': [\n {'role': 'system', 'content': MINDMAP_PROMPT_TEMPLATE.format(topic=topic)},\n {'role': 'user', 'content': f'请为我生成一个关于\"{topic}\"的思维导图'}\n ],\n 'temperature': TEMPERATURE,\n 'max_tokens': MAX_TOKENS\n }\n \n try:\n response = requests.post(\n API_ENDPOINT,\n json=data,\n headers=headers,\n timeout=180 # 添加30秒超时\n )\n response.raise_for_status() # 检查HTTP状态码\n response_json = response.json()\n \n # 检查API响应格式\n if 'choices' not in response_json or not response_json['choices']:\n raise ValueError('API响应格式错误')\n \n # 提取生成的Markdown内容\n markdown_content = response_json['choices'][0]['message']['content']\n # 优化Markdown格式\n optimized_content = optimize_markdown(markdown_content)\n return jsonify({'markdown': optimized_content})\n \n except requests.Timeout:\n return jsonify({'error': '请求超时,请稍后重试'}), 504\n except requests.ConnectionError:\n return jsonify({'error': '网络连接失败,请检查网络设置'}), 503\n except requests.HTTPError as e:\n return jsonify({'error': f'API服务器错误: {e.response.status_code}'}), e.response.status_code\n except ValueError as e:\n return jsonify({'error': str(e)}), 500\n except Exception as e:\n return jsonify({'error': f'服务器错误: {str(e)}'}), 500\n \n except requests.RequestException as e: # 专门处理API请求错误\n return jsonify({'error': f'API请求失败: {str(e)}'}), 503\n except Exception as e:\n return jsonify({'error': f'服务器错误: {str(e)}'}), 500\n\ndef optimize_markdown(content):\n \"\"\"优化Markdown格式,确保适合Markmap渲染\"\"\"\n # 确保标题层级连续\n lines = content.split('\\n')\n optimized_lines = []\n \n for line in lines:\n # 将数字列表转换为无序列表\n if line.strip().startswith(tuple(f\"{i}.\" for i in range(1, 10))):\n line = line.replace(line.split()[0], \"-\", 1)\n optimized_lines.append(line)\n \n return '\\n'.join(optimized_lines)\n\n@app.route('/healthcheck')\ndef health_check():\n return jsonify({\n 'api_available': bool(DEEPSEEK_API_KEY),\n 'test_data_sample': TEST_MARKDOWN[:100] + '...'\n })\n\nif __name__ == '__main__':\n app.run(debug=True)"}}}}