Рецепты
January 17, 2024

Естественный язык: где революция с GPT уже сейчас

Пока все гонятся за искусственным интеллектом, пытаясь рассказать тексто-генератору как устроен мир, вот практическая сфера, в которой прямо сейчас модель способна заменить тонны человеко-труда.

Просто успешно "понимая", что хотел от системы кожаный мешок.


Используемая версия: gpt-3.5-turbo, не четверка.
Что добавляет примерам убедительности. Четверка может больше.


Человек:

We have a REST API for a ticket booking system with these endpoints

— GET http://host/booking, query parameters are party (string), date (ISO date)
— POST http://host/booking, post body parameters are party (string), date (ISO date)
— DELETE http://host/booking, post body parameters are party (string), date (ISO date)

Our user says «I want to change my christmas party booking to 25/12, and cancel my booking for new year party»
Which queries to our REST endpoint should make it?

Генератор:

To change the Christmas party booking to 25/12 and cancel the booking for the New Year party, the following queries to the REST endpoints should be made:

Change Christmas Party Booking to 25/12

Endpoint: POST http://host/booking
Body Parameters:
— party: «Christmas»
— date: «25.12.2023» (assuming the year is 2023)

Cancel New Year Party Booking

Endpoint: DELETE http://host/booking
Body Parameters:
— party: «New Year»
— date: [Date of the booking for New Year party]


Обратите внимание:

  • я не упоминал явно в запросе http-verbs, по которым можно сделать вывод
  • я писал дату как попало, в ответе запросил ISO, а также не указывал год
  • я не писал формат для параметра party, оставив это на усмотрение модели

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


Человек:

Please make a valid JSON with a previous answer, assuming the date of new year party is 31.12. JSON must consist of query array field, each array element is an object with «endpoint» and «params» fields.

Генератор:

{
  "queries": [
    {
      "endpoint": "POST http://host/booking",
      "params": {
        "party": "Christmas",
        "date": "2023-12-25"
      }
    },
    {
      "endpoint": "DELETE http://host/booking",
      "params": {
        "party": "New Year",
        "date": "2023-12-31"
      }
    }
  ]
}

Заставить машину понимать, что человек в своей голове хотел от машины — вот это действительно революция.

Множество людей, от UX и проектирования, до инженеров и саппорта, сейчас заняты именно этой задачей — понимания, что там хотел кожаный мешок. И не все справляются.



Бонусом, давайте положимся на эрудицию модели и спросим следующее. Я активно полагаюсь здесь на контексты, как можно заметить.

How to retrieve a list of active bookings, after given changes will be made?

Что важно отметить здесь:

  • поскольку я не указывал формат «получить всё» в описании, но указал явно использование REST, модель в состоянии сопоставить правила получения списков «без параметров», как предписывает соглашение. Назовем это эрудицией модели.

Answer with the same JSON format, please.

{
  "queries": [
    {
      "endpoint": "GET http://host/booking",
      "params": {}
    }
  ]
}


На сладкое, чисто руки размять, попросим модель написать код, который работает с описанным сервисом. С обратной стороны баррикады, так сказать. Например, на PHP — люблю я его.

Could you please create a PHP class which encapsulates the initial REST queries for booking service, receives the described JSON input and uses curl language library. The code must be valid PHP.

Ответ легко проверите сами (целиком не ставлю).
Код рабочий.