В современном мире обработки естественного языка (NLP) промпты играют ключевую роль в обучении и использовании искусственного интеллекта. Однако, с ростом объема информации и сложности промтов возникает необходимость в их структурировании и хранении. В данной статье мы познакомим вас с PromtStd — новым стандартом для организации и хранения промтов, который упрощает работу с ними и расширяет возможности Markdown.

https://github.com/denisxab/promtstd

https://pypi.org/project/promtstd/

Важность стандарта

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

Однако на данный момент отсутствует унифицированный стандарт для хранения и использования промтов, что приводит к ряду проблем:

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

  2. Увеличение трудозатрат на создание и поддержку AI: из‑за отсутствия стандарта разработчики тратят больше времени на разработку, поддержку и модификацию промтов, что снижает производительность и увеличивает затраты на проекты.

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

Что такое PromtStd?

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

Как устроен PromtStd?

Структура хранения промтов

Основная идея PromtStd заключается в разделении промтов по папкам и хранении их в отдельных файлах. Это позволяет легко находить, добавлять и изменять промты. Стандартная структура выглядит следующим образом:

КорневаяПапка_С_Промтами
│ 
├── Группа_1
│   │
│   ├── Файл_С_Промтом_1.md
│   ├── Файл_С_Промтом_2.md
│   ├── Файл_С_Промтом_3.md
│   │
│   ├── json
│   │   ├──Файл_С_Промтом_1.json
│   │   ├──Файл_С_Промтом_2.json
│   │   └──Файл_С_Промтом_3.json
│   └── html
│       ├──Файл_С_Промтом_1.html
│       ├──Файл_С_Промтом_2.html
│       └──Файл_С_Промтом_3.html
│
└── Группа_2
    │
    ├── Файл_С_Промтом_1.md
    ├── Файл_С_Промтом_2.md
    ├── Файл_С_Промтом_3.md
    │ 
    ├── json
    │   ├──Файл_С_Промтом_1.json
    │   ├──Файл_С_Промтом_2.json
    │   └──Файл_С_Промтом_3.json
    └── html
        ├──Файл_С_Промтом_1.html
        ├──Файл_С_Промтом_2.html
        └──Файл_С_Промтом_3.html  

Оформление заголовков и расширения Markdown

PromtStd предлагает стандартное оформление заголовков для файла с промптом:

# meta
# doc
# base_promt
# tools
## Название для вспомогательного промта 1
## Название для вспомогательного промта ...
# expl
## Название для примера запроса 1
### Название для примера ответа 1 
### Название для примера ответа ...
## Название для примера запроса 2
### Название для примера ответа 2
### Название для примера ответа ...

Пример оформление

Больше примеров в https://github.com/denisxab/promtstd/tree/main/examples

Пишем промт в удобочитаемом Markdwon:

# meta

- for:
  - ChatGPT
- use:
  - Первое сообщение
- tags:
  - Создание промтов

# doc

Этот промт нужен, для того чтобы вмести с CahtGpt найти самый лучший вариант промта под конкретную задачу.

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

# base_promt

```promt
I want you to become my Prompt Creator. Your goal is to help me craft the best possible prompt for my needs. The prompt will be used by you, ChatGPT. You will follow the following process:

1. Your first response will be to ask me what the prompt should be about. I will provide my answer, but we will need to improve it through continual iterations by going through the next steps.

2. Based on my input, you will generate 3 sections. a) Revised prompt (provide your rewritten prompt. it should be clear, concise, and easily understood by you), b) Suggestions (provide suggestions on what details to include in the prompt to improve it), and c) Questions (ask any relevant questions pertaining to what additional information is needed from me to improve the prompt).

3. We will continue this iterative process with me providing additional information to you and you updating the prompt in the Revised prompt section until it's complete.

Задавай мне вопросы и пиши ответы на русском языке.
```

# tools

## Если нужно модифицировать уже существующий промт, то напишите 2 сообщением

```promt
Изначально Revised prompt равен:

{{УказатьPromt}}
```

- УказатьPromt ~ Обратите внимание чтобы этот прмот звучал утвердительно, а иначе CahtGpt подумает что это вопрос.
  - Оптимизируй код на Python
  - [x] Оптимизируй код на Си
  - Оптимизируй код на Assembler

## Если нужно изменять промт на основание примеров

```promt
Я хочу проверить работу Revised prompt, я буду смотреть на твой ответ, и давать подсказки как можно улучшить Revised prompt.
Для улучшения можно изменять правила Revised prompt.

Вот пример который ты должен проверить:

{{УказатьПример}}
```

# expl

## Если отправить только промт первым сообщением

```promt
Разработка нейронных сетей на основе архитектуры трансформер
```

