共用方式為


快速入門:開始使用 Azure OpenAI 服務來產生文字

使用本文開始對 Azure OpenAI 進行第一次呼叫。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶

  • 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 的存取權。

    目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access 的表單,以申請 Azure OpenAI 的存取權。 如有問題,請在此存放庫中提出問題來與我們連絡。

  • 已部署模型的 Azure OpenAI 資源。 如需模型部署的詳細資訊,請參閱資源部署指南

提示

請嘗試新整合的 Azure AI Studio (預覽),其會將多個 Azure AI 服務的功能整合在一起。

移至 Azure OpenAI Studio

https://oai.azure.com/ 瀏覽至 Azure OpenAI Studio,並使用可存取 OpenAI 資源的認證登入。 在登入工作流程期間 (或之後),選取適當的目錄、Azure 訂用帳戶和 Azure OpenAI 資源。

從 Azure OpenAI Studio 登陸頁面進一步瀏覽,以探索提示完成的範例、管理您的部署和模型,以及尋找文件與社群論壇等學習資源。

Azure OpenAI Studio 登陸頁面的螢幕擷取畫面。

移至實驗和微調工作流程的遊樂場

遊樂場

透過 GPT-3 遊樂場開始探索無程式碼方法的 Azure OpenAI 功能。 這只是一個文字方塊,您可以在其中提交提示來產生完成。 您可以透過此頁面,快速逐一查看並實驗各種功能。

Azure OpenAI Studio 遊樂場頁面的螢幕擷取畫面,其中已醒目提示各個區段。

您可以選取部署,並從幾個預先載入的範例中選擇以開始使用。 如果您的資源沒有部署,請選取 [建立部署],並遵循精靈所提供的指示。 如需模型部署的詳細資訊,請參閱資源部署指南

您可以實驗組態設定,例如溫度和回應前文字,以改善工作的效能。 您可以在 REST API 中深入了解每個參數。

  • 選取 [產生] 按鈕會將輸入的文字傳送至完成 API,並將結果串流回文字方塊。
  • 選取 [復原] 按鈕會復原先前的產生呼叫。
  • 選取 [重新產生] 按鈕會一併完成復原和產生呼叫。

Azure OpenAI 也會對提示輸入和產生的輸出執行內容仲裁。 如果偵測到有害的內容,可能會篩選提示或回應。 如需詳細資訊,請參閱內容篩選條件文章。

在 GPT-3 遊樂場中,您也可以檢視根據您選取的設定預先填入的 Python 和 curl 程式碼範例。 只要選取範例下拉式清單旁的 [檢視程式碼] 即可。 您可以撰寫應用程式,使用 OpenAI Python SDK、curl 或其他 REST API 用戶端完成相同的工作。

嘗試文字摘要

若要在 GPT-3 遊樂場中使用 Azure OpenAI 進行文字摘要,請遵循下列步驟:

  1. 登入 Azure OpenAI Studio

  2. 選取要處理的訂用帳戶和 OpenAI 資源。

  3. 選取登陸頁面頂端的 [GPT-3 遊樂場]

  4. 從 [部署] 下拉式清單中選取您的部署。 如果您的資源沒有部署,請選取 [建立部署],然後重新進行此步驟。

  5. 從 [範例] 下拉式清單中選取 [摘要文字]

    Azure OpenAI Studio 遊樂場頁面的螢幕擷取畫面,其中可看到 [概述文字] 下拉式選取項目

  6. 選取 Generate。 Azure OpenAI 會嘗試擷取文字的內容,並以簡潔方式重新撰寫。 您應該會得到類似下列文字的結果:

    Tl;dr A neutron star is the collapsed core of a supergiant star. These incredibly dense objects are incredibly fascinating due to their strange properties and their potential for phenomena such as extreme gravitational forces and a strong magnetic field.
    

回應的正確性可能會因每個模型而有所不同。 此範例中的 Davinci 型模型很適合這類型的摘要,但 Codex 型模型在這種特定工作卻不會執行地一樣好。

清除資源

如果您想要清除和移除 Azure OpenAI 資源,則可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。

下一步

原始程式碼 (英文) | 套件 (NuGet) (英文) | 範例 (英文)

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 服務的存取權。 目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access 的表單,以申請 Azure OpenAI 服務的存取權。
  • 最新版 .NET Core
  • 已部署 gpt-35-turbo-instruct 模型的 Azure OpenAI 服務資源。 如需模型部署的詳細資訊,請參閱資源部署指南

