Skip to content

Клиентская библиотека для генерации HTML страниц с помощью нейросети DeepSeek

Notifications You must be signed in to change notification settings

devmanorg/html-page-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HTML Page Generator

Библиотека для генерации HTML страниц с помощью ИИ. Пользователю достаточно описать своими словами страницу, которую он хочет получить. ИИ сами подберут изображения и напишут код страницы.

Работает с двумя сервисами:

  • Unsplash - для поиска подходящих картинок.
  • Deepseek - для управления процессом и собственно генерации кода страницы.

Установка

Вы можете установить библиотеку с помощью pip:

# Установить из публичного GitHub репозитория (рекомендуемый способ)
$ pip install git+https://github.com/devmanorg/html-page-generator.git

# Установить из приватного GitLab репозитория (если у вас есть к нему доступ)
$ pip install git+https://gitlab.dvmn.org/dvmn/courses/fastapi/html-page-generator.git

Подготовка

Понадобятся ключи для сервисов:

  • DEEPSEEK_API_KEY - API-ключ аутентификации. Получить.
  • UNSPLASH_CLIENT_ID - Access Token созданного Unsplash приложения. Получить.

Если вы используете альтернативную инсталляцию DeepSeek, то необходимо также указать её URL-адрес:

  • DEEPSEEK_BASE_URL

Если не указан, то по-умолчанию используется URL-адрес официальной DeepSeek API.

Инициализация

На самом верхнем уровне приложения в момент запуска необходимо проинициализировать 2 клиентских класса. Делается это для того, чтобы все запросы при работе приложения отправлялись в одной сессии. Это сэкономит ресурсы, а также защитит от возможного бана со стороны сервисов при многократных обращениях.

from html_page_generator import AsyncDeepseekClient, AsyncUnsplashClient


async def main():
    async with (
        AsyncUnsplashClient.setup("UNSPLASH_CLIENT_ID", timeout=3),
        AsyncDeepseekClient.setup("DEEPSEEK_API_KEY")
    ):
        ...

Генерация

Для запуска генерации используйте класс AsyncPageGenerator. Объект этого класса при вызове возвращает асинхронный итератор, который будет стримить весь чат с нейросетью. Таким образом можно отследить все, что происходит в процессе генерации.

from html_page_generator import AsyncPageGenerator
import os

DEBUG_MODE = os.getenv("DEBUG_MODE", False)

async def generate_page(user_prompt: str):
    generator = AsyncPageGenerator(debug_mode=DEBUG_MODE)
    async for chunk in generator(user_prompt):
        print(chunk, end="", flush=True)

    with open(generator.html_page.title + '.html', 'w') as f:
        f.write(generator.html_page.html_code)

    print('Файл успешно сохранён!')

При значении параметра debug_mode=True, генератор будет логировать в консоль все действия агента. Готовую страницу можно получить после генерации, в атрибуте generator.html_page. Это объект класса HtmlPage, содержащий код страницы и title.

class HtmlPage(BaseModel):
    html_code: str = ""
    title: str = ""

Этапы генерации

Сначала нейросеть придумает название для сайта.

Note: Сразу после этой стадии в атрибуте generator.html_page.title можно получить заголовок страницы, не дожидаясь окончания генерации. Отслеживать этот момент можно, проверяя этот атрибут на каждой итерации.

generator = AsyncPageGenerator()
title_saved = False
async for chunk in generator(user_prompt):
    if title_saved:
        continue
    if title := generator.html_page.title:
        print(title)
        title_saved = True

Вторым этапом пойдет поиск подходящих изображений с помощью Unsplash.

Далее Deepseek сгенерирует код страницы.

И наконец на четвертом этапе Deepseek пройдется по коду еще раз и попробует его улучшить.

About

Клиентская библиотека для генерации HTML страниц с помощью нейросети DeepSeek

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages