Spaces:
Sleeping
Sleeping
| import google.generativeai as genai | |
| from llama_index.llms.gemini import Gemini | |
| from llama_index.embeddings.gemini import GeminiEmbedding | |
| import os | |
| import tempfile | |
| from llama_index.core import VectorStoreIndex, SimpleDirectoryReader | |
| from llama_index.core import Settings | |
| import time | |
| from google.api_core.exceptions import GoogleAPIError | |
| import streamlit as st | |
| genai.configure(api_key=os.environ.get("GOOGLE_API_KEY")) | |
| llm = Gemini(model_name="models/gemini-1.5-pro") | |
| embeddings = GeminiEmbedding(model_name="models/embedding-001") | |
| def normal_response(query): | |
| prompt = """You are a helpful Bot named VisionLang Build by Parthib Karak. | |
| Given a question, generate answer based on the Question. | |
| Question: {question} | |
| """ | |
| try: | |
| response = llm.complete(prompt + query) | |
| return response.text | |
| except GoogleAPIError as e: | |
| return f"Error generating response: {str(e)}" | |
| def uploaded_file_to_response(file, query): | |
| file_extension = os.path.splitext(file.name)[-1].lower() | |
| try: | |
| if file_extension in [".pdf", ".docx", ".txt", ".py", ".js", ".java", ".cpp"]: | |
| temp_dir = tempfile.mkdtemp() | |
| temp_file_path = os.path.join(temp_dir, file.name) | |
| with open(temp_file_path, "wb") as f: | |
| f.write(file.read()) | |
| document = SimpleDirectoryReader(temp_dir) | |
| data = document.load_data() | |
| Settings.llm = llm | |
| Settings.embed_model = embeddings | |
| index = VectorStoreIndex.from_documents(data, settings=Settings) | |
| query_engine = index.as_query_engine() | |
| response = query_engine.query(query) | |
| return response | |
| elif file_extension in [".mp4", ".avi", ".mov",".mkv"]: | |
| temp_dir = tempfile.mkdtemp() | |
| temp_file_path = os.path.join(temp_dir, file.name) | |
| with open(temp_file_path, "wb") as f: | |
| f.write(file.read()) | |
| uploaded_file = genai.upload_file(temp_file_path, mime_type="video/mp4") | |
| st.success("video uploaded successfully") | |
| time.sleep(2) | |
| response = llm.complete([query, uploaded_file]) | |
| return response.text | |
| elif file_extension in [".png", ".jpg", ".jpeg"]: | |
| uploaded_file = genai.upload_file(file, mime_type="image/jpeg") | |
| time.sleep(2) | |
| response = llm.complete([query, uploaded_file]) | |
| return response.text | |
| else: | |
| uploaded_file = genai.upload_file(file, mime_type="application/octet-stream") | |
| time.sleep(2) | |
| response = llm.complete([query, uploaded_file]) | |
| return response.text | |
| except GoogleAPIError as e: | |
| return f"Error processing file: {str(e)}" | |