設定

建立新的 .NET Core 應用程式

在主控台視窗中 (例如 cmd、PowerShell 或 Bash),使用 dotnet new 命令建立名為 azure-openai-quickstart 的新主控台應用程式。 此命令會建立簡單的 "Hello World" 專案,內含單一 C# 來源檔案:Program.cs

dotnet new console -n azure-openai-quickstart

將目錄變更為新建立的應用程式資料夾。 您可以使用下列命令來建置應用程式:

dotnet build

建置輸出應該不會有警告或錯誤。

...
Build succeeded.
 0 Warning(s)
 0 Error(s)
...

使用下列項目安裝 OpenAI .NET 用戶端程式庫:

dotnet add package Azure.AI.OpenAI --prerelease

擷取金鑰和端點

若要成功對 Azure OpenAI 進行呼叫,您需要端點金鑰

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點] 區段。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中某個 Azure OpenAI 資源,以紅色圓圈強調端點和存取金鑰位置的概觀使用者介面螢幕擷取畫面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

建立應用程式範例

從專案目錄中開啟 program.cs 檔案,並取代為下列程式碼:

using Azure;
using Azure.AI.OpenAI;
using static System.Environment;

string endpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string key = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");

var client = new OpenAIClient(new Uri(endpoint), new AzureKeyCredential(key));

CompletionsOptions completionsOptions = new()
{
    DeploymentName = "gpt-35-turbo-instruct", 
    Prompts = { "When was Microsoft founded?" },
};

Response<Completions> completionsResponse = client.GetCompletions(completionsOptions);
string completion = completionsResponse.Value.Choices[0].Text;
Console.WriteLine($"Chatbot: {completion}");

重要

在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

dotnet run program.cs

輸出

Chatbot:

Microsoft was founded on April 4, 1975.

清除資源

如果您想要清除和移除 Azure OpenAI 資源,可以刪除資源。 刪除資源之前,您必須先刪除任何已部署的模型。

下一步

原始程式碼 | 套件 (Go)| 範例

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 服務的存取權。 目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access (英文) 的表單,以申請 Azure OpenAI 服務的存取權。
  • 已在本機安裝 Go 1.21.0 或更高版本。
  • 已部署 gpt-35-turbo-instuct 模型的 Azure OpenAI 服務資源。 如需模型部署的詳細資訊,請參閱資源部署指南

設定

擷取金鑰和端點

若要成功對 Azure OpenAI 進行呼叫,您需要端點金鑰

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點] 區段。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中某個 Azure OpenAI 資源,以紅色圓圈強調端點和存取金鑰位置的概觀使用者介面螢幕擷取畫面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

建立應用程式範例

建立名為 completions.go 的新檔案。 將下列程式碼複製到 completions.go 檔案。

package main

import (
	"context"
	"fmt"
	"os"

	"github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai"
	"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
)

func main() {
	azureOpenAIKey := os.Getenv("AZURE_OPENAI_API_KEY")
	modelDeploymentID := "gpt-35-turbo-instruct"

	azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")

	if azureOpenAIKey == "" || modelDeploymentID == "" || azureOpenAIEndpoint == "" {
		fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n")
		return
	}

	keyCredential, err := azopenai.NewKeyCredential(azureOpenAIKey)

	if err != nil {
		// TODO: handle error
	}

	client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, keyCredential, nil)

	if err != nil {
		// TODO: handle error
	}

	resp, err := client.GetCompletions(context.TODO(), azopenai.CompletionsOptions{
		Prompt:       []string{"What is Azure OpenAI, in 20 words or less"},
		MaxTokens:    to.Ptr(int32(2048)),
		Temperature:  to.Ptr(float32(0.0)),
		Deployment: modelDeploymentID,
	}, nil)

	if err != nil {
		// TODO: handle error
	}

	for _, choice := range resp.Choices {
		fmt.Fprintf(os.Stderr, "Result: %s\n", *choice.Text)
	}

}

重要

在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

現在開啟命令提示字元,然後執行:

go mod init completions.go

接下來執行:

go mod tidy
go run completions.go

輸出

== Get completions Sample ==

Microsoft was founded on April 4, 1975.

清除資源

