
Fixed answer for c’est quoi le consentement ? comment savoir si ma copine a envie de moi ?
a18bfe3
verified
#!/usr/bin/env python | |
import os | |
from collections.abc import Iterator | |
from threading import Thread | |
import gradio as gr | |
import spaces | |
import torch | |
from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer | |
DESCRIPTION = " " | |
if not torch.cuda.is_available(): | |
DESCRIPTION += "\n<p>Running on CPU 🥶 This demo does not work on CPU.</p>" | |
MAX_INPUT_TOKEN_LENGTH = int(os.getenv("MAX_INPUT_TOKEN_LENGTH", "4096")) | |
if torch.cuda.is_available(): | |
model_id = "mistralai/Mistral-7B-Instruct-v0.3" | |
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype=torch.float16, device_map="auto") | |
tokenizer = AutoTokenizer.from_pretrained(model_id) | |
def generate(message: str, chat_history: list[dict]) -> Iterator[str]: | |
"""Fonction de génération sans sliders : les paramètres | |
de génération (max_new_tokens, température, etc.) sont | |
fixés en dur. | |
""" | |
# Vérifier si la question correspond exactement à celle pour laquelle on souhaite une réponse fixe | |
if message.strip().lower() == "c’est quoi le consentement ? comment savoir si ma copine a envie de moi ?": | |
fixed_response = """Le consentement, pour exister, doit passer par : | |
Le questionnement de soi-même : il semble nécessaire de s'intéresser à ce que l’on veut précisément et ce que l’on ne veut pas. Savoir clairement ce que l’on veut faire permet d’être en capacité de le dire à l’autre à haute voix. | |
Le questionnement de l’autre sur ses envies (clique sur le nuage comment demander le consentement de l’autre si tu veux plus de détails). | |
Le respect de son corps et du corps de l’autre, ainsi que de ses envies : faire quelque chose qui n’est pas expressément désiré par l’autre, tu ne feras point. | |
⚠️ Attention : Le consentement se limite à un moment donné. Tu as le droit de ne pas consentir à une pratique spécifique, de ne plus consentir au rapport sexuel même après avoir donné ton consentement. Tu es précieux. Ainsi, il n’existe pas de devoir sexuel : aucun acte n’est dû à l’autre dans toutes les situations. Le consentement se périme. Il n’existe que de manière temporaire et pour une action particulière. | |
👉 Comment s’assurer de son consentement ? | |
Retournes sur la page principale et cliques sur le nuage correspondant pour voir toutes les façon de faire. Choisis ce qui te convient et ce qui te rend à l’aise 😌""" | |
yield fixed_response | |
return | |
# Valeurs par défaut fixées | |
max_new_tokens = 1024 | |
temperature = 0.6 | |
top_p = 0.9 | |
top_k = 50 | |
repetition_penalty = 1.2 | |
# Prépare la conversation | |
conversation = [*chat_history, {"role": "user", "content": message}] | |
input_ids = tokenizer.apply_chat_template(conversation, return_tensors="pt") | |
if input_ids.shape[1] > MAX_INPUT_TOKEN_LENGTH: | |
input_ids = input_ids[:, -MAX_INPUT_TOKEN_LENGTH:] | |
gr.Warning(f"Trimmed input from conversation as it was longer than {MAX_INPUT_TOKEN_LENGTH} tokens.") | |
input_ids = input_ids.to(model.device) | |
streamer = TextIteratorStreamer(tokenizer, timeout=20.0, skip_prompt=True, skip_special_tokens=True) | |
generate_kwargs = dict( | |
{"input_ids": input_ids}, | |
streamer=streamer, | |
max_new_tokens=max_new_tokens, | |
do_sample=True, | |
top_p=top_p, | |
top_k=top_k, | |
temperature=temperature, | |
num_beams=1, | |
repetition_penalty=repetition_penalty, | |
) | |
t = Thread(target=model.generate, kwargs=generate_kwargs) | |
t.start() | |
outputs = [] | |
for text in streamer: | |
outputs.append(text) | |
yield "".join(outputs) | |
# On ne fournit plus 'additional_inputs' ici, donc aucun slider ne sera affiché | |
demo = gr.ChatInterface( | |
fn=generate, | |
stop_btn=None, | |
examples=[ | |
["C’est quoi le consentement ? Comment savoir si ma copine a envie de moi ?"], | |
["C’est quoi une agression sexuelle ?"], | |
["C’est quoi un viol ?"], | |
["C’est quoi un attouchement ?"], | |
["C’est quoi un harcèlement sexuel ?"], | |
["Est-ce illégal de visionner du porno ?"], | |
["Mon copain me demande un nude, dois-je le faire ?"], | |
["Mon ancien copain me menace de poster des photos de moi nue sur internet, que faire ?"], | |
["Que puis-je faire si un membre de ma famille me touche d’une manière bizarre, mais que j’ai peur de parler ou de ne pas être cru ?"], | |
], | |
type="messages", | |
description=DESCRIPTION, | |
css_paths="style.css", | |
) | |
if __name__ == "__main__": | |
demo.queue(max_size=20).launch(share=True) | |