File size: 1,856 Bytes
5aa3c7f
 
 
 
ea7ec85
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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




from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
import gradio as gr

# Загрузка модели DialoGPT и токенизатора
model_name = "microsoft/DialoGPT-large"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

# Функция, которая генерирует ответ на основе входного текста
def generate_response(prompt):
    # Преобразование входного текста в токены
    input_ids = tokenizer.encode(prompt + tokenizer.eos_token, return_tensors="pt")

    # Генерация ответа на основе входных токенов
    chat_response = model.generate(
        input_ids, 
        max_length=1000, 
        pad_token_id=tokenizer.eos_token_id,
        do_sample=True, 
        top_k=50, 
        top_p=0.95, 
        temperature=0.8,
        no_repeat_ngram_size=2
    )

    # Декодирование ответа из токенов в текст
    response = tokenizer.decode(chat_response[0], skip_special_tokens=True)

    return response

# Создание интерфейса с помощью Gradio
inputs = gr.inputs.Textbox(lines=7, label="Введите сообщение")
outputs = gr.outputs.Textbox(label="Ответ")

title = "Chat.UI на основе DialoGPT"
description = "Простой чат на основе модели DialoGPT из библиотеки transformers"
examples = [
    ["Привет, как дела?"],
    ["Что ты думаешь о новом фильме?"]
]

chat_interface = gr.Interface(
    fn=generate_response, 
    inputs=inputs, 
    outputs=outputs, 
    title=title, 
    description=description, 
    examples=examples
)

# Запуск интерфейса
chat_interface.launch()