xd11yggy commited on
Commit
3da4655
Β·
verified Β·
1 Parent(s): 9f92389

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +2 -62
app.py CHANGED
@@ -35,29 +35,13 @@ Never invent information. Cite sources for all facts. Use neutral, academic tone
35
  """
36
 
37
  def process_searches(response):
38
- searches = re.findall(r'<search>(.*?)</search>', response, re.DOTALL)
 
39
  if searches:
40
  queries = [q.strip() for q in searches[0].split('\n') if q.strip()]
41
  return queries
42
  return None
43
 
44
- def process_thinking(response, duration):
45
- thinking_blocks = re.findall(r'<thinking>(.*?)</thinking>', response, re.DOTALL)
46
- if not thinking_blocks:
47
- return response, False
48
-
49
- formatted_response = response
50
- for content in thinking_blocks:
51
- formatted_think = (
52
- f"\nπŸ’­ THINKING PROCESS:\n{content.strip()}\n"
53
- f"Thought for {duration:.1f} seconds.\n"
54
- )
55
- formatted_response = formatted_response.replace(
56
- f'<thinking>{content}</thinking>',
57
- formatted_think
58
- )
59
- return formatted_response, True
60
-
61
  def search_with_retry(query, max_retries=3, delay=2):
62
  for attempt in range(max_retries):
63
  try:
@@ -69,14 +53,6 @@ def search_with_retry(query, max_retries=3, delay=2):
69
  raise
70
  return None
71
 
72
- def animate_thinking():
73
- dots = ["", ".", "..", "..."]
74
- i = 0
75
- while True:
76
- yield f"Thinking{dots[i]}"
77
- i = (i + 1) % 4
78
- time.sleep(0.5)
79
-
80
  def respond(
81
  message,
82
  history: list[tuple[str, str]],
@@ -103,16 +79,12 @@ def respond(
103
 
104
  full_response = ""
105
  search_cycle = True
106
- thinking_animation = animate_thinking()
107
 
108
  try:
109
  while search_cycle:
110
  search_cycle = False
111
- show_thinking = False
112
- thinking_start = None
113
 
114
  try:
115
- start_time = time.time()
116
  completion = client.chat.completions.create(
117
  model="qwen/qwq-32b:free",
118
  messages=messages,
@@ -130,42 +102,10 @@ def respond(
130
  return
131
 
132
  response = ""
133
- thinking_buffer = ""
134
- in_thinking_tag = False
135
-
136
  for chunk in completion:
137
  token = chunk.choices[0].delta.content or ""
138
  response += token
139
  full_response += token
140
-
141
- # Detect thinking tags
142
- if not in_thinking_tag and '<thinking>' in token:
143
- in_thinking_tag = True
144
- thinking_start = time.time()
145
- show_thinking = True
146
-
147
- if in_thinking_tag:
148
- thinking_buffer += token
149
- if '</thinking>' in token:
150
- in_thinking_tag = False
151
- thinking_duration = time.time() - thinking_start
152
-
153
- # Show animated thinking if needed
154
- if show_thinking and not in_thinking_tag:
155
- formatted, has_thinking = process_thinking(full_response, time.time() - start_time)
156
- if has_thinking:
157
- full_response = formatted
158
- show_thinking = False
159
- yield full_response
160
- else:
161
- yield next(thinking_animation)
162
- else:
163
- yield full_response
164
-
165
- # Process final thinking state
166
- final_response, has_thinking = process_thinking(full_response, time.time() - start_time)
167
- if has_thinking:
168
- full_response = final_response
169
  yield full_response
170
 
171
  queries = process_searches(response)
 
35
  """
36
 
37
  def process_searches(response):
38
+ formatted_response = response.replace("<thinking>", "\nπŸ’­ THINKING PROCESS:\n").replace("</thinking>", "\n")
39
+ searches = re.findall(r'<search>(.*?)</search>', formatted_response, re.DOTALL)
40
  if searches:
41
  queries = [q.strip() for q in searches[0].split('\n') if q.strip()]
42
  return queries
43
  return None
44
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  def search_with_retry(query, max_retries=3, delay=2):
46
  for attempt in range(max_retries):
47
  try:
 
53
  raise
54
  return None
55
 
 
 
 
 
 
 
 
 
56
  def respond(
57
  message,
58
  history: list[tuple[str, str]],
 
79
 
80
  full_response = ""
81
  search_cycle = True
 
82
 
83
  try:
84
  while search_cycle:
85
  search_cycle = False
 
 
86
 
87
  try:
 
88
  completion = client.chat.completions.create(
89
  model="qwen/qwq-32b:free",
90
  messages=messages,
 
102
  return
103
 
104
  response = ""
 
 
 
105
  for chunk in completion:
106
  token = chunk.choices[0].delta.content or ""
107
  response += token
108
  full_response += token
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  yield full_response
110
 
111
  queries = process_searches(response)