Compartir a través de


Tutorial: Parte 3: Evaluación e implementación de una aplicación de chat personalizada con el SDK de flujo de avisos

En este tutorial, usará el SDK de flujo de avisos (y otras bibliotecas) para evaluar e implementar la aplicación de chat que creó en la Parte 2 de la serie de tutoriales. En esta parte tres, aprenderá a:

  • Evaluación de la calidad de las respuestas de la aplicación de chat
  • Implementación de la aplicación de chat en Azure
  • Comprobar la implementación

Este tutorial es la tercera parte de un tutorial de tres partes.

Requisitos previos

  • Complete la parte 2 de la serie de tutoriales para compilar la aplicación de chat.

  • Debe tener los permisos necesarios para agregar asignaciones de roles en la suscripción de Azure. La concesión de permisos por asignación de roles solo está permitida por el propietario de los recursos específicos de Azure. Es posible que tenga que pedir al propietario de la suscripción de Azure (que puede ser el administrador de TI) que le ayude con el acceso al punto de conexión más adelante en el tutorial.

Evaluar la calidad de las respuestas de la aplicación de chat

Ahora que sabe que la aplicación de chat responde bien a las consultas, incluido el historial de chats, es el momento de evaluar cómo funciona en algunas métricas diferentes y más datos.

Use el evaluador de flujo de avisos con un conjunto de datos de evaluación y la función de destino get_chat_response() y, a continuación, evalúe los resultados de la evaluación.

Una vez que ejecute una evaluación, puede realizar mejoras en la lógica, como mejorar la solicitud del sistema y observar cómo cambian y mejoran las respuestas de la aplicación de chat.

Establecimiento del modelo de evaluación

Elija el modelo de evaluación que desea usar. Puede ser el mismo que un modelo de chat que usó para compilar la aplicación. Si desea un modelo diferente para la evaluación, debe implementarlo o especificarlo si ya existe. Por ejemplo, podría usar gpt-35-turbo para las finalizaciones de chat, pero quiere usar gpt-4 para la evaluación, ya que podría funcionar mejor.

Agregue el nombre del modelo de evaluación en el archivo .env:

AZURE_OPENAI_EVALUATION_DEPLOYMENT=<your evaluation model deployment name>

Creación de un conjunto de datos de evaluación

