forked from Azure-Samples/openai
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Migration to the v1.X version of Python OpenAI
- Loading branch information
Showing
1 changed file
with
165 additions
and
170 deletions.
There are no files selected for viewing
335 changes: 165 additions & 170 deletions
335
Basic_Samples/Chat/basic_chatcompletions_example_sdk.ipynb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,170 +1,165 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"id": "278e7451", | ||
"metadata": {}, | ||
"source": [ | ||
"<h1 align =\"center\"> Python SDK Sample</h1>\n", | ||
"<hr>\n", | ||
"\n", | ||
"# Chat Completions\n", | ||
"\n", | ||
"Chat models take a series of messages as input, and return a model-generated message as output.\n", | ||
"The main input is the messages parameter. Messages must be an array of message objects, where each object has a role (either \"system\", \"user\", or \"assistant\") and content (the content of the message). " | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "fb97123e", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# if needed, install and/or upgrade to the latest version of the OpenAI Python library\n", | ||
"%pip install --upgrade openai" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 1, | ||
"id": "ccbb9a99", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# import os module & the OpenAI Python library for calling the OpenAI API\n", | ||
"import os\n", | ||
"import openai\n", | ||
"import json" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "6d33f92a", | ||
"metadata": {}, | ||
"source": [ | ||
"### Setup Parameters" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 2, | ||
"id": "1d67d3b6", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# Load config values\n", | ||
"with open(r'config.json') as config_file:\n", | ||
" config_details = json.load(config_file)\n", | ||
" \n", | ||
"# Setting up the deployment name\n", | ||
"chatgpt_model_name = config_details['CHATGPT_MODEL']\n", | ||
"\n", | ||
"# This is set to `azure`\n", | ||
"openai.api_type = \"azure\"\n", | ||
"\n", | ||
"# The API key for your Azure OpenAI resource.\n", | ||
"openai.api_key = os.getenv(\"OPENAI_API_KEY\")\n", | ||
"\n", | ||
"# The base URL for your Azure OpenAI resource. e.g. \"https://<your resource name>.openai.azure.com\"\n", | ||
"openai.api_base = config_details['OPENAI_API_BASE']\n", | ||
"\n", | ||
"# Currently Chat Completion API have the following versions available: 2023-03-15-preview\n", | ||
"openai.api_version = config_details['OPENAI_API_VERSION']" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 3, | ||
"id": "150a3db0", | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"The Los Angeles Dodgers won the World Series in 2020.\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"# A sample API call for chat completions looks as follows:\n", | ||
"# Messages must be an array of message objects, where each object has a role (either \"system\", \"user\", or \"assistant\") and content (the content of the message).\n", | ||
"# For more info: https://learn.microsoft.com/en-us/azure/cognitive-services/openai/reference#chat-completions\n", | ||
"\n", | ||
"try:\n", | ||
" response = openai.ChatCompletion.create(\n", | ||
" engine=chatgpt_model_name,\n", | ||
" messages=[\n", | ||
" {\"role\": \"system\", \"content\": \"You are a helpful assistant.\"},\n", | ||
" {\"role\": \"user\", \"content\": \"Who won the world series in 2020?\"}\n", | ||
" ]\n", | ||
" )\n", | ||
"\n", | ||
" # print the response\n", | ||
" print(response['choices'][0]['message']['content'])\n", | ||
" \n", | ||
"except openai.error.APIError as e:\n", | ||
" # Handle API error here, e.g. retry or log\n", | ||
" print(f\"OpenAI API returned an API Error: {e}\")\n", | ||
"\n", | ||
"except openai.error.AuthenticationError as e:\n", | ||
" # Handle Authentication error here, e.g. invalid API key\n", | ||
" print(f\"OpenAI API returned an Authentication Error: {e}\")\n", | ||
"\n", | ||
"except openai.error.APIConnectionError as e:\n", | ||
" # Handle connection error here\n", | ||
" print(f\"Failed to connect to OpenAI API: {e}\")\n", | ||
"\n", | ||
"except openai.error.InvalidRequestError as e:\n", | ||
" # Handle connection error here\n", | ||
" print(f\"Invalid Request Error: {e}\")\n", | ||
"\n", | ||
"except openai.error.RateLimitError as e:\n", | ||
" # Handle rate limit error\n", | ||
" print(f\"OpenAI API request exceeded rate limit: {e}\")\n", | ||
"\n", | ||
"except openai.error.ServiceUnavailableError as e:\n", | ||
" # Handle Service Unavailable error\n", | ||
" print(f\"Service Unavailable: {e}\")\n", | ||
"\n", | ||
"except openai.error.Timeout as e:\n", | ||
" # Handle request timeout\n", | ||
" print(f\"Request timed out: {e}\")\n", | ||
" \n", | ||
"except:\n", | ||
" # Handles all other exceptions\n", | ||
" print(\"An exception has occured.\")" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "cc92fe64", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Python 3 (ipykernel)", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.11.1" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 5 | ||
} | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"id": "278e7451", | ||
"metadata": {}, | ||
"source": [ | ||
"<h1 align =\"center\"> Python SDK Sample</h1>\n", | ||
"<hr>\n", | ||
"\n", | ||
"# Chat Completions\n", | ||
"\n", | ||
"Chat models take a series of messages as input, and return a model-generated message as output.\n", | ||
"The main input is the messages parameter. Messages must be an array of message objects, where each object has a role (either \"system\", \"user\", or \"assistant\") and content (the content of the message). " | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "fb97123e", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# if needed, install and/or upgrade to the latest version of the OpenAI Python library\n", | ||
"%pip install --upgrade openai" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 9, | ||
"id": "ccbb9a99", | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"text/plain": [ | ||
"True" | ||
] | ||
}, | ||
"execution_count": 9, | ||
"metadata": {}, | ||
"output_type": "execute_result" | ||
} | ||
], | ||
"source": [ | ||
"# import os module & the OpenAI Python library for calling the OpenAI API\n", | ||
"import os\n", | ||
"from openai import AzureOpenAI\n", | ||
"import dotenv\n", | ||
"dotenv.load_dotenv()\n" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"id": "6d33f92a", | ||
"metadata": {}, | ||
"source": [ | ||
"### Setup Parameters" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 10, | ||
"id": "1d67d3b6", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# Setting up the deployment name\n", | ||
"deployment_name = os.environ['COMPLETIONS_MODEL']\n", | ||
"\n", | ||
"# The API key for your Azure OpenAI resource.\n", | ||
"api_key = os.environ[\"AZURE_OPENAI_API_KEY\"]\n", | ||
"\n", | ||
"# The base URL for your Azure OpenAI resource. e.g. \"https://<your resource name>.openai.azure.com\"\n", | ||
"azure_endpoint = os.environ['AZURE_OPENAI_ENDPOINT']\n", | ||
"\n", | ||
"# Currently Chat Completion API have the following versions available: 2023-03-15-preview\n", | ||
"api_version = os.environ['OPENAI_API_VERSION']\n", | ||
"\n", | ||
"client = AzureOpenAI(\n", | ||
" api_key=api_key, \n", | ||
" azure_endpoint=azure_endpoint,\n", | ||
" api_version=api_version\n", | ||
")" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"id": "150a3db0", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# A sample API call for chat completions looks as follows:\n", | ||
"# Messages must be an array of message objects, where each object has a role (either \"system\", \"user\", or \"assistant\") and content (the content of the message).\n", | ||
"# For more info: https://learn.microsoft.com/en-us/azure/cognitive-services/openai/reference#chat-completions\n", | ||
"\n", | ||
"try:\n", | ||
" response = client.chat.completions.create(\n", | ||
" model=deployment_name,\n", | ||
" messages=[\n", | ||
" {\"role\": \"system\", \"content\": \"You are a helpful assistant.\"},\n", | ||
" {\"role\": \"user\", \"content\": \"Who won the world series in 2020?\"}\n", | ||
" ]\n", | ||
" )\n", | ||
"\n", | ||
" # print the response\n", | ||
" print(response.choices[0].message.content)\n", | ||
"\n", | ||
"except openai.AuthenticationError as e:\n", | ||
" # Handle Authentication error here, e.g. invalid API key\n", | ||
" print(f\"OpenAI API returned an Authentication Error: {e}\")\n", | ||
"\n", | ||
"except openai.APIConnectionError as e:\n", | ||
" # Handle connection error here\n", | ||
" print(f\"Failed to connect to OpenAI API: {e}\")\n", | ||
"\n", | ||
"except openai.BadRequestError as e:\n", | ||
" # Handle connection error here\n", | ||
" print(f\"Invalid Request Error: {e}\")\n", | ||
"\n", | ||
"except openai.RateLimitError as e:\n", | ||
" # Handle rate limit error\n", | ||
" print(f\"OpenAI API request exceeded rate limit: {e}\")\n", | ||
"\n", | ||
"except openai.InternalServerError as e:\n", | ||
" # Handle Service Unavailable error\n", | ||
" print(f\"Service Unavailable: {e}\")\n", | ||
"\n", | ||
"except openai.APITimeoutError as e:\n", | ||
" # Handle request timeout\n", | ||
" print(f\"Request timed out: {e}\")\n", | ||
" \n", | ||
"except openai.APIError as e:\n", | ||
" # Handle API error here, e.g. retry or log\n", | ||
" print(f\"OpenAI API returned an API Error: {e}\")\n", | ||
"\n", | ||
"except:\n", | ||
" # Handles all other exceptions\n", | ||
" print(\"An exception has occured.\")" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Python 3 (ipykernel)", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.12.1" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 5 | ||
} |