OpenAI Python Library

OpenAI Python Library.

The OpenAI Python library provides convenient access to the OpenAI API from applications written in the Python language. It includes a pre-defined set of classes for API resources that initialize themselves dynamically from API responses which makes it compatible with a wide range of versions of the OpenAI API.

Documentation

See the OpenAI API docs.

Installation

You don’t need this source code unless you want to modify the package. If you just want to use the package, just run:

pip install --upgrade openai

Install from source with:

python setup.py install

Optional dependencies

Install dependencies for openai.embeddings_utils:

pip install openai[embeddings]

Install support for Weights & Biases:

pip install openai[wandb]

Data libraries like numpy and pandas are not installed by default due to their size. They’re needed for some functionality of this library, but generally not for talking to the API. If you encounter a MissingDependencyError, install them with:

pip install openai[datalib]

Usage

The library needs to be configured with your account’s secret key which is available on the website. Either set it as the OPENAI_API_KEY environment variable before using the library:

export OPENAI_API_KEY='sk-...'

Or set openai.api_key to its value:

import openai
openai.api_key = "sk-..."

# list engines
engines = openai.Engine.list()

# print the first engine's id
print(engines.data[0].id)

# create a completion
completion = openai.Completion.create(engine="ada", prompt="Hello world")

# print the completion
print(completion.choices[0].text)

Params

