LLM читают и пишут обычный текст. Но вы можете заставить их выводить JSON. Узнайте, как менее чем за 3 минуты, используя примеры кода на Python и Java!

Эта статья вдохновлена ​​Бесплатным курсом DeepLearning.AI по оперативному проектированию Эндрю Нг и его команды.

1. Помимо веб-интерфейса ChatGPT

Хотя веб-интерфейс ChatGPT широко известен, это не единственный способ использования GPT-3.5 или GPT-4. OpenAI предоставляет API, который позволяет программно взаимодействовать с этими большими языковыми моделями (LLM). По сути, LLM — это завершение текста. Вы «подсказываете» LLM контекстом, он генерирует для вас следующий токен или токены. Этот метод, известный как оперативное проектирование, является основным способом взаимодействия со всеми LLM.

2. Проблема

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

К сожалению, API завершения чата возвращают обычный текст. Если бы LLM могли вернуть JSON, это открыло бы новый мир возможностей… Но подождите, они могут! И это просто!

3. Подсказка

Давайте создадим пример приглашения, которое запрашивает вывод в формате JSON. Ваш пример подсказки должен делать три вещи:

  1. Объявить три атрибута, которые нужно извлечь из обычного текста.
  2. Запросите ответ в формате JSON.
  3. Укажите текст, из которого будут извлечены атрибуты.

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

Extract the following attributes from the blog post: 
- Main Topic of the Post
- Overall, does the post express a positive or negative view?
- If available, what is the call to action?

The blog post is delimited with triple hashes. \
Format your response as a JSON object with \
"main_topic", "sentiment_polarity" and "call_to_action"as the keys.

If the information isn't present, use `null` as the value…