samlax12 commited on
Commit
e71a2c6
·
verified ·
1 Parent(s): 68dceb7

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -22
app.py CHANGED
@@ -2,6 +2,10 @@ from flask import Flask, request, Response, stream_with_context
2
  import requests
3
  import os
4
  import json
 
 
 
 
5
 
6
  app = Flask(__name__)
7
 
@@ -15,6 +19,7 @@ def aippt_outline():
15
  data = request.json
16
  content = data.get('content')
17
  language = data.get('language', 'zh')
 
18
 
19
  # 构建发送给 OpenAI 的提示
20
  messages = [
@@ -49,7 +54,7 @@ def aippt_outline():
49
  'Authorization': f'Bearer {OPENAI_API_KEY}'
50
  }
51
  payload = {
52
- 'model': 'gpt-4.1-mini',
53
  'messages': messages,
54
  'stream': True
55
  }
@@ -82,6 +87,7 @@ def aippt():
82
  data = request.json
83
  content = data.get('content')
84
  language = data.get('language', 'zh')
 
85
 
86
  # 构建发送给 OpenAI 的提示,包含 PPTist 所需数据结构的详细说明
87
  messages = [
@@ -94,25 +100,25 @@ def aippt():
94
  2. 必须严格遵循以下JSON格式,任何格式错误都会导致幻灯片无法显示:
95
 
96
  封面页:
97
- {"type":"cover","data":{"title":"主标题","text":"副标题或简短描述"}}
98
 
99
  目录页:
100
- {"type":"contents","data":{"items":["一级章节1","一级章节2","一级章节3","一级章节4","一级章节5"]}}
101
 
102
  过渡页:
103
- {"type":"transition","data":{"title":"章节标题","text":"章节简介"}}
104
 
105
  内容页:
106
- {"type":"content","data":{"title":"二级标题","items":[{"title":"要点1标题","text":"要点1描述"},{"title":"要点2标题","text":"要点2描述"},{"title":"要点3标题","text":"要点3描述"},{"title":"要点4标题","text":"要点4描述"}]}}
107
 
108
  结束页:
109
- {"type":"end"}
110
 
111
  3. 转换规则:
112
- - 大纲中的主标题("# "开头)转换为封面页
113
- - 所有一级章节("## "开头)组成目录页
114
  - 每个一级章节前生成一个过渡页
115
- - 每个二级标题("### "开头)生成一个内容页
116
  - 内容页中的items数组由该二级标题下的要点("-"开头)组成
117
  - 最后添加一个结束页
118
 
@@ -123,10 +129,9 @@ def aippt():
123
  - 每个内容页必须包含该节点下所有的要点,通常为2-4个
124
 
125
  示例输出:
126
- {"type":"cover","data":{"title":"5G技术如何改变我们的生活","text":"探索5G技术对现代生活的全方位影响"}}
127
- {"type":"contents","data":{"items":["5G技术概述","5G对通信领域的变革","5G与智能家居的融合","5G推动智能交通发展","5G在医疗领域的应用","5G助力工业互联网升级"]}}
128
- {"type":"transition","data":{"title":"5G技术概述","text":"本章将介绍5G技术的定义、关键特性及发展历程。"}}
129
- ..."""
130
  },
131
  {
132
  "role": "user",
@@ -140,7 +145,7 @@ def aippt():
140
  'Authorization': f'Bearer {OPENAI_API_KEY}'
141
  }
142
  payload = {
143
- 'model': 'gpt-4o',
144
  'messages': messages,
145
  'stream': True
146
  }
@@ -193,17 +198,17 @@ def aippt():
193
  # 验证是否为有效的 JSON
194
  slide_data = json.loads(json_str)
195
 
196
- # 如果是有效的JSON且包含type和data字段(为了安全起见)
197
- if isinstance(slide_data, dict) and ('type' in slide_data or slide_data.get('type') == 'end'):
198
  # 发送到客户端
199
  yield json.dumps(slide_data) + '\n'
200
  # 从缓冲区中移除已处理的部分
201
  buffer = buffer[json_end+1:]
202
  else:
203
- # JSON格式不符合期望,从缓冲区删除并继续
204
  buffer = buffer[json_end+1:]
205
  except Exception as e:
206
- # 解析错误,可能不是完整的JSON,继续等待
207
  print(f"Error parsing JSON: {e}")
208
  break
209
  except Exception as e:
@@ -211,9 +216,5 @@ def aippt():
211
 
212
  return Response(stream_with_context(generate()), mimetype='text/event-stream')
213
 
214
- # 添加请求警告过滤器,抑制 SSL 验证警告
215
- import urllib3
216
- urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
217
-
218
  if __name__ == '__main__':
219
  app.run(debug=True, host='0.0.0.0', port=7860)
 
2
  import requests
3
  import os
4
  import json
5
+ import urllib3
6
+
7
+ # 禁用 SSL 警告
8
+ urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
9
 
10
  app = Flask(__name__)
11
 
 
19
  data = request.json
20
  content = data.get('content')
21
  language = data.get('language', 'zh')
22
+ model = data.get('model', 'gpt-4o')
23
 
24
  # 构建发送给 OpenAI 的提示
25
  messages = [
 
54
  'Authorization': f'Bearer {OPENAI_API_KEY}'
55
  }
56
  payload = {
57
+ 'model': model,
58
  'messages': messages,
59
  'stream': True
60
  }
 
87
  data = request.json
88
  content = data.get('content')
89
  language = data.get('language', 'zh')
90
+ model = data.get('model', 'gpt-4.1-mini')
91
 
92
  # 构建发送给 OpenAI 的提示,包含 PPTist 所需数据结构的详细说明
93
  messages = [
 
100
  2. 必须严格遵循以下JSON格式,任何格式错误都会导致幻灯片无法显示:
101
 
102
  封面页:
103
+ {{"type":"cover","data":{{"title":"主标题","text":"副标题或简短描述"}}}}
104
 
105
  目录页:
106
+ {{"type":"contents","data":{{"items":["一级章节1","一级章节2","一级章节3","一级章节4","一级章节5"]}}}}
107
 
108
  过渡页:
109
+ {{"type":"transition","data":{{"title":"章节标题","text":"章节简介"}}}}
110
 
111
  内容页:
112
+ {{"type":"content","data":{{"title":"二级标题","items":[{{"title":"要点1标题","text":"要点1描述"}},{{"title":"要点2标题","text":"要点2描述"}},{{"title":"要点3标题","text":"要点3描述"}},{{"title":"要点4标题","text":"要点4描述"}}]}}}}
113
 
114
  结束页:
115
+ {{"type":"end"}}
116
 
117
  3. 转换规则:
118
+ - 大纲中的主标题("#"开头)转换为封面页
119
+ - 所有一级章节("##"开头)组成目录页
120
  - 每个一级章节前生成一个过渡页
121
+ - 每个二级标题("###"开头)生成一个内容页
122
  - 内容页中的items数组由该二级标题下的要点("-"开头)组成
123
  - 最后添加一个结束页
124
 
 
129
  - 每个内容页必须包含该节点下所有的要点,通常为2-4个
130
 
131
  示例输出:
132
+ {{"type":"cover","data":{{"title":"5G技术如何改变我们的生活","text":"探索5G技术对现代生活的全方位影响"}}}}
133
+ {{"type":"contents","data":{{"items":["5G技术概述","5G对通信领域的变革","5G与智能家居的融合","5G推动智能交通发展","5G在医疗领域的应用","5G助力工业互联网升级"]}}}}
134
+ {{"type":"transition","data":{{"title":"5G技术概述","text":"本章将介绍5G技术的定义、关键特性及发展历程。"}}}}"""
 
135
  },
136
  {
137
  "role": "user",
 
145
  'Authorization': f'Bearer {OPENAI_API_KEY}'
146
  }
147
  payload = {
148
+ 'model': model,
149
  'messages': messages,
150
  'stream': True
151
  }
 
198
  # 验证是否为有效的 JSON
199
  slide_data = json.loads(json_str)
200
 
201
+ # 验证是否包含必要的字段
202
+ if isinstance(slide_data, dict) and 'type' in slide_data:
203
  # 发送到客户端
204
  yield json.dumps(slide_data) + '\n'
205
  # 从缓冲区中移除已处理的部分
206
  buffer = buffer[json_end+1:]
207
  else:
208
+ # 格式不符合要求,从缓冲区移除
209
  buffer = buffer[json_end+1:]
210
  except Exception as e:
211
+ # 解析错误,可能不是完整的JSON,等待更多数据
212
  print(f"Error parsing JSON: {e}")
213
  break
214
  except Exception as e:
 
216
 
217
  return Response(stream_with_context(generate()), mimetype='text/event-stream')
218
 
 
 
 
 
219
  if __name__ == '__main__':
220
  app.run(debug=True, host='0.0.0.0', port=7860)