Use el siguiente conjunto de datos de evaluación, que contiene preguntas de ejemplo y respuestas esperadas (verdad).

  1. Cree un archivo denominado eval_dataset.jsonl en la carpeta rag-tutorial. Consulte la estructura del código de la aplicación como referencia.

  2. Pegue este conjunto de datos en el archivo:

    {"chat_input": "Which tent is the most waterproof?", "truth": "The Alpine Explorer Tent has the highest rainfly waterproof rating at 3000m"}
    {"chat_input": "Which camping table holds the most weight?", "truth": "The Adventure Dining Table has a higher weight capacity than all of the other camping tables mentioned"}
    {"chat_input": "How much do the TrailWalker Hiking Shoes cost? ", "truth": "The Trailewalker Hiking Shoes are priced at $110"}
    {"chat_input": "What is the proper care for trailwalker hiking shoes? ", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth."}
    {"chat_input": "What brand is for TrailMaster tent? ", "truth": "OutdoorLiving"}
    {"chat_input": "How do I carry the TrailMaster tent around? ", "truth": " Carry bag included for convenient storage and transportation"}
    {"chat_input": "What is the floor area for Floor Area? ", "truth": "80 square feet"}
    {"chat_input": "What is the material for TrailBlaze Hiking Pants?", "truth": "Made of high-quality nylon fabric"}
    {"chat_input": "What color does TrailBlaze Hiking Pants come in?", "truth": "Khaki"}
    {"chat_input": "Can the warrenty for TrailBlaze pants be transfered? ", "truth": "The warranty is non-transferable and applies only to the original purchaser of the TrailBlaze Hiking Pants. It is valid only when the product is purchased from an authorized retailer."}
    {"chat_input": "How long are the TrailBlaze pants under warrenty for? ", "truth": " The TrailBlaze Hiking Pants are backed by a 1-year limited warranty from the date of purchase."}
    {"chat_input": "What is the material for PowerBurner Camping Stove? ", "truth": "Stainless Steel"}
    {"chat_input": "Is France in Europe?", "truth": "Sorry, I can only queries related to outdoor/camping gear and equipment"}
    

Evaluación con evaluadores de flujo de avisos

Ahora defina un script de evaluación que:

  • Importe la función evaluate y los evaluadores desde el paquete de flujo de avisos evals.
  • Cargue el conjunto de datos de .jsonl de ejemplo.
  • Genere un contenedor de funciones de destino alrededor de la lógica de la aplicación de chat.
  • Ejecute la evaluación, que toma la función de destino y combina el conjunto de datos de evaluación con las respuestas de la aplicación de chat.
  • Genere un conjunto de métricas asistidas por GPT (relevancia, base y coherencia) para evaluar la calidad de las respuestas de la aplica de chat.
  • Genera los resultados localmente y registra los resultados en el proyecto en la nube.

El script permite revisar los resultados localmente, mediante la salida de los resultados en la línea de comandos y en un archivo JSON.

El script también registra los resultados de evaluación en el proyecto en la nube para poder comparar las ejecuciones de evaluación en la interfaz de usuario.

  1. Cree un archivo denominado evaluate.py en la carpeta rag-tutorial.

  2. Agregue el código siguiente. Actualice el dataset_path y evaluation_name para que se ajuste a su caso de uso.

    import json
    import os
    
    # set environment variables before importing any other code
    from dotenv import load_dotenv
    
    load_dotenv()
    
    import pandas as pd
    
    from promptflow.core import AzureOpenAIModelConfiguration
    from promptflow.evals.evaluate import evaluate
    from promptflow.evals.evaluators import (
        RelevanceEvaluator,
        GroundednessEvaluator,
        CoherenceEvaluator,
    )
    
    # Helper methods
    def load_jsonl(path):
        with open(path, "r") as f:
            return [json.loads(line) for line in f.readlines()]
    
    
    def copilot_wrapper(*, chat_input, **kwargs):
        from copilot_flow.copilot import get_chat_response
    
        result = get_chat_response(chat_input)
    
        parsedResult = {"answer": str(result["reply"]), "context": str(result["context"])}
        return parsedResult
    
    
    def run_evaluation(eval_name, dataset_path):
    
        model_config = AzureOpenAIModelConfiguration(
            azure_deployment=os.getenv("AZURE_OPENAI_EVALUATION_DEPLOYMENT"),
            api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
            azure_endpoint=os.getenv("AZURE_OPENAI_ENDPOINT"),
        )
    
        # Initializing Evaluators
        relevance_eval = RelevanceEvaluator(model_config)
        groundedness_eval = GroundednessEvaluator(model_config)
        coherence_eval = CoherenceEvaluator(model_config)
    
        output_path = "./eval_results.jsonl"
    
        result = evaluate(
            target=copilot_wrapper,
            evaluation_name=eval_name,
            data=dataset_path,
            evaluators={
                "relevance": relevance_eval,
                "groundedness": groundedness_eval,
                "coherence": coherence_eval,
            },
            evaluator_config={
                "relevance": {"question": "${data.chat_input}"},
                "coherence": {"question": "${data.chat_input}"},
            },
            # to log evaluation to the cloud AI Studio project
            azure_ai_project={
                "subscription_id": os.getenv("AZURE_SUBSCRIPTION_ID"),
                "resource_group_name": os.getenv("AZURE_RESOURCE_GROUP"),
                "project_name": os.getenv("AZUREAI_PROJECT_NAME"),
            },
        )
    
        tabular_result = pd.DataFrame(result.get("rows"))
        tabular_result.to_json(output_path, orient="records", lines=True)
    
        return result, tabular_result
    
    
    if __name__ == "__main__":
        eval_name = "tutorial-eval"
        dataset_path = "./eval_dataset.jsonl"
    
        result, tabular_result = run_evaluation(
            eval_name=eval_name, dataset_path=dataset_path
        )
    
        from pprint import pprint
    
        pprint("-----Summarized Metrics-----")
        pprint(result["metrics"])
        pprint("-----Tabular Result-----")
        pprint(tabular_result)
        pprint(f"View evaluation results in AI Studio: {result['studio_url']}")
    

La función principal al final le permite ver el resultado de la evaluación localmente y proporciona un vínculo a los resultados de evaluación en AI Studio.

Ejecución del script de evaluación

  1. Desde la consola, inicie sesión en su cuenta de Azure con la CLI de Azure:

    az login
    
  2. Instale los paquetes necesarios:

    pip install promptflow-evals
    pip install promptflow-azure
    
  3. Ahora ejecute el script de evaluación:

    python evaluate.py
    

Para obtener más información sobre cómo usar el SDK de flujo de avisos para la evaluación, consulte Evaluación con el SDK de flujo de avisos.

Interpretación de la salida de evaluación

En la salida de la consola, verá para cada pregunta una respuesta y las métricas resumidas en este bonito formato de tabla. (Es posible que vea columnas diferentes en la salida).

'-----Summarized Metrics-----'
{'coherence.gpt_coherence': 4.3076923076923075,
 'groundedness.gpt_groundedness': 4.384615384615385,
 'relevance.gpt_relevance': 4.384615384615385}

'-----Tabular Result-----'
                                             question  ... gpt_coherence
0                  Which tent is the most waterproof?  ...             5
1          Which camping table holds the most weight?  ...             5
2       How much does TrailWalker Hiking Shoes cost?   ...             5
3   What is the proper care for trailwalker hiking...  ...             5
4                What brand is the TrailMaster tent?   ...             1
5        How do I carry the TrailMaster tent around?   ...             5
6             What is the floor area for Floor Area?   ...             3
7    What is the material for TrailBlaze Hiking Pants  ...             5
8     What color do the TrailBlaze Hiking Pants come   ...             5
9   Can the warranty for TrailBlaze pants be trans...  ...             3
10  How long are the TrailBlaze pants under warren...  ...             5
11  What is the material for PowerBurner Camping S...  ...             5
12                               Is France in Europe?  ...             1

El script escribe los resultados de evaluación completos en ./eval_results.jsonl. Y hay un vínculo en la consola para ver los resultados de evaluación en el proyecto de Inteligencia artificial de Azure Studio.

Nota:

Es posible que vea un ERROR:asyncio:Unclosed client session: esto se puede omitir de forma segura y no afecta a los resultados de la evaluación.

Visualización de los resultados de la evaluación en AI Studio

Una vez completada la ejecución de la evaluación, siga el vínculo para ver los resultados de la evaluación en la página Evaluación en Inteligencia artificial de Azure Studio.

Recorte de pantalla que muestra información general sobre la evaluación en Inteligencia artificial de Azure Studio.

También puede ver las filas individuales, las puntuaciones de métricas por fila, el contexto o los documentos completos que se recuperaron. Estas métricas pueden ser útiles para interpretar y depurar los resultados de la evaluación.

Recorte de pantalla que muestra filas de resultados de evaluación en Inteligencia artificial de Azure Studio.

Para obtener más información sobre los resultados de evaluación en AI Studio, consulte Cómo ver los resultados de evaluación en AI Studio.

Ahora que ha comprobado que la aplicación de chat se comporta según lo previsto, está listo para implementar la aplicación.

Implementación de la aplicación de chat en Azure

Ahora vamos a continuar e implementar esta aplicación de chat en un punto de conexión administrado para que una aplicación externa o un sitio web puedan consumirla.

El script de implementación hará lo siguiente:

  • Crear un punto de conexión en línea administrado
  • Definición de nuestro flujo como modelo
  • Implementación de nuestro flujo en un entorno administrado en ese punto de conexión que tiene nuestras variables de entorno
  • Enrutamiento de todo el tráfico a esa implementación
  • Salida del vínculo para ver y probar la implementación en Inteligencia artificial de Azure Studio

La implementación define un contexto de compilación (Dockerfile) que se basa en el requirement.txt especificado en nuestra carpeta de flujo y también establece nuestras variables de entorno en el entorno implementado, por lo que podemos estar seguros de que nuestra aplicación de chat se ejecuta igual en un entorno de producción como lo hizo localmente.

Contexto de compilación para la implementación (Dockerfile)

El entorno implementado necesita un contexto de compilación, por lo que vamos a definir un Dockerfile para el entorno implementado. El script de implementación crea un entorno basado en este Dockerfile. Cree este Dockerfile en la carpeta copilot_flow:

FROM mcr.microsoft.com/azureml/promptflow/promptflow-runtime:latest
COPY ./requirements.txt .
RUN pip install -r requirements.txt

Implementación de una aplicación de chat en un punto de conexión administrado

Para implementar la aplicación en un punto de conexión administrado en Azure, cree un punto de conexión en línea, cree una implementación en ese punto de conexión y, a continuación, enrute todo el tráfico a esa implementación.

Como parte de la creación de la implementación, la carpeta copilot_flow se empaqueta como modelo y se crea un entorno en la nube. El punto de conexión se configura con la autenticación de Microsoft Entra ID. Puede actualizar el modo de autenticación que desee en el código o en Inteligencia artificial de Azure Studio en la página de detalles del punto de conexión.

Importante

La implementación de la aplicación en un punto de conexión administrado en Azure ha asociado el costo de proceso en función del tipo de instancia que elija. Asegúrese de que conoce el costo asociado y tiene cuota para el tipo de instancia que especifique. Obtenga más información sobre puntos de conexión en línea.

Cree el archivo deploy.py en la carpeta rag-tutorial. Agrega el siguiente código:

import os
from dotenv import load_dotenv

load_dotenv()

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    Model,
    Environment,
    BuildContext,
)

