siddhartharya commited on
Commit
81670c0
·
verified ·
1 Parent(s): 3c7c197

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -53
app.py CHANGED
@@ -15,9 +15,6 @@ from concurrent.futures import ThreadPoolExecutor
15
  import threading
16
  from html import escape
17
 
18
- # Import OpenAI library
19
- import openai
20
-
21
  # Suppress specific warnings
22
  import urllib3
23
  urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
@@ -73,19 +70,35 @@ CATEGORIES = [
73
  "Uncategorized",
74
  ]
75
 
76
- # Set up OpenAI API key and base URL
77
- OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
 
 
 
78
 
79
- if not OPENAI_API_KEY:
80
- logger.error("OPENAI_API_KEY environment variable not set.")
81
 
82
- openai.api_key = OPENAI_API_KEY
83
- # If you're using a custom API base, uncomment and set it
84
- # openai.api_base = "https://api.your-provider.com/v1"
85
 
86
- # Initialize global variables for rate limiting
87
- api_lock = threading.Lock()
88
- last_api_call_time = 0
 
 
 
 
 
 
 
 
 
 
 
 
 
89
 
90
  def extract_main_content(soup):
91
  """
@@ -158,7 +171,7 @@ def get_page_metadata(soup):
158
 
159
  def generate_summary_and_assign_category(bookmark):
160
  """
161
- Generate a concise summary and assign a category using a single LLM call.
162
  """
163
  logger.info(f"Generating summary and assigning category for bookmark: {bookmark.get('url')}")
164
 
@@ -167,8 +180,8 @@ def generate_summary_and_assign_category(bookmark):
167
 
168
  while retry_count < max_retries:
169
  try:
170
- # Rate Limiting Logic
171
- with api_lock:
172
  global last_api_call_time
173
  current_time = time.time()
174
  elapsed = current_time - last_api_call_time
@@ -237,23 +250,15 @@ Summary: [Your summary]
237
  Category: [One category]
238
  """
239
 
240
- # Call the LLM via OpenAI API
241
- response = openai.ChatCompletion.create(
242
- model='gpt-4', # Ensure you're using a valid and accessible model
243
- messages=[
244
- {"role": "user", "content": prompt}
245
- ],
246
- max_tokens=150,
247
- temperature=0.5,
248
- )
249
 
250
- content = response['choices'][0]['message']['content'].strip()
251
- if not content:
252
  raise ValueError("Empty response received from the model.")
253
 
254
  # Parse the response
255
- summary_match = re.search(r"Summary:\s*(.*)", content)
256
- category_match = re.search(r"Category:\s*(.*)", content)
257
 
258
  if summary_match:
259
  bookmark['summary'] = summary_match.group(1).strip()
@@ -280,16 +285,11 @@ Category: [One category]
280
  logger.info("Successfully generated summary and assigned category")
281
  break # Exit the retry loop upon success
282
 
283
- except openai.error.RateLimitError as e:
284
- retry_count += 1
285
- wait_time = int(e.headers.get("Retry-After", 5))
286
- logger.warning(f"Rate limit reached. Waiting for {wait_time} seconds before retrying... (Attempt {retry_count}/{max_retries})")
287
- time.sleep(wait_time)
288
  except Exception as e:
289
  logger.error(f"Error generating summary and assigning category: {e}", exc_info=True)
290
  bookmark['summary'] = 'No summary available.'
291
  bookmark['category'] = 'Uncategorized'
292
- break # Exit the retry loop on other exceptions
293
 
294
  def parse_bookmarks(file_content):
295
  """
@@ -624,8 +624,8 @@ def chatbot_response(user_query, chat_history):
624
  # Append user's message to chat history
625
  chat_history.append({"role": "user", "content": user_query})
626
 
627
- # Rate Limiting Logic
628
- with api_lock:
629
  global last_api_call_time
630
  current_time = time.time()
631
  elapsed = current_time - last_api_call_time
@@ -665,28 +665,19 @@ Bookmarks:
665
  Provide a concise and helpful response.
666
  """
667
 
668
- # Call the LLM via OpenAI API
669
- response = openai.ChatCompletion.create(
670
- model='gpt-4', # Ensure you're using a valid and accessible model
671
- messages=[
672
- {"role": "user", "content": prompt}
673
- ],
674
- max_tokens=300,
675
- temperature=0.7,
676
- )
677
-
678
- answer = response['choices'][0]['message']['content'].strip()
679
  logger.info("Chatbot response generated")
680
 
681
  # Append the assistant's response to chat history
682
  chat_history.append({"role": "assistant", "content": answer})
683
  return chat_history
684
 
