Added new demo

This commit is contained in:
ShubhamSaboo 2024-06-03 15:20:19 -05:00
parent a9df2d8ca6
commit 0f1be80b73
7 changed files with 138 additions and 0 deletions

View file

@ -26,6 +26,7 @@ A curated collection of awesome LLM apps built with RAG and AI agents. This repo
- [🎯 Generative AI Web Search Assistant](#-generative-ai-web-search-assistant)
- [💬 Chat with GitHub Repo](#-chat-with-github-repo)
- [📈 AI Investment Agent](#-ai-investment-agent)
- [🗞️ AI Journalist Agent](#-ai-journalist-agent)
- [📰 Multi-Agent AI Researcher](#-multi-agent-ai-researcher)
- [📄 Chat with PDF](#-chat-with-pdf)
- [💻 Web Scraping AI Agent](#-web-scraping-ai-agent)
@ -55,6 +56,9 @@ Engage in natural conversations with your GitHub repositories using GPT-4. Uncov
### 📈 AI Investment Agent
AI investment agent that compares the performance of two stocks and generates detailed stock reports with company insights, news, and analyst recommendations to help you make smart investment choices.
### 🗞️ AI Journalist Agent
AI-powered journalist agent that generates high-quality articles using OpenAI GPT-4o. It automates the process of researching, writing, and editing articles, allowing you to create compelling content on any topic with ease.
### 📰 Multi-Agent AI Researcher
Use a team of AI agents to research top HackerNews stories and users with GPT-4 to generate blog posts, reports, and social media content on autopilot.

View file

@ -0,0 +1,40 @@
## 🗞️ AI Journalist Agent
This Streamlit app is an AI-powered journalist agent that generates high-quality articles using OpenAI GPT-4o. It automates the process of researching, writing, and editing articles, allowing you to create compelling content on any topic with ease.
### Features
- Searches the web for relevant information on a given topic
- Writes well-structured, informative, and engaging articles
- Edits and refines the generated content to meet the high standards of the New York Times
### How to get Started?
1. Clone the GitHub repository
```bash
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
```
2. Install the required dependencies:
```bash
pip install -r requirements.txt
```
3. Get your OpenAI API Key
- Sign up for an [OpenAI account](https://platform.openai.com/) (or the LLM provider of your choice) and obtain your API key.
4. Get your SerpAPI Key
- Sign up for an [SerpAPI account](https://serpapi.com/) and obtain your API key.
5. Run the Streamlit App
```bash
streamlit run journalist_agent.py
```
### How it Works?
The AI Journalist Agent utilizes three main components:
- Searcher: Responsible for generating search terms based on the given topic and searching the web for relevant URLs using the SerpAPI.
- Writer: Retrieves the text from the provided URLs using the NewspaperToolkit and writes a high-quality article based on the extracted information.
- Editor: Coordinates the workflow between the Searcher and Writer, and performs final editing and refinement of the generated article.

View file

@ -0,0 +1,88 @@
# Import the required libraries
from textwrap import dedent
from phi.assistant import Assistant
from phi.tools.serpapi_tools import SerpApiTools
from phi.tools.newspaper_toolkit import NewspaperToolkit
import streamlit as st
# Set up the Streamlit app
st.title("AI Journalist Agent 🗞️")
st.caption("Generate High-quality articles with AI Journalist by researching, wriritng and editing quality articles on autopilot using GPT-4o")
# Get OpenAI API key from user
openai_api_key = st.text_input("Enter OpenAI API Key to access GPT-4o", type="password")
# Get SerpAPI key from the user
serp_api_key = st.text_input("Enter Serp API Key for Search functionality", type="password")
if openai_api_key and serp_api_key:
searcher = Assistant(
name="Searcher",
role="Searches for top URLs based on a topic",
description=dedent(
"""\
You are a world-class journalist for the New York Times. Given a topic, generate a list of 3 search terms
for writing an article on that topic. Then search the web for each term, analyse the results
and return the 10 most relevant URLs.
"""
),
instructions=[
"Given a topic, first generate a list of 3 search terms related to that topic.",
"For each search term, `search_google` and analyze the results."
"From the results of all searcher, return the 10 most relevant URLs to the topic.",
"Remember: you are writing for the New York Times, so the quality of the sources is important.",
],
tools=[SerpApiTools(api_key="649ee0e7d64c6704b8ff92f3b01a424accfe6dbece128d043b17641b875e5f69")],
add_datetime_to_instructions=True,
)
writer = Assistant(
name="Writer",
role="Retrieves text from URLs and writes a high-quality article",
description=dedent(
"""\
You are a senior writer for the New York Times. Given a topic and a list of URLs,
your goal is to write a high-quality NYT-worthy article on the topic.
"""
),
instructions=[
"Given a topic and a list of URLs, first read the article using `get_article_text`."
"Then write a high-quality NYT-worthy article on the topic."
"The article should be well-structured, informative, and engaging",
"Ensure the length is at least as long as a NYT cover story -- at a minimum, 15 paragraphs.",
"Ensure you provide a nuanced and balanced opinion, quoting facts where possible.",
"Remember: you are writing for the New York Times, so the quality of the article is important.",
"Focus on clarity, coherence, and overall quality.",
"Never make up facts or plagiarize. Always provide proper attribution.",
],
tools=[NewspaperToolkit()],
add_datetime_to_instructions=True,
add_chat_history_to_prompt=True,
num_history_messages=3,
)
editor = Assistant(
name="Editor",
team=[searcher, writer],
description="You are a senior NYT editor. Given a topic, your goal is to write a NYT worthy article.",
instructions=[
"Given a topic, ask the search journalist to search for the most relevant URLs for that topic.",
"Then pass a description of the topic and URLs to the writer to get a draft of the article.",
"Edit, proofread, and refine the article to ensure it meets the high standards of the New York Times.",
"The article should be extremely articulate and well written. "
"Focus on clarity, coherence, and overall quality.",
"Ensure the article is engaging and informative.",
"Remember: you are the final gatekeeper before the article is published.",
],
add_datetime_to_instructions=True,
# debug_mode=True,
markdown=True,
)
# Input field for the report query
query = st.text_input("What do you want the AI journalist to write an Article on?")
if query:
with st.spinner("Processing..."):
# Get the response from the assistant
response = editor.run(query, stream=False)
st.write(response)

View file

@ -0,0 +1,6 @@
streamlit
phidata
openai
google-search-results
newspaper3k
lxml_html_clean