client = MLClient(
    DefaultAzureCredential(),
    os.getenv("AZURE_SUBSCRIPTION_ID"),
    os.getenv("AZURE_RESOURCE_GROUP"),
    os.getenv("AZUREAI_PROJECT_NAME"),
)
endpoint_name = "tutorial-endpoint"
deployment_name = "tutorial-deployment"

endpoint = ManagedOnlineEndpoint(
    name=endpoint_name,
    properties={
        "enforce_access_to_default_secret_stores": "enabled"  # for secret injection support
    },
    auth_mode="aad_token",  # using aad auth instead of key-based auth
)

# Get the directory of the current script
script_dir = os.path.dirname(os.path.abspath(__file__))

# Define the path to the directory, appending the script directory to the relative path
copilot_path = os.path.join(script_dir, "copilot_flow")
deployment = ManagedOnlineDeployment(
    name=deployment_name,
    endpoint_name=endpoint_name,
    model=Model(
        name="copilot_flow_model",
        path=copilot_path,  # path to promptflow folder
        properties=[  # this enables the chat interface in the endpoint test tab
            ["azureml.promptflow.source_flow_id", "basic-chat"],
            ["azureml.promptflow.mode", "chat"],
            ["azureml.promptflow.chat_input", "chat_input"],
            ["azureml.promptflow.chat_output", "reply"],
        ],
    ),
    environment=Environment(
        build=BuildContext(
            path=copilot_path,
        ),
        inference_config={
            "liveness_route": {
                "path": "/health",
                "port": 8080,
            },
            "readiness_route": {
                "path": "/health",
                "port": 8080,
            },
            "scoring_route": {
                "path": "/score",
                "port": 8080,
            },
        },
    ),
    instance_type="Standard_DS3_v2",
    instance_count=1,
    environment_variables={
        "PRT_CONFIG_OVERRIDE": f"deployment.subscription_id={client.subscription_id},deployment.resource_group={client.resource_group_name},deployment.workspace_name={client.workspace_name},deployment.endpoint_name={endpoint_name},deployment.deployment_name={deployment_name}",
        "AZURE_OPENAI_ENDPOINT": os.getenv("AZURE_OPENAI_ENDPOINT"),
        "AZURE_SEARCH_ENDPOINT": os.getenv("AZURE_SEARCH_ENDPOINT"),
        "AZURE_OPENAI_API_VERSION": os.getenv("AZURE_OPENAI_API_VERSION"),
        "AZURE_OPENAI_CHAT_DEPLOYMENT": os.getenv("AZURE_OPENAI_CHAT_DEPLOYMENT"),
        "AZURE_OPENAI_EVALUATION_DEPLOYMENT": os.getenv(
            "AZURE_OPENAI_EVALUATION_DEPLOYMENT"
        ),
        "AZURE_OPENAI_EMBEDDING_DEPLOYMENT": os.getenv(
            "AZURE_OPENAI_EMBEDDING_DEPLOYMENT"
        ),
        "AZUREAI_SEARCH_INDEX_NAME": os.getenv("AZUREAI_SEARCH_INDEX_NAME"),
    },
)

