Associação de entrada de preenchimento de texto do OpenAI do Azure para o Azure Functions

Importante

Atualmente, a extensão do OpenAI do Azure para Azure Functions está em versão prévia.

A associação de entrada de preenchimento de texto do OpenAI do Azure permite que você coloque as APIs de preenchimento de texto de resultados nas suas execuções de código. Você pode definir a associação para usar prompts predefinidos com parâmetros ou passar por um prompt inteiro.

Para obter informações sobre os detalhes de configuração da extensão do OpenAI do Azure, confira Extensões do OpenAI do Azure para Azure Functions. Para saber mais sobre os preenchimentos do OpenAI do Azure, confira Saiba como gerar ou processar um texto.

Observação

Referências e exemplos só são fornecidos para o modelo do Node.js v4.

Observação

Referências e exemplos só são fornecidos para o modelo do Python v2.

Observação

Embora haja suporte para ambos os modelos de processo C#, apenas exemplos de modelo de trabalho isolados são fornecidos.

Exemplo

Este exemplo demonstra o padrão de modelagem, em que a função de gatilho HTTP usa um parâmetro name e o insere em um prompt de texto, que é enviado para a API de preenchimentos do OpenAI do Azure pela extensão. A resposta ao prompt é retornada na resposta HTTP.

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

/// <summary>

Este exemplo usa um prompt como entrada, envia-o diretamente para a API de preenchimentos e retorna a resposta como saída.

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

Este exemplo demonstra o padrão de modelagem, em que a função de gatilho HTTP usa um parâmetro name e o insere em um prompt de texto, que é enviado para a API de preenchimentos do OpenAI do Azure pela extensão. A resposta ao prompt é retornada na resposta 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}?", model = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response") TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

Este exemplo usa um prompt como entrada, envia-o diretamente para a API de preenchimentos e retorna a resposta como saída.

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

Este exemplo demonstra o padrão de modelagem, em que a função de gatilho HTTP usa um parâmetro name e o insere em um prompt de texto, que é enviado para a API de preenchimentos do OpenAI do Azure pela extensão. A resposta ao prompt é retornada na resposta 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',
    model: '%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() }
    }
});

Este exemplo demonstra o padrão de modelagem, em que a função de gatilho HTTP usa um parâmetro name e o insere em um prompt de texto, que é enviado para a API de preenchimentos do OpenAI do Azure pela extensão. A resposta ao prompt é retornada na resposta 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',
    model: '%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() }
    }
});

Este exemplo demonstra o padrão de modelagem, em que a função de gatilho HTTP usa um parâmetro name e o insere em um prompt de texto, que é enviado para a API de preenchimentos do OpenAI do Azure pela extensão. A resposta ao prompt é retornada na resposta HTTP.

Aqui está o arquivo function.json para 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",
      "model": "%CHAT_MODEL_DEPLOYMENT_NAME%"
    }
  ]
}

Para obter mais informações sobre as propriedades do arquivo function.json, consulte a seção Configuração.

O código simplesmente retorna o texto da API de preenchimento como resposta:

using namespace System.Net

param($Request, $TriggerMetadata, $TextCompletionResponse)

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

Este exemplo demonstra o padrão de modelagem, em que a função de gatilho HTTP usa um parâmetro name e o insere em um prompt de texto, que é enviado para a API de preenchimentos do OpenAI do Azure pela extensão. A resposta ao prompt é retornada na resposta HTTP.

@app.route(route="whois/{name}", methods=["GET"])
@app.text_completion_input(arg_name="response", prompt="Who is {name}?", max_tokens="100", 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)

Este exemplo usa um prompt como entrada, envia-o diretamente para a API de preenchimentos e retorna a resposta como saída.

@app.route(route="genericcompletion", methods=["POST"])
@app.text_completion_input(arg_name="response", prompt="{Prompt}", 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)

Atributos

O atributo específico que você aplica para definir uma associação de entrada de preenchimento de texto depende do modo de processo em C#.

No modelo de trabalho isolado, aplique TextCompletionInput para definir uma associação de entrada de preenchimento de texto.

O atributo dá suporte a estes parâmetros:

Parâmetro Descrição
Prompt Obtém ou define o prompt para o qual os preenchimentos serão gerados, codificado como uma cadeia de caracteres.
Modelo Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com o valor padrão de gpt-3.5-turbo.
Temperatura Opcional. Obtém ou define a temperatura de amostragem a ser usada, como uma cadeia de caracteres entre 0 e 2. Valores mais altos (0.8) tornam a saída mais aleatória, enquanto valores mais baixos como (0.2) a tornam mais focada e determinística. Você deve usar Temperature ou TopP, mas não os dois.
TopP Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada de amostragem de núcleo, como uma cadeia de caracteres. Nesse método de amostragem, o modelo considera os resultados dos tokens com os top_p de massa de probabilidade. Portanto, 0.1 significa que apenas os tokens que compõem os primeiros 10% de massa de probabilidade são considerados. Você deve usar Temperature ou TopP, mas não os dois.
MaxTokens Opcional. Obtém ou define o número máximo de tokens a serem gerados no preenchimento, como uma cadeia de caracteres com um padrão igual a 100. A contagem de tokens do prompt mais max_tokens não pode exceder o tamanho do contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais novos, que dão suporte a 4.096).

Anotações