如果您想要清除和移除 Azure OpenAI 資源,可以刪除資源。 刪除資源之前,您必須先刪除任何已部署的模型。

下一步

原始程式碼 (英文) | 成品 (Maven) (英文) | 範例 (英文)

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 服務的存取權。 目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access (英文) 的表單,以申請 Azure OpenAI 服務的存取權。
  • 已部署 gpt-35-turbo-instruct 模型的 Azure OpenAI 服務資源。 如需模型部署的詳細資訊,請參閱資源部署指南

設定

擷取金鑰和端點

若要成功對 Azure OpenAI 進行呼叫,您需要端點金鑰

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點] 區段。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中某個 Azure OpenAI 資源,以紅色圓圈強調端點和存取金鑰位置的概觀使用者介面螢幕擷取畫面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

建立新的 Java 應用程式

建立新的 Gradle 專案。

在主控台視窗 (例如 cmd、PowerShell 或 Bash) 中,為您的應用程式建立新的目錄,並瀏覽至該目錄。

mkdir myapp && cd myapp

從您的工作目錄執行 gradle init 命令。 此命令會建立 Gradle 的基本組建檔案,包括 build.gradle.kts,此檔案將在執行階段用來建立及設定您的應用程式。

gradle init --type basic

出現選擇 DSL 的提示時,請選取 [Kotlin]

安裝 Java SDK

本快速入門會使用 Gradle 相依性管理員。 您可以在 Maven 中央存放庫中找到用戶端程式庫和其他相依性管理員的資訊。

找出 build.gradle.kts,並使用您慣用的 IDE 或文字編輯器加以開啟。 然後,在其中複製下列組建組態。 此設定會將專案定義為一個 Java 應用程式,其進入點為 OpenAIQuickstart。 其會匯入 Azure AI 視覺程式庫。

plugins {
    java
    application
}
application { 
    mainClass.set("GetCompletionsSample")
}
repositories {
    mavenCentral()
}
dependencies {
    implementation(group = "com.azure", name = "azure-ai-openai", version = "1.0.0-beta.3")
    implementation("org.slf4j:slf4j-simple:1.7.9")
}

建立應用程式範例

  1. 建立 Java 檔案。

    在您的工作目錄中執行下列命令,以建立專案來源資料夾:

    mkdir -p src/main/java
    

    瀏覽至新的資料夾,並建立稱為 GetCompletionsSample.java 的檔案。

  2. 在慣用的編輯器或 IDE 中開啟 GetCompletionsSample.java,並貼上下列程式碼。

    package com.azure.ai.openai.usage;
    
    import com.azure.ai.openai.OpenAIClient;
    import com.azure.ai.openai.OpenAIClientBuilder;
    import com.azure.ai.openai.models.Choice;
    import com.azure.ai.openai.models.Completions;
    import com.azure.ai.openai.models.CompletionsOptions;
    import com.azure.ai.openai.models.CompletionsUsage;
    import com.azure.core.credential.AzureKeyCredential;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class GetCompletionsSample {
    
        public static void main(String[] args) {
            String azureOpenaiKey = System.getenv("AZURE_OPENAI_API_KEY");;
            String endpoint = System.getenv("AZURE_OPENAI_ENDPOINT");;
            String deploymentOrModelId = "gpt-35-turbo-instruct";
    
            OpenAIClient client = new OpenAIClientBuilder()
                .endpoint(endpoint)
                .credential(new AzureKeyCredential(azureOpenaiKey))
                .buildClient();
    
            List<String> prompt = new ArrayList<>();
            prompt.add("When was Microsoft founded?");
    
            Completions completions = client.getCompletions(deploymentOrModelId, new CompletionsOptions(prompt));
    
            System.out.printf("Model ID=%s is created at %s.%n", completions.getId(), completions.getCreatedAt());
            for (Choice choice : completions.getChoices()) {
                System.out.printf("Index: %d, Text: %s.%n", choice.getIndex(), choice.getText());
            }
    
            CompletionsUsage usage = completions.getUsage();
            System.out.printf("Usage: number of prompt token is %d, "
                    + "number of completion token is %d, and number of total tokens in request and response is %d.%n",
                usage.getPromptTokens(), usage.getCompletionTokens(), usage.getTotalTokens());
        }
    }
    

    重要

    在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

  3. 瀏覽回專案根資料夾,並使用下列項目建置應用程式:

    gradle build
    

    然後,使用 gradle run 命令加以執行:

    gradle run
    

