chagu-demo / app.py
talexm
news
8ce7f13
raw
history blame
3.91 kB
from pathlib import Path
import streamlit as st
from googlesearch import search
import pandas as pd
import os
from rag_sec.document_search_system import DocumentSearchSystem
from chainguard.blockchain_logger import BlockchainLogger
# Blockchain Logger
blockchain_logger = BlockchainLogger()
# Initialize DocumentSearchSystem
@st.cache_resource
def initialize_system():
"""Initialize the DocumentSearchSystem and load documents."""
system = DocumentSearchSystem(
neo4j_uri="neo4j+s://0ca71b10.databases.neo4j.io",
neo4j_user="neo4j",
neo4j_password="HwGDOxyGS1-79nLeTiX5bx5ohoFSpvHCmTv8IRgt-lY"
)
system.retriever.load_documents()
return system
# Initialize the system
system = initialize_system()
# Streamlit Layout
st.title("Memora: Advanced Search and News Insights")
st.subheader("Personalized news and global updates at your fingertips")
# Google Search: User-Specific News
st.subheader("1. Latest News About You")
user_name = st.text_input("Enter your name or handle to search for recent news", value="Talex Maxim")
if st.button("Search News About Me"):
if user_name:
st.write(f"Searching Google for news about **{user_name}**...")
try:
results = list(search(user_name, num_results=5))
if results:
st.success(f"Top {len(results)} results for '{user_name}':")
user_news_data = {"URL": results}
df_user_news = pd.DataFrame(user_news_data)
st.dataframe(df_user_news)
else:
st.warning("No recent news found about you.")
except Exception as e:
st.error(f"An error occurred during the search: {str(e)}")
else:
st.warning("Please enter your name or handle to search.")
# Google Search: Global News Categories
st.subheader("2. Global News Insights")
categories = ["Technology", "Sports", "Politics", "Entertainment", "Science"]
news_results = {}
if st.button("Fetch Global News"):
try:
for category in categories:
st.write(f"Fetching news for **{category}**...")
try:
category_results = list(search(f"latest {category} news", num_results=3))
news_results[category] = category_results
except Exception as e:
news_results[category] = [f"Error fetching news: {str(e)}"]
# Display results
for category, articles in news_results.items():
st.write(f"### Top News in {category}:")
for idx, article in enumerate(articles, start=1):
st.write(f"{idx}. [Read here]({article})")
except Exception as e:
st.error(f"An error occurred while fetching global news: {str(e)}")
# Document Search
st.subheader("3. Search Documents")
query = st.text_input("Enter your query (e.g., 'sports news', 'machine learning')")
if st.button("Search Documents"):
if query:
result = system.process_query(query)
if result["status"] == "success":
st.success(f"Query processed successfully!")
st.write("### Query Response:")
st.write(result["response"])
st.write("### Retrieved Documents:")
for idx, doc in enumerate(result["retrieved_documents"], start=1):
st.write(f"**Document {idx}:**")
st.write(doc[:500]) # Display the first 500 characters
st.write("### Blockchain Details:")
st.json(result["blockchain_details"])
elif result["status"] == "no_results":
st.warning("No relevant documents found for your query.")
elif result["status"] == "rejected":
st.error(result["message"])
else:
st.warning("Please enter a query to search.")
# Debugging Section
if st.checkbox("Show Debug Information"):
st.write(f"Total documents loaded: {len(system.retriever.documents)}")