From 83a5e98f6e411a6dd40fd0fe909ec7d0c72919c7 Mon Sep 17 00:00:00 2001 From: Christian Muertz Date: Fri, 16 Dec 2022 12:34:49 +0100 Subject: [PATCH] Simple example just for completions with davinci --- examples/azure/completions.ipynb | 218 +++++++++++++++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 examples/azure/completions.ipynb diff --git a/examples/azure/completions.ipynb b/examples/azure/completions.ipynb new file mode 100644 index 00000000..5e67466c --- /dev/null +++ b/examples/azure/completions.ipynb @@ -0,0 +1,218 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Azure completions example\n", + "In this example we'll try to go over all operations needed to get completions working using the Azure endpoints. \\\n", + "This example focuses on completions but also touches on the some other operations that are also available using the API. This example is meant to be a quick way of showing simple operations and is not meant as a tutorial." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import openai\n", + "from openai import cli" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Setup\n", + "For the following sections to work properly we first have to setup some things. Let's start with the `api_type`, `api_base` and `api_version`. To find your `api_base` go to https://portal.azure.com, find your resource and then under \"Resource Management\" -> \"Keys and Endpoints\" look for the \"Endpoint\" value." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "openai.api_type = 'azure'\n", + "openai.api_version = '2022-12-01'\n", + "\n", + "openai.api_base = '' # Please add your endpoint here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We next have to setup the `api_key`. We can either get the key from the portal or we can get it through Microsoft Active Directory Authentication." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Setup: Portal\n", + "Let's first look at getting the key from the portal. Go to https://portal.azure.com, find your resource and then under \"Resource Management\" -> \"Keys and Endpoints\" look for one of the \"Keys\" values." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "openai.api_key = '' # Please add your api key here" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### (Optional) Setup: Microsoft Active Directory Authentication\n", + "Let's now see how we can get a key via Microsoft Active Directory Authentication." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"\n", + "from azure.identity import DefaultAzureCredential\n", + "\n", + "default_credential = DefaultAzureCredential()\n", + "token = default_credential.get_token(\"https://cognitiveservices.azure.com\")\n", + "\n", + "openai.api_key = token.token\n", + "\"\"\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Deployments\n", + "In this section we are going to create a deployment using the `text-davinci-002` model that we can use to create completions." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Deployments: Create Manually\n", + "Create a new deployment by going to your Resource in your portal under \"Resource Management\" -> \"Model deployments\". Select `text-davinci-002` as the model." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### (Optional) Deployments: Create Programatically\n", + "We can also create a deployment using code:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = \"text-davinci-002\"\n", + "\n", + "# Now let's create the deployment\n", + "print(f'Creating a new deployment with model: {model}')\n", + "result = openai.Deployment.create(model=model, scale_settings={\"scale_type\":\"standard\"})\n", + "deployment_id = result[\"id\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### (Optional) Deployments: Wait for deployment to succeed\n", + "Now let's check the status of the newly created deployment and wait till it is succeeded." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f'Checking for deployment status.')\n", + "resp = openai.Deployment.retrieve(id=deployment_id)\n", + "status = resp[\"status\"]\n", + "print(f'Deployment {deployment_id} has status: {status}')\n", + "while status not in [\"succeeded\", \"failed\"]:\n", + " resp = openai.Deployment.retrieve(id=deployment_id)\n", + " status = resp[\"status\"]\n", + " print(f'Deployment {deployment_id} has status: {status}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Completions\n", + "Now let's send a sample completion to the deployment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prompt = \"The food was delicious and the waiter\"\n", + "completion = openai.Completion.create(deployment_id=deployment_id,\n", + " prompt=prompt, stop=\".\", temperature=0)\n", + " \n", + "print(f\"{prompt}{completion['choices'][0]['text']}.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### (Optional) Deployments: Delete\n", + "Finally let's delete the deployment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(f'Deleting deployment: {deployment_id}')\n", + "openai.Deployment.delete(sid=deployment_id)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "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.10.8" + }, + "vscode": { + "interpreter": { + "hash": "3a5103089ab7e7c666b279eeded403fcec76de49a40685dbdfe9f9c78ad97c17" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}