Sdílet prostřednictvím


Vstupní vazba pro dokončování textu Azure OpenAI pro Azure Functions

Důležité

Rozšíření Azure OpenAI pro Azure Functions je aktuálně ve verzi Preview.

Vstupní vazba pro dokončování textu Azure OpenAI umožňuje přenést rozhraní API pro dokončování textu výsledků do provádění kódu. Můžete definovat vazbu tak, aby používala obě předdefinované výzvy s parametry nebo prošel celou výzvou.

Informace o nastavení a konfiguraci rozšíření Azure OpenAI najdete v tématu Rozšíření Azure OpenAI pro Azure Functions. Další informace o doplňování Azure OpenAI najdete v tématu O tom, jak generovat nebo manipulovat s textem.

Poznámka:

Odkazy a příklady jsou k dispozici pouze pro model Node.js v4.

Poznámka:

Odkazy a příklady jsou k dispozici pouze pro model Pythonu v2.

Poznámka:

I když jsou podporovány oba modely procesu jazyka C#, jsou k dispozici pouze příklady izolovaného modelu pracovního procesu .

Příklad

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi 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);
}

V tomto příkladu se jako vstup zobrazí výzva, odešle ji přímo do rozhraní API pro dokončování a jako výstup vrátí odpověď.

[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);
}

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi 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();
}

V tomto příkladu se jako vstup zobrazí výzva, odešle ji přímo do rozhraní API pro dokončování a jako výstup vrátí odpověď.

@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();
}

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi 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() }
    }
});

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi 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() }
    }
});

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi HTTP.

Tady je soubor function.json pro 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%"
    }
  ]
}

Další informace o function.json vlastnosti souboru naleznete v části Konfigurace .

Kód jednoduše vrátí text z rozhraní API pro dokončování jako odpověď:

using namespace System.Net

param($Request, $TriggerMetadata, $TextCompletionResponse)

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

Tento příklad ukazuje vzor šablonování , kde funkce triggeru HTTP přebírá name parametr a vloží ho do textové výzvy, která se pak odešle do rozhraní API dokončení Azure OpenAI rozšířením. Odpověď na výzvu se vrátí v odpovědi 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)

V tomto příkladu se jako vstup zobrazí výzva, odešle ji přímo do rozhraní API pro dokončování a jako výstup vrátí odpověď.

@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)

Atributy

Konkrétní atribut, který použijete k definování vstupní vazby pro dokončování textu, závisí na režimu procesu jazyka C#.

V izolovaném pracovním modelu použijte TextCompletionInput definici vstupní vazby pro dokončování textu.

Atribut podporuje tyto parametry:

Parametr Popis
Výzva Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec.
AIConnectionName Volitelné. Získá nebo nastaví název oddílu konfigurace pro nastavení připojení služby AI. Pro Azure OpenAI: Pokud je zadáno, v této části konfigurace vyhledejte hodnoty Endpoint (Koncový bod) a Key (Klíč). Pokud není zadaný nebo oddíl neexistuje, vraťte se do proměnných prostředí: AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_KEY. Pro ověřování spravované identity přiřazené uživatelem je tato vlastnost povinná. Pro službu OpenAI (mimo Azure) nastavte proměnnou prostředí OPENAI_API_KEY.
ChatModel Volitelné. Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo.
Teplota Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2. Vyšší hodnoty (0.8) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
TopP Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny obsahující prvních 10% pravděpodobnostní hmotnosti. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
MaxTokens Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100. Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096).
IsReasoningModel Volitelné. Získá nebo nastaví hodnotu určující, zda je model dokončení chatu důvodem modelu. Tato možnost je experimentální a přidružená k modelu odůvodnění, dokud všechny modely nemají paritu v očekávaných vlastnostech s výchozí hodnotou false.

Anotace

Poznámka TextCompletion umožňuje definovat vstupní vazbu pro dokončování textu, která podporuje tyto parametry:

prvek Popis
název Získá nebo nastaví název vstupní vazby.
příkaz Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec.
aiConnectionName Volitelné. Získá nebo nastaví název oddílu konfigurace pro nastavení připojení služby AI. Pro Azure OpenAI: Pokud je zadáno, v této části konfigurace vyhledejte hodnoty Endpoint (Koncový bod) a Key (Klíč). Pokud není zadaný nebo oddíl neexistuje, vraťte se do proměnných prostředí: AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_KEY. Pro ověřování spravované identity přiřazené uživatelem je tato vlastnost povinná. Pro službu OpenAI (mimo Azure) nastavte proměnnou prostředí OPENAI_API_KEY.
chatModel Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo.
teplota Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2. Vyšší hodnoty (0.8) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
topP Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny obsahující prvních 10% pravděpodobnostní hmotnosti. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
maxTokens Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100. Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096).
isReasoningModel Volitelné. Získá nebo nastaví hodnotu určující, zda je model dokončení chatu důvodem modelu. Tato možnost je experimentální a přidružená k modelu odůvodnění, dokud všechny modely nemají paritu v očekávaných vlastnostech s výchozí hodnotou false.

Dekoratéry

