Выполняйте классификацию по нескольким меткам, не беспокоясь о выборе функций, выборе модели или настройке гиперпараметров. Все, что вам нужно, это LLM и отличные навыки подсказки!

Прошли те времена, когда ученый тратит 90% своего времени на предварительную обработку, токенизацию, выбор правильных моделей и проверку результатов. Недавний рост LLM произвел революцию в способах выполнения задач машинного обучения на естественном языке. В этой статье мы будем использовать последнюю модель GPT-4, выпущенную OpenAI через их API, для выполнения классификации без присмотра.

Введение в проблему

В этой статье цель состоит в том, чтобы классифицировать список компаний по предварительно определенному набору категорий. У нас есть имя, URL-адрес и описание компании в качестве входных данных. На момент написания этой статьи модели OpenAI не могли получить доступ к Интернету через API. Однако включение URL-адреса компании может предоставить дополнительный контекст для модели. В будущем, когда функция просмотра веб-страниц станет доступна через API, предоставление URL-адреса предоставит гораздо больше контекста для модели.

Модели OpenAI, ключи API и цены

В нашем распоряжении множество моделей OpenAI. Раньше было время, когда конкретная модель хорошо справлялась с конкретной задачей. Например, davinci превзошел другие модели в задачах классификации естественного языка, GPT-3.5 (Chat-GPT) был лучшим разговорным ИИ и т. д. Но с GPT-4 он легко превосходит все другие модели в большинстве задач.

Процесс получения ключа API от OpenAI остается простым. GPT-4 включен только для платных пользователей, и обычно существует список ожидания для получения доступа к ключу API GPT-4. Цена API зависит от модели, которую мы используем, и количества токенов, которые мы вводим в модель. Мы можем думать о токенах как о фрагментах слов. Как правило, 750 слов равны 1000 токенов. https://platform.openai.com/tokenizer можно использовать для подсчета количества токенов в тексте.

Доступны две модели GPT-4 (контекст 8K и контекст 32K). Разница в основном заключается в том, сколько токенов мы используем в одной транзакции. Контекст 8k GPT-4 может обрабатывать до 8000 токенов за одну транзакцию, и именно эту модель мы будем использовать в этой статье. Его цена составляет 0,03 долл. США за 1000 токенов для токенов подсказки и 0,06 долл. США за 1000 токенов за жетоны завершения. Токены подсказки рассчитываются на основе текста, который мы вводим в модель, а токены завершения рассчитываются на основе вывода, предоставленного моделью.

Кодовый блок

Код, используемый для выполнения запроса, приведен ниже. Модель GPT-4 требует, чтобы пользователь передал переменную messages в виде списка словарей. Это не требуется для более старых моделей, таких как davinci. «top_p» и «температура» являются наиболее важными гиперпараметрами, которые контролируют степень случайности или креативности в сгенерированном выводе. Более низкое значение температуры приводит к более детерминированному результату. Детерминированный вывод означает, что произведенный вывод согласуется с вводом. Здесь меньше случайности или случайности. Для задач классификации мы не хотим, чтобы модель мыслила творчески. Следовательно, значение температуры установлено равным 0 (наименьшее возможное значение).

Параметр Top P управляет количеством токенов, которые просматривает модель, прежде чем выбрать лучший токен для вывода. Значение Top P, равное 0,1, означает, что модель выберет следующий лучший токен только из 10% лучших токенов, определенных в соответствии с его вероятностью. Нажмите здесь для более подробного обсуждения Top P. Выбор значения Top P = 1 в нашем приложении гарантирует, что модель учитывает все слова перед созданием вывода.

Максимальное количество токенов относится к максимальному количеству токенов, которое может быть сгенерировано моделью. В нашем случае мы ограничиваем его до 20, чтобы убедиться, что модель не создает дополнительных нежелательных токенов или объяснений.

def execute_llm_request(prompt):
  messages = [{"role": "user", "content": prompt}]
  response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=messages,
    temperature=0,
    max_tokens=20,
    top_p=1,
    frequency_penalty=0,
    presence_penalty=0,
  )
  prompt_tokens = response["usage"]["prompt_tokens"]
  completion_tokens = response["usage"]["completion_tokens"]
  price = PRICE_PER_1000_PROMPT_TOKENS * (
    prompt_tokens / 1000
  ) + PRICE_PER_1000_COMPLETION_TOKENS * (completion_tokens / 1000)
  
  return (response["choices"][0]["message"]["content"], price)

Быстрый инжиниринг

Качество вывода сильно зависит от качества оперативного ввода в модель. Ниже приведены два наиболее важных руководящих принципа для более эффективного оперативного проектирования:

  1. Будьте предельно ясны: используйте разделители, запрашивайте структурированные выходные данные и давайте примеры выходных данных для модели.
  2. Дайте модели время подумать: укажите шаги, необходимые для выполнения задачи, дав пошаговые инструкции.

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

prompt = (
          f"{categories_and_descriptions_text)}\n"
          "And the following information about the company:\n\n"
          f"Name: '{org_name}'\n"
          f"Website: '{org_homepage_url}'\n"
          f"Short description: '{org_short_description}'\n"
          f"Description: '{org_long_description}'\n\n"
          "Strictly choose the category numbers from the categories mentioned above.\n"
          "Select up to 3 categories only if multiple categories are relevant.\n"
          "If the company does not fit into any given categories, simply output the number 0\n"
          "The Answer should be exclusively the number of the categories sepparated by comma.\n"
      )

Заключение

Используя приведенную выше логику, мы смогли успешно классифицировать тысячи компаний. Таксономия классификации содержит 4 уровня, и результатом классификации является то, что компания классифицируется на детальном уровне в зависимости от того, чем она занимается. Например, описание компании X гласит: «X проектирует и разрабатывает полностью электрические грузовые автомобили для потребительского и коммерческого рынков. Основная цель компании — разработка технологий, которые позволят партнерам перейти с бензиновых и дизельных автомобилей на электрические автомобили, предлагая минимально компромиссные варианты». Эта компания была классифицирована как Транспортные средства ›› Аккумуляторные электромобили › › Грузовики.

Всего существует 200 предопределенных категорий, состоящих из 4 уровней, по которым можно классифицировать каждую компанию. Если эту задачу нужно выполнять вручную, это стоит целое состояние, учитывая, что у нас в базе данных около 100 тысяч компаний. С GPT-4 средняя стоимость классификации приближается к 0,08 доллара США для компании. Точность классификации также удовлетворительна.

Стартовый радар

Этот модуль внедряется в веб-приложение Startup Radar, разработанное Berylls Digital Ventures. Startup Radar станет универсальным источником информации о мобильной экосистеме стартапов и инвестиций с тщательно отобранными и последними данными. Классифицируя мобильные компании в таксономии, курируемой экспертами, благодаря LLM мы можем раскрыть множество идей и возможностей в каждой детализированной области сектора мобильности. Не стесняйтесь обращаться к нам через LinkedIn (Клинтон Чарльз, Мальте Брокстерманн, Флориан Питер, Маттиас Кемпф, Йохан Торссел) или через веб-сайт Berylls Digital Ventures.

Понравилась эта статья? Не стесняйтесь подписаться на LinkedIn, чтобы узнать больше о науке о данных и программировании!