mishrabp's picture
Upload folder using huggingface_hub
8e5962b verified
---
title: AI Chatbot
emoji: 🤖
colorFrom: pink
colorTo: yellow
sdk: docker
sdk_version: "0.0.1"
app_file: app.py
pinned: false
license: mit
tags:
- text-generation
- agentic-ai
- openai-sdk
short_description: An Experimental Agentic Chatbot (uses OpenAI Agent SDK)
---
# AI Chatbot
This is an experimental chatbot for chatting with AI. It is equipped with agents & tools to give you realtime data from the web. It uses **OpenAI - SDK** and **OpenAI - Agents**...
## Features
- Predefined prompts for quick analysis
- Chat interface with AI responses
- Enter key support and responsive design
- Latest messages appear on top
## Usage
1. Type a message or select a predefined prompt
2. Press **Enter** or click **Send**
3. AI responses appear instantly in the chat interface
## Supported APIs
- OpenAI
- Google
- GROQ
- SERPER
- News API
## Notes
- Make sure your API keys are configured in the Space secrets
- Built using Streamlit and deployed as a Docker Space
## References
https://openai.github.io/openai-agents-python/
https://github.com/openai/openai-agents-python/tree/main/examples/mcp
## Project Folder Structure
```
chatbot/
├── app.py # Main Streamlit chatbot interface
├── appagents/
│ ├── __init__.py # Package initialization
│ ├── OrchestratorAgent.py # Main orchestrator - coordinates all agents
│ ├── FinancialAgent.py # Financial data and analysis agent
│ ├── NewsAgent.py # News retrieval and summarization agent
│ ├── SearchAgent.py # General web search agent
│ └── InputValidationAgent.py # Input validation and sanitization agent
├── core/
│ ├── __init__.py # Package initialization
│ └── logger.py # Centralized logging configuration
├── tools/
│ ├── __init__.py # Package initialization
│ ├── google_tools.py # Google search API wrapper
│ ├── yahoo_tools.py # Yahoo Finance API wrapper
│ ├── news_tools.py # News API wrapper
│ └── time_tools.py # Time-related utility functions
├── prompts/
│ ├── economic_news.txt # Prompt for economic news analysis
│ ├── market_sentiment.txt # Prompt for market sentiment analysis
│ ├── news_headlines.txt # Prompt for news headline summarization
│ ├── trade_recommendation.txt # Prompt for trade recommendations
│ └── upcoming_earnings.txt # Prompt for upcoming earnings alerts
├── Dockerfile # Docker configuration for container deployment
├── pyproject.toml # Project metadata and dependencies (copied from root)
├── uv.lock # Locked dependency versions (copied from root)
├── README.md # Project documentation
└── run.py # Script to run the application locally
```
## File Descriptions
### UI Layer
- **app.py** - Main Streamlit chatbot interface that provides:
- Chat message display with user and AI messages
- Text input for user queries
- Predefined prompt buttons for quick analysis
- Real-time AI responses
- Support for Enter key submission
- Responsive design with latest messages appearing first
### Agents (`appagents/`)
- **OrchestratorAgent.py** - Main orchestrator that:
- Coordinates communication between all specialized agents
- Routes user queries to appropriate agents
- Manages conversation flow and context
- Integrates tool responses
- **FinancialAgent.py** - Financial data and analysis:
- Retrieves stock prices and financial metrics
- Performs financial analysis using Yahoo Finance API
- Provides market insights and recommendations
- Integrates with yahoo_tools for data fetching
- **NewsAgent.py** - News retrieval and summarization:
- Fetches latest news articles
- Summarizes news content
- Integrates with News API for real-time updates
- Provides news-based market insights
- **SearchAgent.py** - General web search:
- Performs web searches for general queries
- Integrates with Google Search / Serper API
- Returns relevant search results
- Supports multi-source data gathering
- **InputValidationAgent.py** - Input validation:
- Sanitizes user input
- Validates query format and content
- Prevents malicious inputs
- Ensures appropriate content
### Core Utilities (`core/`)
- **logger.py** - Centralized logging configuration:
- Provides consistent logging across agents
- Handles different log levels
- Formats log messages for clarity
### Tools (`tools/`)
- **google_tools.py** - Google Search API wrapper:
- Executes web searches via Google Search / Serper API
- Parses and returns search results
- Handles API authentication
- **yahoo_tools.py** - Yahoo Finance API integration:
- Retrieves stock price data
- Fetches financial metrics and indicators
- Provides historical price data
- Returns earnings information
- **news_tools.py** - News API integration:
- Fetches latest news articles
- Filters news by category and keywords
- Returns news headlines and summaries
- Provides market-related news feeds
- **time_tools.py** - Time utility functions:
- Provides current time information
- Formats timestamps
- Handles timezone conversions
### Prompts (`prompts/`)
Predefined prompts for specialized analysis:
- **economic_news.txt** - Analyzes economic news and implications
- **market_sentiment.txt** - Analyzes market sentiment trends
- **news_headlines.txt** - Summarizes and explains news headlines
- **trade_recommendation.txt** - Provides trading recommendations
- **upcoming_earnings.txt** - Alerts about upcoming earnings reports
### Configuration Files
- **Dockerfile** - Container deployment:
- Builds Docker image with Python 3.12
- Installs dependencies using `uv`
- Sets up Streamlit server on port 8501
- Configures PYTHONPATH for module imports
- **pyproject.toml** - Project metadata:
- Package name: "agents"
- Python version requirement: 3.12
- Lists all dependencies (OpenAI, LangChain, Streamlit, etc.)
- **uv.lock** - Dependency lock file:
- Ensures reproducible builds
- Pins exact versions of all dependencies
## Key Technologies
| Component | Technology | Purpose |
|-----------|-----------|---------|
| LLM Framework | OpenAI Agents | Multi-agent orchestration |
| Chat Interface | Streamlit | User interaction and display |
| Web Search | Google Search / Serper API | Web search results |
| Financial Data | Yahoo Finance API | Stock prices and metrics |
| News Data | News API | Latest news articles |
| Async Operations | AsyncIO | Parallel agent execution |
| Dependencies | UV | Fast Python package management |
| Containerization | Docker | Cloud deployment |
## Predefined Prompts
The chatbot includes quick-access buttons for common analysis:
1. **Economic News** - Analyzes current economic trends and news
2. **Market Sentiment** - Provides market sentiment analysis
3. **News Headlines** - Summarizes latest news headlines
4. **Trade Recommendation** - Suggests trading strategies
5. **Upcoming Earnings** - Lists upcoming company earnings
## Running Locally
```bash
# Install dependencies
uv sync
# Set environment variables defined in .env.name file
export OPENAI_API_KEY="your-key"
export SERPER_API_KEY="your-key"
export NEWS_API_KEY="your-key"
# Run the Streamlit app (from the root)
python run.py chatbot
```
## Deployment
The project is deployed on Hugging Face Spaces as a Docker container:
- **Space**: https://huggingface.co/spaces/mishrabp/chatbot-app
- **URL**: https://mishrabp-chatbot-app.hf.space
- **Trigger**: Automatic deployment on push to `main` branch
- **Configuration**: `.github/workflows/chatbot-app-hf.yml`