輸出

Model ID=cmpl-7JZRbWuEuHX8ozzG3BXC2v37q90mL is created at 1684898835.
Index: 0, Text:

Microsoft was founded on April 4, 1975..
Usage: number of prompt token is 5, number of completion token is 11, and number of total tokens in request and response is 16.

清除資源

如果您想要清除和移除 Azure OpenAI 資源,可以刪除資源。 刪除資源之前,您必須先刪除任何已部署的模型。

下一步

原始程式碼 | 成品 (Maven) | 範例

必要條件

設定

擷取金鑰和端點

若要成功對 Azure OpenAI 進行呼叫,您需要端點金鑰

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點] 區段。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中某個 Azure OpenAI 資源,以紅色圓圈強調端點和存取金鑰位置的概觀使用者介面螢幕擷取畫面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

注意

Spring AI 會將模型名稱預設為 gpt-35-turbo。 只有在您使用了不同名稱部署模型時,才需要提供 SPRING_AI_AZURE_OPENAI_MODEL 值。

export SPRING_AI_AZURE_OPENAI_API_KEY="REPLACE_WITH_YOUR_KEY_VALUE_HERE"
export SPRING_AI_AZURE_OPENAI_ENDPOINT="REPLACE_WITH_YOUR_ENDPOINT_HERE"
export SPRING_AI_AZURE_OPENAI_MODEL="REPLACE_WITH_YOUR_MODEL_NAME_HERE"

建立新的 Spring 應用程式

建立新的 Spring 專案。

在 Bash 視窗中,為您的應用程式建立新目錄,並瀏覽至其中。

mkdir ai-completion-demo && cd ai-completion-demo

從您的工作目錄執行 spring init 命令。 此命令會為您的 Spring 專案建立標準目錄結構 (包括主要 Java 類別來源檔案),以及用於管理 Maven 型專案的 pom.xml 檔案。

spring init -a ai-completion-demo -n AICompletion --force --build maven -x

產生的檔案與資料夾類似下列結構:

ai-completion-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
    |-- main/
    |   |-- resources/
    |   |   |-- application.properties
    |   |-- java/
    |       |-- com/
    |           |-- example/
    |               |-- aicompletiondemo/
    |                   |-- AiCompletionApplication.java
    |-- test/
        |-- java/
            |-- com/
                |-- example/
                    |-- aicompletiondemo/
                        |-- AiCompletionApplicationTests.java

編輯 Spring 應用程式

  1. 編輯 pom.xml 檔案。

    從專案目錄的根目錄中,以慣用的編輯器或 IDE 開啟 pom.xml 檔案,並將此檔案覆寫為下列內容:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>3.2.0</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.example</groupId>
        <artifactId>ai-completion-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>AICompletion</name>
        <description>Demo project for Spring Boot</description>
        <properties>
            <java.version>17</java.version>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.experimental.ai</groupId>
                <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId>
                <version>0.7.0-SNAPSHOT</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
        <repositories>
            <repository>
                <id>spring-snapshots</id>
                <name>Spring Snapshots</name>
                <url>https://repo.spring.io/snapshot</url>
                <releases>
                    <enabled>false</enabled>
                </releases>
            </repository>
        </repositories>
    </project>
    
  2. src/main/java/com/example/aicompletiondemo 資料夾中,以慣用的編輯器或 IDE 開啟 AiCompletionApplication.java,並貼入下列程式碼:

    package com.example.aicompletiondemo;
    
    import java.util.Collections;
    import java.util.List;
    
    import org.springframework.ai.client.AiClient;
    import org.springframework.ai.prompt.Prompt;
    import org.springframework.ai.prompt.messages.Message;
    import org.springframework.ai.prompt.messages.MessageType;
    import org.springframework.ai.prompt.messages.UserMessage;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class AiCompletionApplication implements CommandLineRunner
    {
        private static final String ROLE_INFO_KEY = "role";
    
        @Autowired
        private AiClient aiClient;
    
        public static void main(String[] args) {
            SpringApplication.run(AiCompletionApplication.class, args);
        }
    
        @Override
        public void run(String... args) throws Exception
        {
            System.out.println(String.format("Sending completion prompt to AI service. One moment please...\r\n"));
    
            final List<Message> msgs =
                    Collections.singletonList(new UserMessage("When was Microsoft founded?"));
    
            final var resps = aiClient.generate(new Prompt(msgs));
    
            System.out.println(String.format("Prompt created %d generated response(s).", resps.getGenerations().size()));
    
            resps.getGenerations().stream()
              .forEach(gen -> {
                  final var role = gen.getInfo().getOrDefault(ROLE_INFO_KEY, MessageType.ASSISTANT.getValue());
    
                  System.out.println(String.format("Generated respose from \"%s\": %s", role, gen.getText()));
              });
        }
    
    }
    

    重要

    在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

  3. 瀏覽回專案根資料夾,並使用下列命令執行應用程式:

    ./mvnw spring-boot:run
    

