Enlace de entrada de publicación del asistente 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 publicación del asistente de Azure OpenAI le permite enviar solicitudes a los bots de chat del asistente.
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 los asistente de Azure OpenAI, consulte [API de azure OpenAI Assistants](.. /ai-services/openai/
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 proceso de creación, donde la función HTTP POST envía indicaciones del usuario al robot de chat del asistente. La respuesta a la solicitud se devuelve en la respuesta HTTP.
/// <summary>
/// HTTP POST function that sends user prompts to the assistant chat bot.
/// </summary>
[Function(nameof(PostUserQuery))]
public static async Task<IActionResult> PostUserQuery(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
string assistantId,
[AssistantPostInput("{assistantId}", "{Query.message}", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
return new OkObjectResult(state.RecentMessages.Any() ? state.RecentMessages[state.RecentMessages.Count - 1].Content : "No response returned.");
}
/// <summary>
/// HTTP GET function that queries the conversation history of the assistant chat bot.
/// </summary>
[Function(nameof(GetChatState))]
public static async Task<IActionResult> GetChatState(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "assistants/{assistantId}")] HttpRequestData req,
string assistantId,
[AssistantQueryInput("{assistantId}", TimestampUtc = "{Query.timestampUTC}", ChatStorageConnectionSetting = DefaultChatStorageConnectionSetting, CollectionName = DefaultCollectionName)] AssistantState state)
{
En este ejemplo se muestra el proceso de creación, donde la función HTTP POST envía indicaciones del usuario al robot de chat del asistente. La respuesta a la solicitud se devuelve en la respuesta HTTP.
public HttpResponseMessage getChatState(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "assistants/{assistantId}")
HttpRequestMessage<Optional<String>> request,
@BindingName("assistantId") String assistantId,
@AssistantQuery(name = "AssistantState", id = "{assistantId}", timestampUtc = "{Query.timestampUTC}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
final ExecutionContext context) {
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(state)
.build();
}
/*
* HTTP POST function that sends user prompts to the assistant chat bot.
*/
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
Los ejemplos aún no están disponibles.
En este ejemplo se muestra el proceso de creación, donde la función HTTP POST envía indicaciones del usuario al robot de chat del asistente. La respuesta a la solicitud se devuelve en la respuesta HTTP.
}
})
const assistantPostInput = input.generic({
type: 'assistantPost',
id: '{assistantId}',
model: '%CHAT_MODEL_DEPLOYMENT_NAME%',
userMessage: '{Query.message}',
chatStorageConnectionSetting: CHAT_STORAGE_CONNECTION_SETTING,
collectionName: COLLECTION_NAME
})
app.http('PostUserResponse', {
methods: ['POST'],
route: 'assistants/{assistantId}',
authLevel: 'anonymous',
extraInputs: [assistantPostInput],
handler: async (_, context) => {
const chatState: any = context.extraInputs.get(assistantPostInput)
En este ejemplo se muestra el proceso de creación, donde la función HTTP POST envía indicaciones del usuario al robot de chat del asistente. La respuesta a la solicitud se devuelve en la respuesta HTTP.
Este es el archivo function.json para la consulta posterior al usuario:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"route": "assistants/{assistantId}",
"methods": [
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"name": "State",
"type": "assistantPost",
"direction": "in",
"dataType": "string",
"id": "{assistantId}",
"userMessage": "{Query.message}",
"model": "%CHAT_MODEL_DEPLOYMENT_NAME%",
"chatStorageConnectionSetting": "AzureWebJobsStorage",
"collectionName": "ChatState"
}
]
}
Para obtener más información sobre las propiedades del archivo function.json, consulte la sección de Configuración.
using namespace System.Net
param($Request, $TriggerMetadata, $State)
$recent_message_content = "No recent messages!"
if ($State.recentMessages.Count -gt 0) {
$recent_message_content = $State.recentMessages[0].content
}
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $recent_message_content
Headers = @{
"Content-Type" = "text/plain"
}
})
En este ejemplo se muestra el proceso de creación, donde la función HTTP POST envía indicaciones del usuario al robot de chat del asistente. La respuesta a la solicitud se devuelve en la respuesta HTTP.
response_json = {"assistantId": assistantId}
return func.HttpResponse(json.dumps(response_json), status_code=202, mimetype="application/json")
@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(arg_name="state", id="{assistantId}", user_message="{Query.message}", model="%CHAT_MODEL_DEPLOYMENT_NAME%", chat_storage_connection_setting=DEFAULT_CHAT_STORAGE_SETTING, collection_name=DEFAULT_CHAT_COLLECTION_NAME)
def post_user_response(req: func.HttpRequest, state: str) -> func.HttpResponse:
# Parse the JSON string into a dictionary
data = json.loads(state)
Atributos
Aplique el atributo PostUserQuery
para definir un enlace de entrada de publicación del asistente, que admite estos parámetros:
Parámetro | Descripción |
---|---|
Id | Identificador del asistente que se va a actualizar. |
Modelo | Nombre del modelo de chat de OpenAI que se va a usar. Para Azure OpenAI, este valor es el nombre de la implementación del modelo. |
anotaciones
La anotación PostUserQuery
permite definir un enlace de entrada de publicación del asistente, que admite estos parámetros:
Elemento | Descripción |
---|---|
name | Nombre del enlace de salida. |
id | Identificador del asistente que se va a actualizar. |
model | Nombre del modelo de chat de OpenAI que se va a usar. Para Azure OpenAI, este valor es el nombre de la implementación del modelo. |
Elementos Decorator
Durante la versión preliminar, defina el enlace de salida como un enlace generic_output_binding
de tipo postUserQuery
, que admite estos parámetros:
Parámetro | Descripción |
---|---|
arg_name | Nombre de la variable que representa el parámetro de enlace. |
id | Identificador del asistente que se va a actualizar. |
model | Nombre del modelo de chat de OpenAI que se va a usar. Para Azure OpenAI, este valor es el nombre de la implementación del modelo. |
Configuración
El enlace admite estas propiedades de configuración que se establecen en el archivo function.json.
Propiedad | Descripción |
---|---|
type | Debe ser PostUserQuery . |
direction | Debe ser out . |
name | Nombre del enlace de salida. |
id | Identificador del asistente que se va a actualizar. |
model | Nombre del modelo de chat de OpenAI que se va a usar. Para Azure OpenAI, este valor es el nombre de la implementación del modelo. |
Configuración
El enlace admite estas propiedades, que se definen en el código:
Propiedad | Descripción |
---|---|
id | Identificador del asistente que se va a actualizar. |
model | Nombre del modelo de chat de OpenAI que se va a usar. Para Azure OpenAI, este valor es el nombre de la implementación del modelo. |
Uso
Consulte la sección de ejemplos para ver ejemplos completos.