From a4fa79687adce9fcc3bcaadd547ddb1d4fe49888 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Thu, 12 Sep 2024 10:34:50 -0700 Subject: [PATCH 01/12] development section --- .../openai/concepts/use-your-data.md | 14 +++++++++++++- .../media/use-your-data/workflow-diagram.png | Bin 0 -> 244970 bytes 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 articles/ai-services/openai/media/use-your-data/workflow-diagram.png diff --git a/articles/ai-services/openai/concepts/use-your-data.md b/articles/ai-services/openai/concepts/use-your-data.md index fb14c6a740d..12fc2cf67c8 100644 --- a/articles/ai-services/openai/concepts/use-your-data.md +++ b/articles/ai-services/openai/concepts/use-your-data.md @@ -21,7 +21,19 @@ Use this article to learn about Azure OpenAI On Your Data, which makes it easier Azure OpenAI On Your Data enables you to run advanced AI models such as GPT-35-Turbo and GPT-4 on your own enterprise data without needing to train or fine-tune models. You can chat on top of and analyze your data with greater accuracy. You can specify sources to support the responses based on the latest information available in your designated data sources. You can access Azure OpenAI On Your Data using a REST API, via the SDK or the web-based interface in the [Azure OpenAI Studio](https://oai.azure.com/). You can also create a web app that connects to your data to enable an enhanced chat solution or deploy it directly as a copilot in the Copilot Studio (preview). -## Get started +## Developing with Azure OpenAI On Your Data + +:::image type="content" source="../media/use-your-data/workflow-diagram.png" alt-text="A diagram showing an example workflow."::: + +Typically, the development process you'd use with Azure OpenAI On Your Data is: +1. Upload files using either Azure OpenAI Studio or the ingestion API. This enables your data to be cracked, chunked and embedded into an Azure AI Search instance that can be used by Azure Open AI models. If you have an existing [supported data source](#supported-data-sources), you can also connect it directly. +1. After trying Azure OpenAI On Your Data, begin developing your application using the available REST API and SDKs, which are available in several languages. It will create prompts and search intents to pass to the Azure OpenAI service. +1. After your application is deployed in your preferred environment, it will send prompts to Azure OpenAI, which will perform several steps before returning a response: + 1. **Intent generation**: The service will determine the intent of the user's prompt to determine a proper response. + 1. **Retrieval**: The service retrieves relevant chunks of available data from the connected data source by querying it. For example by using a semantic or vector search. + 1. **Parameter inclusion**: [Parameters](#runtime-parameters) such as strictness and number of documents to retreive are utilized to + 1. **Filtration and reranking**: Search results from the retrieval step are improved by ranking and filtering data to refine relevance. + 1. **Response generation**: The resulting data is submitted along with other information like the system message to the Large Language Model (LLM) and the response is sent back to the application. To get started, [connect your data source](../use-your-data-quickstart.md) using Azure OpenAI Studio and start asking questions and chatting on your data. diff --git a/articles/ai-services/openai/media/use-your-data/workflow-diagram.png b/articles/ai-services/openai/media/use-your-data/workflow-diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..c1731928b914815362735375e46306cc23375f67 GIT binary patch literal 244970 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 JEAKhS{TD*8!Fd1x literal 0 HcmV?d00001 From aa3660176777315788a9af362c4803062889b1e3 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Thu, 12 Sep 2024 10:35:30 -0700 Subject: [PATCH 02/12] removing note --- articles/ai-services/openai/concepts/use-your-data.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/articles/ai-services/openai/concepts/use-your-data.md b/articles/ai-services/openai/concepts/use-your-data.md index 12fc2cf67c8..4ac02ecc00d 100644 --- a/articles/ai-services/openai/concepts/use-your-data.md +++ b/articles/ai-services/openai/concepts/use-your-data.md @@ -37,9 +37,6 @@ Typically, the development process you'd use with Azure OpenAI On Your Data is: To get started, [connect your data source](../use-your-data-quickstart.md) using Azure OpenAI Studio and start asking questions and chatting on your data. -> [!NOTE] -> To get started, you need to already have been approved for [Azure OpenAI access](../overview.md#how-do-i-get-access-to-azure-openai) and have an [Azure OpenAI Service resource](../how-to/create-resource.md) deployed in a [supported region](#regional-availability-and-model-support) with either the gpt-35-turbo or the gpt-4 models. - ## Azure Role-based access controls (Azure RBAC) for adding data sources To use Azure OpenAI On Your Data fully, you need to set one or more Azure RBAC roles. See [Use Azure OpenAI On Your Data securely](../how-to/use-your-data-securely.md#role-assignments) for more information. From f470e4bde98b6d4e67c0b2b9f65faf2498da73e3 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Thu, 12 Sep 2024 11:32:48 -0700 Subject: [PATCH 03/12] adding spaces --- articles/ai-services/openai/concepts/use-your-data.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/articles/ai-services/openai/concepts/use-your-data.md b/articles/ai-services/openai/concepts/use-your-data.md index 4ac02ecc00d..1d2caefd215 100644 --- a/articles/ai-services/openai/concepts/use-your-data.md +++ b/articles/ai-services/openai/concepts/use-your-data.md @@ -27,12 +27,18 @@ Azure OpenAI On Your Data enables you to run advanced AI models such as GPT-35-T Typically, the development process you'd use with Azure OpenAI On Your Data is: 1. Upload files using either Azure OpenAI Studio or the ingestion API. This enables your data to be cracked, chunked and embedded into an Azure AI Search instance that can be used by Azure Open AI models. If you have an existing [supported data source](#supported-data-sources), you can also connect it directly. + 1. After trying Azure OpenAI On Your Data, begin developing your application using the available REST API and SDKs, which are available in several languages. It will create prompts and search intents to pass to the Azure OpenAI service. + 1. After your application is deployed in your preferred environment, it will send prompts to Azure OpenAI, which will perform several steps before returning a response: 1. **Intent generation**: The service will determine the intent of the user's prompt to determine a proper response. + 1. **Retrieval**: The service retrieves relevant chunks of available data from the connected data source by querying it. For example by using a semantic or vector search. + 1. **Parameter inclusion**: [Parameters](#runtime-parameters) such as strictness and number of documents to retreive are utilized to + 1. **Filtration and reranking**: Search results from the retrieval step are improved by ranking and filtering data to refine relevance. + 1. **Response generation**: The resulting data is submitted along with other information like the system message to the Large Language Model (LLM) and the response is sent back to the application. To get started, [connect your data source](../use-your-data-quickstart.md) using Azure OpenAI Studio and start asking questions and chatting on your data. From 168ace54747326b7df2dc84f8f61b89a45aa051c Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Thu, 12 Sep 2024 11:39:03 -0700 Subject: [PATCH 04/12] parameters --- articles/ai-services/openai/concepts/use-your-data.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/articles/ai-services/openai/concepts/use-your-data.md b/articles/ai-services/openai/concepts/use-your-data.md index 1d2caefd215..38378a36483 100644 --- a/articles/ai-services/openai/concepts/use-your-data.md +++ b/articles/ai-services/openai/concepts/use-your-data.md @@ -33,9 +33,7 @@ Typically, the development process you'd use with Azure OpenAI On Your Data is: 1. After your application is deployed in your preferred environment, it will send prompts to Azure OpenAI, which will perform several steps before returning a response: 1. **Intent generation**: The service will determine the intent of the user's prompt to determine a proper response. - 1. **Retrieval**: The service retrieves relevant chunks of available data from the connected data source by querying it. For example by using a semantic or vector search. - - 1. **Parameter inclusion**: [Parameters](#runtime-parameters) such as strictness and number of documents to retreive are utilized to + 1. **Retrieval**: The service retrieves relevant chunks of available data from the connected data source by querying it. For example by using a semantic or vector search. [Parameters](#runtime-parameters) such as strictness and number of documents to retreive are utilized to influence the retrieval. 1. **Filtration and reranking**: Search results from the retrieval step are improved by ranking and filtering data to refine relevance. From 7ef19598526416e7ca6cc50970351fcc6e5c327f Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Fri, 13 Sep 2024 09:53:21 -0700 Subject: [PATCH 05/12] adding labels --- articles/ai-services/openai/concepts/use-your-data.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/articles/ai-services/openai/concepts/use-your-data.md b/articles/ai-services/openai/concepts/use-your-data.md index 38378a36483..1fa75a6193a 100644 --- a/articles/ai-services/openai/concepts/use-your-data.md +++ b/articles/ai-services/openai/concepts/use-your-data.md @@ -26,11 +26,11 @@ Azure OpenAI On Your Data enables you to run advanced AI models such as GPT-35-T :::image type="content" source="../media/use-your-data/workflow-diagram.png" alt-text="A diagram showing an example workflow."::: Typically, the development process you'd use with Azure OpenAI On Your Data is: -1. Upload files using either Azure OpenAI Studio or the ingestion API. This enables your data to be cracked, chunked and embedded into an Azure AI Search instance that can be used by Azure Open AI models. If you have an existing [supported data source](#supported-data-sources), you can also connect it directly. +1. **Ingest**: Upload files using either Azure OpenAI Studio or the ingestion API. This enables your data to be cracked, chunked and embedded into an Azure AI Search instance that can be used by Azure Open AI models. If you have an existing [supported data source](#supported-data-sources), you can also connect it directly. -1. After trying Azure OpenAI On Your Data, begin developing your application using the available REST API and SDKs, which are available in several languages. It will create prompts and search intents to pass to the Azure OpenAI service. +1. **Develop**: After trying Azure OpenAI On Your Data, begin developing your application using the available REST API and SDKs, which are available in several languages. It will create prompts and search intents to pass to the Azure OpenAI service. -1. After your application is deployed in your preferred environment, it will send prompts to Azure OpenAI, which will perform several steps before returning a response: +1. **Inference**: After your application is deployed in your preferred environment, it will send prompts to Azure OpenAI, which will perform several steps before returning a response: 1. **Intent generation**: The service will determine the intent of the user's prompt to determine a proper response. 1. **Retrieval**: The service retrieves relevant chunks of available data from the connected data source by querying it. For example by using a semantic or vector search. [Parameters](#runtime-parameters) such as strictness and number of documents to retreive are utilized to influence the retrieval. From fa9516887afc3e0ae4efcf6a909921836e597ddc Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Tue, 17 Sep 2024 12:29:55 -0700 Subject: [PATCH 06/12] freshness --- .../cognitive-services-container-support.md | 6 +- .../openai/assistants-reference-messages.md | 39 ++++----- .../openai/assistants-reference-runs.md | 82 ++++++++++++------- 3 files changed, 75 insertions(+), 52 deletions(-) diff --git a/articles/ai-services/cognitive-services-container-support.md b/articles/ai-services/cognitive-services-container-support.md index fa1c3d5f1c5..27b51353a90 100644 --- a/articles/ai-services/cognitive-services-container-support.md +++ b/articles/ai-services/cognitive-services-container-support.md @@ -7,7 +7,7 @@ author: aahill manager: nitinme ms.service: azure-ai-services ms.topic: overview -ms.date: 08/23/2024 +ms.date: 09/17/2024 ms.author: aahi keywords: on-premises, Docker, container, Kubernetes #Customer intent: As a potential customer, I want to know more about how Azure AI services provides and supports Docker containers for each service. @@ -15,7 +15,7 @@ keywords: on-premises, Docker, container, Kubernetes # What are Azure AI containers? -Azure AI services provides several [Docker containers](https://www.docker.com/what-container) that let you use the same APIs that are available in Azure, on-premises. Using these containers gives you the flexibility to bring Azure AI services closer to your data for compliance, security or other operational reasons. Container support is currently available for a subset of Azure AI services. +Azure AI services provide several [Docker containers](https://www.docker.com/what-container) that let you use the same APIs that are available in Azure, on-premises. Using these containers gives you the flexibility to bring Azure AI services closer to your data for compliance, security or other operational reasons. Container support is currently available for a subset of Azure AI services. > [!VIDEO https://www.youtube.com/embed/hdfbn4Q8jbo] @@ -48,7 +48,7 @@ Azure AI containers provide the following set of Docker containers, each of whic | Service | Container | Description | Availability | |--|--|--|--| | [LUIS][lu-containers] | **LUIS** ([image](https://mcr.microsoft.com/product/azure-cognitive-services/language/luis/about)) | Loads a trained or published Language Understanding model, also known as a LUIS app, into a docker container and provides access to the query predictions from the container's API endpoints. You can collect query logs from the container and upload these back to the [LUIS portal](https://www.luis.ai) to improve the app's prediction accuracy. | Generally available.
This container can also [run in disconnected environments](containers/disconnected-containers.md). | -| [Language service][ta-containers-keyphrase] | **Key Phrase Extraction** ([image](https://mcr.microsoft.com/product/azure-cognitive-services/textanalytics/keyphrase/about)) | Extracts key phrases to identify the main points. For example, for the input text "The food was delicious and there were wonderful staff", the API returns the main talking points: "food" and "wonderful staff". | Generally available.
This container can also [run in disconnected environments](containers/disconnected-containers.md). | +| [Language service][ta-containers-keyphrase] | **Key Phrase Extraction** ([image](https://mcr.microsoft.com/product/azure-cognitive-services/textanalytics/keyphrase/about)) | Extracts key phrases to identify the main points. For example, for the input text "The food was delicious and there were wonderful staff," the API returns the main talking points: "food" and "wonderful staff". | Generally available.
This container can also [run in disconnected environments](containers/disconnected-containers.md). | | [Language service][ta-containers-language] | **Text Language Detection** ([image](https://mcr.microsoft.com/product/azure-cognitive-services/textanalytics/language/about)) | For up to 120 languages, detects which language the input text is written in and report a single language code for every document submitted on the request. The language code is paired with a score indicating the strength of the score. | Generally available.
This container can also [run in disconnected environments](containers/disconnected-containers.md). | | [Language service][ta-containers-sentiment] | **Sentiment Analysis** ([image](https://mcr.microsoft.com/product/azure-cognitive-services/textanalytics/sentiment/about)) | Analyzes raw text for clues about positive or negative sentiment. This version of sentiment analysis returns sentiment labels (for example *positive* or *negative*) for each document and sentence within it. | Generally available.
This container can also [run in disconnected environments](containers/disconnected-containers.md). | | [Language service][ta-containers-health] | **Text Analytics for health** ([image](https://mcr.microsoft.com/product/azure-cognitive-services/textanalytics/healthcare/about))| Extract and label medical information from unstructured clinical text. | Generally available | diff --git a/articles/ai-services/openai/assistants-reference-messages.md b/articles/ai-services/openai/assistants-reference-messages.md index 0ebc06a8763..33c2cda121b 100644 --- a/articles/ai-services/openai/assistants-reference-messages.md +++ b/articles/ai-services/openai/assistants-reference-messages.md @@ -5,9 +5,9 @@ description: Learn how to use Azure OpenAI's Python & REST API messages with Ass manager: nitinme ms.service: azure-ai-openai ms.topic: conceptual -ms.date: 07/25/2024 -author: mrbullwinkle -ms.author: mbullwin +ms.date: 09/17/2024 +author: aahill +ms.author: aahi recommendations: false ms.custom: devx-track-python --- @@ -21,7 +21,7 @@ This article provides reference documentation for Python and REST for the new As ## Create message ```http -POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages?api-version=2024-05-01-preview +POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages?api-version=2024-08-01-preview ``` Create a message. @@ -38,7 +38,7 @@ Create a message. |--- |--- |--- |--- | | `role` | string | Required | The role of the entity that is creating the message. Can be `user` or `assistant`. `user` indicates the message is sent by an actual user and should be used in most cases to represent user-generated messages. `assistant` indicates the message is generated by the assistant. Use this value to insert messages from the assistant into the conversation. | | `content` | string | Required | The content of the message. | -| `file_ids` | array | Optional | A list of File IDs that the message should use. There can be a maximum of 10 files attached to a message. Useful for tools like retrieval and code_interpreter that can access and use files. | +| `attachments` | array | Optional | A list of files attached to the message, and the tools they should be added to. | | `metadata` | map | Optional | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long. | ### Returns @@ -54,7 +54,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -69,7 +69,7 @@ print(thread_message) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ @@ -83,7 +83,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/mess ## List messages ```http -GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages?api-version=2024-05-01-preview +GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages?api-version=2024-08-01-preview ``` Returns a list of messages for a given thread. @@ -102,6 +102,7 @@ Returns a list of messages for a given thread. | `limit` | integer | Optional - Defaults to 20 |A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 20.| | `order` | string | Optional - Defaults to desc |Sort order by the created_at timestamp of the objects. asc for ascending order and desc for descending order.| | `after` | string | Optional | A cursor for use in pagination. after is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include after=obj_foo in order to fetch the next page of the list.| +| `run_id` | string | Optionanl | Filter messages by the run ID that generated them. | | `before` | string | Optional | A cursor for use in pagination. before is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can include before=obj_foo in order to fetch the previous page of the list.| ### Returns @@ -117,7 +118,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -129,7 +130,7 @@ print(thread_messages.data) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' ``` @@ -139,7 +140,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/mess ## Retrieve message ```http -GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-05-01-preview +GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-08-01-preview ``` Retrieves a message file. @@ -180,7 +181,7 @@ print(message) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' ``` @@ -190,7 +191,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/mess ## Modify message ```http -POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-05-01-preview +POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-08-01-preview ``` Modifies a message. @@ -206,7 +207,7 @@ Modifies a message. |Parameter| Type | Required | Description | |---|---|---|---| -| metadata | map| Optional | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long.| +| `metadata` | map| Optional | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long.| ### Returns @@ -219,7 +220,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -237,7 +238,7 @@ print(message) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-05-01-preview +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-08-01-preview ``` \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ @@ -256,7 +257,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/mess ```http -DELETE https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-05-01-preview +DELETE https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-08-01-preview ``` Deletes a message. @@ -278,7 +279,7 @@ The deletion status of the [message](#message-object) object. from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -292,7 +293,7 @@ print(deleted_message) # [REST](#tab/rest) ```console -curl -x DELETE https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-05-01-preview \ +curl -x DELETE https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/messages/{message_id}?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' ``` diff --git a/articles/ai-services/openai/assistants-reference-runs.md b/articles/ai-services/openai/assistants-reference-runs.md index 977bdad81fd..42e0cadc689 100644 --- a/articles/ai-services/openai/assistants-reference-runs.md +++ b/articles/ai-services/openai/assistants-reference-runs.md @@ -5,9 +5,9 @@ description: Learn how to use Azure OpenAI's Python & REST API runs with Assista manager: nitinme ms.service: azure-ai-openai ms.topic: conceptual -ms.date: 04/16/2024 -author: mrbullwinkle -ms.author: mbullwin +ms.date: 09/17/2024 +author: aahill +ms.author: aahi recommendations: false ms.custom: devx-track-python --- @@ -21,7 +21,7 @@ This article provides reference documentation for Python and REST for the new As ## Create run ```http -POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs?api-version=2024-05-01-preview +POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs?api-version=2024-08-01-preview ``` Create a run. @@ -39,8 +39,19 @@ Create a run. | `assistant_id` | string | Required | The ID of the assistant to use to execute this run. | | `model` | string or null | Optional | The model deployment name to be used to execute this run. If a value is provided here, it will override the model deployment name associated with the assistant. If not, the model deployment name associated with the assistant will be used. | | `instructions` | string or null | Optional | Overrides the instructions of the assistant. This is useful for modifying the behavior on a per-run basis. | +| `additional_instructions` | string | Optional | Appends additional instructions at the end of the instructions for the run. This is useful for modifying the behavior on a per-run basis without overriding other instructions. | +| `additional_messages` | array | Optional | Adds additional messages to the thread before creating the run. | | `tools` | array or null | Optional | Override the tools the assistant can use for this run. This is useful for modifying the behavior on a per-run basis. | | `metadata` | map | Optional | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long. | +| `temperature` | number | Optional | What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. Default is 1. | +| `top_p` | number | Optional | An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. Default is 1. | +| `stream` | boolean | optional | If `true`, returns a stream of events that happen during the Run as server-sent events, terminating when the Run enters a terminal state with a `data: [DONE]` message. | +| `max_prompt_tokens` | integer | optional | The maximum number of completion tokens that might be used over the course of the run. The run will make a best effort to use only the number of completion tokens specified, across multiple turns of the run. If the run exceeds the number of completion tokens specified, the run will end with status `incomplete`. | +| `max_completion_tokens` | integer | optional | The maximum number of completion tokens that might be used over the course of the run. The run will make a best effort to use only the number of completion tokens specified, across multiple turns of the run. If the run exceeds the number of completion tokens specified, the run will end with status `incomplete`. | +| `truncation_strategy` | [truncationObject](#truncation-object) | optional | Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run. | +| `tool_choice` | string or object | optional | Controls which (if any) tool is called by the model. A `none` value means the model won't call any tools and instead generates a message. `auto` is the default value and means the model can pick between generating a message or calling a tool. Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool. | +| `response_format` | string or object | optional | Specifies the format that the model must output. Compatible with GPT-4 Turbo and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.
Setting to `{ "type": "json_object" }` enables JSON mode, which guarantees the message the model generates is valid JSON.
**Important**: when using JSON mode, you must also instruct the model to produce JSON yourself via a system or user message. Without this, the model might generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content might be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length. | + ### Returns @@ -55,7 +66,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -69,7 +80,7 @@ print(run) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ @@ -82,7 +93,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs ## Create thread and run ```http -POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/runs?api-version=2024-05-01-preview +POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/runs?api-version=2024-08-01-preview ``` Create a thread and run it in a single request. @@ -97,6 +108,14 @@ Create a thread and run it in a single request. | `instructions` | string or null | Optional | Override the default system message of the assistant. This is useful for modifying the behavior on a per-run basis.| | `tools` | array or null | Optional | Override the tools the assistant can use for this run. This is useful for modifying the behavior on a per-run basis.| | `metadata` | map | Optional | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long.| +| `temperature` | number | Optional | What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. Default is 1. | +| `top_p` | number | Optional | An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. Default is 1. | +| `stream` | boolean | optional | If `true`, returns a stream of events that happen during the Run as server-sent events, terminating when the Run enters a terminal state with a `data: [DONE]` message. | +| `max_prompt_tokens` | integer | optional | The maximum number of completion tokens that might be used over the course of the run. The run will make a best effort to use only the number of completion tokens specified, across multiple turns of the run. If the run exceeds the number of completion tokens specified, the run will end with status `incomplete`. | +| `max_completion_tokens` | integer | optional | The maximum number of completion tokens that might be used over the course of the run. The run will make a best effort to use only the number of completion tokens specified, across multiple turns of the run. If the run exceeds the number of completion tokens specified, the run will end with status `incomplete`. | +| `truncation_strategy` | [truncationObject](#truncation-object) | optional | Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run. | +| `tool_choice` | string or object | optional | Controls which (if any) tool is called by the model. A `none` value means the model won't call any tools and instead generates a message. `auto` is the default value and means the model can pick between generating a message or calling a tool. Specifying a particular tool like `{"type": "file_search"}` or `{"type": "function", "function": {"name": "my_function"}}` forces the model to call that tool. | +| `response_format` | string or object | optional | Specifies the format that the model must output. Compatible with GPT-4 Turbo and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`.
Setting to `{ "type": "json_object" }` enables JSON mode, which guarantees the message the model generates is valid JSON.
**Important**: when using JSON mode, you must also instruct the model to produce JSON yourself via a system or user message. Without this, the model might generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Also note that the message content might be partially cut off if `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length. | ### Returns @@ -111,7 +130,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -128,7 +147,7 @@ run = client.beta.threads.create_and_run( # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/runs?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/runs?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ @@ -146,7 +165,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/runs?api-version ## List runs ```http -GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs?api-version=2024-05-01-preview +GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs?api-version=2024-08-01-preview ``` Returns a list of runs belonging to a thread. @@ -179,7 +198,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -202,7 +221,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs ## List run steps ```http -GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/steps?api-version=2024-05-01-preview +GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/steps?api-version=2024-08-01-preview ``` Returns a list of steps belonging to a run. @@ -236,7 +255,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -250,7 +269,7 @@ print(run_steps) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/steps?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/steps?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' ``` @@ -276,7 +295,7 @@ print(run) # [REST](#tab/rest) ```http -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}?api-version=2024-05-01-preview +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}?api-version=2024-08-01-preview -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' ``` @@ -305,7 +324,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -319,7 +338,7 @@ print(run) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' ``` @@ -329,7 +348,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs ## Retrieve run step ```http -GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/steps/{step_id}?api-version=2024-05-01-preview +GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/steps/{step_id}?api-version=2024-08-01-preview ``` Retrieves a run step. @@ -355,7 +374,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -370,7 +389,7 @@ print(run_step) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/steps/{step_id}?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/steps/{step_id}?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' ``` @@ -380,7 +399,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs ## Modify run ```http -POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}?api-version=2024-05-01-preview +POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}?api-version=2024-08-01-preview ``` Modifies a run. @@ -411,7 +430,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -426,7 +445,7 @@ print(run) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' -d '{ @@ -441,7 +460,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs ## Submit tool outputs to run ```http -POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/submit_tool_outputs?api-version=2024-05-01-preview +POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/submit_tool_outputs?api-version=2024-08-01-preview ``` When a run has the status: "requires_action" and required_action.type is submit_tool_outputs, this endpoint can be used to submit the outputs from the tool calls once they're all completed. All outputs must be submitted in a single request. @@ -458,6 +477,7 @@ When a run has the status: "requires_action" and required_action.type is submit_ |Name | Type | Required | Description | |--- |--- |--- |--- | | `tool_outputs` | array | Required | A list of tools for which the outputs are being submitted. | +| `stream` | boolean | Optional | If `true`, returns a stream of events that happen during the Run as server-sent events, terminating when the Run enters a terminal state with a `data: [DONE]` message. | ### Returns @@ -472,7 +492,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -492,7 +512,7 @@ print(run) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/submit_tool_outputs?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/submit_tool_outputs?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ @@ -511,7 +531,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs ## Cancel a run ```http -POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/cancel?api-version=2024-05-01-preview +POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/cancel?api-version=2024-08-01-preview ``` Cancels a run that is in_progress. @@ -536,7 +556,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -550,7 +570,7 @@ print(run) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/cancel?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}/runs/{run_id}/cancel?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ -X POST @@ -586,7 +606,9 @@ Represents an execution run on a thread. | `max_prompt_tokens` | integer or null | The maximum number of prompt tokens specified to have been used over the course of the run. | | `max_completion_tokens` | integer or null | The maximum number of completion tokens specified to have been used over the course of the run. | | `usage` | object or null | Usage statistics related to the run. This value will be null if the run is not in a terminal state (for example `in_progress`, `queued`). | - +| `truncation_strategy | object | Controls for how a thread will be truncated prior to the run. | +| `response_format` | string | The format that the model must output. Compatible with GPT-4 Turbo and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`. | +| `tool_choice` | string | Controls which (if any) tool is called by the model. `none` means the model won't call any tools and instead generates a message. `auto` is the default value and means the model can pick between generating a message or calling a tool. | ## Run step object From 9d75ea6f32e1485915ed798f4df1baae186f973e Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Tue, 17 Sep 2024 13:03:38 -0700 Subject: [PATCH 07/12] threads and assistants refresh --- .../openai/assistants-reference-threads.md | 43 +++++++++++++------ .../openai/assistants-reference.md | 43 +++++++++++-------- 2 files changed, 56 insertions(+), 30 deletions(-) diff --git a/articles/ai-services/openai/assistants-reference-threads.md b/articles/ai-services/openai/assistants-reference-threads.md index cd6416f6044..06eb0a258fe 100644 --- a/articles/ai-services/openai/assistants-reference-threads.md +++ b/articles/ai-services/openai/assistants-reference-threads.md @@ -5,9 +5,9 @@ description: Learn how to use Azure OpenAI's Python & REST API threads with Assi manager: nitinme ms.service: azure-ai-openai ms.topic: conceptual -ms.date: 05/20/2024 -author: mrbullwinkle -ms.author: mbullwin +ms.date: 09/17/2024 +author: aahill +ms.author: aahi recommendations: false ms.custom: devx-track-python --- @@ -21,7 +21,7 @@ This article provides reference documentation for Python and REST for the new As ## Create a thread ```http -POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads?api-version=2024-05-01-preview +POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads?api-version=2024-08-01-preview ``` Create a thread. @@ -32,6 +32,22 @@ Create a thread. |--- |--- |--- |--- | |`messages`|array| Optional | A list of messages to start the thread with. | |`metadata`| map | Optional | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long. | +| `tool_resources` | [object](#tool_resources-properties) | Optional | A set of resources that are made available to the assistant's tools in this thread. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs. | + +### tool_resources properties + +**code_interpreter** + +| Name | Type | Description | Default | +|--- |--- |--- |--- | +| `file_ids` | array | A list of file IDs made available to the code_interpreter tool. There can be a maximum of 20 files associated with the tool. | `[]` | + +**file_search** + +| Name | Type | Description | Default | +|--- |--- |--- |--- | +| `vector_store_ids` | array | The vector store attached to this thread. There can be a maximum of 1 vector store attached to the thread. | `[]` | +| `vector_stores` | array | A helper to create a vector store with file_ids and attach it to this thread. There can be a maximum of 1 vector store attached to the thread. | `[]` | ### Returns @@ -46,7 +62,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -57,7 +73,7 @@ print(empty_thread) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ -d '' @@ -68,7 +84,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads?api-version=2024 ## Retrieve thread ```http -GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}?api-version=2024-05-01-preview +GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}?api-version=2024-08-01-preview ``` Retrieves a thread. @@ -93,7 +109,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -104,7 +120,7 @@ print(my_thread) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' ``` @@ -114,7 +130,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}?api- ## Modify thread ```http -POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}?api-version=2024-05-01-preview +POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}?api-version=2024-08-01-preview ``` Modifies a thread. @@ -129,7 +145,8 @@ Modifies a thread. |Name | Type | Required | Description | |--- |--- |--- |--- | -| metadata| map | Optional | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long.| +| `metadata` | map | Optional | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long.| +| `tool_resources` | [object](#tool_resources-properties) | Optional | A set of resources that are made available to the assistant's tools in this thread. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs. | ### Returns @@ -144,7 +161,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -161,7 +178,7 @@ print(my_updated_thread) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/threads/{thread_id}?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ diff --git a/articles/ai-services/openai/assistants-reference.md b/articles/ai-services/openai/assistants-reference.md index e731c8bfdf5..8e26a988b59 100644 --- a/articles/ai-services/openai/assistants-reference.md +++ b/articles/ai-services/openai/assistants-reference.md @@ -5,9 +5,9 @@ description: Learn how to use Azure OpenAI's Python & REST API with Assistants. manager: nitinme ms.service: azure-ai-openai ms.topic: conceptual -ms.date: 07/25/2024 -author: mrbullwinkle -ms.author: mbullwin +ms.date: 09/17/2024 +author: aahill +ms.author: aahi recommendations: false ms.custom: devx-track-python --- @@ -41,6 +41,7 @@ Create an assistant with a model and instructions. | temperature | number or null | Optional | Defaults to 1. Determines what sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. | | top_p | number or null | Optional | Defaults to 1. An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. | | response_format | string or object | Optional | Specifies the format that the model must output. Compatible with GPT-4 Turbo and all GPT-3.5 Turbo models since gpt-3.5-turbo-1106. Setting this parameter to `{ "type": "json_object" }` enables JSON mode, which guarantees the message the model generates is valid JSON. Importantly, when using JSON mode, you must also instruct the model to produce JSON yourself using a system or user message. Without this instruction, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Additionally, the message content may be partially cut off if you use `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length. | +| tool_resources | object | Optional | A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs. | ### Returns @@ -55,7 +56,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -69,7 +70,7 @@ assistant = client.beta.assistants.create( # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ @@ -113,7 +114,7 @@ from openai import AzureOpenAI client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -128,7 +129,7 @@ print(my_assistants.data) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' ``` @@ -139,7 +140,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants?api-version=2 ## Retrieve assistant ```http -GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant_id}?api-version=2024-05-01-preview +GET https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant_id}?api-version=2024-08-01-preview ``` Retrieves an assistant. @@ -161,7 +162,7 @@ The [assistant](#assistant-object) object matching the specified ID. ```python client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -172,7 +173,7 @@ print(my_assistant) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant-id}?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant-id}?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' ``` @@ -182,7 +183,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant-id ## Modify assistant ```http -POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant_id}?api-version=2024-05-01-preview +POST https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant_id}?api-version=2024-08-01-preview ``` Modifies an assistant. @@ -202,8 +203,11 @@ Modifies an assistant. | `description` | string or null | Optional | The description of the assistant. The maximum length is 512 characters. | | `instructions` | string or null | Optional | The system instructions that the assistant uses. The maximum length is 32768 characters. | | `tools` | array | Optional | Defaults to []. A list of tools enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types code_interpreter, or function. A `function` description can be a maximum of 1,024 characters. | -| `file_ids` | array | Optional | Defaults to []. A list of File IDs attached to this assistant. There can be a maximum of 20 files attached to the assistant. Files are ordered by their creation date in ascending order. If a file was previously attached to the list but does not show up in the list, it will be deleted from the assistant. | | `metadata` | map | Optional | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long. | +| `temperature` | number or null | Optional | Defaults to 1. Determines what sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. | +| `top_p` | number or null | Optional | Defaults to 1. An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. | +| `response_format` | string or object | Optional | Specifies the format that the model must output. Compatible with GPT-4 Turbo and all GPT-3.5 Turbo models since gpt-3.5-turbo-1106. Setting this parameter to `{ "type": "json_object" }` enables JSON mode, which guarantees the message the model generates is valid JSON. Importantly, when using JSON mode, you must also instruct the model to produce JSON yourself using a system or user message. Without this instruction, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Additionally, the message content may be partially cut off if you use `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length. | +| `tool_resources` | object | Optional | A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs. | **Returns** @@ -216,7 +220,7 @@ The modified [assistant object](#assistant-object). ```python client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -235,7 +239,7 @@ print(my_updated_assistant) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant-id}?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant-id}?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ -d '{ @@ -251,7 +255,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant-id ## Delete assistant ```http -DELETE https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant_id}?api-version=2024-05-01-preview +DELETE https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant_id}?api-version=2024-08-01-preview ``` Delete an assistant. @@ -273,7 +277,7 @@ Deletion status. ```python client = AzureOpenAI( api_key=os.getenv("AZURE_OPENAI_API_KEY"), - api_version="2024-05-01-preview", + api_version="2024-08-01-preview", azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT") ) @@ -284,7 +288,7 @@ print(response) # [REST](#tab/rest) ```console -curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant-id}?api-version=2024-05-01-preview \ +curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant-id}?api-version=2024-08-01-preview \ -H "api-key: $AZURE_OPENAI_API_KEY" \ -H 'Content-Type: application/json' \ -X DELETE @@ -311,3 +315,8 @@ Assistants use the [same API for file upload as fine-tuning](/rest/api/azureopen | `tools` | array | A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types code_interpreter, or function. A `function` description can be a maximum of 1,024 characters.| | `file_ids` | array | A list of file IDs attached to this assistant. There can be a maximum of 20 files attached to the assistant. Files are ordered by their creation date in ascending order.| | `metadata` | map | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long.| + +| `temperature` | number or null | Optional | Defaults to 1. Determines what sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. | +| `top_p` | number or null | Optional | Defaults to 1. An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. | +| `response_format` | string or object | Optional | Specifies the format that the model must output. Compatible with GPT-4 Turbo and all GPT-3.5 Turbo models since gpt-3.5-turbo-1106. Setting this parameter to `{ "type": "json_object" }` enables JSON mode, which guarantees the message the model generates is valid JSON. Importantly, when using JSON mode, you must also instruct the model to produce JSON yourself using a system or user message. Without this instruction, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Additionally, the message content may be partially cut off if you use `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length. | +| `tool_resources` | object | Optional | A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs. | From ea779f7c7682bd540a237134314e3dff915a74d3 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Tue, 17 Sep 2024 13:21:53 -0700 Subject: [PATCH 08/12] fixes --- articles/ai-services/openai/assistants-reference.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/articles/ai-services/openai/assistants-reference.md b/articles/ai-services/openai/assistants-reference.md index 8e26a988b59..f54fbcde149 100644 --- a/articles/ai-services/openai/assistants-reference.md +++ b/articles/ai-services/openai/assistants-reference.md @@ -36,7 +36,6 @@ Create an assistant with a model and instructions. | description| string or null | Optional | The description of the assistant. The maximum length is 512 characters.| | instructions | string or null | Optional | The system instructions that the assistant uses. The maximum length is 256,000 characters.| | tools | array | Optional | Defaults to []. A list of tools enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can currently be of types `code_interpreter`, or `function`. A `function` description can be a maximum of 1,024 characters. | -| file_ids | array | Optional | Defaults to []. A list of file IDs attached to this assistant. There can be a maximum of 20 files attached to the assistant. Files are ordered by their creation date in ascending order.| | metadata | map | Optional | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long.| | temperature | number or null | Optional | Defaults to 1. Determines what sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. | | top_p | number or null | Optional | Defaults to 1. An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. | @@ -230,7 +229,6 @@ my_updated_assistant = client.beta.assistants.update( name="HR Helper", tools=[{"type": "code-interpreter"}], model="gpt-4", #model = model deployment name - file_ids=["assistant-abc123", "assistant-abc456"], ) print(my_updated_assistant) @@ -245,8 +243,7 @@ curl https://YOUR_RESOURCE_NAME.openai.azure.com/openai/assistants/{assistant-id -d '{ "instructions": "You are an HR bot, and you have access to files to answer employee questions about company policies. Always response with info from either of the files.", "tools": [{"type": "code-interpreter"}], - "model": "gpt-4", - "file_ids": ["assistant-abc123", "assistant-abc456"] + "model": "gpt-4" }' ``` @@ -313,7 +310,6 @@ Assistants use the [same API for file upload as fine-tuning](/rest/api/azureopen | `model` | string | Name of the model deployment name to use.| | `instructions` | string or null | The system instructions that the assistant uses. The maximum length is 32768 characters.| | `tools` | array | A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types code_interpreter, or function. A `function` description can be a maximum of 1,024 characters.| -| `file_ids` | array | A list of file IDs attached to this assistant. There can be a maximum of 20 files attached to the assistant. Files are ordered by their creation date in ascending order.| | `metadata` | map | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long.| | `temperature` | number or null | Optional | Defaults to 1. Determines what sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. | From 7cb2e97bc1e18ed75f37018fc7bde7b29847553a Mon Sep 17 00:00:00 2001 From: Charlie Wei <91643249+charliewei0716@users.noreply.github.com> Date: Wed, 25 Sep 2024 14:27:23 +0800 Subject: [PATCH 09/12] Update use-your-data.md --- articles/ai-services/openai/concepts/use-your-data.md | 1 - 1 file changed, 1 deletion(-) diff --git a/articles/ai-services/openai/concepts/use-your-data.md b/articles/ai-services/openai/concepts/use-your-data.md index fb14c6a740d..af25ab97eb1 100644 --- a/articles/ai-services/openai/concepts/use-your-data.md +++ b/articles/ai-services/openai/concepts/use-your-data.md @@ -184,7 +184,6 @@ To keep your Azure AI Search index up-to-date with your latest data, you can sch After the data ingestion is set to a cadence other than once, Azure AI Search indexers will be created with a schedule equivalent to `0.5 * the cadence specified`. This means that at the specified cadence, the indexers will pull, reprocess, and index the documents that were added or modified from the storage container. This process ensures that the updated data gets preprocessed and indexed in the final index at the desired cadence automatically. To update your data, you only need to upload the additional documents from the Azure portal. From the portal, select **Storage Account** > **Containers**. Select the name of the original container, then **Upload**. The index will pick up the files automatically after the scheduled refresh period. The intermediate assets created in the Azure AI Search resource won't be cleaned up after ingestion to allow for future runs. These assets are: - `{Index Name}-index` - `{Index Name}-indexer` - - `{Index Name}-indexer-chunk` - `{Index Name}-datasource` - `{Index Name}-skillset` From 84b704b3629b0f9934675f6738baabcb3f5b4e6d Mon Sep 17 00:00:00 2001 From: Sheri Gilley Date: Fri, 27 Sep 2024 08:35:43 -0500 Subject: [PATCH 10/12] Update how-to-setup-vs-code.md Remove preview --- articles/machine-learning/how-to-setup-vs-code.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/articles/machine-learning/how-to-setup-vs-code.md b/articles/machine-learning/how-to-setup-vs-code.md index f436f4ebf1b..3e7df5c67eb 100644 --- a/articles/machine-learning/how-to-setup-vs-code.md +++ b/articles/machine-learning/how-to-setup-vs-code.md @@ -1,5 +1,5 @@ --- -title: Set up Visual Studio Code desktop with the Azure Machine Learning extension (preview) +title: Set up Visual Studio Code desktop with the Azure Machine Learning extension titleSuffix: Azure Machine Learning description: Learn how to set up the Azure Machine Learning Visual Studio Code extension. services: machine-learning @@ -14,7 +14,7 @@ ms.custom: devplatv2, build-2023 monikerRange: 'azureml-api-1 || azureml-api-2' --- -# Set up Visual Studio Code desktop with the Azure Machine Learning extension (preview) +# Set up Visual Studio Code desktop with the Azure Machine Learning extension Learn how to set up the Azure Machine Learning Visual Studio Code extension for your machine learning workflows. You only need to do this setup when using the VS Code desktop application. If you use VS Code for the Web, this is handled for you. @@ -26,8 +26,6 @@ The Azure Machine Learning extension for VS Code provides a user interface to: - Debug machine learning experiments locally - Schema-based language support, autocompletion and diagnostics for specification file authoring -[!INCLUDE [machine-learning-preview-generic-disclaimer](includes/machine-learning-preview-generic-disclaimer.md)] - ## Prerequisites - Azure subscription. If you don't have one, sign up to try the [free or paid version of Azure Machine Learning](https://azure.microsoft.com/free/). From 58e74f2ebe6818009ceea60422c2608a542c1fe1 Mon Sep 17 00:00:00 2001 From: Mope Akande <17515964+msakande@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:14:37 -0500 Subject: [PATCH 11/12] Revert "Revert "Cohere Command - new models"" --- .../how-to/deploy-models-cohere-command.md | 250 ++++++++++++++---- .../how-to/model-catalog-overview.md | 2 +- .../includes/region-availability-maas.md | 4 +- 3 files changed, 205 insertions(+), 51 deletions(-) diff --git a/articles/ai-studio/how-to/deploy-models-cohere-command.md b/articles/ai-studio/how-to/deploy-models-cohere-command.md index 6a7ec5cea5a..0989b9fff7a 100644 --- a/articles/ai-studio/how-to/deploy-models-cohere-command.md +++ b/articles/ai-studio/how-to/deploy-models-cohere-command.md @@ -5,7 +5,7 @@ description: Learn how to use Cohere Command chat models with Azure AI Studio. ms.service: azure-ai-studio manager: scottpolly ms.topic: how-to -ms.date: 08/08/2024 +ms.date: 09/23/2024 ms.reviewer: shubhiraj reviewer: shubhirajMsft ms.author: mopeakande @@ -29,14 +29,52 @@ The Cohere family of models includes various models optimized for different use The Cohere Command chat models include the following models: +# [Cohere Command R+ 08-2024](#tab/cohere-command-r-plus-08-2024) + +Command R+ 08-2024 is a generative large language model optimized for various use cases, including reasoning, summarization, and question answering. + +* **Model Architecture**: Command R+ 08-2024 is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The mode is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. +* **Context length:** Command R+ 08-2024 supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. + +We recommend using Command R+ 08-2024 for those workflows that lean on complex retrieval augmented generation (RAG) functionality, multi-step tool use (agents), and structured outputs. + + +The following models are available: + +* [Cohere-command-r-plus-08-2024](https://aka.ms/azureai/landing/Cohere-command-r-plus-08-2024) + + +# [Cohere Command R 08-2024](#tab/cohere-command-r-08-2024) + +Command R 08-2024 is a large language model optimized for various use cases, including reasoning, summarization, and question answering. + +* **Model Architecture**: Command R 08-2024 is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. +* **Context length:** Command R 08-2024 supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. + + +The following models are available: + +* [Cohere-command-r-08-2024](https://aka.ms/azureai/landing/Cohere-command-r-08-2024) + + # [Cohere Command R+](#tab/cohere-command-r-plus) Command R+ is a generative large language model optimized for various use cases, including reasoning, summarization, and question answering. -* **Model Architecture**: Both Command R and Command R+ are autoregressive language models that use an optimized transformer architecture. After pre-training, the models use supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. -* **Languages covered**: The models are optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Model Architecture**: Command R+ is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. * **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. -* **Context length:** Command R and Command R+ support a context length of 128 K. +* **Context length:** Command R+ supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. We recommend using Command R+ for those workflows that lean on complex retrieval augmented generation (RAG) functionality and multi-step tool use (agents). @@ -50,10 +88,10 @@ The following models are available: Command R is a large language model optimized for various use cases, including reasoning, summarization, and question answering. -* **Model Architecture**: Both Command R and Command R+ are autoregressive language models that use an optimized transformer architecture. After pre-training, the models use supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. -* **Languages covered**: The models are optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Model Architecture**: Command R is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. * **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. -* **Context length:** Command R and Command R+ support a context length of 128 K. +* **Context length:** Command R supports a context length of 128 K. Command R is great for simpler retrieval augmented generation (RAG) and single-step tool use tasks. It's also great for use in applications where price is a major consideration. @@ -141,7 +179,7 @@ print("Model provider name:", model_info.model_provider_name) ``` ```console -Model name: Cohere-command-r-plus +Model name: Cohere-command-r-plus-08-2024 Model type: chat-completions Model provider name: Cohere ``` @@ -175,7 +213,7 @@ print("\tCompletion tokens:", response.usage.completion_tokens) ```console Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred. -Model: Cohere-command-r-plus +Model: Cohere-command-r-plus-08-2024 Usage: Prompt tokens: 19 Total tokens: 91 @@ -244,7 +282,7 @@ response = client.complete( stop=["<|endoftext|>"], temperature=0, top_p=1, - response_format=ChatCompletionsResponseFormatText(), + response_format={ "type": ChatCompletionsResponseFormatText() }, ) ``` @@ -264,7 +302,7 @@ response = client.complete( " the following format: { ""answer"": ""response"" }."), UserMessage(content="How many languages are in the world?"), ], - response_format=ChatCompletionsResponseFormatJSON() + response_format={ "type": ChatCompletionsResponseFormatJSON() } ) ``` @@ -332,7 +370,7 @@ def get_flight_info(loc_origin: str, loc_destination: str): ``` > [!NOTE] -> Cohere-command-r-plus and Cohere-command-r require a tool's responses to be a valid JSON content formatted as a string. When constructing messages of type *Tool*, ensure the response is a valid JSON string. +> Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus, and Cohere-command-r require a tool's responses to be a valid JSON content formatted as a string. When constructing messages of type *Tool*, ensure the response is a valid JSON string. Prompt the model to book flights with the help of this function: @@ -464,14 +502,52 @@ except HttpResponseError as ex: The Cohere Command chat models include the following models: +# [Cohere Command R+ 08-2024](#tab/cohere-command-r-plus-08-2024) + +Command R+ 08-2024 is a generative large language model optimized for various use cases, including reasoning, summarization, and question answering. + +* **Model Architecture**: Command R+ 08-2024 is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The mode is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. +* **Context length:** Command R+ 08-2024 supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. + +We recommend using Command R+ 08-2024 for those workflows that lean on complex retrieval augmented generation (RAG) functionality, multi-step tool use (agents), and structured outputs. + + +The following models are available: + +* [Cohere-command-r-plus-08-2024](https://aka.ms/azureai/landing/Cohere-command-r-plus-08-2024) + + +# [Cohere Command R 08-2024](#tab/cohere-command-r-08-2024) + +Command R 08-2024 is a large language model optimized for various use cases, including reasoning, summarization, and question answering. + +* **Model Architecture**: Command R 08-2024 is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. +* **Context length:** Command R 08-2024 supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. + + +The following models are available: + +* [Cohere-command-r-08-2024](https://aka.ms/azureai/landing/Cohere-command-r-08-2024) + + # [Cohere Command R+](#tab/cohere-command-r-plus) Command R+ is a generative large language model optimized for various use cases, including reasoning, summarization, and question answering. -* **Model Architecture**: Both Command R and Command R+ are autoregressive language models that use an optimized transformer architecture. After pre-training, the models use supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. -* **Languages covered**: The models are optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Model Architecture**: Command R+ is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. * **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. -* **Context length:** Command R and Command R+ support a context length of 128 K. +* **Context length:** Command R+ supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. We recommend using Command R+ for those workflows that lean on complex retrieval augmented generation (RAG) functionality and multi-step tool use (agents). @@ -485,10 +561,10 @@ The following models are available: Command R is a large language model optimized for various use cases, including reasoning, summarization, and question answering. -* **Model Architecture**: Both Command R and Command R+ are autoregressive language models that use an optimized transformer architecture. After pre-training, the models use supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. -* **Languages covered**: The models are optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Model Architecture**: Command R is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. * **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. -* **Context length:** Command R and Command R+ support a context length of 128 K. +* **Context length:** Command R supports a context length of 128 K. Command R is great for simpler retrieval augmented generation (RAG) and single-step tool use tasks. It's also great for use in applications where price is a major consideration. @@ -574,7 +650,7 @@ console.log("Model provider name: ", model_info.body.model_provider_name) ``` ```console -Model name: Cohere-command-r-plus +Model name: Cohere-command-r-plus-08-2024 Model type: chat-completions Model provider name: Cohere ``` @@ -614,7 +690,7 @@ console.log("\tCompletion tokens:", response.body.usage.completion_tokens); ```console Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred. -Model: Cohere-command-r-plus +Model: Cohere-command-r-plus-08-2024 Usage: Prompt tokens: 19 Total tokens: 91 @@ -788,7 +864,7 @@ function get_flight_info(loc_origin, loc_destination) { ``` > [!NOTE] -> Cohere-command-r-plus and Cohere-command-r require a tool's responses to be a valid JSON content formatted as a string. When constructing messages of type *Tool*, ensure the response is a valid JSON string. +> Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus, and Cohere-command-r require a tool's responses to be a valid JSON content formatted as a string. When constructing messages of type *Tool*, ensure the response is a valid JSON string. Prompt the model to book flights with the help of this function: @@ -913,14 +989,52 @@ catch (error) { The Cohere Command chat models include the following models: +# [Cohere Command R+ 08-2024](#tab/cohere-command-r-plus-08-2024) + +Command R+ 08-2024 is a generative large language model optimized for various use cases, including reasoning, summarization, and question answering. + +* **Model Architecture**: Command R+ 08-2024 is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The mode is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. +* **Context length:** Command R+ 08-2024 supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. + +We recommend using Command R+ 08-2024 for those workflows that lean on complex retrieval augmented generation (RAG) functionality, multi-step tool use (agents), and structured outputs. + + +The following models are available: + +* [Cohere-command-r-plus-08-2024](https://aka.ms/azureai/landing/Cohere-command-r-plus-08-2024) + + +# [Cohere Command R 08-2024](#tab/cohere-command-r-08-2024) + +Command R 08-2024 is a large language model optimized for various use cases, including reasoning, summarization, and question answering. + +* **Model Architecture**: Command R 08-2024 is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. +* **Context length:** Command R 08-2024 supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. + + +The following models are available: + +* [Cohere-command-r-08-2024](https://aka.ms/azureai/landing/Cohere-command-r-08-2024) + + # [Cohere Command R+](#tab/cohere-command-r-plus) Command R+ is a generative large language model optimized for various use cases, including reasoning, summarization, and question answering. -* **Model Architecture**: Both Command R and Command R+ are autoregressive language models that use an optimized transformer architecture. After pre-training, the models use supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. -* **Languages covered**: The models are optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Model Architecture**: Command R+ is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. * **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. -* **Context length:** Command R and Command R+ support a context length of 128 K. +* **Context length:** Command R+ supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. We recommend using Command R+ for those workflows that lean on complex retrieval augmented generation (RAG) functionality and multi-step tool use (agents). @@ -934,10 +1048,10 @@ The following models are available: Command R is a large language model optimized for various use cases, including reasoning, summarization, and question answering. -* **Model Architecture**: Both Command R and Command R+ are autoregressive language models that use an optimized transformer architecture. After pre-training, the models use supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. -* **Languages covered**: The models are optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Model Architecture**: Command R is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. * **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. -* **Context length:** Command R and Command R+ support a context length of 128 K. +* **Context length:** Command R supports a context length of 128 K. Command R is great for simpler retrieval augmented generation (RAG) and single-step tool use tasks. It's also great for use in applications where price is a major consideration. @@ -969,7 +1083,7 @@ Deployment to a serverless API endpoint doesn't require quota from your subscrip ### The inference package installed -You can consume predictions from this model by using the `Azure.AI.Inference` package from [Nuget](https://www.nuget.org/). To install this package, you need the following prerequisites: +You can consume predictions from this model by using the `Azure.AI.Inference` package from [NuGet](https://www.nuget.org/). To install this package, you need the following prerequisites: * The endpoint URL. To construct the client library, you need to pass in the endpoint URL. The endpoint URL has the form `https://your-host-name.your-azure-region.inference.ai.azure.com`, where `your-host-name` is your unique model deployment host name and `your-azure-region` is the Azure region where the model is deployed (for example, eastus2). * Depending on your model deployment and authentication preference, you need either a key to authenticate against the service, or Microsoft Entra ID credentials. The key is a 32-character string. @@ -995,7 +1109,7 @@ using Azure.Identity; using Azure.AI.Inference; ``` -This example also use the following namespaces but you may not always need them: +This example also uses the following namespaces but you may not always need them: ```csharp @@ -1042,7 +1156,7 @@ Console.WriteLine($"Model provider name: {modelInfo.Value.ModelProviderName}"); ``` ```console -Model name: Cohere-command-r-plus +Model name: Cohere-command-r-plus-08-2024 Model type: chat-completions Model provider name: Cohere ``` @@ -1077,7 +1191,7 @@ Console.WriteLine($"\tCompletion tokens: {response.Value.Usage.CompletionTokens} ```console Response: As of now, it's estimated that there are about 7,000 languages spoken around the world. However, this number can vary as some languages become extinct and new ones develop. It's also important to note that the number of speakers can greatly vary between languages, with some having millions of speakers and others only a few hundred. -Model: Cohere-command-r-plus +Model: Cohere-command-r-plus-08-2024 Usage: Prompt tokens: 19 Total tokens: 91 @@ -1260,7 +1374,7 @@ static string getFlightInfo(string loc_origin, string loc_destination) ``` > [!NOTE] -> Cohere-command-r-plus and Cohere-command-r require a tool's responses to be a valid JSON content formatted as a string. When constructing messages of type *Tool*, ensure the response is a valid JSON string. +> Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus, and Cohere-command-r require a tool's responses to be a valid JSON content formatted as a string. When constructing messages of type *Tool*, ensure the response is a valid JSON string. Prompt the model to book flights with the help of this function: @@ -1387,14 +1501,52 @@ catch (RequestFailedException ex) The Cohere Command chat models include the following models: +# [Cohere Command R+ 08-2024](#tab/cohere-command-r-plus-08-2024) + +Command R+ 08-2024 is a generative large language model optimized for various use cases, including reasoning, summarization, and question answering. + +* **Model Architecture**: Command R+ 08-2024 is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The mode is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. +* **Context length:** Command R+ 08-2024 supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. + +We recommend using Command R+ 08-2024 for those workflows that lean on complex retrieval augmented generation (RAG) functionality, multi-step tool use (agents), and structured outputs. + + +The following models are available: + +* [Cohere-command-r-plus-08-2024](https://aka.ms/azureai/landing/Cohere-command-r-plus-08-2024) + + +# [Cohere Command R 08-2024](#tab/cohere-command-r-08-2024) + +Command R 08-2024 is a large language model optimized for various use cases, including reasoning, summarization, and question answering. + +* **Model Architecture**: Command R 08-2024 is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. +* **Context length:** Command R 08-2024 supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. + + +The following models are available: + +* [Cohere-command-r-08-2024](https://aka.ms/azureai/landing/Cohere-command-r-08-2024) + + # [Cohere Command R+](#tab/cohere-command-r-plus) Command R+ is a generative large language model optimized for various use cases, including reasoning, summarization, and question answering. -* **Model Architecture**: Both Command R and Command R+ are autoregressive language models that use an optimized transformer architecture. After pre-training, the models use supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. -* **Languages covered**: The models are optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Model Architecture**: Command R+ is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. * **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. -* **Context length:** Command R and Command R+ support a context length of 128 K. +* **Context length:** Command R+ supports a context length of 128 K. +* **Input:** Text only. +* **Output:** Text only. We recommend using Command R+ for those workflows that lean on complex retrieval augmented generation (RAG) functionality and multi-step tool use (agents). @@ -1408,10 +1560,10 @@ The following models are available: Command R is a large language model optimized for various use cases, including reasoning, summarization, and question answering. -* **Model Architecture**: Both Command R and Command R+ are autoregressive language models that use an optimized transformer architecture. After pre-training, the models use supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. -* **Languages covered**: The models are optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. +* **Model Architecture**: Command R is an autoregressive language model that uses an optimized transformer architecture. After pre-training, the model uses supervised fine-tuning (SFT) and preference training to align model behavior to human preferences for helpfulness and safety. +* **Languages covered**: The model is optimized to perform well in the following languages: English, French, Spanish, Italian, German, Brazilian Portuguese, Japanese, Korean, simplified Chinese, and Arabic. * **Pre-training data also included the following 13 languages:** Russian, Polish, Turkish, Vietnamese, Dutch, Czech, Indonesian, Ukrainian, Romanian, Greek, Hindi, Hebrew, and Persian. -* **Context length:** Command R and Command R+ support a context length of 128 K. +* **Context length:** Command R supports a context length of 128 K. Command R is great for simpler retrieval augmented generation (RAG) and single-step tool use tasks. It's also great for use in applications where price is a major consideration. @@ -1475,7 +1627,7 @@ The response is as follows: ```json { - "model_name": "Cohere-command-r-plus", + "model_name": "Cohere-command-r-plus-08-2024", "model_type": "chat-completions", "model_provider_name": "Cohere" } @@ -1508,7 +1660,7 @@ The response is as follows, where you can see the model's usage statistics: "id": "0a1234b5de6789f01gh2i345j6789klm", "object": "chat.completion", "created": 1718726686, - "model": "Cohere-command-r-plus", + "model": "Cohere-command-r-plus-08-2024", "choices": [ { "index": 0, @@ -1565,7 +1717,7 @@ You can visualize how streaming generates content: "id": "23b54589eba14564ad8a2e6978775a39", "object": "chat.completion.chunk", "created": 1718726371, - "model": "Cohere-command-r-plus", + "model": "Cohere-command-r-plus-08-2024", "choices": [ { "index": 0, @@ -1588,7 +1740,7 @@ The last message in the stream has `finish_reason` set, indicating the reason fo "id": "23b54589eba14564ad8a2e6978775a39", "object": "chat.completion.chunk", "created": 1718726371, - "model": "Cohere-command-r-plus", + "model": "Cohere-command-r-plus-08-2024", "choices": [ { "index": 0, @@ -1639,7 +1791,7 @@ Explore other parameters that you can specify in the inference client. For a ful "id": "0a1234b5de6789f01gh2i345j6789klm", "object": "chat.completion", "created": 1718726686, - "model": "Cohere-command-r-plus", + "model": "Cohere-command-r-plus-08-2024", "choices": [ { "index": 0, @@ -1689,7 +1841,7 @@ Cohere Command chat models can create JSON outputs. Set `response_format` to `js "id": "0a1234b5de6789f01gh2i345j6789klm", "object": "chat.completion", "created": 1718727522, - "model": "Cohere-command-r-plus", + "model": "Cohere-command-r-plus-08-2024", "choices": [ { "index": 0, @@ -1778,7 +1930,7 @@ The following code example creates a tool definition that is able to look from f In this example, the function's output is that there are no flights available for the selected route, but the user should consider taking a train. > [!NOTE] -> Cohere-command-r-plus and Cohere-command-r require a tool's responses to be a valid JSON content formatted as a string. When constructing messages of type *Tool*, ensure the response is a valid JSON string. +> Cohere-command-r-plus-08-2024, Cohere-command-r-08-2024, Cohere-command-r-plus, and Cohere-command-r require a tool's responses to be a valid JSON content formatted as a string. When constructing messages of type *Tool*, ensure the response is a valid JSON string. Prompt the model to book flights with the help of this function: @@ -1833,7 +1985,7 @@ You can inspect the response to find out if a tool needs to be called. Inspect t "id": "0a1234b5de6789f01gh2i345j6789klm", "object": "chat.completion", "created": 1718726007, - "model": "Cohere-command-r-plus", + "model": "Cohere-command-r-plus-08-2024", "choices": [ { "index": 0, @@ -1972,7 +2124,7 @@ The following example shows how to handle events when the model detects harmful ## More inference examples -For more examples of how to use Cohere, see the following examples and tutorials: +For more examples of how to use Cohere models, see the following examples and tutorials: | Description | Language | Sample | |-------------------------------------------|-------------------|-----------------------------------------------------------------| @@ -1995,7 +2147,7 @@ For more examples of how to use Cohere, see the following examples and tutorials | Command R+ tool/function calling, using LangChain | `cohere`, `langchain`, `langchain_cohere` | [command_tools-langchain.ipynb](https://github.com/Azure/azureml-examples/blob/main/sdk/python/foundation-models/cohere/command_tools-langchain.ipynb) | -## Cost and quota considerations for Cohere family of models deployed as serverless API endpoints +## Cost and quota considerations for Cohere models deployed as serverless API endpoints Quota is managed per deployment. Each deployment has a rate limit of 200,000 tokens per minute and 1,000 API requests per minute. However, we currently limit one deployment per model per project. Contact Microsoft Azure Support if the current rate limits aren't sufficient for your scenarios. @@ -2012,4 +2164,4 @@ For more information on how to track costs, see [Monitor costs for models offere * [Deploy models as serverless APIs](deploy-models-serverless.md) * [Consume serverless API endpoints from a different Azure AI Studio project or hub](deploy-models-serverless-connect.md) * [Region availability for models in serverless API endpoints](deploy-models-serverless-availability.md) -* [Plan and manage costs (marketplace)](costs-plan-manage.md#monitor-costs-for-models-offered-through-the-azure-marketplace) \ No newline at end of file +* [Plan and manage costs (marketplace)](costs-plan-manage.md#monitor-costs-for-models-offered-through-the-azure-marketplace) diff --git a/articles/ai-studio/how-to/model-catalog-overview.md b/articles/ai-studio/how-to/model-catalog-overview.md index 8e362064a6e..7e5e1fe8fdc 100644 --- a/articles/ai-studio/how-to/model-catalog-overview.md +++ b/articles/ai-studio/how-to/model-catalog-overview.md @@ -66,7 +66,7 @@ Model | Managed compute | Serverless API (pay-as-you-go) --|--|-- Llama family models | Llama-2-7b
Llama-2-7b-chat
Llama-2-13b
Llama-2-13b-chat
Llama-2-70b
Llama-2-70b-chat
Llama-3-8B-Instruct
Llama-3-70B-Instruct
Llama-3-8B
Llama-3-70B | Llama-3-70B-Instruct
Llama-3-8B-Instruct
Llama-2-7b
Llama-2-7b-chat
Llama-2-13b
Llama-2-13b-chat
Llama-2-70b
Llama-2-70b-chat Mistral family models | mistralai-Mixtral-8x22B-v0-1
mistralai-Mixtral-8x22B-Instruct-v0-1
mistral-community-Mixtral-8x22B-v0-1
mistralai-Mixtral-8x7B-v01
mistralai-Mistral-7B-Instruct-v0-2
mistralai-Mistral-7B-v01
mistralai-Mixtral-8x7B-Instruct-v01
mistralai-Mistral-7B-Instruct-v01 | Mistral-large (2402)
Mistral-large (2407)
Mistral-small
Mistral-NeMo -Cohere family models | Not available | Cohere-command-r-plus
Cohere-command-r
Cohere-embed-v3-english
Cohere-embed-v3-multilingual
Cohere-rerank-v3-english
Cohere-rerank-v3-multilingual +Cohere family models | Not available | Cohere-command-r-plus-08-2024
Cohere-command-r-08-2024
Cohere-command-r-plus
Cohere-command-r
Cohere-embed-v3-english
Cohere-embed-v3-multilingual
Cohere-rerank-v3-english
Cohere-rerank-v3-multilingual JAIS | Not available | jais-30b-chat Phi-3 family models | Phi-3-mini-4k-Instruct
Phi-3-mini-128k-Instruct
Phi-3-small-8k-Instruct
Phi-3-small-128k-Instruct
Phi-3-medium-4k-instruct
Phi-3-medium-128k-instruct
Phi-3-vision-128k-Instruct
Phi-3.5-mini-Instruct
Phi-3.5-vision-Instruct
Phi-3.5-MoE-Instruct | Phi-3-mini-4k-Instruct
Phi-3-mini-128k-Instruct
Phi-3-small-8k-Instruct
Phi-3-small-128k-Instruct
Phi-3-medium-4k-instruct
Phi-3-medium-128k-instruct

Phi-3.5-mini-Instruct
Phi-3.5-vision-Instruct
Phi-3.5-MoE-Instruct Nixtla | Not available | TimeGEN-1 diff --git a/articles/ai-studio/includes/region-availability-maas.md b/articles/ai-studio/includes/region-availability-maas.md index 366dc01e0a8..94df325a2e7 100644 --- a/articles/ai-studio/includes/region-availability-maas.md +++ b/articles/ai-studio/includes/region-availability-maas.md @@ -15,8 +15,10 @@ ms.custom: include, references_regions |Model |Offer Availability Region | Hub/Project Region for Deployment | Hub/Project Region for Fine tuning | |---------|---------|---------|---------| -Cohere Command R | [Microsoft Managed Countries](/partner-center/marketplace/tax-details-marketplace#microsoft-managed-countriesregions)
Japan
Qatar | East US
East US 2
North Central US
South Central US
Sweden Central
West US
West US 3 | Not available | +Cohere Command R+ 08-2024 | [Microsoft Managed Countries](/partner-center/marketplace/tax-details-marketplace#microsoft-managed-countriesregions) |East US
East US 2
North Central US
South Central US
Sweden Central
West US
West US 3 | Not available | +Cohere Command R 08-2024 | [Microsoft Managed Countries](/partner-center/marketplace/tax-details-marketplace#microsoft-managed-countriesregions) |East US
East US 2
North Central US
South Central US
Sweden Central
West US
West US 3 | Not available | Cohere Command R+ | [Microsoft Managed Countries](/partner-center/marketplace/tax-details-marketplace#microsoft-managed-countriesregions)
Japan
Qatar |East US
East US 2
North Central US
South Central US
Sweden Central
West US
West US 3 | Not available | +Cohere Command R | [Microsoft Managed Countries](/partner-center/marketplace/tax-details-marketplace#microsoft-managed-countriesregions)
Japan
Qatar | East US
East US 2
North Central US
South Central US
Sweden Central
West US
West US 3 | Not available | Cohere Rerank 3 - English | [Microsoft Managed Countries](/partner-center/marketplace/tax-details-marketplace#microsoft-managed-countriesregions)
Japan
Qatar | East US
East US 2
North Central US
South Central US
Sweden Central
West US
West US 3 | Not available | Cohere Rerank 3 - Multilingual | [Microsoft Managed Countries](/partner-center/marketplace/tax-details-marketplace#microsoft-managed-countriesregions)
Japan
Qatar | East US
East US 2
North Central US
South Central US
Sweden Central
West US
West US 3 | Not available | Cohere Embed 3 - English | [Microsoft Managed Countries](/partner-center/marketplace/tax-details-marketplace#microsoft-managed-countriesregions)
Japan
Qatar |East US
East US 2
North Central US
South Central US
Sweden Central
West US
West US 3 | Not available | From ded628a7ec36a772c7d267655010f90784c1d83b Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Fri, 27 Sep 2024 11:20:39 -0500 Subject: [PATCH 12/12] fixes --- .../ai-services/openai/assistants-reference-runs.md | 12 ++++++++++-- articles/ai-services/openai/assistants-reference.md | 9 ++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/articles/ai-services/openai/assistants-reference-runs.md b/articles/ai-services/openai/assistants-reference-runs.md index 42e0cadc689..2f5514b8a8b 100644 --- a/articles/ai-services/openai/assistants-reference-runs.md +++ b/articles/ai-services/openai/assistants-reference-runs.md @@ -606,7 +606,7 @@ Represents an execution run on a thread. | `max_prompt_tokens` | integer or null | The maximum number of prompt tokens specified to have been used over the course of the run. | | `max_completion_tokens` | integer or null | The maximum number of completion tokens specified to have been used over the course of the run. | | `usage` | object or null | Usage statistics related to the run. This value will be null if the run is not in a terminal state (for example `in_progress`, `queued`). | -| `truncation_strategy | object | Controls for how a thread will be truncated prior to the run. | +| `truncation_strategy` | object | Controls for how a thread will be truncated prior to the run. | | `response_format` | string | The format that the model must output. Compatible with GPT-4 Turbo and all GPT-3.5 Turbo models since `gpt-3.5-turbo-1106`. | | `tool_choice` | string | Controls which (if any) tool is called by the model. `none` means the model won't call any tools and instead generates a message. `auto` is the default value and means the model can pick between generating a message or calling a tool. | @@ -685,6 +685,14 @@ with client.beta.threads.runs.stream( stream.until_done() ``` +## Truncation object + +Controls for how a thread will be truncated prior to the run. Use this to control the initial context window of the run. + +| Name | Type | Description | Required | +|--- |--- |--- | +| `type` | string | The truncation strategy to use for the thread. The default is `auto`. If set to `last_messages`, the thread will be truncated to the n most recent messages in the thread. When set to `auto`, messages in the middle of the thread will be dropped to fit the context length of the model, `max_prompt_tokens`. | Yes | +| `last_messages` | integer | The number of most recent messages from the thread when constructing the context for the run. | No | ## Message delta object @@ -742,4 +750,4 @@ Events are emitted whenever a new object is created, transitions to a new state, | `thread.message.completed` | `data` is a message. | Occurs when a message is completed. | | `thread.message.incomplete` | `data` is a message. | Occurs when a message ends before it is completed. | | `error` | `data` is an error. | Occurs when an error occurs. This can happen due to an internal server error or a timeout. | -| `done` | `data` is `[DONE]` | Occurs when a stream ends. | \ No newline at end of file +| `done` | `data` is `[DONE]` | Occurs when a stream ends. | diff --git a/articles/ai-services/openai/assistants-reference.md b/articles/ai-services/openai/assistants-reference.md index f54fbcde149..077596d72a3 100644 --- a/articles/ai-services/openai/assistants-reference.md +++ b/articles/ai-services/openai/assistants-reference.md @@ -311,8 +311,7 @@ Assistants use the [same API for file upload as fine-tuning](/rest/api/azureopen | `instructions` | string or null | The system instructions that the assistant uses. The maximum length is 32768 characters.| | `tools` | array | A list of tool enabled on the assistant. There can be a maximum of 128 tools per assistant. Tools can be of types code_interpreter, or function. A `function` description can be a maximum of 1,024 characters.| | `metadata` | map | Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format. Keys can be a maximum of 64 characters long and values can be a maximum of 512 characters long.| - -| `temperature` | number or null | Optional | Defaults to 1. Determines what sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. | -| `top_p` | number or null | Optional | Defaults to 1. An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. | -| `response_format` | string or object | Optional | Specifies the format that the model must output. Compatible with GPT-4 Turbo and all GPT-3.5 Turbo models since gpt-3.5-turbo-1106. Setting this parameter to `{ "type": "json_object" }` enables JSON mode, which guarantees the message the model generates is valid JSON. Importantly, when using JSON mode, you must also instruct the model to produce JSON yourself using a system or user message. Without this instruction, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Additionally, the message content may be partially cut off if you use `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length. | -| `tool_resources` | object | Optional | A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs. | +| `temperature` | number or null | Defaults to 1. Determines what sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. | +| `top_p` | number or null | Defaults to 1. An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. We generally recommend altering this or temperature but not both. | +| `response_format` | string or object | Specifies the format that the model must output. Compatible with GPT-4 Turbo and all GPT-3.5 Turbo models since gpt-3.5-turbo-1106. Setting this parameter to `{ "type": "json_object" }` enables JSON mode, which guarantees the message the model generates is valid JSON. Importantly, when using JSON mode, you must also instruct the model to produce JSON yourself using a system or user message. Without this instruction, the model may generate an unending stream of whitespace until the generation reaches the token limit, resulting in a long-running and seemingly "stuck" request. Additionally, the message content may be partially cut off if you use `finish_reason="length"`, which indicates the generation exceeded `max_tokens` or the conversation exceeded the max context length. | +| `tool_resources` | object | A set of resources that are used by the assistant's tools. The resources are specific to the type of tool. For example, the `code_interpreter` tool requires a list of file IDs, while the `file_search` tool requires a list of vector store IDs. |