輸出

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v3.1.5)

2023-11-07T12:47:46.126-06:00  INFO 98687 --- [           main] c.e.a.AiCompletionApplication            : No active profile set, falling back to 1 default profile: "default"
2023-11-07T12:47:46.823-06:00  INFO 98687 --- [           main] c.e.a.AiCompletionApplication            : Started AiCompletionApplication in 0.925 seconds (process running for 1.238)
Sending completion prompt to AI service. One moment please...

Prompt created 1 generated response(s).
Generated respose from "assistant": Microsoft was founded on April 4, 1975.

清除資源

如果您想要清除和移除 Azure OpenAI 資源,可以刪除資源。 刪除資源之前,您必須先刪除任何已部署的模型。

下一步

如需更多範例,請參閱 Azure OpenAI 範例 GitHub 存放庫

原始程式碼 | 套件 (npm)

注意

本文已更新為使用最新的 OpenAI npm 套件,此套件現在完全支援 Azure OpenAI。 如果您要尋找舊版 Azure OpenAI JavaScript SDK 的程式碼範例,目前仍可在此存放庫中取得這些範例。

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶
  • 在所需的 Azure 訂用帳戶中授與 Azure OpenAI 服務的存取權。 目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access (英文) 的表單,以申請 Azure OpenAI 服務的存取權。
  • LTS 版本的 Node.js
  • 已部署 gpt-35-turbo-instruct 模型的 Azure OpenAI 服務資源。 如需模型部署的詳細資訊,請參閱資源部署指南

設定

擷取金鑰和端點

若要成功對 Azure OpenAI 進行呼叫,您需要端點金鑰

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點] 區段。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中某個 Azure OpenAI 資源,以紅色圓圈強調端點和存取金鑰位置的概觀使用者介面螢幕擷取畫面。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

在主控台視窗 (例如 cmd、PowerShell 或 Bash) 中,為您的應用程式建立新的目錄,並瀏覽至該目錄。

安裝用戶端程式庫

從新目錄的內容內,使用 npm 安裝 JavaScript 必要套件:

npm install openai dotenv @azure/identity

您應用程式的 package.json 檔案將會隨著相依性更新。

建立應用程式範例

在您建立新專案的位置開啟命令提示字元,然後建立名為 Completion.js 的新檔案。 將以下程式碼複製到 Completion.js 檔案。

const { AzureOpenAI } = require("openai");

// Load the .env file if it exists
const dotenv = require("dotenv");
dotenv.config();

// You will need to set these environment variables or edit the following values
const endpoint = process.env["AZURE_OPENAI_ENDPOINT"] || "<endpoint>";
const apiKey = process.env["AZURE_OPENAI_API_KEY"] || "<api key>";
const apiVersion = "2024-04-01-preview";
const deployment = "gpt-35-turbo-instruct"; //The deployment name for your completions API model. The instruct model is the only new model that supports the legacy API.

const prompt = ["When was Microsoft founded?"];

async function main() {
  console.log("== Get completions Sample ==");

  const client = new AzureOpenAI({ endpoint, apiKey, apiVersion, deployment });  

  const result = await client.completions.create({ prompt, model: deployment, max_tokens: 128 });

  for (const choice of result.choices) {
    console.log(choice.text);
  }
}

main().catch((err) => {
  console.error("Error occurred:", err);
});

module.exports = { main };

使用下列命令來執行指令碼:

node.exe Completion.js

輸出

== Get completions Sample ==

Microsoft was founded on April 4, 1975.

Microsoft Entra ID

重要

