commit
8df9163046
4 changed files with 148 additions and 0 deletions
1
ai_agent_tutorials/ai_business_insider/.gitignore
vendored
Normal file
1
ai_agent_tutorials/ai_business_insider/.gitignore
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
venv
|
||||
43
ai_agent_tutorials/ai_business_insider/README.md
Normal file
43
ai_agent_tutorials/ai_business_insider/README.md
Normal 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).
|
||||
|
||||
|
||||
99
ai_agent_tutorials/ai_business_insider/business_insider.py
Normal file
99
ai_agent_tutorials/ai_business_insider/business_insider.py
Normal 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.")
|
||||
5
ai_agent_tutorials/ai_business_insider/requirements.txt
Normal file
5
ai_agent_tutorials/ai_business_insider/requirements.txt
Normal 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
|
||||
Loading…
Reference in a new issue