All endpoints have a .create method that support a request_timeout param. This param takes a Union[float, Tuple[float, float]] and will raise a openai.error.TimeoutError error if the request exceeds that time in seconds (See: https://requests.readthedocs.io/en/latest/user/quickstart/#timeouts).

Microsoft Azure Endpoints

In order to use the library with Microsoft Azure endpoints, you need to set the api_typeapi_base and api_version in addition to the api_key. The api_type must be set to ‘azure’ and the others correspond to the properties of your endpoint. In addition, the deployment name must be passed as the engine parameter.

import openai
openai.api_type = "azure"
openai.api_key = "..."
openai.api_base = "https://example-endpoint.openai.azure.com"
openai.api_version = "2022-12-01"

# create a completion
completion = openai.Completion.create(engine="deployment-name", prompt="Hello world")

# print the completion
print(completion.choices[0].text)

Please note that for the moment, the Microsoft Azure endpoints can only be used for completion, embedding, and fine-tuning operations. For a detailed example on how to use fine-tuning and other operations using Azure endpoints, please check out the following Jupyter notebooks:

Microsoft Azure Active Directory Authentication

In order to use Microsoft Active Directory to authenticate to your Azure endpoint, you need to set the api_type to «azure_ad» and pass the acquired credential token to api_key. The rest of the parameters need to be set as specified in the previous section.

from azure.identity import DefaultAzureCredential
import openai

# Request credential
default_credential = DefaultAzureCredential()
token = default_credential.get_token("https://cognitiveservices.azure.com/.default")

# Setup parameters
openai.api_type = "azure_ad"
openai.api_key = token.token
openai.api_base = "https://example-endpoint.openai.azure.com/"
openai.api_version = "2022-12-01"

# ...

Command-line interface

This library additionally provides an openai command-line utility which makes it easy to interact with the API from your terminal. Run openai api -h for usage.

# list engines
openai api engines.list

# create a completion
openai api completions.create -e ada -p "Hello world"

# generate images via DALL·E API
openai api image.create -p "two dogs playing chess, cartoon" -n 1

Example code

Examples of how to use this Python library to accomplish various tasks can be found in the OpenAI Cookbook. It contains code examples for:

  • Classification using fine-tuning
  • Clustering
  • Code search
  • Customizing embeddings
  • Question answering from a corpus of documents
  • Recommendations
  • Visualization of embeddings
  • And more

Prior to July 2022, this OpenAI Python library hosted code examples in its examples folder, but since then all examples have been migrated to the OpenAI Cookbook.

Embeddings

In the OpenAI Python library, an embedding represents a text string as a fixed-length vector of floating point numbers. Embeddings are designed to measure the similarity or relevance between text strings.

To get an embedding for a text string, you can use the embeddings method as follows in Python:

import openai
openai.api_key = "sk-..."  # supply your API key however you choose

# choose text to embed
text_string = "sample text"

# choose an embedding
model_id = "text-similarity-davinci-001"

# compute the embedding of the text
embedding = openai.Embedding.create(input=text_string, engine=model_id)['data'][0]['embedding']

An example of how to call the embeddings method is shown in this get embeddings notebook.

Examples of how to use embeddings are shared in the following Jupyter notebooks:

For more information on embeddings and the types of embeddings OpenAI offers, read the embeddings guide in the OpenAI documentation.

Fine tuning

Fine tuning a model on training data can both improve the results (by giving the model more examples to learn from) and reduce the cost/latency of API calls (chiefly through reducing the need to include training examples in prompts).

Examples of fine tuning are shared in the following Jupyter notebooks:

Sync your fine-tunes to Weights & Biases to track experiments, models, and datasets in your central dashboard with:

openai wandb sync

For more information on fine tuning, read the fine-tuning guide in the OpenAI documentation.

Moderation

OpenAI provides a Moderation endpoint that can be used to check whether content complies with the OpenAI content policy

import openai
openai.api_key = "sk-..."  # supply your API key however you choose

moderation_resp = openai.Moderation.create(input="Here is some perfectly innocuous text that follows all OpenAI content policies.")

See the moderation guide for more details.

Image generation (DALL·E)

import openai
openai.api_key = "sk-..."  # supply your API key however you choose

image_resp = openai.Image.create(prompt="two dogs playing chess, oil painting", n=4, size="512x512")

Async API

Async support is available in the API by prepending a to a network-bound method:

import openai
openai.api_key = "sk-..."  # supply your API key however you choose

async def create_completion():
    completion_resp = await openai.Completion.acreate(prompt="This is a test", engine="davinci")

To make async requests more efficient, you can pass in your own aiohttp.ClientSession, but you must manually close the client session at the end of your program/event loop:

import openai
from aiohttp import ClientSession

openai.aiosession.set(ClientSession())
# At the end of your program, close the http session
await openai.aiosession.get().close()

See the usage guide for more details.

Requirements

  • Python 3.7.1+

In general, we want to support the versions of Python that our customers are using. If you run into problems with any version issues, please let us know at support@openai.com.

Credit

This library is forked from the Stripe Python Library.

 

Библиотека OpenAI Python на русском.

Библиотека OpenAI Python обеспечивает удобный доступ к API OpenAI из приложений, написанных на языке Python. Он включает в себя предопределенный набор классов для ресурсов API, которые динамически инициализируются из ответов API, что делает его совместимым с широким спектром версий API OpenAI.

Документация

См. документацию по OpenAI API .

Установка

Вам не нужен этот исходный код, если вы не хотите модифицировать пакет. Если вы просто хотите использовать пакет, просто запустите:

pip  install  --upgrade  openai

Установить из исходников с помощью:

установка
 python  setup.py

Дополнительные зависимости

Установите зависимости для openai.embeddings_utils:

pip  установить  openai [ вложения ]

Установите поддержку Weights & Biases :

pip install openai[wandb]

Библиотеки данных вроде numpyи pandasне устанавливаются по умолчанию из-за их размера. Они нужны для некоторых функций этой библиотеки, но обычно не для общения с API. Если вы столкнулись с MissingDependencyError, установите их с помощью:

pip  установить  openai [ datalib ]

Применение

Библиотека должна быть настроена с помощью секретного ключа вашей учетной записи, который доступен на веб- сайте . Либо установите его в качестве OPENAI_API_KEYпеременной среды перед использованием библиотеки:

экспорт OPENAI_API_KEY = 'ск-...' 

Или установите openai.api_keyего значение:

импортировать  опенай 
опенай . api_key  =  "sk-..." 

# список двигателей 
engine  =  openai . Двигатель . list () 

# вывести идентификатор первого движка 
print ( Engines .data [ 0 ] . id ) # создать завершение завершение = openai . Завершение . create ( engine = "ada" , prompt = "Hello world" ) # вывести завершение print


   


( завершение . выбор [ 0 ] . текст )

Параметры

Все конечные точки имеют .createметод, который поддерживает request_timeoutпараметр. Этот параметр принимает Union[float, Tuple[float, float]]и вызывает openai.error.TimeoutErrorошибку, если запрос превышает это время в секундах (см.: https://requests.readthedocs.io/en/latest/user/quickstart/#timeouts ).

Конечные точки Microsoft Azure

Чтобы использовать библиотеку с конечными точками Microsoft Azure, api_typeнеобходимо api_baseустановить api_versionрасширение api_key. Должно api_typeбыть установлено значение «лазурный», а остальные соответствуют свойствам вашей конечной точки. Кроме того, имя развертывания должно быть передано в качестве параметра механизма.

импортировать  опенай 
опенай . api_type  =  "лазурный" 
openai . api_key  =  "..." 
openai . api_base  =  "https://example-endpoint.openai.azure.com" 
openai . api_version  =  "2022-12-01" 

# создать завершение 
завершение  =  openai . Завершение . create ( engine = "имя развертывания" ,  prompt = "Hello world"


выбор [ 0 ] . текст )

Обратите внимание, что на данный момент конечные точки Microsoft Azure можно использовать только для операций завершения, внедрения и точной настройки. Подробный пример использования тонкой настройки и других операций с использованием конечных точек Azure см. в следующих блокнотах Jupyter:

Аутентификация Microsoft Azure Active Directory

Чтобы использовать Microsoft Active Directory для проверки подлинности в конечной точке Azure, необходимо задать api_typeзначение «azure_ad» и передать полученный токен учетных данных в api_key. Остальные параметры должны быть установлены, как указано в предыдущем разделе.

from  azure.identity  import  DefaultAzureCredential 
import  openai 

# Запрос учетных данных 
default_credential  =  DefaultAzureCredential () 
token  =  default_credential . get_token ( "https://cognitiveservices.azure.com/.default" ) 

# Настройка параметров 
openai . api_type  =  "azure_ad" 
openai . api_key  =  токен . жетон 
опенай . api_base  =  "https://example-endpoint.openai.azure.com/" 
openai .api_version  =  "2022-12-01" 

# ...

Интерфейс командной строки

Эта библиотека дополнительно предоставляет openaiутилиту командной строки, которая упрощает взаимодействие с API с вашего терминала. Запуск openai api -hдля использования.

# список двигателей 
openai  api  Engines.list # создать завершение openai 
api completes.create -e ada -p " Hello world" # генерировать изображения через DALL·E API 
openai api image.create -p "две собаки играют в шахматы, мультфильм" - п 1

      

      

Пример кода

Примеры того, как использовать эту библиотеку Python для выполнения различных задач, можно найти в OpenAI Cookbook . Он содержит примеры кода для:

  • Классификация с использованием тонкой настройки
  • Кластеризация
  • Поиск кода
  • Настройка вложений
  • Ответ на вопрос из корпуса документов
  • Рекомендации
  • Визуализация вложений
  • И больше

До июля 2022 года эта библиотека OpenAI Python размещала примеры кода в своей папке с примерами, но с тех пор все примеры были перенесены в OpenAI Cookbook .

Вложения

В библиотеке OpenAI Python встраивание представляет текстовую строку как вектор фиксированной длины чисел с плавающей запятой. Вложения предназначены для измерения сходства или релевантности между текстовыми строками.

Чтобы получить вложение для текстовой строки, вы можете использовать метод встраивания следующим образом в Python:

импортировать  опенай 
опенай . api_key  =  "sk-..."   # укажите свой ключ API, как вы выберете 

# выберите текст для встраивания 
text_string  =  "sample text" 

# выберите встраивание 
model_id  =  "text-similarity-davinci-001" 

# вычислите встраивание текста 
вложение  =  openai . Вложение . создать ( input = text_string ,  engine = model_id ) [ 'data' ][ 0 ][ 'embedding' ]

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

Примеры использования вложений представлены в следующих блокнотах Jupyter:

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

Тонкая настройка

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

Примеры тонкой настройки представлены в следующих блокнотах Jupyter:

Синхронизируйте свои точные настройки с Weights & Biases , чтобы отслеживать эксперименты, модели и наборы данных на центральной панели инструментов с помощью:

openai  wandb  синхронизация

Для получения дополнительной информации о тонкой настройке прочитайте руководство по тонкой настройке в документации OpenAI.

На модерации

OpenAI предоставляет конечную точку модерации, которую можно использовать для проверки соответствия контента политике контента OpenAI.

импортировать  опенай 
опенай . api_key  =  "sk-..."   # укажите свой ключ API, как бы вы ни выбрали 

moderation_resp  =  openai . Умеренность . create ( input = "Вот какой-то совершенно безобидный текст, который соответствует всем политикам контента OpenAI." )

Подробнее см. в руководстве по модерации .

Генерация изображения (DALL·E)

импортировать  опенай 
опенай . api_key  =  "sk-..."   # укажите свой ключ API, как бы вы ни выбрали 

image_resp  =  openai . Изображение . create ( prompt = "две собаки играют в шахматы, картина маслом" ,  n = 4 ,  size = "512x512" )

Асинхронный API

Асинхронная поддержка доступна в API путем добавления aперед сетевым методом:

импортировать  опенай 
опенай . api_key  =  "sk-..."   # укажите свой ключ API, однако вы выберете 

async  def  create_completion (): 
    complete_resp = await openai  . Завершение . acreate ( prompt = "Это тест" , engine = "davinci" )   

Чтобы сделать асинхронные запросы более эффективными, вы можете передать свои собственные aiohttp.ClientSession, но вы должны вручную закрыть сеанс клиента в конце вашего цикла программы/события:

импортировать  openai 
из  aiohttp  импортировать  ClientSession 

openai . сессия . set ( ClientSession ()) 
# В конце вашей программы закройте HTTP-сессию 
await  openai . сессия . получить () . закрыть ()

Подробнее см. в руководстве по использованию.

Требования

  • Питон 3.7.1+

В общем, мы хотим поддерживать версии Python, которые используют наши клиенты. Если у вас возникнут проблемы с какой-либо версией, сообщите нам об этом по адресу support@openai.com .

Кредит

Эта библиотека является ответвлением библиотеки Stripe Python .

Искусственный интеллект, нейросети, ии в Минске