A anotação TextCompletion permite que você defina uma associação de entrada de preenchimento de texto, que dá suporte a estes parâmetros:

Element Descrição
name Obtém ou define o nome da associação de entrada.
prompt Obtém ou define o prompt para o qual os preenchimentos serão gerados, codificado como uma cadeia de caracteres.
Modelo Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com o valor padrão de gpt-3.5-turbo.
temperatura Opcional. Obtém ou define a temperatura de amostragem a ser usada, como uma cadeia de caracteres entre 0 e 2. Valores mais altos (0.8) tornam a saída mais aleatória, enquanto valores mais baixos como (0.2) a tornam mais focada e determinística. Você deve usar Temperature ou TopP, mas não os dois.
topP Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada de amostragem de núcleo, como uma cadeia de caracteres. Nesse método de amostragem, o modelo considera os resultados dos tokens com os top_p de massa de probabilidade. Portanto, 0.1 significa que apenas os tokens que compõem os primeiros 10% de massa de probabilidade são considerados. Você deve usar Temperature ou TopP, mas não os dois.
maxTokens Opcional. Obtém ou define o número máximo de tokens a serem gerados no preenchimento, como uma cadeia de caracteres com um padrão igual a 100. A contagem de tokens do prompt mais max_tokens não pode exceder o tamanho do contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais novos, que dão suporte a 4.096).

Decoradores

Durante a versão prévia, defina a associação de entrada como uma associação generic_input_binding do tipo textCompletion, que dá suporte a estes parâmetros:

Parâmetro Descrição
arg_name O nome da variável que representa o parâmetro de associação.
prompt Obtém ou define o prompt para o qual os preenchimentos serão gerados, codificado como uma cadeia de caracteres.
Modelo Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com o valor padrão de gpt-3.5-turbo.
temperatura Opcional. Obtém ou define a temperatura de amostragem a ser usada, como uma cadeia de caracteres entre 0 e 2. Valores mais altos (0.8) tornam a saída mais aleatória, enquanto valores mais baixos como (0.2) a tornam mais focada e determinística. Você deve usar Temperature ou TopP, mas não os dois.
top_p Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada de amostragem de núcleo, como uma cadeia de caracteres. Nesse método de amostragem, o modelo considera os resultados dos tokens com os top_p de massa de probabilidade. Portanto, 0.1 significa que apenas os tokens que compõem os primeiros 10% de massa de probabilidade são considerados. Você deve usar Temperature ou TopP, mas não os dois.
max_tokens Opcional. Obtém ou define o número máximo de tokens a serem gerados no preenchimento, como uma cadeia de caracteres com um padrão igual a 100. A contagem de tokens do prompt mais max_tokens não pode exceder o tamanho do contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais novos, que dão suporte a 4.096).

Configuração

A associação dá suporte a essas propriedades de configuração definidas no arquivo function.json.

Propriedade Descrição
tipo Deve ser textCompletion.
direction Deve ser in.
name O nome da associação de entrada.
prompt Obtém ou define o prompt para o qual os preenchimentos serão gerados, codificado como uma cadeia de caracteres.
Modelo Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com o valor padrão de gpt-3.5-turbo.
temperatura Opcional. Obtém ou define a temperatura de amostragem a ser usada, como uma cadeia de caracteres entre 0 e 2. Valores mais altos (0.8) tornam a saída mais aleatória, enquanto valores mais baixos como (0.2) a tornam mais focada e determinística. Você deve usar Temperature ou TopP, mas não os dois.
topP Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada de amostragem de núcleo, como uma cadeia de caracteres. Nesse método de amostragem, o modelo considera os resultados dos tokens com os top_p de massa de probabilidade. Portanto, 0.1 significa que apenas os tokens que compõem os primeiros 10% de massa de probabilidade são considerados. Você deve usar Temperature ou TopP, mas não os dois.
maxTokens Opcional. Obtém ou define o número máximo de tokens a serem gerados no preenchimento, como uma cadeia de caracteres com um padrão igual a 100. A contagem de tokens do prompt mais max_tokens não pode exceder o tamanho do contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais novos, que dão suporte a 4.096).

Configuração

A associação dá suporte a estas propriedades, que são definidas no código:

Propriedade Descrição
prompt Obtém ou define o prompt para o qual os preenchimentos serão gerados, codificado como uma cadeia de caracteres.
Modelo Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com o valor padrão de gpt-3.5-turbo.
temperatura Opcional. Obtém ou define a temperatura de amostragem a ser usada, como uma cadeia de caracteres entre 0 e 2. Valores mais altos (0.8) tornam a saída mais aleatória, enquanto valores mais baixos como (0.2) a tornam mais focada e determinística. Você deve usar Temperature ou TopP, mas não os dois.
topP Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada de amostragem de núcleo, como uma cadeia de caracteres. Nesse método de amostragem, o modelo considera os resultados dos tokens com os top_p de massa de probabilidade. Portanto, 0.1 significa que apenas os tokens que compõem os primeiros 10% de massa de probabilidade são considerados. Você deve usar Temperature ou TopP, mas não os dois.
maxTokens Opcional. Obtém ou define o número máximo de tokens a serem gerados no preenchimento, como uma cadeia de caracteres com um padrão igual a 100. A contagem de tokens do prompt mais max_tokens não pode exceder o tamanho do contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais novos, que dão suporte a 4.096).

Uso

Consulte a Seção de exemplo para obter exemplos completos.