|
import streamlit as st |
|
import base64 |
|
import pdfkit |
|
import io |
|
import os |
|
|
|
|
|
ml_outline = [ |
|
"π 1. Mixture of Experts (MoE)", |
|
"π₯ 2. Supervised Fine-Tuning (SFT) using PyTorch", |
|
"π€ 3. Large Language Models (LLM) using Transformers", |
|
"π 4. Self-Rewarding Learning using NPS 0-10 and Verbatims", |
|
"π 5. Reinforcement Learning from Human Feedback (RLHF)", |
|
"π 6. MergeKit: Merging Models to Same Embedding Space", |
|
"π 7. DistillKit: Model Size Reduction with Spectrum Analysis", |
|
"π§ 8. Agentic RAG Agents using Document Inputs", |
|
"β³ 9. Longitudinal Data Summarization from Multiple Docs", |
|
"π 10. Knowledge Extraction using Markdown Knowledge Graphs", |
|
"πΊοΈ 11. Knowledge Mapping with Mermaid Diagrams", |
|
"π» 12. ML Code Generation with Streamlit/Gradio/HTML5+JS" |
|
] |
|
|
|
def create_pdf_with_pdfkit(outline_items): |
|
|
|
html_content = """ |
|
<html> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<style> |
|
body { |
|
font-family: Arial, sans-serif; |
|
font-size: 12pt; |
|
margin: 20px; |
|
} |
|
.container { |
|
display: flex; |
|
width: 100%; |
|
} |
|
.column { |
|
width: 50%; |
|
padding: 20px; |
|
} |
|
h2 { |
|
color: #2c3e50; |
|
font-size: 16pt; |
|
} |
|
ul { |
|
list-style-type: none; |
|
padding-left: 0; |
|
} |
|
li { |
|
margin: 10px 0; |
|
} |
|
</style> |
|
</head> |
|
<body> |
|
<div class="container"> |
|
<div class="column"> |
|
<h2>Cutting-Edge ML Areas (1-6)</h2> |
|
<ul> |
|
""" |
|
|
|
|
|
for item in outline_items[:6]: |
|
html_content += f"<li>{item}</li>" |
|
|
|
html_content += """ |
|
</ul> |
|
</div> |
|
<div class="column"> |
|
<h2>Cutting-Edge ML Areas (7-12)</h2> |
|
<ul> |
|
""" |
|
|
|
|
|
for item in outline_items[6:]: |
|
html_content += f"<li>{item}</li>" |
|
|
|
html_content += """ |
|
</ul> |
|
</div> |
|
</div> |
|
</body> |
|
</html> |
|
""" |
|
|
|
|
|
options = { |
|
'page-size': 'A4', |
|
'orientation': 'Landscape', |
|
'encoding': 'UTF-8', |
|
'margin-top': '0.5in', |
|
'margin-right': '0.5in', |
|
'margin-bottom': '0.5in', |
|
'margin-left': '0.5in', |
|
} |
|
|
|
|
|
pdf_bytes = pdfkit.from_string(html_content, False, options=options) |
|
return pdf_bytes |
|
|
|
def get_binary_file_downloader_html(bin_data, file_label='File'): |
|
bin_str = base64.b64encode(bin_data).decode() |
|
href = f'<a href="data:application/octet-stream;base64,{bin_str}" download="{file_label}">Download {file_label}</a>' |
|
return href |
|
|
|
|
|
st.title("π Cutting-Edge ML Outline Generator") |
|
|
|
col1, col2 = st.columns(2) |
|
|
|
with col1: |
|
st.header("π Markdown Outline") |
|
outline_text = "\n".join(ml_outline) |
|
st.markdown(outline_text) |
|
|
|
md_file = "ml_outline.md" |
|
with open(md_file, "w", encoding='utf-8') as f: |
|
f.write(outline_text) |
|
st.markdown(get_binary_file_downloader_html(outline_text.encode('utf-8'), "ml_outline.md"), unsafe_allow_html=True) |
|
|
|
with col2: |
|
st.header("π PDF Preview") |
|
|
|
if st.button("Generate PDF"): |
|
with st.spinner("Generating PDF..."): |
|
try: |
|
pdf_bytes = create_pdf_with_pdfkit(ml_outline) |
|
|
|
|
|
with open("ml_outline.pdf", "wb") as f: |
|
f.write(pdf_bytes) |
|
|
|
|
|
st.download_button( |
|
label="Download PDF", |
|
data=pdf_bytes, |
|
file_name="ml_outline.pdf", |
|
mime="application/pdf" |
|
) |
|
|
|
|
|
base64_pdf = base64.b64encode(pdf_bytes).decode('utf-8') |
|
pdf_display = f''' |
|
<embed |
|
src="data:application/pdf;base64,{base64_pdf}" |
|
width="100%" |
|
height="400px" |
|
type="application/pdf"> |
|
''' |
|
st.markdown(pdf_display, unsafe_allow_html=True) |
|
|
|
except Exception as e: |
|
st.error(f"Error generating PDF: {str(e)}") |
|
|
|
st.markdown(""" |
|
<style> |
|
.stButton>button { |
|
background-color: #4CAF50; |
|
color: white; |
|
} |
|
</style> |
|
""", unsafe_allow_html=True) |