Последние новости в ИИ #288 — Недельный обзор!
24.09.2024
OpenAI выпустила новый голосовой режим Как его получить
25.09.2024Последние новости в ИИ #288 — Недельный обзор!
24.09.2024
OpenAI выпустила новый голосовой режим Как его получить
25.09.2024ЭПИЧНЫЙ ИНТЕРАКТИВ: СОЗДАЙ UI ДЛЯ LLAMAINDEX ȘАМ!
Идеальный анонс должен захватить внимание, вызвать интерес, пробудить желание и побудить к действию. Узнайте, как наша техника поможет вам достичь успеха

Как создать интерактивный интерфейс для управления научной работой
Привет! Хочешь узнать, как сделать свою научную работу более удобной и автоматизированной? Давай обсудим, как я использую LlamaIndex, FastAPI и Streamlit для создания системы, которая облегчает мои исследования и презентации.
Начнем с основ
В моем предыдущем посте я рассказал, как с помощью LlamaIndex автоматически искать статьи, создавать их краткие обзоры и генерировать слайды для презентаций. Хотите прочитать подробнее? Вот ссылка на статью:
Как я упрощаю свои исследования и презентации с помощью LlamaIndex (на английском языке)
Интерактивный интерфейс с помощью Streamlit
Чтобы сделать процесс более удобным, я добавил интерфейс на базе Streamlit. Представьте себе: интерфейс показывает прогресс выполнения задач, позволяет вносить пользовательские данные, принимать отзывы в реальном времени и выводить готовые слайды. Вот как это выглядит:

Исходный код можно найти на моем Github. Давай пройдемся по ключевым моментам реализации интерфейса и взаимодействия фронтенда и бэкенда.
Улучшения на стороне бэкенда
- Добавлено поддержи отправки событий в реальном времени
- Приостановка выполнения задач до получения пользовательских данных
- Развертывание нескольких конечных точек с помощью FastAPI для выполнения задач, приема данных и загрузки файлов
Особенности интерфейса на стороне фронтенда
- Отправка запросов на сервер и отображение поступающих данных
- Сбор пользовательского ввода, если это необходимо
- Вывод готовых слайдов
- Кнопка для скачивания итогового файла

Отправка событий в реальном времени
Иногда задачи требуют длительного выполнения, поэтому для удобства пользователей Llamaindex позволяет отправлять события с обновлением статуса. Вот пример кода, который показывает, как это сделать:
class WorkflowStreamingEvent(BaseModel):
event_type: str
event_sender: str
event_content: dict
Используем этот класс для отправки сообщений о прогрессе выполнения.
Паузирование задач для получения пользовательского ввода

Мы можем приостановить выполнение задачи до получения пользовательского отзыва. Пример:
async def gather_feedback_outline(self, ctx, ev):
if not self.user_input_future.done():
user_response = await self.user_input_future
Бэкенд на FastAPI
Мы создали сервер на FastAPI для обработки запросов и запуска задач. Вот пример конечной точки:
@app.post("/run-slide-gen")
async def run_workflow_endpoint(topic: ResearchTopic):
workflow = ... # Инициализация рабочего процесса
return StreamingResponse(event_generator(), media_type="text/event-stream")
Фронтенд на Streamlit
Когда пользователь вводит тему исследования, запускается процесс в фоновом режиме для получения данных. Пример кода:
def main():
if submit_button:
st.session_state.workflow_thread = threading.Thread(target=start_long_running_task, args=(...))
st.session_state.workflow_thread.start()
Мы используем очередь сообщений для обработки поступающих данных и библиотеку autorefresh для обновления интерфейса каждые 2 секунды.
В конце мы выводим готовые слайды и предоставляем кнопку для скачивания файла.
if "download_url_pdf" in st.session_state:
st.markdown("### Generated Slide Deck:")
st.markdown(f'', unsafe_allow_html=True)
st.download_button(label="Download Generated PPTX", data=pptx_data, ...)
Весь проект работает с помощью Docker Compose:
version: '3.8'
services:
backend:
build: ...
frontend:
build: ...
networks:
app-network:
Теперь запуск приложения происходит с командой docker-compose up.
Спасибо за внимание! Хотите увидеть больше? Заходите на мой GitHub и делитесь своими мыслями. Следите за моими обновлениями и не забывайте подключаться ко мне на LinkedIn!😊
Готовы улучшить свои научные исследования?
Напишите в комментариях, как бы вы использовали такую систему в своей работе. Буду рад любым предложениям и вопросам!
Автор статьи
Шведков Илья
Специалист по нейросетям и автоматизации
Помогаю экспертам зарабатывать больше через контент и ИИ.
В IT-сфере с 2004 года.
- Разработал 50+ автоворонок в 20 нишах - общий доход клиентов 90+ млн руб. Лучший кейс - 45 млн за 6 месяцев.
- Снял 3000+ Reels для клиентов - 9 видео с 1+ млн просмотров, 200+ роликов на YouTube.
- Автор 4 онлайн-курсов - помог 300 ученикам упаковать экспертность и масштабировать бизнес онлайн.
- Моя миссия: помочь экспертам быть услышанными и зарабатывать больше с нейросетями - чтобы каждый из них помог тысячам своих учеников, и вместе мы изменили жизни миллионов людей к лучшему.
