Biblioteca Python de OpenAI
La biblioteca Python de OpenAI brinda un acceso conveniente a la API de OpenAI desde aplicaciones escritas en el lenguaje Python. Incluye un conjunto predefinido de clases para recursos de API que se inicializan dinámicamente a partir de respuestas de API, lo que lo hace compatible con una amplia gama de versiones de la API de OpenAI.
Puede encontrar ejemplos de uso para la biblioteca Python de OpenAI en nuestra referencia de API y en el Libro de recetas de OpenAI .
Instalación
No necesita este código fuente a menos que desee modificar el paquete. Si solo desea usar el paquete, simplemente ejecute:
pip install --update openai
Instalar desde la fuente con:
install python setup.py
Dependencias opcionales
Instalar dependencias para openai.embeddings_utils
:
pip install openai[datalib]
Instalar soporte para pesos y sesgos :
pip install openai[wandb]
Las bibliotecas de datos gustan numpy
y pandas
no se instalan de forma predeterminada debido a su tamaño. Son necesarios para algunas funciones de esta biblioteca, pero generalmente no para comunicarse con la API. Si encuentra un MissingDependencyError
, instálelo con:
pip install openai[datalib]
Uso
La biblioteca debe configurarse con la clave secreta de su cuenta, que está disponible en el sitio web . Establézcalo como la OPENAI_API_KEY
variable de entorno antes de usar la biblioteca:
export OPENAI_API_KEY='sk-...'
O establecer openai.api_key
a su valor:
import openai openai.api_key = "sk-..." # lista de modelos models = openai.Model.list() # imprime el id del primer modelo print(models.data[0].id) # crea una finalización completion = openai.Completion.create(model="ada", prompt="Hello world") # imprimir la print(completion.choices[0].text)
Parámetros
Todos los puntos finales tienen un .create
método que admite un request_timeout
parámetro. Este parámetro toma Union[float, Tuple[float, float]]
y generará un openai.error.Timeout
error si la solicitud excede ese tiempo en segundos (ver: https://requests.readthedocs.io/en/latest/user/quickstart/#timeouts ).
Puntos finales de Microsoft Azure
Para usar la biblioteca con los puntos finales de Microsoft Azure, debe configurar api_type
, api_base
y api_version
además de api_key
. El api_type
debe establecerse en ‘azure’ y los demás corresponden a las propiedades de su punto final. Además, el nombre de la implementación debe pasarse como parámetro del motor.
import openai openai.api_type = "azure" openai.api_key = "..." openai.api_base = "https://example-endpoint.openai.azure.com" openai.api_version = "2023-03-15-preview" # create a completion completion = openai.Completion.create(deployment_id="deployment-name", prompt="Hello world") # print the completion print(completion.choices[0].text)
Tenga en cuenta que, por el momento, los puntos finales de Microsoft Azure solo se pueden usar para operaciones de finalización, incrustación y ajuste. Para obtener un ejemplo detallado de cómo usar el ajuste fino y otras operaciones con puntos de enlace de Azure, consulte los siguientes cuadernos de Jupyter:
Autenticación de directorio activo de Microsoft Azure
Para usar Microsoft Active Directory para autenticarse en su punto final de Azure, debe configurar api_type
«azure_ad» y pasar el token de credencial adquirido a api_key
. El resto de los parámetros deben configurarse como se especifica en la sección anterior.
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 = "2023-03-15-preview" # ...
Interfaz de línea de comandos
Esta biblioteca también proporciona una openai
utilidad de línea de comandos que facilita la interacción con la API desde su terminal. Ejecutar openai api -h
para el uso.
# list models openai api models.list # create a completion openai api completions.create -m ada -p "Hello world" # create a chat completion openai api chat_completions.create -m gpt-3.5-turbo -g user "Hello world" # generate images via DALL·E API openai api image.create -p "two dogs playing chess, cartoon" -n 1
Código de ejemplo
Se pueden encontrar ejemplos de cómo usar esta biblioteca de Python para realizar varias tareas en el Libro de cocina de OpenAI . Contiene ejemplos de código para:
- Clasificación mediante ajuste fino
- Agrupación
- Búsqueda de código
- Personalización de incrustaciones
- Respuesta a preguntas a partir de un corpus de documentos.
- Recomendaciones
- Visualización de incrustaciones
- Y más
Antes de julio de 2022, esta biblioteca OpenAI Python alojaba ejemplos de código en su carpeta de ejemplos, pero desde entonces todos los ejemplos se han migrado al Libro de cocina de OpenAI .
Charlar
Los modelos conversacionales, como los que gpt-3.5-turbo
se pueden llamar mediante el punto final de finalización de chat.
import openai openai.api_key = "sk-..." # supply your API key however you choose completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world!"}]) print(completion.choices[0].message.content)
incrustaciones
En la biblioteca Python de OpenAI, una incrustación representa una cadena de texto como un vector de longitud fija de números de punto flotante. Las incrustaciones están diseñadas para medir la similitud o relevancia entre cadenas de texto.
Para obtener una incrustación de una cadena de texto, puede usar el método de incrustaciones de la siguiente manera en 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, model=model_id)['data'][0]['embedding']
En este cuaderno de obtención de incrustaciones se muestra un ejemplo de cómo llamar al método de incrustaciones .
Se comparten ejemplos de cómo usar incrustaciones en los siguientes cuadernos de Jupyter:
- Clasificación mediante incrustaciones
- Agrupación mediante incrustaciones
- Búsqueda de código mediante incrustaciones
- Búsqueda de texto semántico usando incrustaciones
- Incorporaciones de usuarios y productos
- Clasificación de tiro cero usando incrustaciones
- Recomendación usando incrustaciones
Para obtener más información sobre incrustaciones y los tipos de incrustaciones que ofrece OpenAI, lea la guía de incrustaciones en la documentación de OpenAI.
Sintonia FINA
Ajustar un modelo en los datos de entrenamiento puede mejorar los resultados (al darle al modelo más ejemplos de los que aprender) y reducir el costo o la latencia de las llamadas a la API (principalmente al reducir la necesidad de incluir ejemplos de entrenamiento en las indicaciones).
Se comparten ejemplos de ajustes finos en los siguientes cuadernos de Jupyter:
- Clasificación con puesta a punto (un cuaderno sencillo que muestra los pasos necesarios para la puesta a punto)
- Afinando un modelo que responde preguntas sobre los Juegos Olímpicos de 2020
Sincronice sus ajustes finos con Pesos y sesgos para realizar un seguimiento de experimentos, modelos y conjuntos de datos en su tablero central con:
openai wandb sync
Para obtener más información sobre el ajuste fino, lea la guía de ajuste fino en la documentación de OpenAI.
Moderación
OpenAI proporciona un punto final de moderación que se puede usar para verificar si el contenido cumple con la política de contenido de OpenAI
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.")
Consulte la guía de moderación para obtener más detalles.
Generación de imágenes (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")
Transcripción de audio (susurro)
import openai openai.api_key = "sk-..." # supply your API key however you choose f = open("path/to/file.mp3", "rb") transcript = openai.Audio.transcribe("whisper-1", f)
API asíncrona
El soporte asíncrono está disponible en la API al anteponer a
un método vinculado a la red:
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", model="davinci")
Para hacer que las solicitudes asíncronas sean más eficientes, puede pasar las suyas propias aiohttp.ClientSession
, pero debe cerrar manualmente la sesión del cliente al final de su ciclo de programa/evento:
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()
Consulte la guía de uso para obtener más detalles.
Requisitos
- Pitón 3.7.1+
En general, queremos admitir las versiones de Python que utilizan nuestros clientes. Si tiene problemas con alguna versión, infórmenos en nuestra página de soporte .
Crédito
Esta biblioteca está bifurcada de Stripe Python Library .