# 1. create endpoint
created_endpoint = client.begin_create_or_update(
    endpoint
).result()  # result() means we wait on this to complete

# 2. create deployment
created_deployment = client.begin_create_or_update(deployment).result()

# 3. update endpoint traffic for the deployment
endpoint.traffic = {deployment_name: 100}  # 100% of traffic
client.begin_create_or_update(endpoint).result()

Importante

El nombre del punto de conexión y la implementación deben ser únicos dentro de una región de Azure. Si recibe un error que indica que el punto de conexión o el nombre de implementación ya existe, pruebe con nombres diferentes.

Detalles de implementación de salida

Agregue las siguientes líneas al final del script de implementación para ver el resultado de evaluación localmente y obtenga un vínculo al estudio:

def get_ai_studio_url_for_deploy(
    client: MLClient, endpoint_name: str, deployment_name
) -> str:
    studio_base_url = "https://ai.azure.com"
    deployment_url = f"{studio_base_url}/projectdeployments/realtime/{endpoint_name}/{deployment_name}/detail?wsid=/subscriptions/{client.subscription_id}/resourceGroups/{client.resource_group_name}/providers/Microsoft.MachineLearningServices/workspaces/{client.workspace_name}&deploymentName={deployment_name}"

    return deployment_url


print("\n ~~~Deployment details~~~")
print(f"Your online endpoint name is: {endpoint_name}")
print(f"Your deployment name is: {deployment_name}")