685
- except openai.error.RateLimitError as e:
686
- wait_time = int(e.headers.get("Retry-After", 5))
687
- logger.warning(f"Rate limit reached. Waiting for {wait_time} seconds before retrying...")
688
- time.sleep(wait_time)
689
- return chatbot_response(user_query, chat_history) # Retry after waiting
690
  except Exception as e:
691
  error_message = f"⚠️ Error processing your query: {str(e)}"
692
  logger.error(error_message, exc_info=True)
 
15
  import threading
16
  from html import escape
17
 
 
 
 
18
  # Suppress specific warnings
19
  import urllib3
20
  urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
 
70
  "Uncategorized",
71
  ]
72
 
73
+ # Remove OpenAI dependencies
74
+ # Define a function to generate responses using llama-3.1-70b-versatile
75
+ def generate_llama_response(prompt):
76
+ """
77
+ Generate a response using the llama-3.1-70b-versatile model.
78
 
79
+ Replace the implementation below with the actual method to interact with your LLM.
80
+ This could be an API call to a local server, a cloud service, or any interface you have set up.
81
 
82
+ Example (pseudo-code):
83
+ response = requests.post("http://localhost:5000/generate", json={"prompt": prompt})
84
+ return response.json().get("response", "")
85
 
86
+ For demonstration purposes, we'll return a placeholder response.
87
+ """
88
+ try:
89
+ # Example implementation; replace with actual API call or method
90
+ # For instance, if using a local API:
91
+ # response = requests.post("http://localhost:5000/generate", json={"prompt": prompt})
92
+ # return response.json().get("response", "")
93
+
94
+ # Placeholder response
95
+ logger.info("Generating response using llama-3.1-70b-versatile")
96
+ # Simulate processing time
97
+ time.sleep(1)
98
+ return "This is a placeholder response from llama-3.1-70b-versatile."
99
+ except Exception as e:
100
+ logger.error(f"Error generating response from llama: {e}", exc_info=True)
101
+ return "Error generating response."
102
 
103
  def extract_main_content(soup):
104
  """
 
171
 
172
  def generate_summary_and_assign_category(bookmark):
173
  """
174
+ Generate a concise summary and assign a category using the llama-3.1-70b-versatile model.
175
  """
176
  logger.info(f"Generating summary and assigning category for bookmark: {bookmark.get('url')}")
177
 
 
180
 
181
  while retry_count < max_retries:
182
  try:
183
+ # Rate Limiting Logic (if necessary)
184
+ with lock:
185
  global last_api_call_time
186
  current_time = time.time()
187
  elapsed = current_time - last_api_call_time
 
250
  Category: [One category]
251
  """
252
 
253
+ # Generate response using llama-3.1-70b-versatile
254
+ response = generate_llama_response(prompt)
 
 
 
 
 
 
 
255
 
256
+ if not response:
 
257
  raise ValueError("Empty response received from the model.")
258
 
259
  # Parse the response
260
+ summary_match = re.search(r"Summary:\s*(.*)", response)
261
+ category_match = re.search(r"Category:\s*(.*)", response)
262
 
263
  if summary_match:
264
  bookmark['summary'] = summary_match.group(1).strip()
 
285
  logger.info("Successfully generated summary and assigned category")
286
  break # Exit the retry loop upon success
287
 
 
 
 
 
 
288
  except Exception as e:
289
  logger.error(f"Error generating summary and assigning category: {e}", exc_info=True)
290
  bookmark['summary'] = 'No summary available.'
291
  bookmark['category'] = 'Uncategorized'
292
+ break # Exit the retry loop on exceptions
293
 
294
  def parse_bookmarks(file_content):
295
  """
 
624
  # Append user's message to chat history
625
  chat_history.append({"role": "user", "content": user_query})
626
 
627
+ # Rate Limiting Logic (if necessary)
628
+ with lock:
629
  global last_api_call_time
630
  current_time = time.time()
631
  elapsed = current_time - last_api_call_time
 
665
  Provide a concise and helpful response.
666
  """
667
 
668
+ # Generate response using llama-3.1-70b-versatile
669
+ response = generate_llama_response(prompt)
670
+
671
+ if not response:
672
+ raise ValueError("Empty response received from the model.")
673
+
674
+ answer = response.strip()
 
 
 
 
675
  logger.info("Chatbot response generated")
676
 
677
  # Append the assistant's response to chat history
678
  chat_history.append({"role": "assistant", "content": answer})
679
  return chat_history
680
 
 
 
 
 
 
681
  except Exception as e:
682
  error_message = f"⚠️ Error processing your query: {str(e)}"
683
  logger.error(error_message, exc_info=True)