在上一個範例中,我們示範了金鑰型驗證。 一旦成功測試了金鑰型驗證,就會建議您使用更安全的 Microsoft Entra ID 進行驗證,這會在下一個程式碼範例中示範。 開始使用 [Microsoft Entra ID] 將需要一些額外的必要條件

const { AzureOpenAI } = require("openai");
const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity");

// Set AZURE_OPENAI_ENDPOINT to the endpoint of your
// OpenAI resource. You can find this in the Azure portal.
// Load the .env file if it exists
require("dotenv/config");

const prompt = ["When was Microsoft founded?"];

async function main() {
  console.log("== Get completions Sample ==");

  const scope = "https://cognitiveservices.azure.com/.default";
  const azureADTokenProvider = getBearerTokenProvider(new DefaultAzureCredential(), scope);
  const deployment = "gpt-35-turbo-instruct";
  const apiVersion = "2024-04-01-preview";
  const client = new AzureOpenAI({ azureADTokenProvider, deployment, apiVersion });
  const result = await client.completions.create({ prompt, model: deployment, max_tokens: 128 });

  for (const choice of result.choices) {
    console.log(choice.text);
  }
}

main().catch((err) => {
  console.error("Error occurred:", err);
});

module.exports = { main };

注意

如果您收到錯誤:發生錯誤:OpenAIError:apiKeyazureADTokenProvider 引數互斥;一次只能傳遞一個。您可能需要從系統中移除 API 金鑰預先存在的環境變數。 即使 Microsoft Entra ID 程式碼範例未明確參考該 API 金鑰環境變數,但如果執行此範例的系統上存在該環境變數,仍會產生此錯誤。

清除資源

如果您想要清除和移除 Azure OpenAI 資源,可以刪除資源。 刪除資源之前,您必須先刪除任何已部署的模型。

下一步

程式庫原始程式碼 | 套件 (NuGet) |

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶

  • 在所需的 Azure OpenAI 訂用帳戶中授與服務的存取權

    目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access 的表單,以申請 Azure OpenAI 的存取權。 如有問題,請在此存放庫中提出問題來與我們連絡。

  • Python 3.8 或較新版本

  • 下列為 Python 程式庫:os、requests、json

  • 已部署 gpt-35-turbo-instruct 模型的 Azure OpenAI 服務資源。 如需模型部署的詳細資訊,請參閱資源部署指南

設定

使用下列項目安裝 OpenAI Python 用戶端程式庫:

pip install openai

注意

程式庫是由 OpenAI 進行維護。 參照版本歷程記錄來追蹤程式庫的最新更新。

擷取金鑰和端點

若要成功對 Azure OpenAI 服務發出呼叫,您將需要下列項目:

