ftn03's picture
Merge branch 'main' of https://huggingface.co/spaces/ftn03/SearchEngineToolAgent
946e7a1
|
Raw History Blame Contribute Delete
2.4 kB
metadata
title: SearchEngineToolAgent
emoji: πŸš€
colorFrom: red
colorTo: red
sdk: docker
app_port: 8501
tags:
  - streamlit
pinned: false
short_description: Streamlit & Langchain AI Chatbot and Agent

Welcome to our App

A conversational AI chatbot built with Streamlit and LangChain that can search the web, Wikipedia, and Arxiv to answer your questions.

Features

  • Multi-tool agent powered by LangChain's ReAct architecture
  • DuckDuckGo Search for general web queries
  • Wikipedia for encyclopedic knowledge
  • Arxiv for scientific papers and research
  • Chat interface with conversation history
  • Transparent reasoning β€” expandable steps show the agent's thinking process and tool calls

Tech Stack

  • Streamlit β€” Web UI and chat interface
  • LangChain / LangGraph β€” Agent orchestration and tool management
  • OpenAI GPT β€” Language model (easily swappable with Groq/Ollama)
  • LangSmith β€” Optional tracing and monitoring

Setup

1. Clone the repository

git clone https://github.com/ftn03/SearchEngineToolAgent.git
cd SearchEngineToolAgent

2. Install dependencies

pip install -r requirements.txt

3. Configure environment variables

Copy the example file and fill in your API keys:

cp .env.example .env

Required keys:

Variable Description
OPENAI_API_KEY OpenAI API key (for GPT models)
GROQ_API_KEY Groq API key (optional, for Llama/Qwen models)
LANGCHAIN_API_KEY LangSmith API key (optional, for tracing)
LANGCHAIN_PROJECT LangSmith project name (optional)

4. Run the app

streamlit run app.py

The app will open at http://localhost:8501.

How It Works

  1. The user asks a question in the chat input
  2. The LangChain agent decides which tool(s) to use
  3. Each step is displayed with expandable details (reasoning, tool calls, tool results)
  4. The final answer is displayed in the chat and saved to conversation history

Switching LLM Providers

Edit app.py to swap the model. Examples:

# OpenAI
llm = ChatOpenAI(model="gpt-5-nano-2025-08-07", streaming=True)

# Groq (Llama)
llm = ChatGroq(model="llama-3.3-70b-versatile", streaming=True)