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

El soporte de Go no está disponible actualmente para esta asignación.

En este ejemplo se muestra el patrón de plantillas , donde la función desencadenador HTTP toma un name parámetro e 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}?", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", AIConnectionName = "AzureOpenAI")] TextCompletionResponse response)
{
    return new OkObjectResult(response.Content);
}

En este ejemplo se toma un mensaje como entrada, se envía directamente a la API de finalizaciones y se devuelve la respuesta como salida.

[Function(nameof(GenericCompletion))]
public static IActionResult GenericCompletion(
    [HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequestData req,
    [TextCompletionInput("{Prompt}", ChatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", AIConnectionName = "AzureOpenAI")] 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 name parámetro e 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.FUNCTION, 
        route = "whois/{name}") 
        HttpRequestMessage<Optional<String>> request,
    @BindingName("name") String name,
    @TextCompletion(prompt = "Who is {name}?", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false, aiConnectionName = "AzureOpenAI") TextCompletionResponse response,
    final ExecutionContext context) {
    return request.createResponseBuilder(HttpStatus.OK)
        .header("Content-Type", "application/json")
        .body(response.getContent())
        .build();
}

En este ejemplo se toma un mensaje 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.FUNCTION) 
        HttpRequestMessage<Optional<String>> request,
    @TextCompletion(prompt = "{prompt}", chatModel = "%CHAT_MODEL_DEPLOYMENT_NAME%", name = "response", isReasoningModel = false, aiConnectionName = "AzureOpenAI") 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 name parámetro e 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',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    aiConnectionName: 'AzureOpenAI'
})

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 name parámetro e 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',
    chatModel: '%CHAT_MODEL_DEPLOYMENT_NAME%',
    aiConnectionName: 'AzureOpenAI'
})

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 name parámetro e 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",
      "chatModel": "%CHAT_MODEL_DEPLOYMENT_NAME%",
      "aiConnectionName": "AzureOpenAI"
    }
  ]
}

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 name parámetro e 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",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
    ai_connection_name="AzureOpenAI",
)
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 un mensaje 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}",
    chat_model="%CHAT_MODEL_DEPLOYMENT_NAME%",
    ai_connection_name="AzureOpenAI",
)
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 el símbolo del sistema para generar finalizaciones para, codificadas 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 TemperatureTopP, 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 TemperatureTopP, 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 TextCompletion anotación permite definir un enlace de entrada de finalización de texto, que admite estos parámetros:

Elemento Descripción
nombre Obtiene o establece el nombre del enlace de entrada.
solicitud Obtiene o establece el símbolo del sistema para generar finalizaciones para, codificadas 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 TemperatureTopP, 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 TemperatureTopP, 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 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.
solicitud Obtiene o establece el símbolo del sistema para generar finalizaciones para, codificadas 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 TemperatureTopP, 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 TemperatureTopP, 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 textCompletion.
dirección Debe ser in.
nombre Nombre del enlace de entrada.
solicitud Obtiene o establece el símbolo del sistema para generar finalizaciones para, codificadas 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 TemperatureTopP, 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 TemperatureTopP, 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
solicitud Obtiene o establece el símbolo del sistema para generar finalizaciones para, codificadas 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 TemperatureTopP, 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 TemperatureTopP, 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.

Connections

