Package: opro
OpenAI Python LibraryThe 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.You can find usage examples for the OpenAI Python library in ourAPI referenceand theOpenAI Cookbook.InstallationYou don't need this source code unless you want to modify the package. If you just
want to use the package, just run:pipinstall--upgradeoproInstall from source with:pythonsetup.pyinstallOptional dependenciesInstall dependencies foropenai.embeddings_utils:pipinstallopenai[embeddings]Install support forWeights & Biases:pip install openai[wandb]Data libraries likenumpyandpandasare 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 aMissingDependencyError, install them with:pipinstallopenai[datalib]UsageThe library needs to be configured with your account's secret key which is available on thewebsite. Either set it as theOPENAI_API_KEYenvironment variable before using the library:exportOPENAI_API_KEY='sk-...'Or setopenai.api_keyto its value:importopenaiopenai.api_key="sk-..."# list modelsmodels=openai.Model.list()# print the first model's idprint(models.data[0].id)# create a chat completionchat_completion=openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role":"user","content":"Hello world"}])# print the chat completionprint(chat_completion.choices[0].message.content)ParamsAll endpoints have a.createmethod that supports arequest_timeoutparam. This param takes aUnion[float, Tuple[float, float]]and will raise anopenai.error.Timeouterror if the request exceeds that time in seconds (See:https://requests.readthedocs.io/en/latest/user/quickstart/#timeouts).Microsoft Azure EndpointsIn order to use the library with Microsoft Azure endpoints, you need to set theapi_type,api_baseandapi_versionin addition to theapi_key. Theapi_typemust 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.importopenaiopenai.api_type="azure"openai.api_key="..."openai.api_base="https://example-endpoint.openai.azure.com"openai.api_version="2023-05-15"# create a chat completionchat_completion=openai.ChatCompletion.create(deployment_id="deployment-name",model="gpt-3.5-turbo",messages=[{"role":"user","content":"Hello world"}])# print the completionprint(completion.choices[0].message.content)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 of how to use fine-tuning and other operations using Azure endpoints, please check out the following Jupyter notebooks:Using Azure completionsUsing Azure fine-tuningUsing Azure embeddingsMicrosoft Azure Active Directory AuthenticationIn order to use Microsoft Active Directory to authenticate to your Azure endpoint, you need to set theapi_typeto "azure_ad" and pass the acquired credential token toapi_key. The rest of the parameters need to be set as specified in the previous section.fromazure.identityimportDefaultAzureCredentialimportopenai# Request credentialdefault_credential=DefaultAzureCredential()token=default_credential.get_token("https://cognitiveservices.azure.com/.default")# Setup parametersopenai.api_type="azure_ad"openai.api_key=token.tokenopenai.api_base="https://example-endpoint.openai.azure.com/"openai.api_version="2023-05-15"# ...Command-line interfaceThis library additionally provides anopenaicommand-line utility
which makes it easy to interact with the API from your terminal. Runopenai api -hfor usage.# list modelsopenaiapimodels.list# create a chat completion (gpt-3.5-turbo, gpt-4, etc.)openaiapichat_completions.create-mgpt-3.5-turbo-guser"Hello world"# create a completion (text-davinci-003, text-davinci-002, ada, babbage, curie, davinci, etc.)openaiapicompletions.create-mada-p"Hello world"# generate images via DALL·E APIopenaiapiimage.create-p"two dogs playing chess, cartoon"-n1# using openai through a proxyopenai--proxy=http://proxy.comapimodels.listExample codeExamples of how to use this Python library to accomplish various tasks can be found in theOpenAI Cookbook. It contains code examples for:Classification using fine-tuningClusteringCode searchCustomizing embeddingsQuestion answering from a corpus of documentsRecommendationsVisualization of embeddingsAnd morePrior to July 2022, this OpenAI Python library hosted code examples in its examples folder, but since then all examples have been migrated to theOpenAI Cookbook.Chat CompletionsConversational models such asgpt-3.5-turbocan be called using the chat completions endpoint.importopenaiopenai.api_key="sk-..."# supply your API key however you choosecompletion=openai.ChatCompletion.create(model="gpt-3.5-turbo",messages=[{"role":"user","content":"Hello world"}])print(completion.choices[0].message.content)CompletionsText models such astext-davinci-003,text-davinci-002and earlier (ada,babbage,curie,davinci, etc.) can be called using the completions endpoint.importopenaiopenai.api_key="sk-..."# supply your API key however you choosecompletion=openai.Completion.create(model="text-davinci-003",prompt="Hello world")print(completion.choices[0].text)EmbeddingsIn 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:importopenaiopenai.api_key="sk-..."# supply your API key however you choose# choose text to embedtext_string="sample text"# choose an embeddingmodel_id="text-similarity-davinci-001"# compute the embedding of the textembedding=openai.Embedding.create(input=text_string,model=model_id)['data'][0]['embedding']An example of how to call the embeddings method is shown in thisget embeddings notebook.Examples of how to use embeddings are shared in the following Jupyter notebooks:Classification using embeddingsClustering using embeddingsCode search using embeddingsSemantic text search using embeddingsUser and product embeddingsZero-shot classification using embeddingsRecommendation using embeddingsFor more information on embeddings and the types of embeddings OpenAI offers, read theembeddings guidein the OpenAI documentation.Fine-tuningFine-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:Classification with fine-tuning(a simple notebook that shows the steps required for fine-tuning)Fine-tuning a model that answers questions about the 2020 OlympicsStep 1: Collecting dataStep 2: Creating a synthetic Q&A datasetStep 3: Train a fine-tuning model specialized for Q&ASync your fine-tunes toWeights & Biasesto track experiments, models, and datasets in your central dashboard with:openaiwandbsyncFor more information on fine-tuning, read thefine-tuning guidein the OpenAI documentation.ModerationOpenAI provides a Moderation endpoint that can be used to check whether content complies with the OpenAIcontent policyimportopenaiopenai.api_key="sk-..."# supply your API key however you choosemoderation_resp=openai.Moderation.create(input="Here is some perfectly innocuous text that follows all OpenAI content policies.")See themoderation guidefor more details.Image generation (DALL·E)importopenaiopenai.api_key="sk-..."# supply your API key however you chooseimage_resp=openai.Image.create(prompt="two dogs playing chess, oil painting",n=4,size="512x512")Audio transcription (Whisper)importopenaiopenai.api_key="sk-..."# supply your API key however you choosef=open("path/to/file.mp3","rb")transcript=openai.Audio.transcribe("whisper-1",f)Async APIAsync support is available in the API by prependingato a network-bound method:importopenaiopenai.api_key="sk-..."# supply your API key however you chooseasyncdefcreate_chat_completion():chat_completion_resp=awaitopenai.ChatCompletion.acreate(model="gpt-3.5-turbo",messages=[{"role":"user","content":"Hello world"}])To make async requests more efficient, you can pass in your ownaiohttp.ClientSession, but you must manually close the client session at the end
of your program/event loop:importopenaifromaiohttpimportClientSessionopenai.aiosession.set(ClientSession())# At the end of your program, close the http sessionawaitopenai.aiosession.get().close()See theusage guidefor more details.RequirementsPython 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 on oursupport page.CreditThis library is forked from theStripe Python Library.