Smiley777 commited on
Commit
49411f3
·
verified ·
1 Parent(s): ae343dd

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +110 -0
README.md ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ datasets:
4
+ - fka/awesome-chatgpt-prompts
5
+ language:
6
+ - ak
7
+ metrics:
8
+ - cer
9
+ base_model:
10
+ - Qwen/Qwen2-VL-7B-Instruct
11
+ new_version: mattshumer/Reflection-Llama-3.1-70B
12
+ pipeline_tag: text2text-generation
13
+ library_name: bertopic
14
+ tags:
15
+ - code
16
+ ---
17
+ import gradio as gr
18
+ from transformers import pipeline, GPT2Tokenizer, GPT2LMHeadModel
19
+ import torch
20
+ from datetime import datetime
21
+
22
+ # Laad GPT-2 model en tokenizer voor meer controle
23
+ model_name = "gpt2"
24
+ model = GPT2LMHeadModel.from_pretrained(model_name)
25
+ tokenizer = GPT2Tokenizer.from_pretrained(model_name)
26
+
27
+ # Zet het model in evaluatie-modus
28
+ model.eval()
29
+
30
+ # Functie om de tokenslimiet in de gaten te houden
31
+ def manage_token_limit(history, max_tokens=1000):
32
+ # Check of de geschiedenis te groot wordt
33
+ tokenized_history = tokenizer.encode(history)
34
+ if len(tokenized_history) > max_tokens:
35
+ # Trim de geschiedenis
36
+ return tokenizer.decode(tokenized_history[-max_tokens:])
37
+ else:
38
+ return history
39
+
40
+ # Functie om AI-respons te genereren met context
41
+ def generate_response(user_input, chat_history, temperature=0.7, top_k=50, top_p=0.9, max_length=100):
42
+ # Voeg user input toe aan de geschiedenis
43
+ new_history = chat_history + f"\nUser: {user_input}\nAI:"
44
+
45
+ # Trim de geschiedenis als die te lang is
46
+ new_history = manage_token_limit(new_history)
47
+
48
+ # Tokeniseer de geschiedenis
49
+ inputs = tokenizer.encode(new_history, return_tensors='pt')
50
+
51
+ # Genereer tekst met variatie in temperatuur en top-k sampling
52
+ outputs = model.generate(inputs, max_length=max_length, temperature=temperature,
53
+ top_k=top_k, top_p=top_p, pad_token_id=tokenizer.eos_token_id)
54
+
55
+ # Decodeer de output en voeg deze toe aan de geschiedenis
56
+ generated_text = tokenizer.decode(outputs[:, inputs.shape[-1]:][0], skip_special_tokens=True)
57
+
58
+ new_history += generated_text + "\n"
59
+
60
+ return generated_text, new_history
61
+
62
+ # Functie voor het loggen van conversaties
63
+ def log_conversation(user_input, response):
64
+ # Simpele logging naar een bestand
65
+ with open("chat_logs.txt", "a") as log_file:
66
+ log_file.write(f"{datetime.now()} | User: {user_input} | AI: {response}\n")
67
+
68
+ # Gradio interface-functie die interactie en instellingen beheert
69
+ def chatbot_interface(user_input, chat_history, temperature=0.7, top_k=50, top_p=0.9):
70
+ # Genereer AI-reactie
71
+ ai_response, updated_history = generate_response(user_input, chat_history, temperature, top_k, top_p)
72
+
73
+ # Log de conversatie
74
+ log_conversation(user_input, ai_response)
75
+
76
+ return ai_response, updated_history
77
+
78
+ # Gradio UI setup
79
+ with gr.Blocks() as demo:
80
+ # Titel en beschrijving
81
+ gr.Markdown("# Geavanceerde AI Chatbot met Variatie")
82
+ gr.Markdown("Deze chatbot gebruikt GPT-2 om geavanceerde, variabele antwoorden te genereren.")
83
+
84
+ # Input veld en conversatiegeschiedenis
85
+ chat_history = gr.State(value="") # Houdt de volledige geschiedenis bij
86
+
87
+ with gr.Row():
88
+ user_input = gr.Textbox(lines=2, placeholder="Typ hier je vraag...")
89
+
90
+ # Instellingen voor AI variatie
91
+ with gr.Row():
92
+ temperature = gr.Slider(0.1, 1.0, value=0.7, label="Temperature (Creativiteit)")
93
+ top_k = gr.Slider(1, 100, value=50, label="Top-k Sampling")
94
+ top_p = gr.Slider(0.1, 1.0, value=0.9, label="Top-p Sampling")
95
+
96
+ # Output veld voor het AI antwoord
97
+ ai_output = gr.Textbox(label="AI Response")
98
+
99
+ # Start de chatbot
100
+ submit_button = gr.Button("Submit")
101
+ submit_button.click(chatbot_interface,
102
+ inputs=[user_input, chat_history, temperature, top_k, top_p],
103
+ outputs=[ai_output, chat_history])
104
+
105
+ # Reset knop
106
+ reset_button = gr.Button("Reset Chat")
107
+ reset_button.click(lambda: "", outputs=chat_history)
108
+
109
+ # Start de Gradio interface
110
+ demo.launch()