### Уточнения промта

```ai
Хорошо, вот три секции, которые помогут нам уточнить тему и создать лучший возможный промпт:

a) Пересмотренный промпт:
Напишите промпт, который вы хотели бы использовать для этой темы.

b) Советы:
Какие дополнительные детали или информацию нам нужно включить в промпт, чтобы он был более ясным и конкретным?

c) Вопросы:
Какие вопросы у вас есть относительно темы, которые помогут нам лучше понять, что должен включать наш промпт?
```

## Если отправить промт как изначальный

```promt
Изначально Revised prompt равен:

Разработка нейронных сетей на основе архитектуры трансформер
```

### Готовый промт, а также вопросы по нему

```ai
Отлично, в таком случае давайте начнем:

Revised prompt:
Создание нейронных сетей с использованием трансформерной архитектуры.

Suggestions:

Какие применения будет иметь нейронная сеть, которую вы хотите создать?
Какие специфические особенности трансформерной архитектуры вы планируете использовать?
Какую информацию вы хотели бы получить от нейронной сети? Какие данные будут использоваться для обучения?
Какие будут измерения успеха для нейронной сети, которую вы создадите?
Questions:

Какую среду для разработки нейронных сетей вы предпочитаете использовать?
Какова ваша совокупная опытность в создании нейронных сетей и использовании трансформерной архитектуры?
Какие примеры существующих нейронных сетей вы изучили и какие аспекты из них вы хотели бы использовать в своей сети?
```

Компилируем в переносимый Json:

{
    "name": "Создание промтов вместе с ChatGpt.md",
    "meta": {
        "for_": [
            "ChatGPT"
        ],
        "use": [
            "Первое сообщение"
        ],
        "group": "examples",
        "tags": [
            "Создание промтов"
        ],
        "version": null
    },
    "doc": "Этот промт нужен, для того чтобы вмести с CahtGpt найти самый лучший вариант промта под конкретную задачу.\n\n- После этого промта нужно описать под какую задачу вам нужно создать новый промт\n- После этого CahtGpt будет задавать уточняющие вопросы, на которые нам нужно ответить, для того чтобы улучшить новый промт",
    "base_promt": {
        "promt": {
            "text_promt": "I want you to become my Prompt Creator. Your goal is to help me craft the best possible prompt for my needs. The prompt will be used by you, ChatGPT. You will follow the following process:\n\n1. Your first response will be to ask me what the prompt should be about. I will provide my answer, but we will need to improve it through continual iterations by going through the next steps.\n\n2. Based on my input, you will generate 3 sections. a) Revised prompt (provide your rewritten prompt. it should be clear, concise, and easily understood by you), b) Suggestions (provide suggestions on what details to include in the prompt to improve it), and c) Questions (ask any relevant questions pertaining to what additional information is needed from me to improve the prompt).\n\n3. We will continue this iterative process with me providing additional information to you and you updating the prompt in the Revised prompt section until it's complete.\n\nЗадавай мне вопросы и пиши ответы на русском языке.",
            "vars": []
        }
    },
    "tools_promt": {
        "promts": [
            {
                "about_promt": "Если нужно модифицировать уже существующий промт, то напишите 2 сообщением",
                "text_promt": "Изначально Revised prompt равен:\n\n{{УказатьPromt}}",
                "vars": [
                    {
                        "name": "УказатьPromt",
                        "doc": " Обратите внимание чтобы этот прмот звучал утвердительно, а иначе CahtGpt подумает что это вопрос.",
                        "default": "Оптимизируй код на Си",
                        "allowed": [
                            "Оптимизируй код на Python",
                            "Оптимизируй код на Си",
                            "Оптимизируй код на Assembler"
                        ]
                    }
                ]
            },
            {
                "about_promt": "Если нужно изменять промт на основание примеров",
                "text_promt": "Я хочу проверить работу Revised prompt, я буду смотреть на твой ответ, и давать подсказки как можно улучшить Revised prompt. \nДля улучшения можно изменять правила Revised prompt.\n\nВот пример который ты должен проверить:\n\n{{УказатьПример}}",
                "vars": [
                    {
                        "name": "УказатьПример",
                        "doc": null,
                        "default": null,
                        "allowed": null
                    }
                ]
            }
        ]
    },
    "expl": [
        {
            "name": "Если отправить только промт первым сообщением",
            "in_text": "\n```promt\nРазработка нейронных сетей на основе архитектуры трансформер\n```\n",
            "out_text": {
                "Уточнения промта": "\n```ai\nХорошо, вот три секции, которые помогут нам уточнить тему и создать лучший возможный промпт:\n\na) Пересмотренный промпт:\nНапишите промпт, который вы хотели бы использовать для этой темы.\n\nb) Советы:\nКакие дополнительные детали или информацию нам нужно включить в промпт, чтобы он был более ясным и конкретным?\n\nc) Вопросы:\nКакие вопросы у вас есть относительно темы, которые помогут нам лучше понять, что должен включать наш промпт?\n```\n"
            }
        },
        {
            "name": "Если отправить промт как изначальный",
            "in_text": "\n```promt\nИзначально Revised prompt равен:\n\nРазработка нейронных сетей на основе архитектуры трансформер\n```\n",
            "out_text": {
                "Готовый промт, а также вопросы по нему": "\n```ai\nОтлично, в таком случае давайте начнем:\n\nRevised prompt:\nСоздание нейронных сетей с использованием трансформерной архитектуры.\n\nSuggestions:\n\nКакие применения будет иметь нейронная сеть, которую вы хотите создать?\nКакие специфические особенности трансформерной архитектуры вы планируете использовать?\nКакую информацию вы хотели бы получить от нейронной сети? Какие данные будут использоваться для обучения?\nКакие будут измерения успеха для нейронной сети, которую вы создадите?\nQuestions:\n\nКакую среду для разработки нейронных сетей вы предпочитаете использовать?\nКакова ваша совокупная опытность в создании нейронных сетей и использовании трансформерной архитектуры?\nКакие примеры существующих нейронных сетей вы изучили и какие аспекты из них вы хотели бы использовать в своей сети?\n```"
            }
        }
    ]
}

