Bagikan melalui


Pengikatan input penyelesaian teks Azure OpenAI untuk Azure Functions

Penting

Ekstensi Azure OpenAI untuk Azure Functions saat ini dalam pratinjau.

Pengikatan input penyelesaian teks Azure OpenAI memungkinkan Anda membawa API penyelesaian teks hasil ke dalam eksekusi kode Anda. Anda dapat menentukan pengikatan untuk menggunakan perintah yang telah ditentukan sebelumnya dengan parameter atau melewati seluruh perintah.

Untuk informasi tentang penyiapan dan detail konfigurasi ekstensi Azure OpenAI, lihat Ekstensi Azure OpenAI untuk Azure Functions. Untuk mempelajari selengkapnya tentang penyelesaian Azure OpenAI, lihat Pelajari cara membuat atau memanipulasi teks.

Nota

Referensi dan contoh hanya disediakan untuk model Node.js v4.

Nota

Referensi dan contoh hanya disediakan untuk model Python v2.

Nota

Meskipun kedua model proses C# didukung, hanya contoh model pekerja terisolasi yang disediakan.

Contoh

Contoh ini menunjukkan pola templat , di mana fungsi pemicu HTTP mengambil name parameter dan menyematkannya ke dalam prompt teks, yang kemudian dikirim ke API penyelesaian Azure OpenAI oleh ekstensi. Respons terhadap perintah dikembalikan dalam respons HTTP.

