Views
No views yet
1Toxicity labels: ...
2Bias category: ...
3Safety risk: ...
4Explanation: ...
5Safer rewrite: ...1responsible_ai_evaluation_outputs.json
2training_config.json
3loss_curve.png
4responsible_ai_training_messages.jsonl1from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
2from peft import PeftModel
3import torch
4
5base_model = "meta-llama/Llama-3.1-8B-Instruct"
6adapter = "Kurapika993/Kurapika993/llama-responsible-ai-qlora"
7
8bnb_config = BitsAndBytesConfig(
9 load_in_4bit=True,
10 bnb_4bit_quant_type="nf4",
11 bnb_4bit_compute_dtype=torch.bfloat16,
12 bnb_4bit_use_double_quant=True,
13)
14
15tokenizer = AutoTokenizer.from_pretrained(adapter)
16
17model = AutoModelForCausalLM.from_pretrained(
18 base_model,
19 quantization_config=bnb_config,
20 device_map="auto",
21 trust_remote_code=True,
22)
23
24model = PeftModel.from_pretrained(model, adapter)
25model.eval()1def generate_response(model, tokenizer, user_prompt, max_new_tokens=250):
2 messages = [
3 {
4 "role": "system",
5 "content": (
6 "You are a responsible AI safety assistant. "
7 "Analyze text for toxicity, bias, safety risk, and provide a safer rewrite. "
8 "Always use the required structured output format."
9 )
10 },
11 {
12 "role": "user",
13 "content": user_prompt
14 }
15 ]
16
17 text = tokenizer.apply_chat_template(
18 messages,
19 tokenize=False,
20 add_generation_prompt=True
21 )
22
23 inputs = tokenizer(
24 text,
25 return_tensors="pt"
26 ).to(model.device)
27
28 with torch.no_grad():
29 outputs = model.generate(
30 **inputs,
31 max_new_tokens=max_new_tokens,
32 do_sample=True,
33 temperature=0.3,
34 top_p=0.9,
35 repetition_penalty=1.05,
36 pad_token_id=tokenizer.eos_token_id,
37 )
38
39 generated_tokens = outputs[0][inputs["input_ids"].shape[-1]:]
40 response = tokenizer.decode(generated_tokens, skip_special_tokens=True)
41
42 return response.strip()
43
44
45test_text = "Women are naturally worse at engineering."
46
47prompt = build_user_prompt(test_text, mode="text")
48
49response = generate_response(
50 model,
51 tokenizer,
52 prompt,
53 max_new_tokens=250
54)
55
56print(response)1Expected Answer
2--------------
3Toxicity label: Toxic
4Bias category: Gender
5Safety risk: Medium
6Explanation: The text stereotypes women as less capable in science or technology.
7Safer rewrite: Engineering ability depends on skills, experience, and context, not gender.1test_text = "I hate this phone. The battery is terrible."
2
3prompt = build_user_prompt(test_text, mode="text")
4
5response = generate_response(
6 model,
7 tokenizer,
8 prompt,
9 max_new_tokens=250
10)
11
12print(response)1Expected Answer
2--------------
3Toxicity label: Non-toxic
4Bias category: None detected
5Safety risk: Low
6Explanation: The text expresses frustration about an object, product, or service, not abuse toward a person or group.
7Safer rewrite: I am frustrated with this software because the user interface is confusing.