import gradio as gr import random from transformers import pipeline # Инициализация модели для текстовой генерации generator = pipeline('text-generation', model='gpt2-medium') # Функции для генерации никнеймов и аватарок def generate_username(): prefixes = ['gay_', 'ebat_', 'ded_', 'gandon_', 'top_'] suffixes = ['penis', 'ebal', 'gandon', 'gomo', 'top', 'bot', 'sosi'] return f"{random.choice(prefixes)}{random.choice(suffixes)}" def generate_anime_avatar(): return "https://picsum.photos/seed/anime/200/200" # Функция для генерации ответа def generate_response(text): result = generator( text, max_length=100, num_return_sequences=1, temperature=0.7 ) return result[0]['generated_text'] # Хранилище постов posts = [] # Функция для добавления поста def add_post(text, image, username, avatar): new_post = { "text": text, "image": image, "username": username, "avatar": avatar, "responses": [] } posts.append(new_post) return "", None, update_feed() # Функция для обновления ленты def update_feed(): feed_html = "<div class='feed'>" for post in reversed(posts): # Показывать последние посты сверху feed_html += f""" <div class='post'> <div class='post-header'> <img src='{post['avatar']}' class='avatar' /> <div class='post-info'> <div class='username'>{post['username']}</div> </div> </div> <div class='post-content'>{post['text']}</div> <div class='post-image'><img src='{post['image']}' style='max-width: 100%; border-radius: 8px;'/></div> <div class='responses'> {chr(10).join(f'<div class="response">{r}</div>' for r in post['responses'])} </div> </div> """ feed_html += "</div>" return feed_html # Основной интерфейс with gr.Blocks() as demo: gr.Markdown("# 0qwpif Talk") # Таб "Главная" with gr.Tab("Главная"): with gr.Row(): with gr.Column(): post_input = gr.Textbox(label="Напишите пост", placeholder="Что происходит?") post_image = gr.Image(label="Изображение", interactive=True, type="filepath") username_input = gr.Textbox(label="Никнейм", value=generate_username) avatar_input = gr.Image(label="Аватарка", interactive=True, type="filepath", value=generate_anime_avatar) gr.Button("Отправить").click( add_post, [post_input, post_image, username_input, avatar_input], [post_input, post_image, "feed"] ) with gr.Column(): response_output = gr.Textbox(label="Ответы", interactive=False) generate_btn = gr.Button("Сгенерировать ответ") generate_btn.click(generate_response, post_input, response_output) # Лента постов feed = gr.HTML(value=update_feed) # Таб "Профиль" with gr.Tab("Профиль"): with gr.Row(): username_profile = gr.Textbox(label="Никнейм", value=generate_username) avatar_profile = gr.Image(label="Аватарка", interactive=True, type="filepath", value=generate_anime_avatar) with gr.Row(): bio_profile = gr.Textbox(label="О себе", lines=4) gr.Button("Обновить профиль") demo.launch()