print("\n ~~~Test in the Azure AI Studio~~~")
print("\n Follow this link to your deployment in the Azure AI Studio:")
print(
    get_ai_studio_url_for_deploy(
        client=client, endpoint_name=endpoint_name, deployment_name=deployment_name
    )
)

Ahora, ejecute el script con:

python deploy.py

Nota:

La implementación puede tardar más de 10 minutos en completarse. Le sugerimos que siga el siguiente paso para asignar acceso al punto de conexión mientras espera.

Una vez completada la implementación, obtendrá un vínculo a la página de implementación de Inteligencia artificial de Azure Studio, donde puede probar la implementación.

Comprobar la implementación

Se recomienda probar la aplicación en Inteligencia artificial de Azure Studio. Si prefiere probar el punto de conexión implementado localmente, puede invocarlo con código personalizado.

Anote el nombre del punto de conexión, que necesitará para los siguientes pasos.

Acceso de punto de conexión para el recurso de Azure OpenAI

Es posible que tenga que pedir al propietario de la suscripción de Azure (que puede ser el administrador de TI) ayuda con esta sección.

Mientras espera a que la aplicación se implemente, usted o el administrador pueden asignar acceso basado en roles al punto de conexión. Estos roles permiten que la aplicación se ejecute sin claves en el entorno implementado, al igual que lo hizo localmente.

Anteriormente, proporcionó a su cuenta un rol específico para poder acceder al recurso mediante la autenticación de Microsoft Entra ID. Ahora, asigne al punto de conexión el mismo rol Usuario de OpenAI de Cognitive Services.

Nota:

Estos pasos son similares a la forma en que asignó un rol a la identidad de usuario para usar Azure OpenAI Service en el inicio rápido.

Para concederse acceso al recurso de Servicios de Azure AI que usa:

  1. En AI Studio, vaya al proyecto y seleccione Configuración en el panel izquierdo.

  2. En la sección Recursos conectados, seleccione el nombre de conexión con el tipo AIServices.

    Captura de pantalla de la página de configuración del proyecto, en la que se muestra cómo seleccionar el recurso de servicios de IA conectado para abrirlo.

    Nota:

    Si no ve la conexión de AIServices, use la conexión Azure OpenAI en su lugar.

  3. En la página de detalles del recurso, seleccione el vínculo bajo el título Recurso para abrir el recurso de servicios de IA en el portal Azure.

    Captura de pantalla de los detalles de conexión de AI Services en la que se muestra cómo abrir el recurso en Azure Portal.

  4. En la página izquierda de Azure Portal, seleccione Control de acceso (IAM)>+ Agregar>Agregar asignación de roles.

  5. Busque el rol Usuario de OpenAI de Cognitive Services y luego selecciónelo. Luego, seleccione Siguiente.

    Captura de pantalla de la página para seleccionar el rol de usuario OpenAI de Cognitive Services.

  6. Seleccione Identidad administrada. A continuación, seleccione Seleccionar miembros.

  7. En el panel Seleccionar miembros que se abre, seleccione punto de conexión en línea de Machine Learning para la identidad administrada y busque el nombre del punto de conexión. Seleccione el punto de conexión y, a continuación, seleccione Seleccionar.

    Recorte de pantalla que muestra selección de miembros para el punto de conexión en línea.

  8. Continúe con el asistente y seleccione Revisar + asignar para agregar la asignación de roles.

Nota:

