jacktol commited on
Commit
3257702
1 Parent(s): 9e24897

removed comments from main.py

Browse files
Files changed (1) hide show
  1. main.py +1 -19
main.py CHANGED
@@ -10,42 +10,31 @@ from styles import styles
10
  from script import script
11
  from fasthtml_hf import setup_hf_backup
12
 
13
- # Set the secret key from the environment or use default
14
  secret_key = os.getenv('SECRET_KEY')
15
 
16
- # Initialize FastHTML with the secret key
17
  app = FastHTML(secret_key=secret_key)
18
 
19
- # Mount static files for favicon and other static assets
20
  app.mount("/static", StaticFiles(directory="static"), name="static")
21
 
22
- # Setup Hugging Face backup with writable directory
23
  setup_hf_backup(app)
24
 
25
- # OpenAI client instance
26
  client = AsyncOpenAI()
27
 
28
- # Store user conversations by session ID
29
  conversations = {}
30
 
31
- # Bleach allowed tags and attributes for sanitization
32
  ALLOWED_TAGS = list(bleach.sanitizer.ALLOWED_TAGS) + ["h1", "h2", "h3", "p", "strong", "em", "ul", "ol", "li", "code", "pre", "blockquote"]
33
  ALLOWED_ATTRIBUTES = bleach.sanitizer.ALLOWED_ATTRIBUTES
34
 
35
- # Static file paths
36
  static_dir = os.path.join(os.path.dirname(__file__), "static")
37
  light_icon = os.path.join(static_dir, "favicon-light.ico")
38
  dark_icon = os.path.join(static_dir, "favicon-dark.ico")
39
 
40
- # Custom SVG component
41
  def Svg(*c, viewBox=None, **kwargs):
42
  return ft_hx('svg', *c, viewBox=viewBox, **kwargs)
43
 
44
- # Custom Path component for SVG
45
  def Path(*c, d=None, fill=None, **kwargs):
46
  return ft_hx('path', *c, d=d, fill=fill, **kwargs)
47
 
48
- # Homepage route
49
  @app.get("/")
50
  def home():
51
  """Render homepage with FastGPT UI."""
@@ -56,7 +45,7 @@ def home():
56
  page = Html(
57
  Head(
58
  Title('FastGPT'),
59
- Favicon(light_icon="/static/favicon-light.ico", dark_icon="/static/favicon-dark.ico"), # Serve favicon files
60
  Style(styles),
61
  Script(src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"),
62
  Script(src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.2.9/purify.min.js")
@@ -116,7 +105,6 @@ def home():
116
  )
117
  return page
118
 
119
- # Route to stream responses based on user input
120
  @app.get("/stream")
121
  async def stream_response(request: Request, message: str, session_id: str = None):
122
  """Stream responses for the given user input."""
@@ -125,18 +113,15 @@ async def stream_response(request: Request, message: str, session_id: str = None
125
  if not session_id:
126
  raise HTTPException(status_code=400, detail="Session ID is required")
127
 
128
- # Initialize conversation if the session ID is new
129
  if session_id not in conversations:
130
  conversations[session_id] = [
131
  {"role": "system", "content": "You are a helpful assistant. Use Markdown for formatting."}
132
  ]
133
 
134
- # Add user's message to the conversation
135
  conversations[session_id].append({"role": "user", "content": message})
136
 
137
  async def event_generator():
138
  try:
139
- # Stream response from OpenAI
140
  response = await client.chat.completions.create(
141
  model="gpt-4o-mini",
142
  messages=conversations[session_id],
@@ -145,7 +130,6 @@ async def stream_response(request: Request, message: str, session_id: str = None
145
 
146
  assistant_response = ""
147
 
148
- # Stream each chunk of the response
149
  async for chunk in response:
150
  if await request.is_disconnected():
151
  print(f"Client for session {session_id} disconnected")
@@ -156,7 +140,6 @@ async def stream_response(request: Request, message: str, session_id: str = None
156
  assistant_response += content
157
  yield {"data": content}
158
 
159
- # Store assistant's full response
160
  conversations[session_id].append({"role": "assistant", "content": assistant_response})
161
 
162
  except Exception as e:
@@ -167,7 +150,6 @@ async def stream_response(request: Request, message: str, session_id: str = None
167
 
168
  return EventSourceResponse(event_generator())
169
 
170
- # Route to reset the conversation for a given session ID
171
  @app.get("/reset")
172
  def reset_conversation(session_id: str):
173
  """Reset the conversation for the specified session ID."""
 
10
  from script import script
11
  from fasthtml_hf import setup_hf_backup
12
 
 
13
  secret_key = os.getenv('SECRET_KEY')
14
 
 
15
  app = FastHTML(secret_key=secret_key)
16
 
 
17
  app.mount("/static", StaticFiles(directory="static"), name="static")
18
 
 
19
  setup_hf_backup(app)
20
 
 
21
  client = AsyncOpenAI()
22
 
 
23
  conversations = {}
24
 
 
25
  ALLOWED_TAGS = list(bleach.sanitizer.ALLOWED_TAGS) + ["h1", "h2", "h3", "p", "strong", "em", "ul", "ol", "li", "code", "pre", "blockquote"]
26
  ALLOWED_ATTRIBUTES = bleach.sanitizer.ALLOWED_ATTRIBUTES
27
 
 
28
  static_dir = os.path.join(os.path.dirname(__file__), "static")
29
  light_icon = os.path.join(static_dir, "favicon-light.ico")
30
  dark_icon = os.path.join(static_dir, "favicon-dark.ico")
31
 
 
32
  def Svg(*c, viewBox=None, **kwargs):
33
  return ft_hx('svg', *c, viewBox=viewBox, **kwargs)
34
 
 
35
  def Path(*c, d=None, fill=None, **kwargs):
36
  return ft_hx('path', *c, d=d, fill=fill, **kwargs)
37
 
 
38
  @app.get("/")
39
  def home():
40
  """Render homepage with FastGPT UI."""
 
45
  page = Html(
46
  Head(
47
  Title('FastGPT'),
48
+ Favicon(light_icon="/static/favicon-light.ico", dark_icon="/static/favicon-dark.ico"),
49
  Style(styles),
50
  Script(src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"),
51
  Script(src="https://cdnjs.cloudflare.com/ajax/libs/dompurify/2.2.9/purify.min.js")
 
105
  )
106
  return page
107
 
 
108
  @app.get("/stream")
109
  async def stream_response(request: Request, message: str, session_id: str = None):
110
  """Stream responses for the given user input."""
 
113
  if not session_id:
114
  raise HTTPException(status_code=400, detail="Session ID is required")
115
 
 
116
  if session_id not in conversations:
117
  conversations[session_id] = [
118
  {"role": "system", "content": "You are a helpful assistant. Use Markdown for formatting."}
119
  ]
120
 
 
121
  conversations[session_id].append({"role": "user", "content": message})
122
 
123
  async def event_generator():
124
  try:
 
125
  response = await client.chat.completions.create(
126
  model="gpt-4o-mini",
127
  messages=conversations[session_id],
 
130
 
131
  assistant_response = ""
132
 
 
133
  async for chunk in response:
134
  if await request.is_disconnected():
135
  print(f"Client for session {session_id} disconnected")
 
140
  assistant_response += content
141
  yield {"data": content}
142
 
 
143
  conversations[session_id].append({"role": "assistant", "content": assistant_response})
144
 
145
  except Exception as e:
 
150
 
151
  return EventSourceResponse(event_generator())
152
 
 
153
  @app.get("/reset")
154
  def reset_conversation(session_id: str):
155
  """Reset the conversation for the specified session ID."""