[Function(nameof(WhoIs))]
public static IActionResult WhoIs(
    [HttpTrigger(AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequestData req,
    [TextCompletionInput("Who is {name}?", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response)
{
    return new OkObjectResult(response.Content);
}

Contoh ini mengambil permintaan sebagai input, mengirimkannya langsung ke API penyelesaian, dan mengembalikan respons sebagai output.

[Function(nameof(GenericCompletion))]
public static IActionResult GenericCompletion(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    [TextCompletionInput("{Prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response,
    ILogger log)
{
    string text = response.Content;
    return new OkObjectResult(text);
}

Contoh ini menunjukkan pola templat , di mana fungsi pemicu HTTP mengambil name parameter dan menyematkannya ke dalam prompt teks, yang kemudian dikirim ke API penyelesaian Azure OpenAI oleh ekstensi. Respons terhadap perintah dikembalikan dalam respons HTTP.

@FunctionName("WhoIs")
public HttpResponseMessage whoIs(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.GET},
        authLevel = AuthorizationLevel.ANONYMOUS, 
        route = "whois/{name}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("name") String name,
    @TextCompletion(prompt = "Who is {name}?", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false) TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

Contoh ini mengambil permintaan sebagai input, mengirimkannya langsung ke API penyelesaian, dan mengembalikan respons sebagai output.

@FunctionName("GenericCompletion")
public HttpResponseMessage genericCompletion(
    @HttpTrigger(
        name = "req", 
        methods = {HttpMethod.POST},
        authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request,
    @TextCompletion(prompt = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false) TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

Contoh ini menunjukkan pola templat , di mana fungsi pemicu HTTP mengambil name parameter dan menyematkannya ke dalam prompt teks, yang kemudian dikirim ke API penyelesaian Azure OpenAI oleh ekstensi. Respons terhadap perintah dikembalikan dalam respons HTTP.

const { app, input } = require("@azure/functions");

// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
    prompt: 'Who is {name}?',
    maxTokens: '100',
    type: 'textCompletion',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})

app.http('whois', {
    methods: ['GET'],
    route: 'whois/{name}',
    authLevel: 'function',
    extraInputs: [openAICompletionInput],
    handler: async (_request, context) => {
        var response = context.extraInputs.get(openAICompletionInput)
        return { body: response.content.trim() }
    }
});

Contoh ini menunjukkan pola templat , di mana fungsi pemicu HTTP mengambil name parameter dan menyematkannya ke dalam prompt teks, yang kemudian dikirim ke API penyelesaian Azure OpenAI oleh ekstensi. Respons terhadap perintah dikembalikan dalam respons HTTP.

import { app, input } from "@azure/functions";

// This OpenAI completion input requires a {name} binding value.
const openAICompletionInput = input.generic({
    prompt: 'Who is {name}?',
    maxTokens: '100',
    type: 'textCompletion',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%'
})

app.http('whois', {
    methods: ['GET'],
    route: 'whois/{name}',
    authLevel: 'function',
    extraInputs: [openAICompletionInput],
    handler: async (_request, context) => {
        var response: any = context.extraInputs.get(openAICompletionInput)
        return { body: response.content.trim() }
    }
});

Contoh ini menunjukkan pola templat , di mana fungsi pemicu HTTP mengambil name parameter dan menyematkannya ke dalam prompt teks, yang kemudian dikirim ke API penyelesaian Azure OpenAI oleh ekstensi. Respons terhadap perintah dikembalikan dalam respons HTTP.

Berikut adalah file function.json untuk TextCompletionResponse:

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "route": "whois/{name}",
      "methods": [
        "get"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "textCompletion",
      "direction": "in",
      "name": "TextCompletionResponse",
      "prompt": "Who is {name}?",
      "maxTokens": "100",
      "chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%"
    }
  ]
}

Untuk informasi selengkapnya tentang properti file function.json , lihat bagian Konfigurasi .

Kode hanya mengembalikan teks dari API penyelesaian sebagai respons:

using namespace System.Net

param($Request, $TriggerMetadata, $TextCompletionResponse)

Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
        StatusCode = [HttpStatusCode]::OK
        Body       = $TextCompletionResponse.Content
    })

Contoh ini menunjukkan pola templat , di mana fungsi pemicu HTTP mengambil name parameter dan menyematkannya ke dalam prompt teks, yang kemudian dikirim ke API penyelesaian Azure OpenAI oleh ekstensi. Respons terhadap perintah dikembalikan dalam respons HTTP.

@app.route(route="whois/{name}", methods=["GET"])
@app.text_completion_input(
    arg_name="response",
    prompt="Who is {name}?",
    max_tokens="100",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
)
def whois(req: func.HttpRequest, response: str) -> func.HttpResponse:
    response_json = json.loads(response)
    return func.HttpResponse(response_json["content"], status_code=200)

Contoh ini mengambil permintaan sebagai input, mengirimkannya langsung ke API penyelesaian, dan mengembalikan respons sebagai output.

@app.route(route="genericcompletion", methods=["POST"])
@app.text_completion_input(
    arg_name="response",
    prompt="{Prompt}",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
)
def genericcompletion(
    req: func.HttpRequest,
    response: str
) -> func.HttpResponse:
    response_json = json.loads(response)
    return func.HttpResponse(response_json["content"], status_code=200)

Atributs

Atribut tertentu yang Anda terapkan untuk menentukan pengikatan input penyelesaian teks tergantung pada mode proses C#Anda.

Dalam model pekerja yang terisolasi, terapkan TextCompletionInput untuk menentukan pengikatan input penyelesaian teks.

Atribut mendukung parameter ini:

Pengaturan Deskripsi
Petunjuk Mendapatkan atau mengatur perintah untuk menghasilkan penyelesaian, dikodekan sebagai string.
AIConnectionName Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY.
ChatModel Opsional. Mendapatkan atau mengatur ID model yang akan digunakan sebagai string, dengan nilai gpt-3.5-turbodefault .
Suhu Opsional. Mendapatkan atau mengatur suhu pengambilan sampel yang akan digunakan, sebagai string antara 0 dan 2. Nilai yang lebih tinggi (0.8) membuat output lebih acak, sementara nilai yang lebih rendah seperti (0.2) membuat output lebih fokus dan deterministik. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
TopP Opsional. Mendapatkan atau mengatur alternatif untuk pengambilan sampel dengan suhu, yang disebut pengambilan sampel nukleus, sebagai string. Dalam metode pengambilan sampel ini, model mempertimbangkan hasil token dengan top_p massa probabilitas. Jadi 0.1 berarti hanya token yang terdiri dari 10 besar% massa probabilitas yang dipertimbangkan. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
MaxTokens Opsional. Mendapatkan atau mengatur jumlah maksimum token yang akan dihasilkan dalam penyelesaian, sebagai string dengan default 100. Jumlah token prompt Anda ditambah max_tokens tidak dapat melebihi panjang konteks model. Sebagian besar model memiliki panjang konteks 2.048 token (kecuali untuk model terbaru, yang mendukung 4096).
IsReasoningModel Opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah model penyelesaian obrolan adalah model penalaran. Opsi ini bersifat eksperimental dan terkait dengan model penalaran sampai semua model memiliki paritas di properti yang diharapkan, dengan nilai falsedefault .

Anotasi

Anotasi TextCompletion memungkinkan Anda menentukan pengikatan input penyelesaian teks, yang mendukung parameter ini:

Elemen Deskripsi
Nama Mendapatkan atau mengatur nama pengikatan input.
perintah Mendapatkan atau mengatur perintah untuk menghasilkan penyelesaian, dikodekan sebagai string.
aiConnectionName Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY.
chatModel Mendapatkan atau mengatur ID model yang akan digunakan sebagai string, dengan nilai gpt-3.5-turbodefault .
suhu Opsional. Mendapatkan atau mengatur suhu pengambilan sampel yang akan digunakan, sebagai string antara 0 dan 2. Nilai yang lebih tinggi (0.8) membuat output lebih acak, sementara nilai yang lebih rendah seperti (0.2) membuat output lebih fokus dan deterministik. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
topP Opsional. Mendapatkan atau mengatur alternatif untuk pengambilan sampel dengan suhu, yang disebut pengambilan sampel nukleus, sebagai string. Dalam metode pengambilan sampel ini, model mempertimbangkan hasil token dengan top_p massa probabilitas. Jadi 0.1 berarti hanya token yang terdiri dari 10 besar% massa probabilitas yang dipertimbangkan. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
maxTokens Opsional. Mendapatkan atau mengatur jumlah maksimum token yang akan dihasilkan dalam penyelesaian, sebagai string dengan default 100. Jumlah token prompt Anda ditambah max_tokens tidak dapat melebihi panjang konteks model. Sebagian besar model memiliki panjang konteks 2.048 token (kecuali untuk model terbaru, yang mendukung 4096).
isReasoningModel Opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah model penyelesaian obrolan adalah model penalaran. Opsi ini bersifat eksperimental dan terkait dengan model penalaran sampai semua model memiliki paritas di properti yang diharapkan, dengan nilai falsedefault .

Dekorator

Selama pratinjau, tentukan pengikatan input sebagai generic_input_binding pengikatan jenis textCompletion, yang mendukung parameter ini:

Pengaturan Deskripsi
arg_name Nama variabel yang mewakili parameter pengikatan.
perintah Mendapatkan atau mengatur perintah untuk menghasilkan penyelesaian, dikodekan sebagai string.
ai_connection_name Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY.
chat_model Mendapatkan atau mengatur ID model yang akan digunakan sebagai string, dengan nilai gpt-3.5-turbodefault .
suhu Opsional. Mendapatkan atau mengatur suhu pengambilan sampel yang akan digunakan, sebagai string antara 0 dan 2. Nilai yang lebih tinggi (0.8) membuat output lebih acak, sementara nilai yang lebih rendah seperti (0.2) membuat output lebih fokus dan deterministik. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
top_p Opsional. Mendapatkan atau mengatur alternatif untuk pengambilan sampel dengan suhu, yang disebut pengambilan sampel nukleus, sebagai string. Dalam metode pengambilan sampel ini, model mempertimbangkan hasil token dengan top_p massa probabilitas. Jadi 0.1 berarti hanya token yang terdiri dari 10 besar% massa probabilitas yang dipertimbangkan. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
max_tokens Opsional. Mendapatkan atau mengatur jumlah maksimum token yang akan dihasilkan dalam penyelesaian, sebagai string dengan default 100. Jumlah token prompt Anda ditambah max_tokens tidak dapat melebihi panjang konteks model. Sebagian besar model memiliki panjang konteks 2.048 token (kecuali untuk model terbaru, yang mendukung 4096).
is_reasoning _model Opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah model penyelesaian obrolan adalah model penalaran. Opsi ini bersifat eksperimental dan terkait dengan model penalaran sampai semua model memiliki paritas di properti yang diharapkan, dengan nilai falsedefault .

Konfigurasi

Pengikatan mendukung properti konfigurasi ini yang Anda tetapkan dalam file function.json.

Harta benda Deskripsi
jenis Harus berupa textCompletion .
arah Harus berupa in .
Nama Nama pengikatan input.
perintah Mendapatkan atau mengatur perintah untuk menghasilkan penyelesaian, dikodekan sebagai string.
aiConnectionName Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY.
chatModel Mendapatkan atau mengatur ID model yang akan digunakan sebagai string, dengan nilai gpt-3.5-turbodefault .
suhu Opsional. Mendapatkan atau mengatur suhu pengambilan sampel yang akan digunakan, sebagai string antara 0 dan 2. Nilai yang lebih tinggi (0.8) membuat output lebih acak, sementara nilai yang lebih rendah seperti (0.2) membuat output lebih fokus dan deterministik. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
topP Opsional. Mendapatkan atau mengatur alternatif untuk pengambilan sampel dengan suhu, yang disebut pengambilan sampel nukleus, sebagai string. Dalam metode pengambilan sampel ini, model mempertimbangkan hasil token dengan top_p massa probabilitas. Jadi 0.1 berarti hanya token yang terdiri dari 10 besar% massa probabilitas yang dipertimbangkan. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
maxTokens Opsional. Mendapatkan atau mengatur jumlah maksimum token yang akan dihasilkan dalam penyelesaian, sebagai string dengan default 100. Jumlah token prompt Anda ditambah max_tokens tidak dapat melebihi panjang konteks model. Sebagian besar model memiliki panjang konteks 2.048 token (kecuali untuk model terbaru, yang mendukung 4096).
isReasoningModel Opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah model penyelesaian obrolan adalah model penalaran. Opsi ini bersifat eksperimental dan terkait dengan model penalaran sampai semua model memiliki paritas di properti yang diharapkan, dengan nilai falsedefault .

Konfigurasi

Pengikatan mendukung properti ini, yang ditentukan dalam kode Anda:

Harta benda Deskripsi
perintah Mendapatkan atau mengatur perintah untuk menghasilkan penyelesaian, dikodekan sebagai string.
aiConnectionName Opsional. Mendapatkan atau mengatur nama bagian konfigurasi untuk pengaturan konektivitas layanan AI. Untuk Azure OpenAI: Jika ditentukan, cari nilai "Titik Akhir" dan "Kunci" di bagian konfigurasi ini. Jika tidak ditentukan atau bagian tidak ada, kembali ke variabel lingkungan: AZURE_OPENAI_ENDPOINT dan AZURE_OPENAI_KEY. Untuk autentikasi identitas terkelola yang ditetapkan pengguna, properti ini diperlukan. Untuk layanan OpenAI (non-Azure), atur variabel lingkungan OPENAI_API_KEY.
chatModel Mendapatkan atau mengatur ID model yang akan digunakan sebagai string, dengan nilai gpt-3.5-turbodefault .
suhu Opsional. Mendapatkan atau mengatur suhu pengambilan sampel yang akan digunakan, sebagai string antara 0 dan 2. Nilai yang lebih tinggi (0.8) membuat output lebih acak, sementara nilai yang lebih rendah seperti (0.2) membuat output lebih fokus dan deterministik. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
topP Opsional. Mendapatkan atau mengatur alternatif untuk pengambilan sampel dengan suhu, yang disebut pengambilan sampel nukleus, sebagai string. Dalam metode pengambilan sampel ini, model mempertimbangkan hasil token dengan top_p massa probabilitas. Jadi 0.1 berarti hanya token yang terdiri dari 10 besar% massa probabilitas yang dipertimbangkan. Anda harus menggunakan atau TemperatureTopP, tetapi tidak keduanya.
maxTokens Opsional. Mendapatkan atau mengatur jumlah maksimum token yang akan dihasilkan dalam penyelesaian, sebagai string dengan default 100. Jumlah token prompt Anda ditambah max_tokens tidak dapat melebihi panjang konteks model. Sebagian besar model memiliki panjang konteks 2.048 token (kecuali untuk model terbaru, yang mendukung 4096).
isReasoningModel Opsional. Mendapatkan atau menetapkan nilai yang menunjukkan apakah model penyelesaian obrolan adalah model penalaran. Opsi ini bersifat eksperimental dan terkait dengan model penalaran sampai semua model memiliki paritas di properti yang diharapkan, dengan nilai falsedefault .

Penggunaan

Lihat Bagian contoh untuk contoh lengkapnya.