Enlace de entrada de finalización de texto de Azure OpenAI para Azure Functions
Importante
La extensión de Azure OpenAI para Azure Functions está actualmente en versión preliminar.
El enlace de entrada de finalización de texto de Azure OpenAI permite incorporar las API de finalización de texto de resultados a las ejecuciones de código. Puede definir el enlace para usar ambas indicaciones predefinidas con parámetros o pasar por un mensaje completo.
Para obtener información sobre la configuración y los detalles de configuración de la extensión de Azure OpenAI, consulte Extensiones de Azure OpenAI para Azure Functions. Para más información sobre las finalizaciones de Azure OpenAI, consulte Más información sobre cómo generar o manipular texto.
Nota:
Las referencias y ejemplos solo se proporcionan para el modelo de Node.js v4.
Nota:
Las referencias y ejemplos solo se proporcionan para el modelo de Python v2.
Nota:
Aunque se admiten ambos modelos de proceso de C#, solo se proporcionan ejemplos de modelos de trabajo aislados.
Ejemplo
En este ejemplo se muestra el patrón de plantillas, donde la función desencadenador HTTP toma un parámetro name
y lo inserta en un mensaje de texto, que luego se envía a la API de finalizaciones de Azure OpenAI mediante la extensión. La respuesta a la solicitud se devuelve en la respuesta 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>
En este ejemplo se toma una solicitud como entrada, se envía directamente a la API de finalizaciones y se devuelve la respuesta como salida.
[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);
}
}
En este ejemplo se muestra el patrón de plantillas, donde la función desencadenador HTTP toma un parámetro name
y lo inserta en un mensaje de texto, que luego se envía a la API de finalizaciones de Azure OpenAI mediante la extensión. La respuesta a la solicitud se devuelve en la respuesta 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();
}
En este ejemplo se toma una solicitud como entrada, se envía directamente a la API de finalizaciones y se devuelve la respuesta como salida.
@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();
}
En este ejemplo se muestra el patrón de plantillas, donde la función desencadenador HTTP toma un parámetro name
y lo inserta en un mensaje de texto, que luego se envía a la API de finalizaciones de Azure OpenAI mediante la extensión. La respuesta a la solicitud se devuelve en la respuesta 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() }
}
});
En este ejemplo se muestra el patrón de plantillas, donde la función desencadenador HTTP toma un parámetro name
y lo inserta en un mensaje de texto, que luego se envía a la API de finalizaciones de Azure OpenAI mediante la extensión. La respuesta a la solicitud se devuelve en la respuesta 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() }
}
});
En este ejemplo se muestra el patrón de plantillas, donde la función desencadenador HTTP toma un parámetro name
y lo inserta en un mensaje de texto, que luego se envía a la API de finalizaciones de Azure OpenAI mediante la extensión. La respuesta a la solicitud se devuelve en la respuesta HTTP.
Este es el archivo 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 obtener más información sobre las propiedades del archivo function.json, consulte la sección de Configuración.
El código simplemente devuelve el texto de la API de finalización como respuesta:
using namespace System.Net
param($Request, $TriggerMetadata, $TextCompletionResponse)
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $TextCompletionResponse.Content
})
En este ejemplo se muestra el patrón de plantillas, donde la función desencadenador HTTP toma un parámetro name
y lo inserta en un mensaje de texto, que luego se envía a la API de finalizaciones de Azure OpenAI mediante la extensión. La respuesta a la solicitud se devuelve en la respuesta 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)
En este ejemplo se toma una solicitud como entrada, se envía directamente a la API de finalizaciones y se devuelve la respuesta como salida.
@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
El atributo específico que se aplica para definir un enlace de entrada de finalización de texto depende del modo de proceso de C#.
En el modelo de trabajo aislado, aplique TextCompletionInput
para definir un enlace de entrada de finalización de texto.
El atributo admite estos parámetros:
Parámetro | Descripción |
---|---|
Aviso | Obtiene o establece la solicitud para la que generar finalizaciones codificadas como una cadena. |
Modelo | Obtiene o establece el identificador del modelo que se va a usar como una cadena, con un valor predeterminado de gpt-3.5-turbo . |
Temperatura | Opcional. Obtiene o establece la temperatura de muestreo que se va a usar, como una cadena entre 0 y 2 . Los valores más altos (0.8 ) hacen que la salida sea más aleatoria, mientras que los valores más bajos como (0.2 ) hacen que la salida sea más centrada y determinista. Debe usar Temperature o TopP , pero no ambos. |
TopP | Opcional. Obtiene o establece una alternativa al muestreo con temperatura, denominado muestreo de núcleo, como una cadena. En este método de muestreo, el modelo considera los resultados de los tokens con masa de probabilidad top_p . Así, 0.1 significa que solo se consideran los tokens que comprenden la masa de probabilidad del 10 % superior. Debe usar Temperature o TopP , pero no ambos. |
MaxTokens | Opcional. Obtiene o establece el número máximo de tokens que se van a generar en la finalización, como una cadena con un valor predeterminado de 100 . El número de tokens de su pregunta más max_tokens no puede exceder la longitud del contexto del modelo. La mayoría de los modelos tienen una longitud de contexto de 2048 tokens (excepto los modelos más recientes, que admiten 4096). |
anotaciones
La anotación TextCompletion
permite definir un enlace de entrada de finalización de texto, que admite estos parámetros:
Elemento | Descripción |
---|---|
name | Obtiene o establece el nombre del enlace de entrada. |
prompt | Obtiene o establece la solicitud para la que generar finalizaciones codificadas como una cadena. |
model | Obtiene o establece el identificador del modelo que se va a usar como una cadena, con un valor predeterminado de gpt-3.5-turbo . |
temperatura | Opcional. Obtiene o establece la temperatura de muestreo que se va a usar, como una cadena entre 0 y 2 . Los valores más altos (0.8 ) hacen que la salida sea más aleatoria, mientras que los valores más bajos como (0.2 ) hacen que la salida sea más centrada y determinista. Debe usar Temperature o TopP , pero no ambos. |
topP | Opcional. Obtiene o establece una alternativa al muestreo con temperatura, denominado muestreo de núcleo, como una cadena. En este método de muestreo, el modelo considera los resultados de los tokens con masa de probabilidad top_p . Así, 0.1 significa que solo se consideran los tokens que comprenden la masa de probabilidad del 10 % superior. Debe usar Temperature o TopP , pero no ambos. |
maxTokens | Opcional. Obtiene o establece el número máximo de tokens que se van a generar en la finalización, como una cadena con un valor predeterminado de 100 . El número de tokens de su pregunta más max_tokens no puede exceder la longitud del contexto del modelo. La mayoría de los modelos tienen una longitud de contexto de 2048 tokens (excepto los modelos más recientes, que admiten 4096). |
Elementos Decorator
Durante la versión preliminar, defina el enlace de entrada como un enlace generic_input_binding
de tipo textCompletion
, que admite estos parámetros:
Parámetro | Descripción |
---|---|
arg_name | Nombre de la variable que representa el parámetro de enlace. |
prompt | Obtiene o establece la solicitud para la que generar finalizaciones codificadas como una cadena. |
model | Obtiene o establece el identificador del modelo que se va a usar como una cadena, con un valor predeterminado de gpt-3.5-turbo . |
temperatura | Opcional. Obtiene o establece la temperatura de muestreo que se va a usar, como una cadena entre 0 y 2 . Los valores más altos (0.8 ) hacen que la salida sea más aleatoria, mientras que los valores más bajos como (0.2 ) hacen que la salida sea más centrada y determinista. Debe usar Temperature o TopP , pero no ambos. |
top_p | Opcional. Obtiene o establece una alternativa al muestreo con temperatura, denominado muestreo de núcleo, como una cadena. En este método de muestreo, el modelo considera los resultados de los tokens con masa de probabilidad top_p . Así, 0.1 significa que solo se consideran los tokens que comprenden la masa de probabilidad del 10 % superior. Debe usar Temperature o TopP , pero no ambos. |
max_tokens | Opcional. Obtiene o establece el número máximo de tokens que se van a generar en la finalización, como una cadena con un valor predeterminado de 100 . El número de tokens de su pregunta más max_tokens no puede exceder la longitud del contexto del modelo. La mayoría de los modelos tienen una longitud de contexto de 2048 tokens (excepto los modelos más recientes, que admiten 4096). |
Configuración
El enlace admite estas propiedades de configuración que se establecen en el archivo function.json.
Propiedad | Descripción |
---|---|
type | Debe ser textCompletion . |
direction | Debe ser in . |
name | Nombre del enlace de entrada. |
prompt | Obtiene o establece la solicitud para la que generar finalizaciones codificadas como una cadena. |
model | Obtiene o establece el identificador del modelo que se va a usar como una cadena, con un valor predeterminado de gpt-3.5-turbo . |
temperatura | Opcional. Obtiene o establece la temperatura de muestreo que se va a usar, como una cadena entre 0 y 2 . Los valores más altos (0.8 ) hacen que la salida sea más aleatoria, mientras que los valores más bajos como (0.2 ) hacen que la salida sea más centrada y determinista. Debe usar Temperature o TopP , pero no ambos. |
topP | Opcional. Obtiene o establece una alternativa al muestreo con temperatura, denominado muestreo de núcleo, como una cadena. En este método de muestreo, el modelo considera los resultados de los tokens con masa de probabilidad top_p . Así, 0.1 significa que solo se consideran los tokens que comprenden la masa de probabilidad del 10 % superior. Debe usar Temperature o TopP , pero no ambos. |
maxTokens | Opcional. Obtiene o establece el número máximo de tokens que se van a generar en la finalización, como una cadena con un valor predeterminado de 100 . El número de tokens de su pregunta más max_tokens no puede exceder la longitud del contexto del modelo. La mayoría de los modelos tienen una longitud de contexto de 2048 tokens (excepto los modelos más recientes, que admiten 4096). |
Configuración
El enlace admite estas propiedades, que se definen en el código:
Propiedad | Descripción |
---|---|
prompt | Obtiene o establece la solicitud para la que generar finalizaciones codificadas como una cadena. |
model | Obtiene o establece el identificador del modelo que se va a usar como una cadena, con un valor predeterminado de gpt-3.5-turbo . |
temperatura | Opcional. Obtiene o establece la temperatura de muestreo que se va a usar, como una cadena entre 0 y 2 . Los valores más altos (0.8 ) hacen que la salida sea más aleatoria, mientras que los valores más bajos como (0.2 ) hacen que la salida sea más centrada y determinista. Debe usar Temperature o TopP , pero no ambos. |
topP | Opcional. Obtiene o establece una alternativa al muestreo con temperatura, denominado muestreo de núcleo, como una cadena. En este método de muestreo, el modelo considera los resultados de los tokens con masa de probabilidad top_p . Así, 0.1 significa que solo se consideran los tokens que comprenden la masa de probabilidad del 10 % superior. Debe usar Temperature o TopP , pero no ambos. |
maxTokens | Opcional. Obtiene o establece el número máximo de tokens que se van a generar en la finalización, como una cadena con un valor predeterminado de 100 . El número de tokens de su pregunta más max_tokens no puede exceder la longitud del contexto del modelo. La mayoría de los modelos tienen una longitud de contexto de 2048 tokens (excepto los modelos más recientes, que admiten 4096). |
Uso
Consulte la sección de ejemplos para ver ejemplos completos.