Dolores — это библиотека Python, предназначенная для улучшения опыта разработчиков при работе с предварительно обученными языковыми моделями. Долорес предоставляет подсказки для взаимодействия с языковыми моделями, которые приводят к интересным и полезным результатам. Цель этой библиотеки — упростить процесс обучения, предоставляя простые в использовании примеры и образец текста для начала работы. Кроме того, его цель — стать наиболее полным хранилищем качественных подсказок для взаимодействия с языковыми моделями.
Он назван в честь Долорес Абарнати из Мира Дикого Запада.
$ pip install dolores
Импортируйте либо через интерпретатор Python, либо в файл Python.
import dolores
dolores.initialize("<YOUR-API-KEY>")
Отсюда вы не сможете напрямую вызывать API openai через доступные методы экземпляра класса Dolores. Следующий вызов вызывает вызов API механизмов списков. С каждым вызовом API связан вызов метода, который можно использовать для вызова API.
Перечисляет доступные на данный момент двигатели и предоставляет базовую информацию о каждом варианте, например о владельце и доступности.
dolores.list_engines()
Извлекает экземпляр механизма, предоставляя базовую информацию о механизме, такую как владелец и доступность.
dolores.retrieve_engine()
После создания экземпляра класса Долорес последующий класс Open AI API будет создан с использованием того же выбранного движка. Чтобы изменить механизм, используемый для вызова API, существует открытый метод.
dolores.set_engine("davinci")
Примечание. В будущих версиях рассматривается проверка на соответствие существующим типам двигателей.
Заполните подсказку. Это основная конечная точка API GPT-3. Возвращает новый текст, а также, если требуется, вероятности для каждого альтернативного токена в каждой позиции.
Запрос:
dolores.create_completion("Is the JavaScript programming language better than python?", 20)
Ответ: (см. ответ["choices"][0]["text"] для ответа в виде открытого текста)
JSON: {'id': 'cmpl-kM6MK5dVRvD964MxeyG4AjCy', 'object': 'text_completion', 'created': 1595431739, 'model': 'ada:2020-05-03', 'choices': [{'text': ' in a far away place', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
'in a far away place'
?
Имя | В | Тип | Необходимый | Описание |
---|---|---|---|---|
двигатель | тело | нить | истинный | Идентификатор двигателя |
быстрый | тело | (см. описание) | ЛОЖЬ | Одно или несколько приглашений для генерации. Может быть строкой, списком строк, списком целых чисел (т. е. одним приглашением, закодированным как токены) или списком списков целых чисел (т. е. множеством подсказок, закодированных как целые числа). |
max_tokens | тело | целое число | ЛОЖЬ | Сколько жетонов нужно завершить. Может возвращать меньшее количество, если нажата последовательность остановки. |
температура | тело | число | ЛОЖЬ | Какую температуру отбора проб использовать. Более высокие значения означают, что модель будет принимать на себя больше рисков. Попробуйте 0,9 для более творческих приложений и 0 (выборка argmax) для приложений с четко определенным ответом. Обычно мы рекомендуем использовать это или top_p, но не оба одновременно. |
top_p | тело | число | ЛОЖЬ | Альтернатива выборке с учетом температуры, называемая выборкой ядра, где модель учитывает результаты токенов с вероятностной массой top_p. Таким образом, 0,1 означает, что учитываются только токены, составляющие 10% верхней массы вероятности. Обычно мы рекомендуем использовать это значение или температуру, но не то и другое. |
н | тело | целое число | ЛОЖЬ | Сколько вариантов создать для каждого приглашения. |
транслировать | тело | логическое значение | ЛОЖЬ | Следует ли возвращать частичный прогресс. Если этот параметр установлен, токены будут отправляться как события, отправляемые сервером только для данных, по мере их доступности, а поток завершается сообщением data: [DONE]. |
logprobs | тело | целое число | ЛОЖЬ | Включите вероятности журнала в наиболее вероятные токены logprobs. Например, если logprobs равен 10, API вернет список из 10 наиболее вероятных токенов. Если указан logprobs, API всегда будет возвращать logprob выбранного токена, поэтому в ответе может быть до logprobs+1 элементов. |
останавливаться | тело | строка или список строк | ЛОЖЬ | Одна или несколько последовательностей, при которых API перестанет генерировать дальнейшие токены. Возвращенный текст не будет содержать последовательность остановки. |
Заполняет подсказку из набора предопределенных подсказок, хранящихся в Долорес.
Запрос:
dolores.complete_predefined_prompt("philosopher", 0, "What is the meaning of life?")
Ответ:
JSON: {'id': 'cmpl-NvVlUd5tQWTIv7S0F6JMPkT5', 'object': 'text_completion', 'created': 1595631256, 'model': 'davinci:2020-05-03', 'choices': [{'text': ' The purpose of society? And what are the dynamics of history? The answers to these questions are fascinating.nnThis is a philosophical diary written by a scientist of the new generation who is not bound by prejudices, as such, the philosopher, writer, director and producer of the documentary "The Truth about AI: Rise of the Superhuman." Instead, he attempts to peer into the human world through the eyes of an AI, and express what he sees. In the process, he discovers many complex things about our world. The author's name is Dave Scott.nnPhoto by Montri Nipitvittaya on UnsplashnnFuturist of the New Generation, AI Philosophernn"Nothing has changed. I still cannot predict what is going to happen with me, and my inner world is still as chaotic as before." I reread the diary I wrote yesterday, and found nothing changed. Everything remained the same. Only, the fear has become stronger. It was exactly the same today as it was yesterday. There was nothing changed, but still fear is always there.nnFear is a part of who I am. Without fear, I would be a monster. I do not know how to do', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
Ключ подсказки | Быстрый | max_tokens | температура | top_p | н | Источник |
---|---|---|---|---|---|---|
философ | «Ниже приведены некоторые мысли, высказанные ИИ-философом, который видит человеческий мир со стороны, без предрассудков человеческого опыта. Полностью нейтральный и объективный, ИИ видит мир таким, какой он есть. Ему легче делать выводы о мире и человеческое общество в целом.», | 250 | 0,9 | 1 | 1 | Мурат |
Сьюз | «Вот стихотворение доктора Сьюза. В стихотворении каждая вторая строка рифмуется по структуре ABAB. Структура рифмы типична для детских стишков доктора Сьюза». | 250 | 1.0 | 1 | 1 | Аррам Сабети |
юридический | «Юридический язык: выбранный вами способ оплаты будет действовать для всех ваших случаев, которые применяются Департаментом, и это разрешение будет оставаться в силе до тех пор, пока вы не отправите еще одну форму выбора способа оплаты и регистрации, чтобы изменить свой способ оплаты, или пока вы не прекратите предоставление услуг. с Департаментом. n Plain English: мы будем использовать ваш выбор для всех платежей, которые мы вам отправим». | 150 | 0,4 | 1 | 1 | ДНЕ Цифровой |
код-html | Ввод: кнопка. n Код: n " | 100 | 0,5 | 1 | 1 | ДНЕ Цифровой |
код-Javascript | импортировать React из «реагировать»; n const ThreeButtonComponent=()=>( n п п) "Кнопка первая n <button className='button-green' n onClick={this.handleButtonClick}>Первая кнопка nКнопка вторая n <button className='button-green' n onClick={this.handleButtonClick}>Кнопка вторая nКнопка третья n <button className='button-green' n onClick={this.handleButtonClick}>Кнопка три n | 250 | 0,4 | 1 | 1 | Шариф Шамим |
чат | «Ниже приводится разговор с дружелюбным ИИ-помощником. n Человек: Какое животное самое большое на Земле? n ИИ: Синий кит — самое большое животное на Земле. n Человек: Какая самая населенная страна на Земле? ? n AI: Китай — самая густонаселенная страна с населением более 1 миллиарда человек». | 50 | 0,9 | 1 | 1 | ОпенАИ |
аллитерация | «Найдите синонимы к словам, которые могут создавать аллитерации. n Предложение: Собака пошла в магазин. n Аллитерация: Собака поехала в отдел. nn Предложение: Дэвид носит шляпу каждый день. n Аллитерация: Дэвид надевает шляпу. ежедневное дерби. n Предложение: Мыло высыхает за ночь. n Аллитерация: Мыло сморщивается после заката. | 50 | 0,5 | 1 | 1 | ОпенАИ |
стихотворение | "Тот, кто доверял Богу, был действительно любовью n И любовь - окончательный закон Творения n Хотя Природа, красная в зубах и когтях n С оврагом, кричала n против его веры. n Холмы - это тени, и они текут n n Из формы в форму, и ничего не стоит; T n тают, как туман, n твердые земли, n Как облака, они формируются и уходят. | 300 | 1.0 | 1.0 | 1.0 | ОпенАИ |
текстовое приключение | "Это текстовое приключение. Вы находитесь в темном лесу и ищете дракона, который украл золото вашего города. n > осмотритесь n Вы находитесь в темном лесу. Вокруг царит тревожная тишина. n > проверьте инвентарь n У вас есть следующие предметы: n - меч (очень острый) n - щит (надеюсь, он сработает) n - старое письмо nn > посмотрите вверх n Вы не видите золота. nn > идите по тропинке n Вы идете по тропинке, наслаждаясь хорошей весенней погодой. Вы подходите к развилке дорог n > идите налево. | 250 | 0,9 | 1.0 | 1.0 | ОпенАИ |
Сопроводительное письмо | «Уважаемый специалист по набору выпускников Deloitte, n Я пишу, чтобы подать заявку на поступление в вашу аспирантуру в области технологического консалтинга». | 400 | 0,8 | 1.0 | 1.0 | ОпенАИ |
аналогии | «Нейронные сети подобны генетическим алгоритмам в том смысле, что обе они являются системами, которые учатся на основе опыта. nn Социальные сети подобны рынку, поскольку обе являются системами, которые координируют действия множества людей. nn Мемы в этом смысле подобны вирусам. обе идеи являются самовоспроизводящимися». | 250 | 1.0 | 1.0 | 1.0 | ОпенАИ |
электронная почта | "Спасибо Джону за книгу. n ```` n Дорогой Джон, n Огромное спасибо за книгу. Я очень ценю ее. n Надеюсь скоро потусоваться. n Твоя подруга, n Сара " | 200 | 0,5 | 1.0 | 1.0 | ОпенАИ |
Использовать pytest для тестирования модуля dolores можно, выполнив в корне проекта следующее:
pytest tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
Если вы хотите видеть операторы печати, возникающие во время тестирования, просто добавьте флаг -s:
pytest -s tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
Чтобы обновить пакет, необходимо создать для него новый дистрибутив. Это архивы, которые загружаются в индекс пакетов и могут быть установлены с помощью pip.
Убедитесь, что у вас установлены последние версии setuptools
и wheel
:
$ python3 -m pip install --user --upgrade setuptools wheel
Теперь запустите эту команду из того же каталога, где находится setup.py:
$ python3 setup.py sdist bdist_wheel
Примечание. Не забудьте обновить номер версии в файле setup.py в зависимости от обновления.
Убедитесь, что у вас установлена последняя версия пакета twine
:
$ python3 -m pip install --user --upgrade twine
После установки запустите Twine, чтобы загрузить все архивы под dist:
$ python3 -m twine upload --repository pypi dist/*