Pull to refresh

Релиз Shiny for Python 1.0

Reading time3 min
Views6.6K

Разработчики выпустили Shiny for Python 1.0 с большим набором функций и стабильным API. Фреймворк построен на основе современного веб-стека Python и использует Starlette и asyncio для создания веб-приложений.

Новая версия включает: 

  • новый компонент Chat(), который упрощает внедрение генеративных чат-ботов с искусственным интеллектом на базе любой языковой модели;

from shiny.express import ui

chat = ui.Chat(id="chat")
chat.ui()

@chat.on_user_submit
async def _():
    messages = chat.messages()
    # The next line is a placeholder for the actual generative AI model
    response = await ai_model.generate_response(messages, stream=True)
    # Use append_message_stream() when streaming responses
    await chat.append_message_stream(response)
  • сквозное тестирование для поддержания качества кода при смоделированных взаимодействиях в реальном браузере. Оно организовано на платформе Playwright;

  • улучшения фреймов данных. Появилось два компонента для рендеринга кадров данных: DataGrid() и DataTable().

render.DataGrid(
    pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}),
    styles=[
        # Center the text of each cell (using Bootstrap utility class)
        {
            "class": "text-center",
        },
        # Highlight 1st column green
        {
            "cols": [0],
            "style": {"background-color": "mediumspringgreen"},
        },
        # Highlight rows 1-2 within 2nd column
        {
            "rows": [0, 1],
            "cols": [1],
            "style": {"background-color": "darkorange", "color": "white"},
        },
    ],
)
  • Первый представляет собой более интерактивную и многофункциональную таблицу, а второй — более простую. DataGrid() и DataTable() получили аргумент стилей для отображаемого результата. Они могут принимать список словарей, где каждый словарь представляет стиль, который будет применён к таблице (и, следовательно, должен иметь как минимум ключ стиля). Для применения стиля к конкретным ячейкам можно использовать клавиши rows и cols. Если указаны и строки, и столбцы, стиль будет применяться только к пересечению указанных элементов;

  • активацию одновременно выделения и редактирования;

render.DataGrid(
    pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}),
    selection_mode="row",
    editable=True,
)
  • поддержку Polars и набора текста в дополнение к DataFrames pandas. Кроме того, методы доступа, такие как .data() и .data_view(), теперь возвращают тот же тип, что и отображаемые данные. Это работает даже с подсказками типов;

  • больше контроля над сортировкой и фильтрацией за счёт функций .data_view_rows() — отсортированные и отфильтрованные номера строк, .sort() — информация отсортированного столбца, .filter() — информация отфильтрованного столбца, .update_sort(sort=) — обновление сортировки фрейма данных, .update_filter(filter=) — обновление фильтрации фрейма данных.

import pandas as pd
from shiny import reactive
from shiny.express import input, render, ui

@render.data_frame
def df():
    return pd.DataFrame({"A": [1, 3, 2], "B": [4, 5, 6]})

@reactive.effect
@reactive.event(input.sort)
async def update_sort():
    await df.update_sort([{"col": 0, "desc": False}])

ui.input_action_button("sort", "Sort on column 0↑")

Кроме того, Shiny теперь предлагает пользовательский интерфейс чата с видеопомощником, поддерживаемый GPT-4o. Он принимает видео с веб-камеры в качестве входных данных и воспроизводит аудио в качестве выходных. Для этого можно использовать функции:

  • input_video_clip(): предварительный просмотр видео веб-камеры с кнопкой, позволяющей начать/остановить запись, и меню настроек, позволяющее выбрать камеру/микрофон;

  • audio_spinner(): аудиоплеер, который пульсирует синхронно со звуковым сигналом.

Эти компоненты доступны в отдельном пакете под названием Shinymedia

В феврале вышла версия Quarto 1.4 с поддержкой Shiny для Python.

Tags:
Hubs:
Total votes 5: ↑4 and ↓1+10
Comments4

Other news