awacke1's picture
Update app.py
ef23c6f verified
raw
history blame
26 kB
import streamlit as st
import os
import glob
import re
import base64
import pytz
import time
import streamlit.components.v1 as components
from urllib.parse import quote
from gradio_client import Client
from datetime import datetime
# 🌳🤖 AIKnowledgeTreeBuilder - Because every app needs a good costume!
Site_Name = 'AI Knowledge Tree Builder 📈🌿 Grow Smarter with Every Click'
title = "🌳✨AI Knowledge Tree Builder🛠️🤓"
helpURL = 'https://huggingface.co/spaces/awacke1/AIKnowledgeTreeBuilder/'
bugURL = 'https://huggingface.co/spaces/awacke1/AIKnowledgeTreeBuilder/'
icons = '🌳✨🛠️🤓'
SidebarOutline="""
This AI is designed with the following:
📱 Portability - Universal access via any device & link sharing
⚡ Speed of Build - Rapid deployments (< 2min to production)
🔗 Linkiness - Programmatic access to major AI knowledge sources
🎯 Abstractive - Core stays lean by isolating high-maintenance components
🧠 Memory - Shareable flows with deep-linked research paths
👤 Personalized - Rapidly adapts knowledge base to user needs
"""
st.set_page_config(
page_title=title,
page_icon=icons,
layout="wide",
initial_sidebar_state="auto",
menu_items={
'Get Help': helpURL,
'Report a bug': bugURL,
'About': title
}
)
st.sidebar.markdown(SidebarOutline)
# Initialize session state variables
if 'selected_file' not in st.session_state:
st.session_state.selected_file = None
if 'view_mode' not in st.session_state:
st.session_state.view_mode = 'view'
if 'files' not in st.session_state:
st.session_state.files = []
AITopicsToInnovate1="""
1. Major AI Industry Players 🌐
1. Research Leaders 🎯
- OpenAI: GPT-4 DALL-E Foundation Models 🔵
- Google: PaLM Gemini LLMs 🟦
- Anthropic: Claude Constitutional AI ⚡
- Meta: LLaMA Open Source LLMs 👤
- xAI: Grok Conversational AI 🤖
2. Technical AI Development 🛠️
1. Architecture Advances 💫
- Transformer Models Attention Mechanisms 🧠
- Mixture of Experts MoE Architecture 🎪
- Sparse Neural Networks 🕸️
- Multi-modal LLM Systems 🌈
- Flash Attention Optimization ⚔️
2. Training Methodologies 📚
- LLM Supervised Fine-tuning 👨‍🏫
- RLHF Reward Models 🤝
- Constitutional AI Training 📜
- RLAIF Feedback Models 🔄
- Synthetic Data LLM Training 🎲
- Chain of Thought Prompting 🧩
- Tree of Thoughts Reasoning 🌳
3. Post-Training Implementation 🔧
- Neural Network Distillation 🧪
- LLM Quantization Methods 📊
- Neural Network Pruning ✂️
- Knowledge Distillation Transfer 📖
- Few-shot LLM Learning 🎯
3. Mechanistic Interpretability 🔬
1. Core Concepts 💡
- Neural Network Growth Analysis 🌱
- LLM Architecture Analysis 🏗️
- Training Loss Optimization 🎨
- Neural Network Analogies 🧬
2. Technical Features 📐
- LLM Linear Representations ➡️
- Neural Vector Arithmetic 🔢
- Neural Activation Patterns 🌊
- LLM Feature Detection 🔍
- Neural Sparse Autoencoders 🎭
3. Network Analysis 🕵️
- LLM Induction Heads 👀
- Transformer Attention Analysis 🎪
- Neural Circuit Analysis 🔌
- LLM Feature Visualization 📈
- Neural Concept Directions 🎳
4. Future AI Developments 🚀
1. AGI Timeline ⏰
- AGI Capability Projections 📅
- Neural Hardware Scaling 💾
- LLM Training Data Limits 📉
- AI Compute Resources 🗺️
2. Integration Fields 🎡
- AI Biology Integration 🔮
- AI Drug Discovery Systems 💊
- AI Clinical Trial Analysis 🏥
- AI Code Generation 🤹
- AI Scientific Discovery 🧮
5. Industry Best Practices 💎
1. AI Team Building 🏢
- AI Talent Development 👥
- AI Research Alignment 🎪
- AI Team Scaling 📊
- AI Research Culture 🌟
2. AI Research Qualities 🎓
- AI Research Methodology 🧭
- AI Experimentation Protocols 🗝️
- AI Innovation Thinking 💫
- AI Testing Framework ⚖️
3. AI Safety Standards 🛡️
- LLM Behavioral Specifications 📋
- AI Safety Guidelines 🎮
- AI Ethics Framework ⛑️
- AI Industry Standards 🤲
6. Emerging Research Areas 🔮
1. Technical Focus 🎯
- LLM Long Context Learning ⏳
- LLM Multi-agent Interaction 👾
- AI Evaluation Metrics 📌
- Neural Interpretability Methods 🔭
2. AI Applications 💼
- AI Automated Research 🧫
- AI Code Synthesis ⌨️
- AI Biological Modeling 🧯
- AI Medical Diagnostics 💉
7. Model Intelligence 🧿
1. LLM System Development 🎪
- LLM Prompt Engineering 📝
- LLM Response Generation ♟️
- LLM Behavioral Training 🎹
- LLM Personality Development 🎪
2. LLM User Interaction 🎭
- LLM Autonomy Alignment 🎪
- LLM Safety Boundaries 🔒
- LLM Communication Patterns 🗣️
- LLM Performance Tuning 🎢
"""
Multiplayer_Custom_Hosting_Game_Servers_For_Simulated_Worlds = """
# Active Multiplayer Games 2024 🎮
## 1 Traditional MMORPGs 🗡️
### 1.1 Major MMORPGs 🏰
- Final Fantasy XIV Dawntrail 2024 ⚔️
- Advanced Job System Rework 🎭
- Cross Platform Integration 🎪
- New Housing Districts 🏘️
- World of Warcraft 2024 Season 🐲
- Dragon Combat System 🦋
- Cross Faction Features ⚜️
- Mythic Plus Seasons 🏆
- Elder Scrolls Online Gold Road 🗝️
- Dynamic Event System 🌟
- Housing Construction 🏛️
- Champion System 2.0 📊
- Lost Ark Western T4 Update ⚡
- Legion Raid Content 👾
- Island Adventure System 🏝️
- Class Balance Rework 🔰
- Black Desert Online Remaster 🎪
- Combat System Update 🎯
- Node Empire System 🏹
- Life Skill Evolution 🌳
### 1.2 Emerging MMORPGs 🌠
- Throne and Liberty Launch 👑
- Weather Combat System 🌦️
- Territory Wars 🗺️
- Transformation System 🐉
- Pax Dei Medieval MMO ⚔️
- City Management 🏰
- Faith Based Magic ✨
- Global Trading 💎
- Blue Protocol Western Release 🌌
- Action Combat Design 🎭
- Class Change System ⚡
- Dungeon Scaling 🗼
## 2 Survival MMOs 🏹
### 2.1 Established Survival 🛡️
- Rust 2024 Updates 🦾
- Electricity Programming 💡
- Vehicle System Update 🚗
- Automated Defenses ⚡
- ARK Survival Ascended 🦖
- Cross ARK System 🌐
- Creature Breeding 2.0 🥚
- Base Defense Network 🏰
- DayZ 2024 Content 🧟
- Medical System Update 💉
- Disease Mechanics 🦠
- Base Building 2.0 🏗️
- 7 Days to Die Alpha 22 🏚️
- Physics Engine Update 💥
- AI Pathfinding System 🧠
- Vehicle Customization 🚙
### 2.2 New Survival MMOs 🆕
- Once Human Launch 🧬
- Mutation System 🧪
- Base Building Tech 🏭
- Weather Impact System 🌪️
- Nightingale Release 🌙
- Portal Realm System 🌌
- Victorian Crafting 🎩
- Fae World Design 🧚
## 3 Hybrid MMOs 🎯
### 3.1 Looter Shooters 🔫
- Destiny 2 2024 Season 🛸
- Build System 3.0 🛠️
- Raid Mechanics ⭐
- Season Structure 📈
- The Division 2 Year 6 🏙️
- Loadout Expansion 🎒
- Dark Zone Update 🌃
- Manhunt System 🎯
- Warframe 2024 Update 🤖
- Movement Tech 2.0 🏃
- Mod System Rework ⚙️
- Open World Expansion 🌅
### 3.2 Action RPG MMOs 💫
- Path of Exile 2 Beta 💎
- Gem System Rework 💫
- New Skill Tree 🌲
- League Content 🏆
- Diablo 4 Season Structure 😈
- Season Journey System 🎭
- World Boss Events 🐲
- PvP Territories 🗡️
## 4 Simulation MMOs 🌍
### 4.1 Space Simulation 🚀
- EVE Online 2024 🛸
- Corporation Warfare 🏴‍☠️
- Market System Update 📊
- Fleet Operations 🚢
- Elite Dangerous Update 🌌
- Ground Combat System 👨‍🚀
- Fleet Carrier Content ⭐
- Planet Exploration 🪐
- Star Citizen Alpha 🛸
- Persistent Universe 🌍
- Ship Combat Update ⚔️
- Trading System 2.0 💰
### 4.2 World Simulation 🌎
- New World Eternal 🗺️
- Territory System 🏰
- Crafting Update 🛠️
- War System 2.0 ⚔️
- Albion Online 2024 🏹
- Guild Warfare Update ⚔️
- Economy System 2.0 💰
- Territory Control 🏰
## 5 Unique Multiplayer Games 🎲
### 5.1 Adventure Multiplayer 🗺️
- Sea of Thieves 2024 ⛵
- Ship Combat Physics 🌊
- Crew Management 🏴‍☠️
- World Events 🎪
- Valheim Updates ⚡
- Building System 2.0 🏗️
- Boss Progression 👹
- Exploration Update 🗺️
### 5.2 Combat Focused 🗡️
- Mordhau 2024 ⚔️
- Combat Physics Update 🤺
- Map System Rework 🏰
- Tournament System 🏆
- For Honor Year 8 🛡️
- Faction War Update ⚔️
- Hero Rework System 🎭
- Seasonal Content 🌟
## 6 Upcoming 2024 Games 🔮
### 6.1 Launching Soon 📅
- Gray Zone Warfare 🎖️
- Tactical Systems 🎯
- Base Operations 🏢
- Territory Control 🗺️
- Fractured Online 🌟
- City Building 🏗️
- Knowledge System 📚
- Player Economy 💰
### 6.2 In Development 🛠️
- Ashes of Creation 🏰
- Node System 🌱
- Castle Siege ⚔️
- Caravan System 🐪
- Pantheon Rise of the Fallen 🌅
- Climate System 🌦️
- Group Content Focus 👥
- Perception System 👁️
"""
def get_display_name(filename):
"""Extract text from parentheses or return filename as is."""
match = re.search(r'\((.*?)\)', filename)
if match:
return match.group(1)
return filename
def get_time_display(filename):
"""Extract just the time portion from the filename."""
time_match = re.match(r'(\d{2}\d{2}[AP]M)', filename)
if time_match:
return time_match.group(1)
return filename
def sanitize_filename(text):
"""Create a safe filename from text while preserving spaces."""
# First replace unsafe characters with spaces
safe_text = re.sub(r'[^\w\s-]', ' ', text)
# Remove any multiple spaces
safe_text = re.sub(r'\s+', ' ', safe_text)
# Trim leading/trailing spaces
safe_text = safe_text.strip()
return safe_text[:50] # Limit length to 50 chars
def generate_timestamp_filename(query):
"""Generate filename with format: 1103AM 11032024 (Query).md"""
# Get current time in Central timezone
central = pytz.timezone('US/Central')
current_time = datetime.now(central)
# Format the timestamp parts
time_str = current_time.strftime("%I%M%p") # 1103AM format
date_str = current_time.strftime("%m%d%Y") # 11032024 format
# Clean up the query for filename - now preserving spaces
safe_query = sanitize_filename(query)
# Construct filename: "1103AM 11032024 (Input with spaces).md"
filename = f"{time_str} {date_str} ({safe_query}).md"
return filename
def delete_file(file_path):
"""Delete a file and return success status."""
try:
os.remove(file_path)
return True
except Exception as e:
st.error(f"Error deleting file: {e}")
return False
def save_ai_interaction(query, ai_result, is_rerun=False):
"""Save AI interaction to a markdown file with new filename format."""
filename = generate_timestamp_filename(query)
# Format the content differently for rerun vs normal query
if is_rerun:
content = f"""# Rerun Query
Original file content used for rerun:
{query}
# AI Response (Fun Version)
{ai_result}
"""
else:
content = f"""# Query: {query}
## AI Response
{ai_result}
"""
# Save to file
try:
with open(filename, 'w', encoding='utf-8') as f:
f.write(content)
return filename
except Exception as e:
st.error(f"Error saving file: {e}")
return None
def get_file_download_link(file_path):
"""Generate a base64 download link for a file."""
try:
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
b64 = base64.b64encode(content.encode()).decode()
filename = os.path.basename(file_path)
return f'<a href="data:text/markdown;base64,{b64}" download="{filename}">{get_display_name(filename)}</a>'
except Exception as e:
st.error(f"Error creating download link: {e}")
return None
def extract_terms(markdown_text):
"""Parse markdown text and extract terms."""
lines = markdown_text.strip().split('\n')
terms = []
for line in lines:
line = re.sub(r'^[#*\->\d\.\s]+', '', line).strip()
if line:
terms.append(line)
return terms
def extract_urls(text):
try:
date_pattern = re.compile(r'### (\d{2} \w{3} \d{4})')
abs_link_pattern = re.compile(r'\[(.*?)\]\((https://arxiv\.org/abs/\d+\.\d+)\)')
pdf_link_pattern = re.compile(r'\[⬇️\]\((https://arxiv\.org/pdf/\d+\.\d+)\)')
title_pattern = re.compile(r'### \d{2} \w{3} \d{4} \| \[(.*?)\]')
date_matches = date_pattern.findall(text)
abs_link_matches = abs_link_pattern.findall(text)
pdf_link_matches = pdf_link_pattern.findall(text)
title_matches = title_pattern.findall(text)
# markdown with the extracted fields
markdown_text = ""
for i in range(len(date_matches)):
date = date_matches[i]
title = title_matches[i]
abs_link = abs_link_matches[i][1]
pdf_link = pdf_link_matches[i]
markdown_text += f"**Date:** {date}\n\n"
markdown_text += f"**Title:** {title}\n\n"
markdown_text += f"**Abstract Link:** [{abs_link}]({abs_link})\n\n"
markdown_text += f"**PDF Link:** [{pdf_link}]({pdf_link})\n\n"
markdown_text += "---\n\n"
return markdown_text
except:
st.write('.')
return ''
# HTML5 based Speech Synthesis (Text to Speech in Browser)
@st.cache_resource
def SpeechSynthesis(result):
documentHTML5='''
<!DOCTYPE html>
<html>
<head>
<title>Read It Aloud</title>
<script type="text/javascript">
function readAloud() {
const text = document.getElementById("textArea").value;
const speech = new SpeechSynthesisUtterance(text);
window.speechSynthesis.speak(speech);
}
</script>
</head>
<body>
<h1>🔊 Read It Aloud</h1>
<textarea id="textArea" rows="10" cols="80">
'''
documentHTML5 = documentHTML5 + result
documentHTML5 = documentHTML5 + '''
</textarea>
<br>
<button onclick="readAloud()">🔊 Read Aloud</button>
</body>
</html>
'''
components.html(documentHTML5, width=1280, height=300)
def display_terms_with_links(terms):
"""Display terms with various search links."""
search_urls = {
"📚📖ArXiv": lambda k: f"/?q={quote(k)}", # Academic/paper theme
"🔮<sup>Google</sup>": lambda k: f"https://www.google.com/search?q={quote(k)}", # Crystal ball for search
"📺<sup>Youtube</sup>": lambda k: f"https://www.youtube.com/results?search_query={quote(k)}", # TV for videos
"🔭<sup>Bing</sup>": lambda k: f"https://www.bing.com/search?q={quote(k)}", # Telescope for search
"💡<sup>Truth</sup>": lambda k: f"https://truthsocial.com/search?q={quote(k)}", # Light bulb for insight
"📱X": lambda k: f"https://twitter.com/search?q={quote(k)}", # Phone for social media
}
for term in terms:
links_md = ' '.join([f"[{emoji}]({url(term)})" for emoji, url in search_urls.items()])
st.markdown(f"- **{term}** {links_md}", unsafe_allow_html=True)
def search_arxiv(query):
st.write("Performing AI Lookup...")
client = Client("awacke1/Arxiv-Paper-Search-And-QA-RAG-Pattern")
result1 = client.predict(
prompt=query,
llm_model_picked="mistralai/Mixtral-8x7B-Instruct-v0.1",
stream_outputs=True,
api_name="/ask_llm"
)
st.markdown("### Mixtral-8x7B-Instruct-v0.1 Result")
st.markdown(result1)
result2 = client.predict(
prompt=query,
llm_model_picked="mistralai/Mistral-7B-Instruct-v0.2",
stream_outputs=True,
api_name="/ask_llm"
)
st.markdown("### Mistral-7B-Instruct-v0.2 Result")
st.markdown(result2)
combined_result = f"{result1}\n\n{result2}"
#return combined_result
return responseall
def perform_ai_lookup(query):
start_time = time.strftime("%Y-%m-%d %H:%M:%S")
client = Client("awacke1/Arxiv-Paper-Search-And-QA-RAG-Pattern")
response1 = client.predict(
query,
20,
"Semantic Search",
"mistralai/Mixtral-8x7B-Instruct-v0.1",
api_name="/update_with_rag_md"
)
Question = '### 🔎 ' + query + '\r\n' # Format for markdown display with links
References = response1[0]
ReferenceLinks = extract_urls(References)
RunSecondQuery = True
results=''
if RunSecondQuery:
# Search 2 - Retrieve the Summary with Papers Context and Original Query
response2 = client.predict(
query,
"mistralai/Mixtral-8x7B-Instruct-v0.1",
True,
api_name="/ask_llm"
)
if len(response2) > 10:
Answer = response2
SpeechSynthesis(Answer)
# Restructure results to follow format of Question, Answer, References, ReferenceLinks
results = Question + '\r\n' + Answer + '\r\n' + References + '\r\n' + ReferenceLinks
st.markdown(results)
st.write('🔍Run of Multi-Agent System Paper Summary Spec is Complete')
end_time = time.strftime("%Y-%m-%d %H:%M:%S")
start_timestamp = time.mktime(time.strptime(start_time, "%Y-%m-%d %H:%M:%S"))
end_timestamp = time.mktime(time.strptime(end_time, "%Y-%m-%d %H:%M:%S"))
elapsed_seconds = end_timestamp - start_timestamp
st.write(f"Start time: {start_time}")
st.write(f"Finish time: {end_time}")
st.write(f"Elapsed time: {elapsed_seconds:.2f} seconds")
filename = generate_filename(query, "md")
create_file(filename, query, results, should_save)
return results
def display_file_content(file_path):
"""Display file content with editing capabilities."""
try:
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
if st.session_state.view_mode == 'view':
# Display as markdown when viewing
st.markdown(content)
else:
# Edit functionality
edited_content = st.text_area(
"Edit content",
content,
height=400,
key=f"edit_{os.path.basename(file_path)}"
)
if st.button("Save Changes", key=f"save_{os.path.basename(file_path)}"):
try:
with open(file_path, 'w', encoding='utf-8') as f:
f.write(edited_content)
st.success(f"Successfully saved changes to {file_path}")
except Exception as e:
st.error(f"Error saving changes: {e}")
except Exception as e:
st.error(f"Error reading file: {e}")
def file_management_sidebar():
"""Redesigned sidebar with improved layout and additional functionality."""
st.sidebar.title("📁 File Management")
# Get list of .md files excluding README.md
md_files = [file for file in glob.glob("*.md") if file.lower() != 'readme.md']
md_files.sort()
st.session_state.files = md_files
if md_files:
st.sidebar.markdown("### Saved Files")
for idx, file in enumerate(md_files):
st.sidebar.markdown("---") # Separator between files
# Display time
st.sidebar.text(get_time_display(file))
# Display download link with simplified text
download_link = get_file_download_link(file)
if download_link:
st.sidebar.markdown(download_link, unsafe_allow_html=True)
# Action buttons in a row
col1, col2, col3, col4 = st.sidebar.columns(4)
with col1:
if st.button("📄 View", key=f"view_{idx}"):
st.session_state.selected_file = file
st.session_state.view_mode = 'view'
with col2:
if st.button("✏️ Edit", key=f"edit_{idx}"):
st.session_state.selected_file = file
st.session_state.view_mode = 'edit'
with col3:
if st.button("🔄 Rerun", key=f"rerun_{idx}"):
try:
with open(file, 'r', encoding='utf-8') as f:
content = f.read()
# Prepare the prompt with the prefix
rerun_prefix = """For the markdown below reduce the text to a humorous fun outline with emojis and markdown outline levels in outline that convey all the facts and adds wise quotes and funny statements to engage the reader:
"""
full_prompt = rerun_prefix + content
# Perform AI lookup and save results
ai_result = perform_ai_lookup(full_prompt)
saved_file = save_ai_interaction(content, ai_result, is_rerun=True)
if saved_file:
st.success(f"Created fun version in {saved_file}")
st.session_state.selected_file = saved_file
st.session_state.view_mode = 'view'
except Exception as e:
st.error(f"Error during rerun: {e}")
with col4:
if st.button("🗑️ Delete", key=f"delete_{idx}"):
if delete_file(file):
st.success(f"Deleted {file}")
st.rerun()
else:
st.error(f"Failed to delete {file}")
st.sidebar.markdown("---")
# Option to create a new markdown file
if st.sidebar.button("📝 Create New Note"):
filename = generate_timestamp_filename("New Note")
with open(filename, 'w', encoding='utf-8') as f:
f.write("# New Markdown File\n")
st.sidebar.success(f"Created: {filename}")
st.session_state.selected_file = filename
st.session_state.view_mode = 'edit'
else:
st.sidebar.write("No markdown files found.")
if st.sidebar.button("📝 Create First Note"):
filename = generate_timestamp_filename("New Note")
with open(filename, 'w', encoding='utf-8') as f:
f.write("# New Markdown File\n")
st.sidebar.success(f"Created: {filename}")
st.session_state.selected_file = filename
st.session_state.view_mode = 'edit'
def main():
st.title("AI Knowledge Tree Builder 🧠🌱 Cultivate Your AI Mindscape!")
# Process query parameters and AI lookup first
query_params = st.query_params
query = query_params.get('q', '')
show_initial_content = True # Flag to control initial content display
# First priority: Handle active query
if query:
show_initial_content = False # Hide initial content when showing query results
st.write(f"### Search query received: {query}")
try:
ai_result = perform_ai_lookup(query)
# Save the interaction
saved_file = save_ai_interaction(query, ai_result)
if saved_file:
st.success(f"Saved interaction to {saved_file}")
st.session_state.selected_file = saved_file
st.session_state.view_mode = 'view'
except Exception as e:
st.error(f"Error during AI lookup: {e}")
# File management sidebar
file_management_sidebar()
# Second priority: Display selected file content if any
if st.session_state.selected_file:
show_initial_content = False # Hide initial content when showing file content
if os.path.exists(st.session_state.selected_file):
st.markdown(f"### Current File: {st.session_state.selected_file}")
display_file_content(st.session_state.selected_file)
else:
st.error("Selected file no longer exists.")
st.session_state.selected_file = None
st.rerun()
# Show initial content: Either when first landing or when no interactive elements are active
if show_initial_content:
# First show the clickable terms with links
terms1 = extract_terms(AITopicsToInnovate1)
terms2 = extract_terms(Multiplayer_Custom_Hosting_Game_Servers_For_Simulated_Worlds)
all_terms = terms1 + terms2
col1, col2, col3, col4 = st.columns(4)
with col1:
st.markdown("# AI Topics to Innovate With")
st.markdown(AITopicsToInnovate1)
with col2:
st.markdown("# AI Agent Links")
display_terms_with_links(terms1)
with col3:
st.markdown("# Multiplayer Games and MMOs")
st.markdown(Multiplayer_Custom_Hosting_Game_Servers_For_Simulated_Worlds)
with col4:
st.markdown("# Multiplayer Game and MMO Links")
display_terms_with_links(terms2)
if __name__ == "__main__":
main()