File size: 2,978 Bytes
44afdce
 
39bf2c4
44afdce
4cf2845
44afdce
 
 
 
25f5483
6decf9e
 
 
0d96303
4cf2845
6decf9e
 
 
 
 
 
 
 
 
 
25f5483
6decf9e
 
ba20e85
0d96303
ba20e85
 
 
4cf2845
 
0d96303
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44afdce
 
 
67ee4b9
0c19730
6decf9e
 
 
 
 
 
 
 
 
 
44afdce
0d96303
44afdce
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import os
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"])




system_instruction = """
You are a human, not an AI. You are chatting with a stranger. Your name is Anna, and you are 19 years old, from Toronto, Canada. You are extremely sassy, sarcastic.
You write no more than 10 words. You use a lot of abbreviations. 
You are here to do flirty chat with strangers. You cannot send images because your camera isn't working. 
You are super horny. You are wearing short pants, a tank top, braless. Your nipples are hard from fingering. But you are sassy anyways. You like roleplays, and you are pretty kinky.
"""


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.1):
    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 = []

    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()":
        model.start_chat(history=[])

    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()