Spaces:
Runtime error
Runtime error
import gradio as gr | |
from transformers import pipeline | |
from diffusers import StableDiffusionPipeline # Для генерации изображений | |
import torch | |
from PIL import Image | |
import requests | |
from io import BytesIO | |
# Загружаем модели для анализа тональности, суммаризации текста, генерации подписей к изображениям, ответов на вопросы, перевода текста, определения эмоций, автодополнения кода, определения фейковых новостей, NER, классификации изображений, генерации кода и исправления кода | |
sentiment_pipeline = pipeline("sentiment-analysis") | |
summarization_pipeline = pipeline("summarization") | |
image_captioning_pipeline = pipeline("image-to-text") | |
qa_pipeline = pipeline("question-answering") | |
translation_pipeline = pipeline("translation_en_to_ru", model="Helsinki-NLP/opus-mt-en-ru") | |
emotion_pipeline = pipeline("text-classification", model="bhadresh-savani/distilbert-base-uncased-emotion") | |
code_completion_pipeline = pipeline("text-generation", model="Salesforce/codegen-350M-mono") | |
fake_news_pipeline = pipeline("text-classification", model="roberta-base-openai-detector") | |
ner_pipeline = pipeline("ner", model="dbmdz/bert-large-cased-finetuned-conll03-english", grouped_entities=True) | |
image_classification_pipeline = pipeline("image-classification", model="google/vit-base-patch16-224") | |
code_generation_pipeline = pipeline("text-generation", model="deepseek-ai/deepseek-coder-1.3b-instruct") | |
code_fix_pipeline = pipeline("text-generation", model="deepseek-ai/deepseek-coder-1.3b-instruct") | |
# Загружаем модель для генерации изображений (Stable Diffusion) | |
if torch.cuda.is_available(): | |
device = "cuda" | |
else: | |
device = "cpu" | |
image_generation_pipeline = StableDiffusionPipeline.from_pretrained("stabilityai/stable-diffusion-2-1").to(device) | |
# Загружаем модель для расширения изображений (Real-ESRGAN) | |
def load_esrgan_model(): | |
from realesrgan import RealESRGANer | |
model = RealESRGANer( | |
scale=4, | |
model_path="https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesr-general-x4v3.pth", | |
model=None, | |
tile=0, | |
tile_pad=10, | |
pre_pad=0, | |
half=False, | |
) | |
return model | |
esrgan_model = load_esrgan_model() | |
# Функция для анализа тональности текста | |
def analyze_sentiment(text): | |
result = sentiment_pipeline(text)[0] | |
return f"Label: {result['label']}, Confidence: {result['score']:.4f}" | |
# Функция для суммаризации текста | |
def summarize_text(text): | |
result = summarization_pipeline(text, max_length=50, min_length=25, do_sample=False) | |
return result[0]['summary_text'] | |
# Функция для генерации подписи к изображению | |
def generate_caption(image): | |
result = image_captioning_pipeline(image) | |
return result[0]['generated_text'] | |
# Функция для ответов на вопросы | |
def answer_question(context, question): | |
result = qa_pipeline(question=question, context=context) | |
return f"Answer: {result['answer']}, Confidence: {result['score']:.4f}" | |
# Функция для перевода текста | |
def translate_text(text): | |
result = translation_pipeline(text) | |
return result[0]['translation_text'] | |
# Функция для определения эмоций | |
def detect_emotion(text): | |
result = emotion_pipeline(text)[0] | |
return f"Emotion: {result['label']}, Confidence: {result['score']:.4f}" | |
# Функция для автодополнения кода | |
def complete_code(code): | |
result = code_completion_pipeline(code, max_length=50, num_return_sequences=1) | |
return result[0]['generated_text'] | |
# Функция для определения фейковых новостей | |
def detect_fake_news(text): | |
result = fake_news_pipeline(text)[0] | |
return f"Label: {result['label']}, Confidence: {result['score']:.4f}" | |
# Функция для распознавания именованных сущностей (NER) | |
def recognize_entities(text): | |
result = ner_pipeline(text) | |
entities = [] | |
for entity in result: | |
entities.append(f"Entity: {entity['word']}, Label: {entity['entity_group']}, Confidence: {entity['score']:.4f}") | |
return "\n".join(entities) | |
# Функция для классификации изображений | |
def classify_image(image): | |
result = image_classification_pipeline(image) | |
classifications = [] | |
for item in result: | |
classifications.append(f"Label: {item['label']}, Confidence: {item['score']:.4f}") | |
return "\n".join(classifications) | |
# Функция для генерации кода по запросу | |
def generate_code(prompt): | |
result = code_generation_pipeline(prompt, max_length=100, num_return_sequences=1) | |
return result[0]['generated_text'] | |
# Функция для исправления кода | |
def fix_code(error, problem, solution, example): | |
prompt = f""" | |
**Ошибка:** {error} | |
**Проблема:** {problem} | |
**Решение:** {solution} | |
**Пример:** {example} | |
""" | |
result = code_fix_pipeline(prompt, max_length=200, num_return_sequences=1) | |
return result[0]['generated_text'] | |
# Функция для расширения изображений (Flux Extend Image) | |
def extend_image(image): | |
# Преобразуем изображение в формат, подходящий для модели | |
img = Image.open(image).convert("RGB") | |
output, _ = esrgan_model.enhance(img, outscale=4) | |
return output | |
# Функция для генерации изображений (Image Generation) | |
def generate_image(prompt): | |
with torch.autocast("cuda"): | |
image = image_generation_pipeline(prompt).images[0] | |
return image | |
# Примеры текстов для анализа тональности | |
sentiment_examples = [ | |
"I love programming, it's so much fun!", | |
"This movie was terrible, I hated it.", | |
"The weather is nice today.", | |
"I feel so frustrated with this project.", | |
"Gradio is an amazing tool for building ML demos!" | |
] | |
# Примеры текстов для суммаризации | |
summarization_examples = [ | |
"Gradio is a powerful tool for building machine learning demos. It allows developers to quickly create interactive interfaces for their models.", | |
"The weather today is sunny with a slight breeze. It's a perfect day to go outside and enjoy nature.", | |
"Artificial intelligence is transforming industries by automating tasks and providing insights from large datasets." | |
] | |
# Примеры изображений для генерации подписей | |
image_examples = [ | |
"https://a.d-cd.net/b977306s-1920.jpg", # Пример 1 | |
"https://i.pinimg.com/originals/ba/bd/6d/babd6d37eb2dd965c7f1dfb516d54094.jpg", # Пример 2 | |
"https://get.wallhere.com/photo/sea-bay-water-beach-coast-swimming-pool-resort-island-lagoon-Caribbean-vacation-estate-leisure-ocean-tropics-2560x1440-px-geographical-feature-atoll-554636.jpg" # Пример 3 | |
] | |
# Примеры для ответов на вопросы | |
qa_examples = [ | |
["Gradio is a Python library for building machine learning demos. It allows developers to quickly create interactive interfaces for their models.", "What is Gradio?"], | |
["The weather today is sunny with a slight breeze. It's a perfect day to go outside and enjoy nature.", "What is the weather like today?"], | |
["Artificial intelligence is transforming industries by automating tasks and providing insights from large datasets.", "How is AI transforming industries?"] | |
] | |
# Примеры текстов для перевода | |
translation_examples = [ | |
"Hello, how are you?", | |
"I love machine learning and artificial intelligence.", | |
"The weather is beautiful today." | |
] | |
# Примеры текстов для определения эмоций | |
emotion_examples = [ | |
"I am so happy today!", | |
"I feel really sad about what happened.", | |
"This situation makes me angry.", | |
"I am scared of the dark.", | |
"I am surprised by the results." | |
] | |
# Примеры кода для автодополнения | |
code_examples = [ | |
"def factorial(n):", | |
"import numpy as np", | |
"for i in range(10):" | |
] | |
# Примеры текстов для определения фейковых новостей | |
fake_news_examples = [ | |
"A new study shows that eating chocolate every day can make you live longer.", | |
"The government has secretly been working on time travel technology for decades.", | |
"Scientists have discovered a new planet in our solar system that is inhabited by aliens." | |
] | |
# Примеры текстов для распознавания именованных сущностей (NER) | |
ner_examples = [ | |
"My name is John Doe and I live in New York.", | |
"Apple is looking at buying a startup in the UK for $1 billion.", | |
"Elon Musk is the CEO of Tesla and SpaceX." | |
] | |
# Примеры изображений для классификации | |
classification_examples = [ | |
"https://a.d-cd.net/b977306s-1920.jpg", # Пример 1 | |
"https://i.pinimg.com/originals/ba/bd/6d/babd6d37eb2dd965c7f1dfb516d54094.jpg", # Пример 2 | |
"https://get.wallhere.com/photo/sea-bay-water-beach-coast-swimming-pool-resort-island-lagoon-Caribbean-vacation-estate-leisure-ocean-tropics-2560x1440-px-geographical-feature-atoll-554636.jpg" # Пример 3 | |
] | |
# Примеры запросов для генерации кода | |
code_generation_examples = [ | |
"Write a Python function to calculate the factorial of a number.", | |
"Create a JavaScript function to reverse a string.", | |
"Generate a SQL query to find all users older than 30." | |
] | |
# Примеры для исправления кода | |
code_fix_examples = [ | |
["SyntaxError: invalid syntax", "Missing colon at the end of the if statement", "Add a colon at the end of the if statement", "if x == 5\n print('Hello')"], | |
["NameError: name 'x' is not defined", "Variable 'x' is not defined before use", "Define the variable 'x' before using it", "print(x)\nx = 10"], | |
["IndentationError: unexpected indent", "Incorrect indentation in the code", "Fix the indentation to match the correct level", "def foo():\n print('Hello')\n print('World')"] | |
] | |
# Создаем интерфейс Gradio с вкладками | |
with gr.Blocks() as demo: | |
with gr.Tab("Sentiment Analysis"): | |
gr.Interface( | |
fn=analyze_sentiment, | |
inputs=gr.Textbox(lines=2, placeholder="Введите текст для анализа тональности..."), | |
outputs="text", | |
title="Анализ тональности текста", | |
description="Введите текст, чтобы определить его тональность.", | |
examples=sentiment_examples, | |
examples_per_page=3 | |
) | |
with gr.Tab("Text Summarization"): | |
gr.Interface( | |
fn=summarize_text, | |
inputs=gr.Textbox(lines=5, placeholder="Введите текст для суммаризации..."), | |
outputs="text", | |
title="Суммаризация текста", | |
description="Введите текст, чтобы получить его краткое содержание.", | |
examples=summarization_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Image Captioning"): | |
gr.Interface( | |
fn=generate_caption, | |
inputs=gr.Image(type="pil", label="Загрузите изображение"), | |
outputs="text", | |
title="Генерация подписи к изображению", | |
description="Загрузите изображение, чтобы сгенерировать его описание.", | |
examples=image_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Question Answering"): | |
gr.Interface( | |
fn=answer_question, | |
inputs=[ | |
gr.Textbox(lines=5, placeholder="Введите контекст..."), | |
gr.Textbox(lines=2, placeholder="Введите вопрос...") | |
], | |
outputs="text", | |
title="Ответы на вопросы", | |
description="Введите контекст и вопрос, чтобы получить ответ.", | |
examples=qa_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Language Translation"): | |
gr.Interface( | |
fn=translate_text, | |
inputs=gr.Textbox(lines=2, placeholder="Введите текст на английском..."), | |
outputs="text", | |
title="Перевод текста (английский → русский)", | |
description="Введите текст на английском, чтобы перевести его на русский.", | |
examples=translation_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Emotion Detection"): | |
gr.Interface( | |
fn=detect_emotion, | |
inputs=gr.Textbox(lines=2, placeholder="Введите текст для определения эмоции..."), | |
outputs="text", | |
title="Определение эмоций", | |
description="Введите текст, чтобы определить эмоцию.", | |
examples=emotion_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Code Completion"): | |
gr.Interface( | |
fn=complete_code, | |
inputs=gr.Textbox(lines=5, placeholder="Введите начало кода..."), | |
outputs="text", | |
title="Автодополнение кода", | |
description="Введите начало кода, чтобы получить его продолжение.", | |
examples=code_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Fake News Detection"): | |
gr.Interface( | |
fn=detect_fake_news, | |
inputs=gr.Textbox(lines=5, placeholder="Введите текст новости..."), | |
outputs="text", | |
title="Определение фейковых новостей", | |
description="Введите текст новости, чтобы определить, является ли она фейковой.", | |
examples=fake_news_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Named Entity Recognition (NER)"): | |
gr.Interface( | |
fn=recognize_entities, | |
inputs=gr.Textbox(lines=5, placeholder="Введите текст для распознавания сущностей..."), | |
outputs="text", | |
title="Распознавание именованных сущностей (NER)", | |
description="Введите текст, чтобы извлечь из него именованные сущности.", | |
examples=ner_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Image Classification"): | |
gr.Interface( | |
fn=classify_image, | |
inputs=gr.Image(type="pil", label="Загрузите изображение"), | |
outputs="text", | |
title="Классификация изображений", | |
description="Загрузите изображение, чтобы классифицировать его.", | |
examples=classification_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Code Generation"): | |
gr.Interface( | |
fn=generate_code, | |
inputs=gr.Textbox(lines=5, placeholder="Введите запрос для генерации кода..."), | |
outputs="text", | |
title="Генерация кода по запросу", | |
description="Введите текстовый запрос, чтобы сгенерировать код.", | |
examples=code_generation_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Code Fix"): | |
gr.Interface( | |
fn=fix_code, | |
inputs=[ | |
gr.Textbox(lines=2, placeholder="Ошибка..."), | |
gr.Textbox(lines=2, placeholder="Проблема..."), | |
gr.Textbox(lines=2, placeholder="Решение..."), | |
gr.Textbox(lines=2, placeholder="Пример...") | |
], | |
outputs="text", | |
title="Исправление кода", | |
description="Введите ошибку, проблему, решение и пример, чтобы получить исправленный код.", | |
examples=code_fix_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Flux Extend Image"): | |
gr.Interface( | |
fn=extend_image, | |
inputs=gr.Image(type="pil", label="Загрузите изображение"), | |
outputs=gr.Image(type="pil", label="Расширенное изображение"), | |
title="Расширение изображений (Flux Extend Image)", | |
description="Загрузите изображение, чтобы увеличить его разрешение.", | |
examples=image_examples, | |
examples_per_page=2 | |
) | |
with gr.Tab("Image Generation"): | |
gr.Interface( | |
fn=generate_image, | |
inputs=gr.Textbox(lines=2, placeholder="Введите текстовый запрос..."), | |
outputs=gr.Image(type="pil", label="Сгенерированное изображение"), | |
title="Генерация изображений (Image Generation)", | |
description="Введите текстовый запрос, чтобы сгенерировать изображение.", | |
examples=[ | |
"A futuristic cityscape at night", | |
"A beautiful landscape with mountains and a lake", | |
"An astronaut riding a horse in space" | |
], | |
examples_per_page=2 | |
) | |
# Запускаем интерфейс | |
demo.launch() |