Spaces:
Sleeping
Sleeping
| # app.py | |
| import streamlit as st | |
| from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel | |
| from huggingface_hub import login | |
| import warnings | |
| warnings.filterwarnings("ignore") | |
| # Set page configuration | |
| st.set_page_config( | |
| page_title="DuckDuckGo Search Tool", | |
| page_icon="π", | |
| layout="wide", | |
| ) | |
| # Function to initialize the API with user-provided token | |
| def initialize_api(token=None): | |
| if token: | |
| login(token) | |
| try: | |
| # Initialize the model | |
| return HfApiModel(model_id="meta-llama/Llama-3.3-70B-Instruct") | |
| except Exception as e: | |
| st.error(f"Error initializing model: {str(e)}") | |
| return None | |
| else: | |
| st.warning("Please enter your Hugging Face API token to use this app.") | |
| return None | |
| # Initialize tools | |
| search_tool = DuckDuckGoSearchTool() | |
| # Streamlit App | |
| st.title("DuckDuckGo Search Tool") | |
| st.markdown("Search the web using DuckDuckGo and get AI-powered responses") | |
| # Initialize session state for token | |
| if "hf_token" not in st.session_state: | |
| st.session_state.hf_token = "" | |
| st.session_state.model = None | |
| # Sidebar for token input | |
| with st.sidebar: | |
| st.title("Configuration") | |
| # Token input | |
| token_input = st.text_input( | |
| "Enter your Hugging Face API Token:", | |
| value=st.session_state.hf_token, | |
| type="password", | |
| help="Get your token from huggingface.co/settings/tokens" | |
| ) | |
| if token_input != st.session_state.hf_token: | |
| st.session_state.hf_token = token_input | |
| # Reset model when token changes | |
| st.session_state.model = None | |
| # Button to initialize/test the token | |
| if st.button("Initialize API"): | |
| with st.spinner("Testing your token..."): | |
| model = initialize_api(st.session_state.hf_token) | |
| if model: | |
| st.session_state.model = model | |
| st.success("β API initialized successfully!") | |
| else: | |
| st.error("β Failed to initialize the API with the provided token.") | |
| # Check if the model is initialized | |
| if not st.session_state.model and st.session_state.hf_token: | |
| with st.spinner("Initializing model..."): | |
| st.session_state.model = initialize_api(st.session_state.hf_token) | |
| if st.session_state.model: | |
| st.success("Model initialized successfully!") | |
| # Main content area - only show if token is provided | |
| if st.session_state.hf_token and st.session_state.model: | |
| st.header("AI Web Search") | |
| st.markdown("Ask any question and the AI will search the web for answers") | |
| query = st.text_input("Enter your search query:", placeholder="What are the latest advancements in renewable energy?") | |
| if st.button("Search"): | |
| if query: | |
| with st.spinner("Searching and processing..."): | |
| agent = CodeAgent(tools=[search_tool], model=st.session_state.model) | |
| response = agent.run(query) | |
| st.success("Search complete!") | |
| st.markdown("### Results") | |
| st.markdown(response) | |
| else: | |
| st.warning("Please enter a search query") | |
| else: | |
| # Token not provided | |
| st.info("Please enter your Hugging Face API token in the sidebar to get started.") | |
| # Show more information to help users understand what they need | |
| st.markdown(""" | |
| ### How to Get a Hugging Face Token | |
| 1. Go to [huggingface.co](https://huggingface.co/) and create an account if you don't have one | |
| 2. Visit your [settings page](https://huggingface.co/settings/tokens) | |
| 3. Create a new token with read access | |
| 4. Copy the token and paste it in the sidebar | |
| """) |