File size: 2,401 Bytes
5ee9504
 
 
ec8945e
ecf6a70
 
 
 
 
2d241c5
 
 
ec8945e
5ee9504
 
3019023
 
 
 
 
 
 
5ee9504
3019023
0945d5a
 
3019023
5ee9504
3019023
 
 
0945d5a
3019023
 
 
 
 
 
 
5ee9504
3019023
 
 
 
 
5ee9504
0945d5a
5ee9504
 
 
 
3019023
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5ee9504
 
acf6305
3019023
 
 
5ee9504
 
3019023
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 gradio as gr
from huggingface_hub import InferenceClient

MODEL = "mlabonne/gemma-3-27b-it-abliterated:featherless-ai"
SYSTEM_PROMPT = """
You are an erotic writer assistant, who responds to the user requests in plain text, not markdown
Your responses are very short and direct
Your responses must be worded as if they were the statistics in an RPG game, with item and character descriptions as if they were part of the game
"""
DEFAULT_TOKENS = 300
DEFAULT_TEMPERATURE = 0.7
DEFAULT_TOP_P = 0.95


def respond(
	message,
	history: list[dict[str, str]],
	system_message,
	max_tokens,
	temperature,
	top_p,
	hf_token: gr.OAuthToken,
):
	"""
		For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
		"""
	client = InferenceClient(token=hf_token.token, model=MODEL)

	messages = [{"role": "system", "content": system_message}]
	messages.extend(history)
	messages.append({"role": "user", "content": message})

	completion = client.chat_completion(
		messages,
		max_tokens=max_tokens,
		stream=False,
		temperature=temperature,
		top_p=top_p,
	)

	for choice in completion.choices:
		response = choice.message.content
		if response:
			response = response.replace("*", "").replace("_", "")
			yield response


"""
For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
"""
chatbot = gr.ChatInterface(
	respond,
	type="messages",
	additional_inputs=[
		gr.Textbox(value=SYSTEM_PROMPT, label="System message"),
		gr.Slider(minimum=1, maximum=2048, value=DEFAULT_TOKENS, step=1, label="Max new tokens"),
		gr.Slider(minimum=0.1, maximum=4.0, value=DEFAULT_TEMPERATURE, step=0.1, label="Temperature"),
		gr.Slider(
			minimum=0.1,
			maximum=1.0,
			value=DEFAULT_TOP_P,
			step=0.05,
			label="Top-p (nucleus sampling)",
		),
	],
	# examples=[
	#     [
	#         "Provide the stats of the female workers in the local town's brothel, these stats refer to the number of sexual acts (vaginal, anal, etc) executed by each person and their profficiency at it",
	#         SYSTEM_PROMPT,
	#         DEFAULT_TOKENS,
	#         DEFAULT_TEMPERATURE,
	#         DEFAULT_TOP_P,
	#     ],
	# ],
)

with gr.Blocks() as demo:
	with gr.Sidebar():
		gr.LoginButton()
	chatbot.render()

if __name__ == "__main__":
	demo.launch(ssr_mode=False, )