import gradio as gr from typing import List from langchain_google_genai import GoogleGenerativeAIEmbeddings import google.generativeai as genai from langchain_community.vectorstores import FAISS from langchain_google_genai import ChatGoogleGenerativeAI import re genai.configure(api_key="AIzaSyD2o8vjePJb6z8vT_PVe82lVWMD3_cBL0g") def format_gemini_response(text): bold_pattern = r"\*\*(.*?)\*\*" italic_pattern = r"\*(.*?)\*" code_pattern = r"```(.*?)```" text = text.replace('\n', '
') formatted_text = re.sub(code_pattern, "
\\1
", text) formatted_text = re.sub(bold_pattern, "\\1", formatted_text) formatted_text = re.sub(italic_pattern, "\\1", formatted_text) return formatted_text def predict(message: str, chat_his: List[List[str]], d: dict) -> str: if not message.strip(): return "Error: Message cannot be empty.", chat_his, d model = genai.GenerativeModel("gemini-pro") his = [] for i, j in chat_his: his.extend([ {"role": "user", "parts": i}, {"role": "model", "parts": j}, ]) chat = model.start_chat(history=his) response = chat.send_message(message) # Update chat history chat_his.append((message, response.text)) return format_gemini_response(response.text), chat_his, d iface = gr.Interface( fn=predict, inputs=["text", "list", "json"], outputs="html" # Change to HTML for proper rendering ) iface.launch(share=True)