El acceso puede tardar unos minutos en propagarse. Si recibe un error no autorizado al probar en el siguiente paso, inténtelo de nuevo después de unos minutos.

Acceso de punto de conexión para el recurso de Búsqueda de Azure AI

Es posible que tenga que pedir al propietario de la suscripción de Azure (que puede ser el administrador de TI) ayuda con esta sección.

Al igual que asignó el rol Colaborador de datos del índice de búsqueda al servicio de Búsqueda de Azure AI, debe asignar el mismo rol para el punto de conexión.

  1. En Inteligencia artificial de Azure Studio, seleccione Configuración y vaya al servicio de Búsqueda de Azure AI conectado.

  2. Seleccione el vínculo para abrir un resumen del recurso. Seleccione el vínculo de la página de resumen para abrir el recurso en Azure Portal.

  3. En la página izquierda de Azure Portal, seleccione Control de acceso (IAM)>+ Agregar>Agregar asignación de roles.

    Recorte de pantalla que muestra control de acceso para el recurso de búsqueda.

  4. Busque el rol Colaborador de datos del índice de búsqueda y, a continuación, selecciónelo. Luego, seleccione Siguiente.

  5. Seleccione Identidad administrada. A continuación, seleccione Seleccionar miembros.

  6. En el panel Seleccionar miembros que se abre, seleccione punto de conexión en línea de Machine Learning para la identidad administrada y busque el nombre del punto de conexión. Seleccione el punto de conexión y, a continuación, seleccione Seleccionar.

    Recorte de pantalla que muestra la selección del punto de conexión.

  7. Continúe con el asistente y seleccione Revisar + asignar para agregar la asignación de roles.

Nota:

El acceso puede tardar unos minutos en propagarse. Si recibe un error no autorizado al probar en el siguiente paso, inténtelo de nuevo después de unos minutos.

Prueba de la implementación en AI Studio

Una vez completada la implementación, obtendrá un vínculo práctico a la implementación. Si no usa el vínculo, vaya a la pestaña Implementaciones del proyecto y seleccione la nueva implementación.

Recorte de pantalla que muestra información general sobre la implementación en Inteligencia artificial de Azure Studio.

Seleccione la pestaña Prueba y pruebe a hacer una pregunta en la interfaz de chat.

Por ejemplo, escriba "¿Son los zapatos de senderismo Trailwalker impermeables?".

Recorte de pantalla que muestra la respuesta de la implementación en Inteligencia artificial de Azure Studio.

Al ver que la respuesta vuelve, verifica la implementación.

Si recibe un error, seleccione la pestaña Registros para obtener más detalles.

Nota:

Si recibe un error no autorizado, es posible que el acceso al punto de conexión aún no se haya aplicado. Inténtelo de nuevo al cabo de un rato.

Invocación de la aplicación de chat implementada localmente

Si prefiere comprobar la implementación localmente, puede invocarla a través de un script de Python.

Defina un script que:

  • Construya una solicitud bien formada a nuestra dirección URL de puntuación.
  • Publique la solicitud y controle la respuesta.

Cree un archivo invoke-local.py en la carpeta rag-tutorial, con el código siguiente. Modifique el query y el endpoint_name (y otros parámetros según sea necesario) para ajustarse a su caso de uso.

import os
from dotenv import load_dotenv

load_dotenv()

import requests
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential

query = "Are the trailwalker shoes waterproof?"
endpoint_name = "tutorial-endpoint"

client = MLClient(
    DefaultAzureCredential(),
    os.getenv("AZURE_SUBSCRIPTION_ID"),
    os.getenv("AZURE_RESOURCE_GROUP"),
    os.getenv("AZUREAI_PROJECT_NAME"),
)


scoring_url = client.online_endpoints.get(endpoint_name).scoring_uri

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {client._credential.get_token('https://ml.azure.com').token}",
    "Accept": "application/json",
}

response = requests.post(
    scoring_url,
    headers=headers,
    json={"chat_input": query},
)
(print(response.json()["reply"]))

Debería ver la respuesta de la aplicación de chat a la consulta en la consola.

Nota:

Si recibe un error no autorizado, es posible que el acceso al punto de conexión aún no se haya aplicado. Inténtelo de nuevo al cabo de un rato.

Limpieza de recursos

Para evitar incurrir en costos innecesarios de Azure, debe eliminar los recursos que creó en este tutorial si ya no son necesarios. Para administrar recursos, puede usar Azure Portal.