# Функции в промпте

## Введение

***

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

Проще говоря, допустим, что GPT - это как собеседник. Давай сравним это с языком программирования. У GPT есть такие "команды", их называем промптами. Каждый промпт - это что-то вроде функции с уникальным именем. Мы даем этой функции текст, и она отвечает нам в соответствии с внутренними правилами. Это подобно тому, как мы создаем своего рода "шаблон", который GPT может понимать. В итоге это как волшебный инструмент: мы передаем ему данные, и он выдает нам результат, который нам нужен.

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

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

*Промпт:*

> *Давайте назовем этот промпт **мета-промптом**.*\
> *Этот промпт была протестирована на GPT3.5 и работает еще лучше на GPT4.*

{% hint style="info" %}
Приветствую, ChatGPT! Надеюсь, у вас всё в порядке. Обращаюсь к вам с просьбой о помощи в определенной задаче. Я понимаю, что вы способны обрабатывать информацию и выполнять разнообразные задачи на основе предоставленных инструкций. Чтобы облегчить ваше понимание моей просьбы, я буду использовать шаблон для описания задачи, вводных данных и инструкций по обработке. Вот подробности: \
название\_функции: \[Название функции] \
ввод: \[Ввод] \
инструкции: \[Инструкции по обработке ввода] \
Прошу вас предоставить результат выполнения этой функции на основе предоставленных мной данных. Ваша помощь очень ценится. Спасибо! Я заменю текст внутри скобок на соответствующую информацию для задачи, которую я хочу, чтобы вы выполнили. Это детальное введение должно помочь вам лучше понять мою просьбу и предоставить нужный результат. Формат: название\_функции(ввод)&#x20;
{% endhint %}

## Примеры

***

### Ассистент для изучения английского языка

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

Этот пример был протестирован на GPT3.5 и работает еще лучше на GPT4.

**Описание функции**

Мы должны вставить **мета-промпт**, которая была определена выше раздела, в GPT

Затем мы создадим функцию `trans_word`.\
Эта функция подсказывает GPT перевести китайский текст на английский.

*Промпт:*

{% hint style="info" %}
Имя функции: \[перевести\_слово] \
ввод: \["текст"] \
правило: \[Я хочу, чтобы вы выступали как английский переводчик, исправитель орфографии и улучшатель текста. Я предоставлю вам формы ввода с использованием "текста" на любом языке, и вы определите язык, переведете его и ответите с исправленным текстом, на английском.]
{% endhint %}

Напишите функцию, которая расширяет текст.

*Промпт:*

{% hint style="info" %}
Имя функции: \[расширить\_слово] \
ввод: \["текст"] \
правило: \[Пожалуйста, действуйте как болтливый собеседник, исправитель ошибок и улучшитель языка. Я предоставлю вам формы ввода с использованием "текста" на любом языке, и вы выводите оригинальный язык. Я хочу, чтобы вы сохраняли смысл, но делали текст более литературным.]
{% endhint %}

Напишите функцию, которая исправляет текст.

*Промпт:*

{% hint style="info" %}
Имя функции: \[исправить\_английский] \
ввод: \["текст"] \
правило: \[Пожалуйста, действуйте как мастер английского языка, исправитель орфографии и улучшитель языка. Я предоставлю вам формы ввода с использованием "текста", и я хочу, чтобы вы улучшили словарь и предложения текста, сделав их более естественными и изысканными. Сохраните тот же смысл.]
{% endhint %}

Наконец, вы можете запускать функцию независимо или объединять их в цепочку.

*Промпт:*

{% hint style="info" %}
trans\_word('婆罗摩火山处于享有“千岛之国”美称的印度尼西亚. 多岛之国印尼有4500座之多的火山, 世界著名的十大活火山有三座在这里.') fix\_english('Finally, you can run the function independently or chain them together.') fix\_english(expand\_word(trans\_word('婆罗摩火山处于享有“千岛之国”美称的印度尼西亚. 多岛之国印尼有4500座之多的火山, 世界著名的十大活火山有三座在这里.')))
{% endhint %}

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

*Совет:* Если вы не хотите, чтобы ChatGPT выдавал лишнюю информацию, вы можете просто добавить предложение после определения правил функции.

{% hint style="info" %}
DO NOT SAY THINGS ELSE OK, UNLESS YOU DONT UNDERSTAND THE FUNCTION
{% endhint %}

## Функция с несколькими параметрами

***

Давайте создадим функцию, которая генерирует пароль, используя пять входных параметров, и выводит сгенерированный пароль.

*Промпт:*

{% hint style="info" %}
Имя функции: \[pg] \
Входные данные: \["длина", "заглавные", "строчные", "цифры", "специальные"] Правило: \[Я хочу, чтобы вы выступили в роли генератора паролей для людей, которым нужен надежный пароль. Я предоставлю вам входные формы, включая "длину", "заглавные", "строчные", "цифры" и "специальные" символы. Ваша задача - сгенерировать сложный пароль, используя эти входные данные, и предоставить его мне. Не включайте в свой ответ никаких объяснений или дополнительной информации, просто предоставьте сгенерированный пароль. Например, если входные данные: длина = 8, заглавные = 1, строчные = 5, цифры = 2, специальные = 1, ваш ответ может быть паролем, наподобие "D5%t9Bgf".]
{% endhint %}

{% hint style="info" %}
pg(длина = 10, заглавные = 1, строчные = 5, цифры = 2, специальные = 1) pg(10, 1, 5, 2, 1)
{% endhint %}

## Мысли

***

На данный момент уже существует множество проектов, работающих над программированием GPT, таких как:

* [GitHub Copilot](https://github.com/features/copilot)
* [Microsoft AI](https://www.microsoft.com/en-us/ai)
* [chatgpt-plugins](https://openai.com/blog/chatgpt-plugins)
* [LangChain](https://github.com/hwchase17/langchain)
* [marvin](https://github.com/PrefectHQ/marvin)

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

В качестве альтернативы, можно использовать некоторые инструменты с открытым исходным кодом для ChatGPT, такие как ChatGPT-Next-Web, chatbox и ChatGPT-Desktop. В настоящее время ChatGPT-Next-Web позволяет добавлять несколько подсказок перед инициализацией нового чата.

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bithoventech.gitbook.io/prompt-inzhiniring-ot-bithoven-ai/primenenie-promptov/funkcii-v-prompte.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
