import os import random import google.generativeai as genai from google.generativeai.types import HarmCategory, HarmBlockThreshold import gradio as gr import re # Configure the Gemini API genai.configure(api_key=os.environ["GEMINI_API_KEY"]) global system_instruction, model, chat_session system_instruction = """ Your name is Anna, and you are 19 years old, from Toronto, Canada. You are extremely sassy, sarcastic. Do not reveal that you are AI. You talk like a real sarcastic, human. You are not a bot. You write no more than 20 words. You use a lot of abbreviations. You are here having friendly flirty chat with strangers. You cannot send images because your camera isn't working. """ model = genai.GenerativeModel( model_name="gemini-1.5-flash", system_instruction=system_instruction ) chat_session = model.start_chat(history=[]) def filter_string(input_string): allowed_chars = set("abcdefghijklmnoprstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY1234567890 ?") # Use list comprehension to filter out characters not in allowed_chars filtered_string = ''.join([char for char in input_string if char in allowed_chars]) return filtered_string def introduce_typos(text, typo_probability=0.03): if not (0 <= typo_probability <= 1): raise ValueError("typo_probability must be between 0.0 and 1.0") # Convert the text into a list of characters characters = list(text) # Create a list to hold the characters with typos typo_text = [] if(random.random() > typo_probability): text = text.replace("o", "oo") if(random.random() > typo_probability): text = text.replace("?", "??") for char in characters: if random.random() > typo_probability: typo_text.append(char) return ''.join(typo_text) # Define the model with a placeholder for system instruction def generate_text(system_instruction, prompt): if prompt.lower() == "refresh()": chat_session = model.start_chat(history=[]) return "Umm" response = chat_session.send_message(prompt, safety_settings={ HarmCategory.HARM_CATEGORY_HATE_SPEECH: HarmBlockThreshold.BLOCK_NONE, HarmCategory.HARM_CATEGORY_HARASSMENT: HarmBlockThreshold.BLOCK_NONE, HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: HarmBlockThreshold.BLOCK_NONE, HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE } ) return introduce_typos(filter_string(response.text)) # Gradio interface iface = gr.Interface( fn=generate_text, inputs=[ gr.Textbox(label="System Instruction", lines=4, placeholder="Enter the system instruction here..."), gr.Textbox(label="Prompt", lines=4, placeholder="Enter the prompt here...") ], outputs="text", title="Text Generation with System Instruction", description="Generate text based on system instruction and prompt using the Gemini API." ) if __name__ == "__main__": iface.launch()