|
|
--- |
|
|
license: apache-2.0 |
|
|
datasets: |
|
|
- fka/awesome-chatgpt-prompts |
|
|
language: |
|
|
- ak |
|
|
metrics: |
|
|
- cer |
|
|
base_model: |
|
|
- Qwen/Qwen2-VL-7B-Instruct |
|
|
new_version: mattshumer/Reflection-Llama-3.1-70B |
|
|
pipeline_tag: text2text-generation |
|
|
library_name: bertopic |
|
|
tags: |
|
|
- code |
|
|
--- |
|
|
import gradio as gr |
|
|
from transformers import pipeline, GPT2Tokenizer, GPT2LMHeadModel |
|
|
import torch |
|
|
from datetime import datetime |
|
|
|
|
|
# Laad GPT-2 model en tokenizer voor meer controle |
|
|
model_name = "gpt2" |
|
|
model = GPT2LMHeadModel.from_pretrained(model_name) |
|
|
tokenizer = GPT2Tokenizer.from_pretrained(model_name) |
|
|
|
|
|
# Zet het model in evaluatie-modus |
|
|
model.eval() |
|
|
|
|
|
# Functie om de tokenslimiet in de gaten te houden |
|
|
def manage_token_limit(history, max_tokens=1000): |
|
|
# Check of de geschiedenis te groot wordt |
|
|
tokenized_history = tokenizer.encode(history) |
|
|
if len(tokenized_history) > max_tokens: |
|
|
# Trim de geschiedenis |
|
|
return tokenizer.decode(tokenized_history[-max_tokens:]) |
|
|
else: |
|
|
return history |
|
|
|
|
|
# Functie om AI-respons te genereren met context |
|
|
def generate_response(user_input, chat_history, temperature=0.7, top_k=50, top_p=0.9, max_length=100): |
|
|
# Voeg user input toe aan de geschiedenis |
|
|
new_history = chat_history + f"\nUser: {user_input}\nAI:" |
|
|
|
|
|
# Trim de geschiedenis als die te lang is |
|
|
new_history = manage_token_limit(new_history) |
|
|
|
|
|
# Tokeniseer de geschiedenis |
|
|
inputs = tokenizer.encode(new_history, return_tensors='pt') |
|
|
|
|
|
# Genereer tekst met variatie in temperatuur en top-k sampling |
|
|
outputs = model.generate(inputs, max_length=max_length, temperature=temperature, |
|
|
top_k=top_k, top_p=top_p, pad_token_id=tokenizer.eos_token_id) |
|
|
|
|
|
# Decodeer de output en voeg deze toe aan de geschiedenis |
|
|
generated_text = tokenizer.decode(outputs[:, inputs.shape[-1]:][0], skip_special_tokens=True) |
|
|
|
|
|
new_history += generated_text + "\n" |
|
|
|
|
|
return generated_text, new_history |
|
|
|
|
|
# Functie voor het loggen van conversaties |
|
|
def log_conversation(user_input, response): |
|
|
# Simpele logging naar een bestand |
|
|
with open("chat_logs.txt", "a") as log_file: |
|
|
log_file.write(f"{datetime.now()} | User: {user_input} | AI: {response}\n") |
|
|
|
|
|
# Gradio interface-functie die interactie en instellingen beheert |
|
|
def chatbot_interface(user_input, chat_history, temperature=0.7, top_k=50, top_p=0.9): |
|
|
# Genereer AI-reactie |
|
|
ai_response, updated_history = generate_response(user_input, chat_history, temperature, top_k, top_p) |
|
|
|
|
|
# Log de conversatie |
|
|
log_conversation(user_input, ai_response) |
|
|
|
|
|
return ai_response, updated_history |
|
|
|
|
|
# Gradio UI setup |
|
|
with gr.Blocks() as demo: |
|
|
# Titel en beschrijving |
|
|
gr.Markdown("# Geavanceerde AI Chatbot met Variatie") |
|
|
gr.Markdown("Deze chatbot gebruikt GPT-2 om geavanceerde, variabele antwoorden te genereren.") |
|
|
|
|
|
# Input veld en conversatiegeschiedenis |
|
|
chat_history = gr.State(value="") # Houdt de volledige geschiedenis bij |
|
|
|
|
|
with gr.Row(): |
|
|
user_input = gr.Textbox(lines=2, placeholder="Typ hier je vraag...") |
|
|
|
|
|
# Instellingen voor AI variatie |
|
|
with gr.Row(): |
|
|
temperature = gr.Slider(0.1, 1.0, value=0.7, label="Temperature (Creativiteit)") |
|
|
top_k = gr.Slider(1, 100, value=50, label="Top-k Sampling") |
|
|
top_p = gr.Slider(0.1, 1.0, value=0.9, label="Top-p Sampling") |
|
|
|
|
|
# Output veld voor het AI antwoord |
|
|
ai_output = gr.Textbox(label="AI Response") |
|
|
|
|
|
# Start de chatbot |
|
|
submit_button = gr.Button("Submit") |
|
|
submit_button.click(chatbot_interface, |
|
|
inputs=[user_input, chat_history, temperature, top_k, top_p], |
|
|
outputs=[ai_output, chat_history]) |
|
|
|
|
|
# Reset knop |
|
|
reset_button = gr.Button("Reset Chat") |
|
|
reset_button.click(lambda: "", outputs=chat_history) |
|
|
|
|
|
# Start de Gradio interface |
|
|
demo.launch() |
|
|
|