import streamlit as st
from langchain.agents import AgentType, initialize_agent
from langchain import HuggingFaceHub
from langchain.tools import Tool
from datetime import datetime
from langchain.tools import DuckDuckGoSearchRun
import os
# Set up Hugging Face Hub
token = os.environ['HF_TOKEN']
hub_llm = HuggingFaceHub(
repo_id='meta-llama/Llama-3.1-8B-Instruct',
huggingfacehub_api_token=token
)
# Set the page title and icon
st.set_page_config(
page_title="AI Driven Search",
page_icon="🔍",
layout="wide",
)
# Custom CSS style for the title block
st.markdown(
"""
""",
unsafe_allow_html=True,
)
# Title block with custom styling
st.markdown('
', unsafe_allow_html=True)
st.title("🌐 AI Powered Search Engine")
st.markdown("### Find what you're looking for with the power of AI!")
st.markdown("
", unsafe_allow_html=True)
# Subtitle and description with custom styling
st.markdown('', unsafe_allow_html=True)
st.subheader("How it works:")
st.write(
"Our search engine is powered by DuckDuckGo search and uses language models "
"that understand your queries and provide accurate results."
)
st.markdown("
", unsafe_allow_html=True)
# Form for user input
with st.form(key="form"):
user_input = st.text_input("Ask your question")
submit_clicked = st.form_submit_button("Search")
# Run search if form is submitted
if submit_clicked:
datetime_tool = Tool(
name="Datetime",
func=lambda x: datetime.now().isoformat(),
description="Returns the current datetime"
)
search = DuckDuckGoSearchRun()
search_tool = Tool(
name="Search",
func=search,
description="Performs an internet search using DuckDuckGo"
)
# Initialize the agent
agent_chain = initialize_agent(
[search_tool, datetime_tool],
hub_llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
handle_parsing_errors=True,
)
result = agent_chain.run(user_input)
st.success(result)
# Footer with custom styling
st.markdown(
'Built with ❤️ by Abhishek | '
'GitHub Repo
',
unsafe_allow_html=True,
)