Shreyas094 commited on
Commit
3c6dd2a
·
verified ·
1 Parent(s): 1ea4142

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -49
app.py CHANGED
@@ -28,8 +28,9 @@ llama_cloud_api_key = os.environ.get("LLAMA_CLOUD_API_KEY")
28
  ACCOUNT_ID = os.environ.get("CLOUDFARE_ACCOUNT_ID")
29
  API_TOKEN = os.environ.get("CLOUDFLARE_AUTH_TOKEN")
30
  API_BASE_URL = "https://api.cloudflare.com/client/v4/accounts/a17f03e0f049ccae0c15cdcf3b9737ce/ai/run/"
31
- API_URL = "https://api-inference.huggingface.co/models/openai/whisper-large-v3"
32
- headers={"Authorization": f"Bearer {huggingface_token}"}
 
33
 
34
  print(f"ACCOUNT_ID: {ACCOUNT_ID}")
35
  print(f"CLOUDFLARE_AUTH_TOKEN: {API_TOKEN[:5]}..." if API_TOKEN else "Not set")
@@ -279,14 +280,17 @@ def generate_chunked_response(prompt, model, max_tokens=10000, num_calls=3, temp
279
  print(f"Final clean response: {final_response[:100]}...")
280
  return final_response
281
 
282
- def chatbot_interface(message, history, model, temperature, num_calls):
 
 
 
283
  if not message.strip():
284
  return "", history
285
 
286
  history = history + [(message, "")]
287
 
288
  try:
289
- for response in respond(message, history, model, temperature, num_calls):
290
  history[-1] = (message, response)
291
  yield history
292
  except gr.CancelledError:
@@ -398,27 +402,8 @@ def summarize_web_results(query: str, search_results: List[Dict[str, str]], conv
398
  except Exception as e:
399
  return f"An error occurred during summarization: {str(e)}"
400
 
401
- def transcribe_audio(audio):
402
- if audio is None:
403
- return "No audio file provided."
404
-
405
- try:
406
- sr, y = audio
407
- y = y.astype(np.float32)
408
- y /= np.max(np.abs(y))
409
-
410
- response = requests.post(API_URL, headers=headers, json={"inputs": {"sampling_rate": sr, "raw": y.tolist()}})
411
- response.raise_for_status()
412
- return response.json()["text"]
413
- except Exception as e:
414
- return f"An error occurred during transcription: {str(e)}"
415
-
416
  # Modify the existing respond function to handle both PDF and web search
417
- def respond(message, history, model, temperature, num_calls, use_web_search, selected_docs, audio_input):
418
- if audio_input is not None:
419
- transcription = transcribe_audio(audio_input)
420
- message = f"Transcription: {transcription}\n\nUser query: {message}"
421
-
422
  logging.info(f"User Query: {message}")
423
  logging.info(f"Model Used: {model}")
424
  logging.info(f"Selected Documents: {selected_docs}")
@@ -627,6 +612,17 @@ Write a detailed and complete response that answers the following user question:
627
 
628
  logging.info("Finished generating response")
629
 
 
 
 
 
 
 
 
 
 
 
 
630
  def vote(data: gr.LikeData):
631
  if data.liked:
632
  print(f"You upvoted this response: {data.value}")
@@ -679,45 +675,28 @@ custom_placeholder = "Ask a question (Note: You can toggle between Web Search an
679
  # Update the demo interface
680
  # Update the Gradio interface
681
  demo = gr.ChatInterface(
682
- respond,
683
  additional_inputs_accordion=gr.Accordion(label="⚙️ Parameters", open=True, render=False),
684
  additional_inputs=[
685
  gr.Dropdown(choices=MODELS, label="Select Model", value=MODELS[3]),
686
  gr.Slider(minimum=0.1, maximum=1.0, value=0.2, step=0.1, label="Temperature"),
687
  gr.Slider(minimum=1, maximum=5, value=1, step=1, label="Number of API Calls"),
688
  gr.Checkbox(label="Use Web Search", value=True),
689
- gr.CheckboxGroup(label="Select documents to query")
 
690
  ],
691
  title="AI-powered PDF Chat and Web Search Assistant",
692
- description="Chat with your PDFs or use web search to answer questions.",
693
  theme=gr.themes.Soft(
694
- primary_hue="orange",
695
- secondary_hue="amber",
696
- neutral_hue="gray",
697
- font=[gr.themes.GoogleFont("Exo"), "ui-sans-serif", "system-ui", "sans-serif"]
698
- ).set(
699
- body_background_fill_dark="#0c0505",
700
- block_background_fill_dark="#0c0505",
701
- block_border_width="1px",
702
- block_title_background_fill_dark="#1b0f0f",
703
- input_background_fill_dark="#140b0b",
704
- button_secondary_background_fill_dark="#140b0b",
705
- border_color_accent_dark="#1b0f0f",
706
- border_color_primary_dark="#1b0f0f",
707
- background_fill_secondary_dark="#0c0505",
708
- color_accent_soft_dark="transparent",
709
- code_background_fill_dark="#140b0b"
710
  ),
711
  css=css,
712
  examples=[
713
- ["Tell me about the contents of the uploaded PDFs."],
714
- ["What are the main topics discussed in the documents?"],
715
- ["Can you summarize the key points from the PDFs?"],
716
- ["What's the latest news about artificial intelligence?"]
717
  ],
718
  cache_examples=False,
719
  analytics_enabled=False,
720
- textbox=gr.Textbox(placeholder="Ask a question about the uploaded PDFs or any topic", container=False, scale=7),
721
  chatbot = gr.Chatbot(
722
  show_copy_button=True,
723
  likeable=True,
@@ -727,7 +706,6 @@ demo = gr.ChatInterface(
727
  )
728
  )
729
 
730
- # Add file upload functionality
731
  # Add file upload functionality
732
  with demo:
733
  gr.Markdown("## Upload and Manage PDF Documents")
 
28
  ACCOUNT_ID = os.environ.get("CLOUDFARE_ACCOUNT_ID")
29
  API_TOKEN = os.environ.get("CLOUDFLARE_AUTH_TOKEN")
30
  API_BASE_URL = "https://api.cloudflare.com/client/v4/accounts/a17f03e0f049ccae0c15cdcf3b9737ce/ai/run/"
31
+
32
+ # Add this to your existing imports and configurations
33
+ whisper_client = InferenceClient("openai/whisper-large-v3", token=huggingface_token)
34
 
35
  print(f"ACCOUNT_ID: {ACCOUNT_ID}")
36
  print(f"CLOUDFLARE_AUTH_TOKEN: {API_TOKEN[:5]}..." if API_TOKEN else "Not set")
 
280
  print(f"Final clean response: {final_response[:100]}...")
281
  return final_response
282
 
283
+ def chatbot_interface(message, audio, history, model, temperature, num_calls, use_web_search, selected_docs):
284
+ if audio is not None:
285
+ message = transcribe_audio(audio)
286
+
287
  if not message.strip():
288
  return "", history
289
 
290
  history = history + [(message, "")]
291
 
292
  try:
293
+ for response in respond(message, history, model, temperature, num_calls, use_web_search, selected_docs):
294
  history[-1] = (message, response)
295
  yield history
296
  except gr.CancelledError:
 
402
  except Exception as e:
403
  return f"An error occurred during summarization: {str(e)}"
404
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
405
  # Modify the existing respond function to handle both PDF and web search
406
+ def respond(message, history, model, temperature, num_calls, use_web_search, selected_docs):
 
 
 
 
407
  logging.info(f"User Query: {message}")
408
  logging.info(f"Model Used: {model}")
409
  logging.info(f"Selected Documents: {selected_docs}")
 
612
 
613
  logging.info("Finished generating response")
614
 
615
+ def transcribe_audio(audio_file):
616
+ if audio_file is None:
617
+ return ""
618
+
619
+ with open(audio_file, "rb") as f:
620
+ data = f.read()
621
+
622
+ response = whisper_client.audio_to_text(data)
623
+ return response["text"]
624
+
625
+
626
  def vote(data: gr.LikeData):
627
  if data.liked:
628
  print(f"You upvoted this response: {data.value}")
 
675
  # Update the demo interface
676
  # Update the Gradio interface
677
  demo = gr.ChatInterface(
678
+ chatbot_interface,
679
  additional_inputs_accordion=gr.Accordion(label="⚙️ Parameters", open=True, render=False),
680
  additional_inputs=[
681
  gr.Dropdown(choices=MODELS, label="Select Model", value=MODELS[3]),
682
  gr.Slider(minimum=0.1, maximum=1.0, value=0.2, step=0.1, label="Temperature"),
683
  gr.Slider(minimum=1, maximum=5, value=1, step=1, label="Number of API Calls"),
684
  gr.Checkbox(label="Use Web Search", value=True),
685
+ gr.CheckboxGroup(label="Select documents to query"),
686
+ gr.Audio(source="microphone", type="filepath", label="Speak your question")
687
  ],
688
  title="AI-powered PDF Chat and Web Search Assistant",
689
+ description="Chat with your PDFs, use web search, or speak your questions.",
690
  theme=gr.themes.Soft(
691
+ # ... (keep the existing theme configuration)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
692
  ),
693
  css=css,
694
  examples=[
695
+ # ... (keep the existing examples)
 
 
 
696
  ],
697
  cache_examples=False,
698
  analytics_enabled=False,
699
+ textbox=gr.Textbox(placeholder="Type or speak your question", container=False, scale=7),
700
  chatbot = gr.Chatbot(
701
  show_copy_button=True,
702
  likeable=True,
 
706
  )
707
  )
708
 
 
709
  # Add file upload functionality
710
  with demo:
711
  gr.Markdown("## Upload and Manage PDF Documents")