Merge pull request #32 from Madhuvod/ai-news

Added new demo
This commit is contained in:
Shubham Saboo 2024-11-28 12:55:20 -06:00 committed by GitHub
commit 8df9163046
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 148 additions and 0 deletions

View file

@ -0,0 +1 @@
venv

View file

@ -0,0 +1,43 @@
## AI Business Insider - A News Summarizer and Analyst
### Summary
The AI Business Insider is a user-friendly news summarization and analysis tool built using the Phidata framework. It leverages built-in tools like Newspaper4k and DuckDuckGo to efficiently retrieve and read articles, creating a detailed report of the emerging trends in that particular sector/industry and also gives potential business opportunities. The application utilizes Anthropic Claude's LLM for advanced language processing, enabling users to gain insights and identify potential business opportunities based on current trends.
### Features
- **User Prompt**: Users can input a topic of interest for research.
- **News Collection**: The system gathers recent news articles using DuckDuckGo based on the provided topic.
- **Summary Generation**: Concise summaries of verified information are generated using Newspaper4k.
- **Trend Analysis**: The system identifies trends and patterns across the analyzed news stories, providing deeper insights for users' potential business ideas.
- **Streamlit UI**: The application features a user-friendly interface built with Streamlit for easy interaction.
### How to Get Started
1. **Clone the repository**:
```bash
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
cd ai_agent_tutorials/ai_business_insider
```
2. **Create and activate a virtual environment**:
```bash
# For macOS/Linux
python -m venv venv
source venv/bin/activate
# For Windows
python -m venv venv
.\venv\Scripts\activate
```
3. **Install the required packages**:
```bash
pip install -r requirements.txt
```
4. **Run the application**:
```bash
streamlit run business_insider.py
```
### Important Note
- The system specifically uses Claude's API for advanced language processing. You can obtain your Anthropic API key from [Anthropic's website](https://www.anthropic.com/api).

View file

@ -0,0 +1,99 @@
import streamlit as st
from phi.agent import Agent
from phi.tools.duckduckgo import DuckDuckGo
from phi.model.anthropic import Claude
from phi.tools.newspaper4k import Newspaper4k
from phi.tools import Tool
import logging
logging.basicConfig(level=logging.DEBUG)
# Setting up Streamlit app
st.title("AI Business Insider Agent 🌐")
st.caption("Get the latest trend analysis and business opportunities based on your topic of interest in a click!.")
topic = st.text_input("Enter the topic for research:")
anthropic_api_key = st.sidebar.text_input("Enter Anthropic API Key", type="password")
if st.button("Generate Analysis"):
if not anthropic_api_key:
st.warning("Please enter the required API key.")
else:
with st.spinner("Processing your request..."):
try:
# Initialize Anthropic model
anthropic_model = Claude(id ="claude-3-5-sonnet-20240620",api_key=anthropic_api_key)
# Define News Collector Agent - Duckduckgo_search tool enables an Agent to search the web for information.
search_tool = DuckDuckGo(search=True, news=True, fixed_max_results=5)
news_collector = Agent(
name="News Collector",
role="Collects recent news articles on the given topic",
tools=[search_tool],
model=anthropic_model,
instructions=["Gather latest articles on the topic"],
show_tool_calls=True,
markdown=True,
)
# Define Summary Writer Agent
news_tool = Newspaper4k(read_article=True, include_summary=True)
summary_writer = Agent(
name="Summary Writer",
role="Summarizes collected news articles",
tools=[news_tool],
model=anthropic_model,
instructions=["Provide concise summaries of the articles"],
show_tool_calls=True,
markdown=True,
)
# Define Trend Analyzer Agent
trend_analyzer = Agent(
name="Trend Analyzer",
role="Analyzes trends from summaries",
model=anthropic_model,
instructions=["Identify emerging trends and business opportunities"],
show_tool_calls=True,
markdown=True,
)
# The multi agent Team setup of phidata:
agent_team = Agent(
agents=[news_collector, summary_writer, trend_analyzer],
instructions=[
"First, search DuckDuckGo for recent news articles related to the user's specified topic.",
"Then, provide the collected article links to the summary writer.",
"Important: you must ensure that the summary writer receives all the article links to read.",
"Next, the summary writer will read the articles and prepare concise summaries of each.",
"After summarizing, the summaries will be passed to the trend analyzer.",
"Finally, the trend analyzer will identify emerging trends and potential business opportunities based on the summaries provided in a detailed Report form so that any young entreprenur can get insane value reading this easily"
],
show_tool_calls=True,
markdown=True,
)
# Executing the workflow
# Step 1: Collect news
news_response = news_collector.run(f"Collect recent news on {topic}")
articles = news_response.content
# Step 2: Summarize articles
summary_response = summary_writer.run(f"Summarize the following articles:\n{articles}")
summaries = summary_response.content
# Step 3: Analyze trends
trend_response = trend_analyzer.run(f"Analyze trends from the following summaries:\n{summaries}")
analysis = trend_response.content
# Display results - if incase you want to use this furthur, you can uncomment the below 2 lines to get the summaries too!
# st.subheader("News Summaries")
# # st.write(summaries)
st.subheader("Trend Analysis and Potential Business Opportunities")
st.write(analysis)
except Exception as e:
st.error(f"An error occurred: {e}")
else:
st.info("Enter the topic and API keys, then click 'Generate Analysis' to start.")

View file

@ -0,0 +1,5 @@
phidata==2.5.33
streamlit==1.40.2
duckduckgo_search==6.3.7
newspaper4k==0.9.3.1
lxml_html_clean==0.4.1