Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 asistentes de Azure OpenAI, consulte API Azure OpenAI Assistants.
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 IActionResult PostUserQuery(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "assistants/{assistantId}")] HttpRequestData req,
string assistantId,
[AssistantPostInput("{assistantId}", "{Query.message}", ChatModel = "%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.");
}
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.
/*
* HTTP POST function that sends user prompts to the assistant chat bot.
*/
@FunctionName("PostUserResponse")
public HttpResponseMessage postUserResponse(
@HttpTrigger(
name = "req",
methods = {HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "assistants/{assistantId}")
HttpRequestMessage<Optional<String>> request,
@BindingName("assistantId") String assistantId,
@AssistantPost(name="newMessages", id = "{assistantId}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", userMessage = "{Query.message}", chatStorageConnectionSetting = DEFAULT_CHATSTORAGE, collectionName = DEFAULT_COLLECTION) AssistantState state,
final ExecutionContext context) {
List<AssistantMessage> recentMessages = state.getRecentMessages();
String response = recentMessages.isEmpty() ? "No response returned." : recentMessages.get(recentMessages.size() - 1).getContent();
return request.createResponseBuilder(HttpStatus.OK)
.header("Content-Type", "application/json")
.body(response)
.build();
}
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 { app, input, output } = require("@azure/functions");
const assistantPostInput = input.generic({
type: 'assistantPost',
id: '{assistantId}',
chatModel: '%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 = context.extraInputs.get(assistantPostInput)
const content = chatState.recentMessages[0].content
return {
status: 200,
body: content,
headers: {
'Content-Type': 'text/plain'
}
};
}
})
import { HttpRequest, InvocationContext, app, input, output } from "@azure/functions"
const assistantPostInput = input.generic({
type: 'assistantPost',
id: '{assistantId}',
chatModel: '%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)
const content = chatState.recentMessages[0].content
return {
status: 200,
body: 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.
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}",
"chatModel": "%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.
@apis.function_name("PostUserQuery")
@apis.route(route="assistants/{assistantId}", methods=["POST"])
@apis.assistant_post_input(
arg_name="state",
id="{assistantId}",
user_message="{Query.message}",
chat_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)
# Extract the content of the recentMessage
recent_message_content = data["recentMessages"][0]["content"]
return func.HttpResponse(
recent_message_content, status_code=200, mimetype="text/plain"
)
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 |
---|---|
Identificación | Identificador del asistente que se va a actualizar. |
UserMessage | Obtiene o establece el mensaje de usuario para el modelo de finalización de chat, codificado como una cadena. |
AIConnectionName | Opcional. Obtiene o establece el nombre de la sección de configuración para la configuración de conectividad del servicio ai. Para Azure OpenAI: si se especifica, busca los valores "Punto de conexión" y "Clave" en esta sección de configuración. Si no se especifica o la sección no existe, vuelva a las variables de entorno: AZURE_OPENAI_ENDPOINT y AZURE_OPENAI_KEY. Para la autenticación de identidad administrada asignada por el usuario, esta propiedad es necesaria. Para el servicio OpenAI (que no es de Azure), establezca la variable de entorno OPENAI_API_KEY. |
ChatModel |
Opcional. 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 o Temperature 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 top_p masa de probabilidad. Por lo tanto, 0.1 solo se consideran los tokens que componen los 10% masa de probabilidad principales. Debe usar o Temperature 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). |
IsReasoningModel |
Opcional. Obtiene o establece un valor que indica si el modelo de finalización de chat es un modelo de razonamiento. Esta opción es experimental y asociada al modelo de razonamiento hasta que todos los modelos tienen paridad en las propiedades esperadas, con un valor predeterminado de false . |
anotaciones
La anotación PostUserQuery
permite definir un enlace de entrada de publicación del asistente, que admite estos parámetros:
Elemento | Descripción |
---|---|
nombre | Nombre del enlace de salida. |
ID | Identificador del asistente que se va a actualizar. |
userMessage | Obtiene o establece el mensaje de usuario para el modelo de finalización de chat, codificado como una cadena. |
aiConnectionName | Opcional. Obtiene o establece el nombre de la sección de configuración para la configuración de conectividad del servicio ai. Para Azure OpenAI: si se especifica, busca los valores "Punto de conexión" y "Clave" en esta sección de configuración. Si no se especifica o la sección no existe, vuelva a las variables de entorno: AZURE_OPENAI_ENDPOINT y AZURE_OPENAI_KEY. Para la autenticación de identidad administrada asignada por el usuario, esta propiedad es necesaria. Para el servicio OpenAI (que no es de Azure), establezca la variable de entorno OPENAI_API_KEY. |
chatModel | 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 o Temperature 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 top_p masa de probabilidad. Por lo tanto, 0.1 solo se consideran los tokens que componen los 10% masa de probabilidad principales. Debe usar o Temperature 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). |
isReasoningModel |
Opcional. Obtiene o establece un valor que indica si el modelo de finalización de chat es un modelo de razonamiento. Esta opción es experimental y asociada al modelo de razonamiento hasta que todos los modelos tienen paridad en las propiedades esperadas, con un valor predeterminado de false . |
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. |
user_message | Obtiene o establece el mensaje de usuario para el modelo de finalización de chat, codificado como una cadena. |
ai_connection_name | Opcional. Obtiene o establece el nombre de la sección de configuración para la configuración de conectividad del servicio ai. Para Azure OpenAI: si se especifica, busca los valores "Punto de conexión" y "Clave" en esta sección de configuración. Si no se especifica o la sección no existe, vuelva a las variables de entorno: AZURE_OPENAI_ENDPOINT y AZURE_OPENAI_KEY. Para la autenticación de identidad administrada asignada por el usuario, esta propiedad es necesaria. Para el servicio OpenAI (que no es de Azure), establezca la variable de entorno OPENAI_API_KEY. |
chat_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 o Temperature 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 top_p masa de probabilidad. Por lo tanto, 0.1 solo se consideran los tokens que componen los 10% masa de probabilidad principales. Debe usar o Temperature 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). |
is_reasoning _model |
Opcional. Obtiene o establece un valor que indica si el modelo de finalización de chat es un modelo de razonamiento. Esta opción es experimental y asociada al modelo de razonamiento hasta que todos los modelos tienen paridad en las propiedades esperadas, con un valor predeterminado de false . |
Configuración
El enlace admite estas propiedades de configuración que se establecen en el archivo function.json.
Propiedad | Descripción |
---|---|
tipo | Debe ser PostUserQuery . |
dirección | Debe ser out . |
nombre | Nombre del enlace de salida. |
ID | Identificador del asistente que se va a actualizar. |
userMessage | Obtiene o establece el mensaje de usuario para el modelo de finalización de chat, codificado como una cadena. |
aiConnectionName | Opcional. Obtiene o establece el nombre de la sección de configuración para la configuración de conectividad del servicio ai. Para Azure OpenAI: si se especifica, busca los valores "Punto de conexión" y "Clave" en esta sección de configuración. Si no se especifica o la sección no existe, vuelva a las variables de entorno: AZURE_OPENAI_ENDPOINT y AZURE_OPENAI_KEY. Para la autenticación de identidad administrada asignada por el usuario, esta propiedad es necesaria. Para el servicio OpenAI (que no es de Azure), establezca la variable de entorno OPENAI_API_KEY. |
chatModel | 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 o Temperature 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 top_p masa de probabilidad. Por lo tanto, 0.1 solo se consideran los tokens que componen los 10% masa de probabilidad principales. Debe usar o Temperature 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). |
isReasoningModel |
Opcional. Obtiene o establece un valor que indica si el modelo de finalización de chat es un modelo de razonamiento. Esta opción es experimental y asociada al modelo de razonamiento hasta que todos los modelos tienen paridad en las propiedades esperadas, con un valor predeterminado de false . |
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. |
userMessage | Obtiene o establece el mensaje de usuario para el modelo de finalización de chat, codificado como una cadena. |
aiConnectionName | Opcional. Obtiene o establece el nombre de la sección de configuración para la configuración de conectividad del servicio ai. Para Azure OpenAI: si se especifica, busca los valores "Punto de conexión" y "Clave" en esta sección de configuración. Si no se especifica o la sección no existe, vuelva a las variables de entorno: AZURE_OPENAI_ENDPOINT y AZURE_OPENAI_KEY. Para la autenticación de identidad administrada asignada por el usuario, esta propiedad es necesaria. Para el servicio OpenAI (que no es de Azure), establezca la variable de entorno OPENAI_API_KEY. |
chatModel | 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 o Temperature 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 top_p masa de probabilidad. Por lo tanto, 0.1 solo se consideran los tokens que componen los 10% masa de probabilidad principales. Debe usar o Temperature 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). |
isReasoningModel |
Opcional. Obtiene o establece un valor que indica si el modelo de finalización de chat es un modelo de razonamiento. Esta opción es experimental y asociada al modelo de razonamiento hasta que todos los modelos tienen paridad en las propiedades esperadas, con un valor predeterminado de false . |
Uso
Consulte la sección de ejemplos para ver ejemplos completos.