g19_project / pages /Cards.py
Emil25's picture
Update pages/Cards.py
38f7ef3
raw
history blame
No virus
2.54 kB
import streamlit as st
import pandas as pd
import requests
import word2emoji
import os
# Установка API URL и заголовков
API_URL_gen = "https://api-inference.huggingface.co/models/facebook/blenderbot-400M-distill"
API_URL_tra = "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-ru"
headers = {"Authorization": os.getenv("api_token")}
# Функция для генерирования предложения
def generate_example(payload):
response = requests.post(API_URL_gen, headers=headers, json=payload)
return response.json()
# Функция для перевода слова
def translate_word(payload):
response = requests.post(API_URL_tra, headers=headers, json=payload)
return response.json()
# Настраеваем заголовок и название страницы
st.set_page_config(layout="wide", page_title="Students' Personal Assistant")
st.markdown(' # :female-student: Персональный помощник для студентов')
st.divider()
st.markdown('## :flower_playing_cards: Карточки для изучения английских слов')
st.sidebar.markdown('# :bookmark_tabs: :bookmark_tabs: :bookmark_tabs: :bookmark_tabs: ')
words_from_tarea = st.sidebar.text_area('Напиши список слов на английском', value='cat dog duck')
button_start = st.sidebar.button('Создать карточки')
cards_list = list()
if button_start:
words_list = words_from_tarea.split()
st.divider()
# Отправляем запросы через API для получения перевода слов и генерирования предложений
with st.spinner('...'):
for word in words_list:
example = generate_example(word)
translated = translate_word(word)
cards_list.append([word, translated[0]['translation_text'].lower(), example['generated_text']])
# Преобразуем полученные данные в DataFrame
cards_df = pd.DataFrame(cards_list, columns=['word', 'translated', 'example'])
st.sidebar.success('Готово')
# Выводим карточки
for el in cards_list:
with st.chat_message("assistant"):
#st.divider()
st.markdown(f'# {word2emoji(el[0])}')
st.markdown(f'# :red[{el[0]}]')
st.markdown(f'## :blue[{el[1]}]')
st.markdown(f'* {el[2]}')
st.divider()