🎸 ASGI-серверы для Django-приложений
|
Поддержка асинхронности в Django постоянно улучшается, и каждая новая версия фреймворка вводит новые асинхронные возможности. На данный момент уже реализованы: - Асинхронные представления и промежуточные слои (middlewares), которые позволяют обрабатывать HTTP-запросы асинхронно.
- Асинхронный ORM-интерфейс поддерживает асинхронные запросы к базе данных.
- Асинхронная поддержка для декораторов и диспетчеров сигналов дает возможность создавать асинхронные обработчики событий.
Кроме того, асинхронная поддержка в contrib пакетах (например, auth и sessions) позволяет создавать полностью асинхронные приложения на Django. Для эффективного обслуживания асинхронного приложения также необходим ASGI-сервер. В статье рассматриваются самые оптимальные варианты: - Daphne – ASGI-сервер на чистом Python. Разрабатывается и поддерживается командой Django, что является большим плюсом с точки зрения долгосрочной поддержки. Daphne предоставляет интеграцию со встроенной командой Django runserver, что позволяет запускать проект под ASGI во время разработки и использовать все возможности runserver – проверку системы, автоматическую перезагрузку и читабельные логи. Поддерживает HTTP/1, HTTP/2 и WebSockets.
- Hypercorn – гибридный ASGI/WSGI-сервер, написанный на Python. Поддерживает HTTP/1, HTTP/2, HTTP/3 (с использованием библиотеки aioquic) и WebSockets. Отличается гибкостью, может использоваться как во время разработки, так и в продакшене. Имеет множество настроек конфигурации, включая выбор типа рабочих процессов (asyncio, uvloop, trio), опцию автоматической перезагрузки при изменении кода и т.д.
- Uvicorn – ASGI-сервер, основанный на uvloop. Поддерживает HTTP/1.1 и WebSockets. Опция --reload позволяет автоматически перезапускать сервер при изменении Python-файлов, а --reload-include расширяет это поведение на другие файлы, например, HTML-шаблоны.
- Granian – гибридный ASGI/WSGI/RSGI-сервер. Написан на Rust и отличается высокой скоростью, поддерживает HTTP/1, HTTP/2 и WebSockets. Может использоваться и во время разработки, и в продакшене. Предоставляет множество настроек конфигурации и автоматическую перезагрузку при изменении кода. Единственный недостаток – отсутствие логирования доступа, но разработчики обещают исправить этот недочет в скором времени.
|
RAGFlow – комплексная RAG-платформа для вопросно-ответного взаимодействия с документами. Предлагает автоматизированный процесс создания RAG-системы, которая одинаково подходит как для личного использования, так и для нужд крупного бизнеса. Основные возможности: - Извлечение знаний из неструктурированных данных на основе глубокого понимания документов.
- Умение находить иголку в стоге сена из практически неограниченного количества токенов.
- Шаблонная фрагментация.
- Цитаты со ссылками на источник и сниженный уровень галлюцинаций.
- Визуализация фрагментации текста для возможности человеческого вмешательства.
- Поддержка Word, слайдов, Excel, txt, изображений, сканированных копий, структурированных данных, веб-страниц и многих других форматов.
- API для бесшовной интеграции с бизнес-приложениями.
|
The Pipe – это инструмент для преобразования различных данных (PDF, Word, CSV, изображений, веб-страниц, репозиториев GitHub и многих других) в формат, готовый для использования с мультимодальными языковыми моделями (например, GPT-4V). The Pipe построен на основе десятков тщательно разработанных эвристик для создания осмысленных текстовых и визуальных промптов из всевозможных документов, блокнотов Jupyter, презентаций, zip-архивов и т. д. Основные возможности:
- Подготовка промптов из десятков типов сложных файлов.
- Извлечение визуальных данных из сложных PDF, Markdown и других документов.
- Оптимизация вывода для мультимодальных языковых моделей (текст + изображения).
- Автоматическое сжатие промптов, превышающих заданное ограничение по количеству токенов.
- Работа с файлами без расширений, потоками данных в памяти.
- Обработка данных из директорий, репозиториев GitHub и с сайтов.
- Многопоточность для ускорения обработки.
- Возможность использовать API на thepi.pe или запускать локально (из Python или из командной строки).
|
Nava – библиотека, которая позволяет воспроизводить звук в Python-приложениях без установки каких-либо дополнительных зависимостей. Это кроссплатформенное решение, работающее на Windows, macOS и Linux. Простой и легкий в использовании API делает Nava идеальным выбором для разработчиков, желающих добавить звуковую функциональность в свои Python-программы: - Поддерживает асинхронное и зацикленное воспроизведение.
- Проигрывает wav и mp3 форматы на macOS, и wav – на Windows и Linux.
UFO – двухагентная платформа, предназначенная для выполнения запросов пользователей на операционной системе Windows. Это первый инструмент такого рода. Фреймворк включает в себя: - AppAgent – агент, отвечающий за выбор нужного приложения для выполнения запроса пользователя. Он также может переключаться между разными приложениями, если запрос требует работы в нескольких программах.
- ActAgent – агент, ответственный за последовательное выполнение действий внутри выбранного приложения до полного завершения задачи.
- Модуль взаимодействия с интерфейсом (Control Interaction) – переводит команды от AppAgent и ActAgent во взаимодействие с пользовательским интерфейсом приложения. Он работает с элементами управления, совместимыми с API Windows UI Automation.
|
Схема взаимодействия агентов в UFO |
Ключевые возможности UFO: - Мультимодальное понимание пользовательского интерфейса приложений с помощью GPT-Vision, что позволяет выполнять разнообразные запросы.
- Поддержка создания справочной документации для каждого приложения Windows, чтобы UFO мог лучше с ним взаимодействовать.
- Интеграция технологии RAG для использования как офлайн-документации, так и онлайн-поиска в Bing для улучшения выполнения запросов.
- Возможность сохранения траекторий выполнения задач в памяти UFO для повышения эффективности в будущем.
- Поддержка разных языковых моделей для AgentApp и ActAgent, включая модели без визуального ввода, например, GPT-4.
- Встроенные меры безопасности, которые запрашивают подтверждение пользователя перед выполнением действий с конфиденциальными данными.
- Расширяемая архитектура, позволяющая добавлять новые функциональные возможности и типы управления для решения более сложных задач.
|
SWE-agent – опенсорсная разработка специалистов Принстонского университета. Этот инструмент превращает LLM (например, GPT-4) в агента, который может исправлять ошибки и проблемы в реальных репозиториях на GitHub. По результатам теста SWE-bench SWE-agent решает 12,29% проблем, лишь немного уступая Devin, и значительно превосходит возможности RAG на основе GPT-4 и Claude 3 Opus. Такой уровень эффективности возможен благодаря новаторской концепции, на которой основан SWE-agent – интерфейсу агент-компьютер (ACI). Интерфейс обеспечивает LLM доступ в репозиторий, а также упрощает редактирование и выполнение кода. Основные особенности ACI: - Линтер – запускается при получении команды на редактирование, и не позволяет выполнить эту команду, если код синтаксически некорректен.
- Специальный просмотрщик файлов – вместо простого вывода содержимого файла командой cat, он отображает только 100 строк за один раз, с командами для прокрутки вверх-вниз и поиска внутри файла.
- Специальная команда поиска по всей директории – она лаконично перечисляет только те файлы, в которых есть совпадения, без лишней контекстной информации, чтобы не сбивать модель с толку.
- Уведомление об успешном выполнении команды без вывода результата – если команда завершается без вывода данных, агент возвращает сообщение «Ваша команда выполнена успешно и завершилась без выходных данных».
Процесс работы SWE-агента состоит из двух этапов: - Сначала агент принимает запрос на исправление проблемы (issue) из репозитория GitHub, после чего возвращает запрос на вытягивание, который должен исправить баг.
- На втором этапе (который на данный момент доступен только для issues, включенных в тестовый набор SWE-bench), SWE-агент оценивает предложенные изменения, чтобы убедиться, что они действительно решили проблему.
|
Эта статья рассказывает о создании чат-бота, который может отвечать на вопросы, используя информацию из ваших документов. Основные этапы работы: - Загрузка и подготовка данных – показано, как использовать библиотеку LangChain для загрузки различных типов документов (PDF, Word и т. д.), разбивки их на более мелкие фрагменты и создания векторных представлений текста.
- Улучшенные методы поиска. LangChain предлагает эффективные алгоритмы поиска, которые помогают находить релевантные документы для ответа на вопросы.
- Объединение поиска и механизмов управления контекстом с LLM – показано, как соединить поиск с мощными возможностями языковой модели, чтобы чат-бот мог поддерживать более естественный диалог с пользователем и генерировать содержательные и краткие ответы на вопросы.
- Графический интерфейс – приведен пример создания простого пользовательского интерфейса с вкладками для общения, просмотра истории чата, базы данных и настроек.
|
В LangChain есть инструменты для создания простого GUI |
Как создать производительную LLM в 2024 году
|
Это видео – первая часть туториала по созданию эффективных языковых моделей. В этой части обсуждаются ключевые аспекты: - Подготовка данных. Самая важная часть обучения – создание качественного набора данных, поскольку поведение модели в большей степени определяется набором данных, чем архитектурой или гиперпараметрами.
- Использование различных методов фильтрации и проверки данных, включая фильтрацию языка, эвристическую фильтрацию, фильтрацию на основе машинного обучения и дедупликацию. данных.
- Моделирование и параллелизм – автор объясняет важность эффективного моделирования и параллелизма при обучении моделей, и рассказывает о различных типах параллелизма.
- Настройка гиперпараметров и эффект, который это оказывает на производительность.
- Тонкая настройка и развертывание – автор рассказывает о файнтюнинге и затрагивает вопросы оптимизации – квантование, компиляцию и спекулятивное декодирование.
|
На этом все, до следующей недели! |
|
|
Вы получили это письмо, потому что подписались на нашу рассылку. Если вы больше не хотите получать наши письма, нажмите здесь.
|
|
|
|