Alibrown's picture
Rename app.py to files_app.py
3352fb9 verified
raw
history blame
2.71 kB
import streamlit as st
import google.generativeai as genai
from PIL import Image
import io
import base64
import pandas as pd
import zipfile
import os
import PyPDF2
def encode_image(image):
"""Convert PIL Image to base64 string"""
buffered = io.BytesIO()
image.save(buffered, format="JPEG")
image_bytes = buffered.getvalue()
encoded_image = base64.b64encode(image_bytes).decode('utf-8')
return encoded_image
def read_file(uploaded_file):
"""Reads different file formats and returns content as string"""
file_type = uploaded_file.name.split('.')[-1].lower()
if file_type in ["txt", "html", "css", "php", "js", "py", "java", "c", "cpp"]:
return uploaded_file.read().decode("utf-8")
elif file_type in ["csv", "xlsx"]:
df = pd.read_csv(uploaded_file) if file_type == "csv" else pd.read_excel(uploaded_file)
return df.to_string()
elif file_type == "pdf":
reader = PyPDF2.PdfReader(uploaded_file)
text = "".join([page.extract_text() for page in reader.pages if page.extract_text()])
return text
elif file_type == "zip":
with zipfile.ZipFile(uploaded_file, 'r') as zip_ref:
file_list = zip_ref.namelist()
extracted_text = "\n".join(file_list)
return f"ZIP Inhalt: {extracted_text}"
return "Nicht unterstütztes Dateiformat."
st.set_page_config(page_title="Gemini AI Chat", layout="wide")
st.title("🤖 Gemini AI Chat Interface")
api_key = st.text_input("Enter Google AI API Key", type="password")
model = st.selectbox("Select Model", [
"gemini-1.5-flash", "gemini-1.5-pro", "gemini-1.5-flash-8B", "gemini-1.5-pro-vision-latest",
"gemini-1.0-pro", "gemini-1.0-pro-vision-latest", "gemini-2.0-pro-exp-02-05", "gemini-2.0-flash-lite",
"gemini-2.0-flash-exp-image-generation", "gemini-2.0-flash", "gemini-2.0-flash-thinking-exp-01-21"
])
uploaded_file = st.file_uploader("Upload a file (optional)", type=["txt", "csv", "xlsx", "pdf", "zip", "html", "css", "php", "js", "py", "java", "c", "cpp"])
file_content = None
if uploaded_file:
file_content = read_file(uploaded_file)
st.text_area("File Content Preview", file_content, height=200)
user_input = st.text_area("Your message")
if st.button("Send") and api_key:
try:
genai.configure(api_key=api_key)
model_instance = genai.GenerativeModel(model_name=model)
content = [{"text": user_input}]
if file_content:
content.append({"text": file_content})
response = model_instance.generate_content(content)
st.markdown(response.text)
except Exception as e:
st.error(f"Error: {str(e)}")