Vinculação de entrada de conclusão de texto do Azure OpenAI para o Azure Functions
Importante
A extensão do Azure OpenAI para o Azure Functions está atualmente em visualização.
A vinculação de entrada de conclusão de texto do Azure OpenAI permite que você traga as APIs de conclusão de texto de resultados para suas execuções de código. Você pode definir a associação para usar ambos os prompts predefinidos com parâmetros ou passar por um prompt inteiro.
Para obter informações sobre detalhes de instalação e configuração da extensão do Azure OpenAI, consulte Extensões do Azure OpenAI para Azure Functions. Para saber mais sobre as conclusões do Azure OpenAI, consulte Saiba como gerar ou manipular texto.
Nota
Referências e exemplos são fornecidos apenas para o modelo Node.js v4.
Nota
Referências e exemplos são fornecidos apenas para o modelo Python v2.
Nota
Embora ambos os modelos de processo C# sejam suportados, apenas exemplos de modelos de trabalho isolados são fornecidos.
Exemplo
Este exemplo demonstra o padrão de modelagem , onde a função de gatilho HTTP usa um name
parâmetro e o incorpora em um prompt de texto, que é enviado para a API de conclusão do Azure OpenAI 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 conclusão 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 , onde a função de gatilho HTTP usa um name
parâmetro e o incorpora em um prompt de texto, que é enviado para a API de conclusão do Azure OpenAI 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 conclusão 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 , onde a função de gatilho HTTP usa um name
parâmetro e o incorpora em um prompt de texto, que é enviado para a API de conclusão do Azure OpenAI 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 , onde a função de gatilho HTTP usa um name
parâmetro e o incorpora em um prompt de texto, que é enviado para a API de conclusão do Azure OpenAI 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 , onde a função de gatilho HTTP usa um name
parâmetro e o incorpora em um prompt de texto, que é enviado para a API de conclusão do Azure OpenAI 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 function.json propriedades do arquivo, consulte a seção Configuração .
O código simplesmente retorna o texto da API de conclusão 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 , onde a função de gatilho HTTP usa um name
parâmetro e o incorpora em um prompt de texto, que é enviado para a API de conclusão do Azure OpenAI 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 conclusão 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 vinculação de entrada de conclusão de texto depende do seu modo de processo C#.
No modelo de trabalho isolado, aplique TextCompletionInput
para definir uma vinculação de entrada de conclusão de texto.
O atributo suporta estes parâmetros:
Parâmetro | Description |
---|---|
Pedido | Obtém ou define o prompt para gerar completações, codificado como uma cadeia de caracteres. |
Modelo | Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com um 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 ) tornam a saída mais focada e determinística. Você deve usar um ou Temperature TopP , mas não ambos. |
TopP | Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, como uma corda. Neste método de amostragem, o modelo considera os resultados dos tokens com top_p massa de probabilidade. Isso significa que 0.1 apenas os tokens que compõem a massa de probabilidade superior de 10% são considerados. Você deve usar um ou Temperature TopP , mas não ambos. |
MaxTokens | Opcional. Obtém ou define o número máximo de tokens a serem gerados na conclusão, como uma cadeia de caracteres com um padrão de 100 . A contagem de tokens do prompt plus max_tokens não pode exceder o comprimento de contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais recentes, que suportam 4096). |
Anotações
A TextCompletion
anotação permite definir uma vinculação de entrada de conclusão de texto, que suporta estes parâmetros:
Elemento | Description |
---|---|
Designação | Obtém ou define o nome da ligação de entrada. |
Prompt | Obtém ou define o prompt para gerar completações, codificado como uma cadeia de caracteres. |
modelo | Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com um 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 ) tornam a saída mais focada e determinística. Você deve usar um ou Temperature TopP , mas não ambos. |
topP | Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, como uma corda. Neste método de amostragem, o modelo considera os resultados dos tokens com top_p massa de probabilidade. Isso significa que 0.1 apenas os tokens que compõem a massa de probabilidade superior de 10% são considerados. Você deve usar um ou Temperature TopP , mas não ambos. |
maxTokens | Opcional. Obtém ou define o número máximo de tokens a serem gerados na conclusão, como uma cadeia de caracteres com um padrão de 100 . A contagem de tokens do prompt plus max_tokens não pode exceder o comprimento de contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais recentes, que suportam 4096). |
Decoradores
Durante a visualização, defina a ligação de entrada como uma generic_input_binding
associação do tipo textCompletion
, que suporta estes parâmetros:
Parâmetro | Description |
---|---|
arg_name | O nome da variável que representa o parâmetro de ligação. |
Prompt | Obtém ou define o prompt para gerar completações, codificado como uma cadeia de caracteres. |
modelo | Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com um 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 ) tornam a saída mais focada e determinística. Você deve usar um ou Temperature TopP , mas não ambos. |
top_p | Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, como uma corda. Neste método de amostragem, o modelo considera os resultados dos tokens com top_p massa de probabilidade. Isso significa que 0.1 apenas os tokens que compõem a massa de probabilidade superior de 10% são considerados. Você deve usar um ou Temperature TopP , mas não ambos. |
max_tokens | Opcional. Obtém ou define o número máximo de tokens a serem gerados na conclusão, como uma cadeia de caracteres com um padrão de 100 . A contagem de tokens do prompt plus max_tokens não pode exceder o comprimento de contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais recentes, que suportam 4096). |
Configuração
A associação suporta essas propriedades de configuração definidas no arquivo function.json.
Property | Descrição |
---|---|
type | Deve ser textCompletion . |
direção | Deve ser in . |
Designação | O nome da ligação de entrada. |
Prompt | Obtém ou define o prompt para gerar completações, codificado como uma cadeia de caracteres. |
modelo | Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com um 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 ) tornam a saída mais focada e determinística. Você deve usar um ou Temperature TopP , mas não ambos. |
topP | Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, como uma corda. Neste método de amostragem, o modelo considera os resultados dos tokens com top_p massa de probabilidade. Isso significa que 0.1 apenas os tokens que compõem a massa de probabilidade superior de 10% são considerados. Você deve usar um ou Temperature TopP , mas não ambos. |
maxTokens | Opcional. Obtém ou define o número máximo de tokens a serem gerados na conclusão, como uma cadeia de caracteres com um padrão de 100 . A contagem de tokens do prompt plus max_tokens não pode exceder o comprimento de contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais recentes, que suportam 4096). |
Configuração
A associação suporta estas propriedades, que são definidas no seu código:
Property | Description |
---|---|
Prompt | Obtém ou define o prompt para gerar completações, codificado como uma cadeia de caracteres. |
modelo | Obtém ou define a ID do modelo a ser usada como uma cadeia de caracteres, com um 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 ) tornam a saída mais focada e determinística. Você deve usar um ou Temperature TopP , mas não ambos. |
topP | Opcional. Obtém ou define uma alternativa à amostragem com temperatura, chamada amostragem de núcleo, como uma corda. Neste método de amostragem, o modelo considera os resultados dos tokens com top_p massa de probabilidade. Isso significa que 0.1 apenas os tokens que compõem a massa de probabilidade superior de 10% são considerados. Você deve usar um ou Temperature TopP , mas não ambos. |
maxTokens | Opcional. Obtém ou define o número máximo de tokens a serem gerados na conclusão, como uma cadeia de caracteres com um padrão de 100 . A contagem de tokens do prompt plus max_tokens não pode exceder o comprimento de contexto do modelo. A maioria dos modelos tem um comprimento de contexto de 2.048 tokens (exceto os modelos mais recentes, que suportam 4096). |
Utilização
Consulte a seção Exemplo para obter exemplos completos.