# От текста до SQL: полный гид по GPT-4o и Python от freeCodeCamp.org

Источник: https://www.youtube.com/watch?v=3-4qAkFRpAk
Канал: freeCodeCamp.org
Опубликовано: 03.09.2024

---

Современные технологии анализа данных перешли от обработки простых текстовых массивов к работе с мультимодальными структурами. В новом масштабном руководстве от freeCodeCamp.org Эмануэль Труммер, адъюнкт-профессор Корнелльского университета, демонстрирует, как возможности модели GPT-4o (Omni) и языка Python позволяют автоматизировать классификацию текстов, описание изображений, транскрибацию аудио и создание интеллектуальных интерфейсов для баз данных SQL.

## 🛠️ Подготовка окружения и первая настройка
[[JUMP:0:00]]

Работа с мультимодальными данными требует интеграции с современными API. По словам Труммера, модель GPT-4 Omni совершила революцию, объединив обработку текста, кода, изображений и звука в рамках одного интерфейса [0:55]. Для начала работы необходимо подготовить рабочую среду Python:

*   Установка библиотеки OpenAI: `pip install openai==1.29` [2:32].
*   Настройка аккаунта на платформе `platform.openai.com` для получения секретного ключа доступа [3:26].
*   Безопасное хранение ключа через переменные окружения: `export OPENAI_API_KEY='ваш_ключ'` [4:46].

Автор подчеркивает, что использование переменных окружения является лучшей практикой, так как это избавляет от необходимости жестко прописывать (hardcode) чувствительные данные в коде, что повышает безопасность приложений [5:24].

## 📝 Анализ тональности текста: от слов к смыслу
[[JUMP:5:49]]

Классификация текста по эмоциональной окраске (Sentiment Classification) — классическая задача, которую Труммер предлагает решать с помощью GPT-4o. Основная идея заключается в подаче текстового отзыва на вход модели и получении четкого ответа: «положительный» или «отрицательный» [6:15].

Процесс реализации включает создание объекта `client` и формирование эффективного промпта. По мнению Труммера, качественный промпт для классификации должен состоять из трех частей:

1.  Входной текст (непосредственно отзыв).
2.  Инструкция (что именно нужно сделать).
3.  Инструкция по форматированию (в каком виде выдать ответ, например, только одно слово) [10:11].

Для вызова модели используется метод `client.chat.completions.create`. Важной деталью является структура сообщений (messages), где каждому блоку присваивается роль: `user` (запрос пользователя), `assistant` (ответ модели) или `system` (глобальные установки поведения) [17:34].

### Масштабирование через Pandas
При переходе от одного примера к анализу целых датасетов Труммер использует библиотеку `Pandas`. Это позволяет загружать файлы CSV и применять функцию классификации ко всей колонке данных одновременно [29:21]. Автор отмечает, что хотя модель в большинстве случаев строго следует формату, иногда она может добавлять лишние пояснения, что требует дополнительной настройки параметров или уточнения промпта [31:53].

## 🖼️ Компьютерное зрение и анализ изображений
[[JUMP:32:32]]

GPT-4o позволяет анализировать визуальный контент напрямую через API. Труммер демонстрирует создание системы «вопрос-ответ» для изображений. В отличие от чисто текстовых запросов, здесь структура сообщения становится сложнее: поле `content` превращается в список, содержащий как текстовый вопрос, так и URL-адрес изображения [41:08].

Возможности мультимодального анализа:

*   **Описание объектов:** Модель точно идентифицирует спелые яблоки на дереве по предоставленной ссылке [45:20].
*   **Сравнение изображений:** При подаче двух разных URL (например, яблок и апельсинов) модель способна проводить глубокий сравнительный анализ [49:15].

По результатам тестов, GPT-4o успешно выделяет категории для сравнения: тип фруктов, цвет, наличие листвы, фон и даже художественный стиль (фотография против иллюстрации) [51:22]. Труммер утверждает, что модель крайне надежна при работе с сообщениями, содержащими смешанные типы данных [52:03].

## 🎙️ Транскрибация аудио с помощью Whisper
[[JUMP:52:16]]

Несмотря на то что GPT-4o заявлена как полностью мультимодальная, на момент записи курса Труммер рекомендует использовать специализированную модель Whisper для преобразования речи в текст через Python API [53:12]. Это необходимо для таких задач, как создание субтитров или анализ записей звонков.

Технический процесс транскрибации:

*   Открытие аудиофайла в бинарном режиме [55:47].
*   Использование эндпоинта `audio.transcriptions.create`.
*   Указание модели `whisper-1` [57:19].

В качестве примера Труммер использует цитату из романа Пауло Коэльо «Алхимик». Модель безошибочно распознает текст: *«Two years ago, right here on this spot, I had a recurrent dream too»* [59:29].

## 📊 Интеллектуальный SQL-интерфейс для баз данных
[[JUMP:1:00:25]]

Одной из самых сложных тем курса является анализ больших табличных данных. Труммер объясняет, что подавать огромные таблицы напрямую в LLM — плохая идея: это слишком дорого из-за лимитов токенов и не всегда эффективно [1:01:20].

Вместо этого предлагается использовать подход «Text-to-SQL»:

1.  Пользователь задает вопрос на естественном языке.
2.  LLM переводит его в SQL-запрос.
3.  Python выполняет запрос в базе данных (например, SQLite).
4.  Пользователь получает готовый ответ [1:01:47].

### Автоматизация извлечения схемы
Чтобы модель могла составить корректный запрос, ей нужно знать структуру БД. Труммер создает функцию, которая автоматически извлекает команды `CREATE TABLE` из системной таблицы `sqlite_master` [1:25:04]. Эти данные добавляются в промпт, предоставляя модели контекст о названиях колонок и типах данных [1:31:22].

### Создание интерактивного чата с данными
Финальным этапом урока становится разработка полноценного цикла (loop), где пользователь может в режиме реального времени задавать вопросы к базе данных видеоигр [1:38:35]. Система успешно справляется с запросами разной сложности:

*   Подсчет общего количества игр в базе [1:40:22].
*   Поиск самой продаваемой игры в Евросоюзе (Wii Sports от Nintendo) [1:40:41].
*   Группировка количества выпущенных игр по жанрам [1:41:18].

Труммер заключает, что использование LLM в качестве «переводчика» между человеческим языком и формальными запросами открывает путь к созданию мощных инструментов анализа данных даже для тех, кто не владеет SQL [1:41:59].