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)}")