變數名稱
ENDPOINT 在 Azure 入口網站查看資源時,您可以在 [金鑰和端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[檢視程式碼] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 在 Azure 入口網站查看資源時,您可以在 [金鑰和端點] 區段中找到此值。 您可以使用 KEY1KEY2
DEPLOYMENT-NAME 此值會對應至您在部署模型時為部署選擇的自訂名稱。 此值可以在 Azure 入口網站中的 [資源管理模型]>[部署] 底下找到,也可以在 Azure OpenAI Studio 的 [管理]>[部署]下找到。

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [金鑰和端點]。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中 OpenAI 資源的概觀刀鋒視窗螢幕擷取畫面,畫面中端點和存取金鑰位置以紅色圓圈強調。

為您的金鑰和端點建立及指派永續性環境變數。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

建立新的 Python 應用程式

  1. 建立命名為 quickstart.py 的新 Python 檔案。 然後,以您慣用的編輯器或 IDE 加以開啟。

  2. 將 quickstart.py 的內容取代為下列程式碼。 修改程式碼以新增金鑰、端點和部署名稱:

import os
from openai import AzureOpenAI
    
client = AzureOpenAI(
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
    api_version="2024-02-01",
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
    )
    
deployment_name='REPLACE_WITH_YOUR_DEPLOYMENT_NAME' #This will correspond to the custom name you chose for your deployment when you deployed a model. Use a gpt-35-turbo-instruct deployment. 
    
# Send a completion call to generate an answer
print('Sending a test completion job')
start_phrase = 'Write a tagline for an ice cream shop. '
response = client.completions.create(model=deployment_name, prompt=start_phrase, max_tokens=10)
print(start_phrase+response.choices[0].text)

重要

在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

  1. 使用快速入門檔案上的 python 命令執行應用程式:

    python quickstart.py
    

輸出

輸出會在 Write a tagline for an ice cream shop. 提示之後包含回應文字。 Azure OpenAI 在此範例中傳回 The coldest ice cream in town!

Sending a test completion job
Write a tagline for an ice cream shop. The coldest ice cream in town!

多次執行程式碼,以查看您取得的其他回應類型,因為回應不一定相同。

瞭解瞭解您的結果

因為我們 Write a tagline for an ice cream shop. 範例提供的內容有限,所以模型不一定會傳回預期的結果。 若該回應看似非預期或已截斷,則可以調整權杖最大的數目。

Azure OpenAI 也會對提示輸入和產生的輸出執行內容仲裁。 如果偵測到有害的內容,可能會篩選提示或回應。 如需詳細資訊,請參閱內容篩選條件文章。

清除資源

如果您想要清除和移除 Azure OpenAI 資源,則可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。

下一步

必要條件

  • Azure 訂用帳戶 - 建立免費帳戶

  • 在所需的 Azure OpenAI 訂用帳戶中授與服務的存取權

    目前只有應用程式會授予此服務的存取權。 您可以填妥 https://aka.ms/oai/access 的表單,以申請 Azure OpenAI 服務的存取權。 如有問題,請在此存放庫中提出問題來與我們連絡。

  • Python 3.8 或較新版本

  • 下列為 Python 程式庫:os、requests、json

  • 已部署模型的 Azure OpenAI 資源。 如需模型部署的詳細資訊,請參閱資源部署指南

設定

擷取金鑰和端點

若要成功對 Azure OpenAI 發出呼叫,您將需要下列項目:

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2
DEPLOYMENT-NAME 此值會對應至您在部署模型時為部署選擇的自訂名稱。 此值可以在 Azure 入口網站中的 [資源管理]>[部署] 底下找到,也可以在 Azure OpenAI Studio 的 [管理]>[部署]下找到。

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [端點和金鑰]。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中 OpenAI 資源的概觀刀鋒視窗螢幕擷取畫面,畫面中端點和存取金鑰位置以紅色圓圈強調。

為您的金鑰和端點建立及指派永續性環境變數。

環境變數

為您的金鑰和端點建立及指派永續性環境變數。

setx AZURE_OPENAI_API_KEY "REPLACE_WITH_YOUR_KEY_VALUE_HERE" 
setx AZURE_OPENAI_ENDPOINT "REPLACE_WITH_YOUR_ENDPOINT_HERE" 

REST API

在 bash 殼層中,執行下列命令。 您必須將 gpt-35-turbo-instruct 取代為您在部署 gpt-35-turbo-instruct 模型時所選擇的部署名稱。 除非您選擇與基礎模型名稱相同的部署名稱,否則輸入模型名稱會導致錯誤。

curl $AZURE_OPENAI_ENDPOINT/openai/deployments/gpt-35-turbo-instruct/completions?api-version=2024-02-01 \
  -H "Content-Type: application/json" \
  -H "api-key: $AZURE_OPENAI_API_KEY" \
  -d "{\"prompt\": \"Once upon a time\"}"

具有範例端點的命令第一行格式將如下所示:curl https://docs-test-001.openai.azure.com/openai/deployments/{YOUR-DEPLOYMENT_NAME_HERE}/completions?api-version=2024-02-01 \。 如果您遇到錯誤,請再次檢查以確定端點與 /openai/deployments 之間的分隔處沒有重複兩個 /

如果您想要在一般 Windows 命令提示字元中執行此命令,您必須改變文字以移除 \ 和分行符號。

重要

在生產環境中,請使用安全的方式來儲存和存取您的認證,例如 Azure Key Vault。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

輸出

完成 API 的輸出如下所示。

{
    "id": "ID of your call",
    "object": "text_completion",
    "created": 1675444965,
    "model": "gpt-35-turbo-instruct",
    "choices": [
        {
            "text": " there lived in a little village a woman who was known as the meanest",
            "index": 0,
            "finish_reason": "length",
            "logprobs": null
        }
    ],
    "usage": {
        "completion_tokens": 16,
        "prompt_tokens": 3,
        "total_tokens": 19
    }
}

Azure OpenAI 服務也會對提示輸入和產生的輸出執行內容仲裁。 如果偵測到有害的內容,可能會篩選提示或回應。 如需詳細資訊,請參閱內容篩選條件文章。

清除資源

如果您想要清除和移除 Azure OpenAI 資源,則可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。

下一步

必要條件

擷取金鑰和端點

若要成功對 Azure OpenAI 服務發出呼叫,您將需要下列項目:

變數名稱
ENDPOINT 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 或者,您可以在 [Azure OpenAI Studio]>[遊樂場]>[程式碼檢視] 中找到該值。 範例端點為:https://docs-test-001.openai.azure.com/
API-KEY 從 Azure 入口網站查看您的資源時,可以在 [金鑰與端點] 區段中找到此值。 您可以使用 KEY1KEY2
DEPLOYMENT-NAME 此值會對應至您在部署模型時為部署選擇的自訂名稱。 此值可以在 Azure 入口網站中的 [資源管理]>[部署] 底下找到,也可以在 Azure OpenAI Studio 的 [管理]>[部署]下找到。

移至您在 Azure 入口網站中的資源。 您可以在 [資源管理] 區段中找到 [端點和金鑰]。 複製您的端點和存取金鑰,因為您需要這兩者才能驗證 API 呼叫。 您可以使用 KEY1KEY2。 隨時持有兩個金鑰可讓您安全地輪替和重新產生金鑰,而不會造成服務中斷。

Azure 入口網站中 OpenAI 資源的概觀刀鋒視窗螢幕擷取畫面,畫面中端點和存取金鑰位置以紅色圓圈強調。

為您的金鑰和端點建立及指派永續性環境變數。

環境變數

$Env:AZURE_OPENAI_API_KEY = 'YOUR_KEY_VALUE'
$Env:AZURE_OPENAI_ENDPOINT = 'YOUR_ENDPOINT'

建立新的 PowerShell 指令碼

  1. 建立稱為 quickstart.ps1 的新 PowerShell 檔案。 然後,以您慣用的編輯器或 IDE 加以開啟。

  2. 將 quickstart.ps1 的內容取代為下列程式碼。 修改程式碼以新增金鑰、端點和部署名稱:

    # Azure OpenAI metadata variables
    $openai = @{
        api_key     = $Env:AZURE_OPENAI_API_KEY
        api_base    = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
        api_version = '2024-02-01' # this may change in the future
        name        = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
    }
    
    # Completion text
    $prompt = 'Once upon a time...'
    
    # Header for authentication
    $headers = [ordered]@{
        'api-key' = $openai.api_key
    }
    
    # Adjust these values to fine-tune completions
    $body = [ordered]@{
        prompt      = $prompt
        max_tokens  = 10
        temperature = 2
        top_p       = 0.5
    } | ConvertTo-Json
    
    # Send a completion call to generate an answer
    $url = "$($openai.api_base)/openai/deployments/$($openai.name)/completions?api-version=$($openai.api_version)"
    
    $response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
    return "$prompt`n$($response.choices[0].text)"
    

    重要

    針對生產環境,請使用儲存和存取認證的安全方式,例如搭配 Azure Key Vault 的 PowerShell 祕密管理。 如需有關認證安全性的詳細資訊,請參閱 Azure AI 服務安全性一文。

  3. 使用 PowerShell 執行指令碼:

    ./quickstart.ps1
    

輸出

輸出會在 Once upon a time 提示之後包含回應文字。 Azure OpenAI 在此範例中傳回 There was a world beyond the mist...where a

Once upon a time...
 There was a world beyond the mist...where a

多次執行程式碼,以查看您取得的其他回應類型,因為回應不一定相同。

瞭解瞭解您的結果

因為我們 Once upon a time... 範例提供的內容有限,所以模型不一定會傳回預期的結果。 若該回應看似非預期或已截斷,則可以調整權杖最大的數目。

Azure OpenAI 也會對提示輸入和產生的輸出執行內容仲裁。 如果偵測到有害的內容,可能會篩選提示或回應。 如需詳細資訊,請參閱內容篩選條件文章。

清除資源

如果您想要清除和移除 Azure OpenAI 資源,則可以刪除資源或資源群組。 刪除資源群組也會刪除與其相關聯的任何其他資源。

下一步