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