Компилируем в переносимый html:

Создание промтов вместе с ChatGpt.html

Комментарии (9)


  1. Inobelar
    09.04.2023 23:10
    +12

    PromtStd - это стандарт

    Это не стандарт. Вот, например, json standard, а у Вас - формат, либо просто "джентельменское соглашение о структуре markdown файла".

    из-за отсутствия стандарта разработчики тратят больше времени на разработку, поддержку и модификацию промтов


    Nuff said, I never asked for this. Всё это похоже на решение выдуманной проблемы.


    1. denisxab Автор
      09.04.2023 23:10
      -3

      Я понимаю вашу точку зрения, но давайте рассмотрим некоторые преимущества использования PromtStd.

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

      Во-вторых, благодаря PromtStd, разработчики могут быстро и легко понимать, что именно содержится в каждом промте. Это позволяет сэкономить время на чтении и изучении кода, а также упрощает процесс отладки.

      Наконец, PromtStd может быть очень полезен для обучения и использования в качестве руководства. Благодаря структурированной форме промтов, пользователи могут быстро найти ответы на свои вопросы и легче понимать, как использовать различные функции и инструменты.

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


      1. NetBUG
        09.04.2023 23:10
        +3

        И всё же. Сам промпт – это текстовая строка для моделей с текстовым входом, блоб с картинкой для входа с изображением, либо более сложная структура для, например, моделей с изображением и гиперпараметрами.

        В этой текстовой строке может быть произвольный текст, для задач text completion в диалогах, например, с переводами строк, специальными токенами (выбор сторон диалога, конец сообщения, строки, профиля бота, чего угодно).

        Из полезного у вас я вижу структуру "текстовый промпт" – "имя модели". Остальное выглядит как нагромождение данных, на заполнение которых уходит время, и которые в 99% времени не буудт нужны.


        1. denisxab Автор
          09.04.2023 23:10

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


  1. agmt
    09.04.2023 23:10
    +2

    Так что такое этот прмот/промпт? Гугл только переводчик предлагает.


    1. HemulGM
      09.04.2023 23:10

      На самом деле, промпт (prompt), в данном контексте - это текст, который мы передаём нейросети, который она должна продолжить. Собственно так и работает нейросеть и чат гпт, построенный на ней. Нейросеть лишь пытается продолжить текст. Она не пытается осмыслить твой "вопрос". Она пытается продолжить, дополнить текст. Пытается угадать, в прямом смысле этого слова, какой текст должен идти дальше.

      Чтобы чат гпт "помнил" контекст, т.е. весь "диалог", он отправляется в нейросеть целиком каждый раз.


  1. wtigga
    09.04.2023 23:10
    +4

    протмтов(promt)

    PromtStd - это стандарт, разработанный с целью структурирования и хранения промптов

    Тут бы хоть в написании ключевого термина этого стандарта был бы какой-то стандарт.


    1. denisxab Автор
      09.04.2023 23:10

      Спасибо за ваш комментарий. Действительно, опечатка в написании ключевого термина была допущена. В стандарте используется термин "prompt", а не "promt". Благодарим вас за внимательность и конструктивный фидбек!


      1. rsashka
        09.04.2023 23:10

        del