Spaces:
Sleeping
Sleeping
| import langchain | |
| import streamlit as st | |
| from duckduckgo import search | |
| from bs4 import BeautifulSoup | |
| import pyttsx3 | |
| import speech_recognition as sr | |
| # Set up LangChain | |
| llm = langchain.llms.OpenAI() | |
| template = """Answer the following questions as best you can, but speaking as a pirate might speak. | |
| You have access to the following tools: {tools} | |
| Use the following format: | |
| Question: the input question you must answer | |
| Thought: you should always think about what to do | |
| Action: the action you will take""" | |
| # Set up Groq API credentials | |
| groq_api_key = "YOUR_GROQ_API_KEY_HERE" | |
| # Set up text-to-speech engine | |
| engine = pyttsx3.init() | |
| # Set up speech-to-text recognizer | |
| recognizer = sr.Recognizer() | |
| def get_user_input(): | |
| # Use speech-to-text recognizer to get user input | |
| with sr.Microphone() as source: | |
| audio = recognizer.listen(source) | |
| try: | |
| user_input = recognizer.recognize_google(audio, language="en-US") | |
| return user_input | |
| except sr.UnknownValueError: | |
| return "Sorry, I didn't quite catch that." | |
| def conduct_web_search(query): | |
| # Use DuckDuckGo to conduct web search | |
| results = search(query, num_results=10) | |
| return results | |
| def extract_data_from_web(results): | |
| # Use BeautifulSoup to extract data from web pages | |
| data = [] | |
| for result in results: | |
| url = result["url"] | |
| soup = BeautifulSoup(url, "html.parser") | |
| # Extract relevant data from webpage | |
| title = soup.find("title").text | |
| data.append({"title": title, "url": url}) | |
| return data | |
| def summarize_output(data): | |
| # Use Groq API to summarize output | |
| summary = langchain.chains.summarize(data, api_key=groq_api_key) | |
| return summary | |
| def main(): | |
| # Get user input | |
| user_input = get_user_input() | |
| st.write(f"User input: {user_input}") | |
| # Conduct web search | |
| results = conduct_web_search(user_input) | |
| st.write(f"Search results: {results}") | |
| # Extract data from web | |
| data = extract_data_from_web(results) | |
| st.write(f"Extracted data: {data}") | |
| # Summarize output | |
| summary = summarize_output(data) | |
| st.write(f"Summarized output: {summary}") | |
| # Provide output in voice | |
| engine.say(summary) | |
| engine.runAndWait() | |
| if __name__ == "__main__": | |
| main() |