Para usar la extensión de enlace Azure OpenAI, necesitas especificar una conexión a una definición de modelo OpenAI. Establece la conexión del modelo OpenAI en tus bindings usando uno de estos enfoques:

  • Usa la AIConnectionName propiedad de binding (preferida para Azure OpenAI).
  • Configura AZURE_OPENAI_ENDPOINT y AZURE_OPENAI_KEY está en la configuración de la app (para Azure OpenAI).
  • Configurado solo Open_API_Key en la configuración de la app (para https://api.openai.com).

La forma en que se establece la conexión depende tanto de la API del modelo como del método de autenticación, como indica la siguiente tabla:

API de autenticación/modelo Azure OpenAI OpenAI (https://api.openai.com)
Conexión de identidad gestionada AIConnectionName No soportado
Referencia a Key Vault AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Referencia de configuración de aplicaciones AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key
Secreto compartido AZURE_OPENAI_ENDPOINT
AZURE_OPENAI_KEY
Open_API_Key

Utiliza conexiones gestionadas basadas en identidad y la AIConnectionName propiedad.

Cuando usas AIConnectionName, el valor de esta configuración de propiedad depende del tipo de conexión:

  • Conexión de identidad gestionada: La AIConnectionName propiedad es <CONNECTION_NAME_PREFIX> compartida por un grupo de configuraciones que en conjunto definen una conexión basada en identidad con Azure OpenAI. Para más información, véase Definir conexiones de identidad.
  • Referencia Key Vault: La AIConnectionName configuración de propiedades devuelve una referencia de Azure Key Vault a la ubicación donde se mantiene centralmente la clave API. Para más información, consulte Definir conexiones de Key Vault.
  • Referencia de configuración de la aplicación: La AIConnectionName configuración de propiedad devuelve una referencia de Azure App Configuration que devuelve una clave API o una referencia a Key Vault. Para más información, consulta Azure App Configuration en el artículo de conexiones.
  • Clave API: La AIConnectionName configuración de propiedades se resuelve a la configuración de la app que contiene directamente el endpoint y la clave. Como las claves compartidas pueden verse comprometidas, utiliza conexiones de identidad gestionadas siempre que sea posible. Para más información, véase Definir conexiones.

Para saber más sobre conexiones de bindings, consulta Gestionar conexiones en Azure Functions.

Las vinculaciones de OpenAI incluyen una AIConnectionName propiedad que puedes usar para especificar el <ConnectionNamePrefix> grupo de configuraciones de la app que definen la conexión a Azure OpenAI:

Nombre de la configuración Descripción
<CONNECTION_NAME_PREFIX>__endpoint Establece el extremo URI del servicio Azure OpenAI. Esta configuración siempre es necesaria.
<CONNECTION_NAME_PREFIX>__clientId Establece la identidad asignada por el usuario específica que se usará al obtener un token de acceso. Requiere que <CONNECTION_NAME_PREFIX>__credential se establezca en managedidentity. La propiedad acepta un identificador de cliente correspondiente a una identidad asignada por el usuario asignada a la aplicación. No es válido especificar un id. de recurso así como tampoco es válido un id. de cliente. Si no especificas esta propiedad, se utiliza la identidad asignada por el sistema. Esta propiedad se usa de forma diferente en escenarios de desarrollo locales, en los que no se debe establecer el elemento credential.
<CONNECTION_NAME_PREFIX>__credential Define cómo se obtiene un token de access para la conexión. Use managedidentity para la autenticación de identidad administrada. Este valor sólo es válido cuando existe una identidad administrada disponible en el entorno del hospedaje.
<CONNECTION_NAME_PREFIX>__managedIdentityResourceId Cuando credential se establece en managedidentity, establece esta propiedad para especificar el Identificador de recurso a usar al obtener un token. La propiedad acepta un identificador de recurso correspondiente al Id. de recurso de la identidad administrada definida por el usuario. No es válido especificar un Id. de recurso así como tampoco es válido un Id. de cliente. Si no especificas ninguno, se usa la identidad asignada por el sistema. Esta propiedad se usa de forma diferente en escenarios de desarrollo locales, en los que no se debe establecer el elemento credential.
<CONNECTION_NAME_PREFIX>__key Establece la clave secreta compartida necesaria para acceder al punto final del servicio OpenAI de Azure usando autenticación basada en claves. Como mejor práctica de seguridad, utiliza siempre Microsoft Entra ID con identidades gestionadas para la autenticación.

Considera estos ajustes de conexión de identidad gestionada cuando configures la AIConnectionName propiedad como myAzureOpenAI:

  • myAzureOpenAI__endpoint=https://contoso.openai.azure.com/
  • myAzureOpenAI__credential=managedidentity
  • myAzureOpenAI__clientId=aaaaaaaa-bbbb-cccc-1111-222222222222

En tiempo de ejecución, el host interpreta estos ajustes como un solo myAzureOpenAI ajuste:

"myAzureOpenAI":
{
    "endpoint": "https://contoso.openai.azure.com/",
    "credential": "managedidentity",
    "clientId": "aaaaaaaa-bbbb-cccc-1111-222222222222"
}

Cuando utilices identidades gestionadas, asegúrate de añadir tu identidad al rol de Usuario OpenAI de Servicios Cognitivos .

Al ejecutarlo localmente, añade estos ajustes al archivolocal.settings.json proyecto. Para obtener más información, consulte Desarrollo local con conexiones basadas en identidades.

Para más información, consulte Trabajar con la configuración de la aplicación.