Během náhledu definujte vstupní vazbu jako generic_input_binding vazbu typu textCompletion, která podporuje tyto parametry:

Parametr Popis
arg_name Název proměnné, která představuje parametr vazby.
příkaz Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec.
ai_connection_name Volitelné. Získá nebo nastaví název oddílu konfigurace pro nastavení připojení služby AI. Pro Azure OpenAI: Pokud je zadáno, v této části konfigurace vyhledejte hodnoty Endpoint (Koncový bod) a Key (Klíč). Pokud není zadaný nebo oddíl neexistuje, vraťte se do proměnných prostředí: AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_KEY. Pro ověřování spravované identity přiřazené uživatelem je tato vlastnost povinná. Pro službu OpenAI (mimo Azure) nastavte proměnnou prostředí OPENAI_API_KEY.
chat_model Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo.
teplota Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2. Vyšší hodnoty (0.8) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
top_p Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny obsahující prvních 10% pravděpodobnostní hmotnosti. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
max_tokens Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100. Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096).
is_reasoning _model Volitelné. Získá nebo nastaví hodnotu určující, zda je model dokončení chatu důvodem modelu. Tato možnost je experimentální a přidružená k modelu odůvodnění, dokud všechny modely nemají paritu v očekávaných vlastnostech s výchozí hodnotou false.

Konfigurace

Vazba podporuje tyto vlastnosti konfigurace, které jste nastavili v souboru function.json.

Vlastnictví Popis
typ Musí být textCompletion.
směr Musí být in.
název Název vstupní vazby.
příkaz Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec.
aiConnectionName Volitelné. Získá nebo nastaví název oddílu konfigurace pro nastavení připojení služby AI. Pro Azure OpenAI: Pokud je zadáno, v této části konfigurace vyhledejte hodnoty Endpoint (Koncový bod) a Key (Klíč). Pokud není zadaný nebo oddíl neexistuje, vraťte se do proměnných prostředí: AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_KEY. Pro ověřování spravované identity přiřazené uživatelem je tato vlastnost povinná. Pro službu OpenAI (mimo Azure) nastavte proměnnou prostředí OPENAI_API_KEY.
chatModel Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo.
teplota Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2. Vyšší hodnoty (0.8) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
topP Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny obsahující prvních 10% pravděpodobnostní hmotnosti. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
maxTokens Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100. Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096).
isReasoningModel Volitelné. Získá nebo nastaví hodnotu určující, zda je model dokončení chatu důvodem modelu. Tato možnost je experimentální a přidružená k modelu odůvodnění, dokud všechny modely nemají paritu v očekávaných vlastnostech s výchozí hodnotou false.

Konfigurace

Vazba podporuje tyto vlastnosti, které jsou definovány v kódu:

Vlastnictví Popis
příkaz Získá nebo nastaví výzvu k vygenerování dokončení pro, kódovaný jako řetězec.
aiConnectionName Volitelné. Získá nebo nastaví název oddílu konfigurace pro nastavení připojení služby AI. Pro Azure OpenAI: Pokud je zadáno, v této části konfigurace vyhledejte hodnoty Endpoint (Koncový bod) a Key (Klíč). Pokud není zadaný nebo oddíl neexistuje, vraťte se do proměnných prostředí: AZURE_OPENAI_ENDPOINT a AZURE_OPENAI_KEY. Pro ověřování spravované identity přiřazené uživatelem je tato vlastnost povinná. Pro službu OpenAI (mimo Azure) nastavte proměnnou prostředí OPENAI_API_KEY.
chatModel Získá nebo nastaví ID modelu použít jako řetězec s výchozí hodnotou gpt-3.5-turbo.
teplota Volitelné. Získá nebo nastaví vzorkovací teplotu, která se má použít, jako řetězec mezi 0 a 2. Vyšší hodnoty (0.8) umožňují, aby byl výstup náhodnější, zatímco nižší hodnoty jako (0.2) zvýtožní výstup s větší zaměřením a deterministikou. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
topP Volitelné. Získá nebo nastaví alternativu k vzorkování s teplotou, označovanou jako vzorkování jádra, jako řetězec. V této metodě vzorkování model bere v úvahu výsledky tokenů s hromadnou top_p pravděpodobností. To 0.1 znamená, že se považují pouze tokeny obsahující prvních 10% pravděpodobnostní hmotnosti. Měli byste použít buď Temperature nebo TopP, ale ne obojí.
maxTokens Volitelné. Získá nebo nastaví maximální počet tokenů, které se mají vygenerovat v dokončení, jako řetězec s výchozí hodnotou 100. Počet tokenů výzvy plus max_tokens nesmí překročit délku kontextu modelu. Většina modelů má kontextovou délku 2 048 tokenů (s výjimkou nejnovějších modelů, které podporují 4096).
isReasoningModel Volitelné. Získá nebo nastaví hodnotu určující, zda je model dokončení chatu důvodem modelu. Tato možnost je experimentální a přidružená k modelu odůvodnění, dokud všechny modely nemají paritu v očekávaných vlastnostech s výchozí hodnotou false.

Použití

Kompletní příklady najdete v části Příklad.