Partager via


Tutoriel : Troisième partie – Évaluer et déployer une application de conversation personnalisée avec le flux d’invite SDK

Dans ce tutoriel, vous utilisez le flux d’invite SDK (et d’autres bibliothèques) pour évaluer et déployer l’application de chat que vous avez construite dans la deuxième partie de la série de tutoriels. Dans cette troisième partie, vous allez apprendre à :

  • Évaluer la qualité des réponses des applications de chat
  • Déployez l’application de conversation vers Azure
  • Vérifier le déploiement

Ce tutoriel est la troisième partie de tutoriels qui en compte trois.

Prérequis

  • Suivre la deuxième partie de cette série de tutoriels pour générer l’application de conversation.

  • Vous devez disposer des autorisations nécessaires pour ajouter des attributions de rôles dans votre abonnement Azure. L’octroi d’autorisations par attribution de rôle n’est autorisé que par le propriétaire des ressources Azure en question. Vous pouvez demander de l’aide au propriétaire de votre abonnement Azure (qui peut être votre administrateur informatique) pour accéder aux points de terminaison, plus loin dans le tutoriel.

Évaluer la qualité des réponses des applications de conversation

Maintenant que vous savez que votre application de conversation répond bien à vos requêtes, y compris avec l’historique des conversations, il est temps d’évaluer ses performances avec quelques métriques différentes et davantage de données.

Vous utilisez l’évaluateur de flux d’invite avec un jeu de données d’évaluation et la fonction cible get_chat_response(), puis vous évaluez les résultats de l’évaluation.

Une fois que vous avez exécuté une évaluation, vous pouvez apporter des améliorations à votre logique, comme améliorer votre prompt système et observer comment les réponses de l’application de conversation changent et s’améliorent.

Définir votre modèle d’évaluation

Choisissez le modèle d’évaluation que vous souhaitez utiliser. Il peut être identique à un modèle de conversation que vous avez utilisé pour générer l’application. Si vous souhaitez utiliser un autre modèle pour l’évaluation, vous devez le déployer, ou le spécifier s’il existe déjà. Par exemple, vous pouvez utiliser gpt-35-turbo pour compléter vos conversations en ligne, mais vous souhaitez utiliser gpt-4 pour l’évaluation, car il pourrait être plus performant.

Ajoutez le nom de votre modèle d’évaluation dans votre fichier .env :

AZURE_OPENAI_EVALUATION_DEPLOYMENT=<your evaluation model deployment name>

Créer un jeu de données d’évaluation

Utilisez le jeu de données d’évaluation suivant, qui contient des exemples de questions et des réponses attendues (vérité).

  1. Créez un fichier nommé eval_dataset.jsonl dans votre dossier rag-tutorial. Consultez la structure de code de l’application pour référence.

  2. Collez ce jeu de données dans le fichier :

    {"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"}
    

Évaluer avec des évaluateurs de flux d’invite

Définissez maintenant un script d’évaluation qui :

  • Importe la fonction evaluate et les évaluateurs à partir du package evals de flux d’invite.
  • Charge l’exemple de jeu de données .jsonl.
  • Génère un wrapper de fonction cible autour de notre logique d’application de conversation.
  • Exécute l’évaluation, autrement dit qui prend la fonction cible et fusionne le jeu de données d’évaluation avec les réponses de l’application de conversation.
  • Générer un ensemble de mesures assistées par GPT (pertinence, ancrage et cohérence) pour évaluer la qualité des réponses de l’application de conversation.
  • Affiche les résultats localement, et consigne les résultats dans le projet cloud.

Le script vous permet de passer en revue les résultats localement, en plaçant les résultats sur la ligne de commande et dans un fichier json.

Le script consigne également les résultats de l’évaluation dans le projet cloud afin que vous puissiez comparer les exécutions d’évaluation dans l’interface utilisateur.

  1. Créez un fichier nommé evaluate.py dans votre dossier rag-tutorial.

  2. Ajoutez le code suivant. Mettez à jour dataset_path et evaluation_name de façon à correspondre à votre cas d’usage.

    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 fonction principale à la fin vous permet d’afficher le résultat d’évaluation localement, et vous donne un lien vers les résultats d’évaluation dans AI Studio.

Exécuter le script d’évaluation

  1. À partir de votre console, connectez-vous à votre compte Azure avec Azure CLI :

    az login
    
  2. Installez les packages nécessaires :

    pip install promptflow-evals
    pip install promptflow-azure
    
  3. Exécutez maintenant le script d’évaluation :

    python evaluate.py
    

Pour plus d’informations sur l’utilisation du kit SDK de flux d’invite pour l’évaluation, consultez Évaluer avec le kit de développement logiciel (SDK) de flux d’invite.

Interpréter la sortie d’évaluation

Dans la sortie de la console figure, pour chaque question, une réponse et les métriques résumées dans ce format de tableau bien lisible. (Votre sortie peut comporter des colonnes différentes.)

'-----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

Le script écrit les résultats d’évaluation complets dans ./eval_results.jsonl. Et il existe un lien dans la console pour afficher les résultats d’évaluation dans votre projet Azure AI Studio.

Remarque

Il est possible qu’une erreur ERROR:asyncio:Unclosed client session s’affiche ; vous pouvez l’ignorer sans risque, car elle n’affecte pas les résultats de l’évaluation.

Afficher les résultats d’une évaluation dans AI Studio

Une fois l’exécution de l’évaluation terminée, suivez le lien pour afficher les résultats de l’évaluation dans la page Évaluation dans Azure AI Studio.

Capture d’écran montrant la vue d’ensemble de l’évaluation dans Azure AI Studio.

Vous pouvez également examiner chacune des lignes et afficher les scores de métriques par ligne, et afficher le contexte complet/les documents récupérés. Ces métriques peuvent être utiles pour interpréter et déboguer les résultats de l’évaluation.

Capture d’écran montrant des lignes de résultats d’évaluation dans Azure AI Studio.

Pour plus d’informations sur les résultats d’évaluation dans AI Studio, consultez Guide pratique pour afficher les résultats d’évaluation dans AI Studio.

Maintenant que vous avez vérifié que votre application de conversation se comporte comme prévu, vous êtes prêt(e) à déployer votre application.

Déployez l’application de conversation vers Azure

Nous allons maintenant déployer cette application de conversation sur un point de terminaison managé afin qu’il puisse être consommé par une application externe ou un site web.

Le script de déploiement va effectuer les actions suivantes :

  • Créer un point de terminaison en ligne managé
  • Définir notre flux en tant que modèle
  • Déployer notre flux dans un environnement managé sur ce point de terminaison qui a nos variables d’environnement
  • Router tout le trafic vers ce déploiement
  • Générer le lien pour afficher et tester le déploiement dans Azure AI Studio

Le déploiement définit un contexte de build (Dockerfile) qui s’appuie sur le requirement.txt spécifié dans notre dossier de flux, et définit également nos variables d’environnement sur l’environnement déployé. Nous pouvons donc être confiant que notre application de conversation s’exécute de la même façon dans un environnement de production que localement.

Contexte de build pour le déploiement (Dockerfile)

L’environnement déployé a besoin d’un contexte de build. Nous allons donc définir un Dockerfile pour l’environnement déployé. Le script de déploiement crée un environnement basé sur ce Dockerfile. Créez ce Dockerfile dans le dossier copilot_flow :

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

Déployer l’application de conversation sur un point de terminaison managé

Pour déployer votre application sur un point de terminaison managé dans Azure, créez un point de terminaison en ligne, créez un déploiement dans ce point de terminaison, puis routez tout le trafic vers ce déploiement.

Dans le cadre de la création du déploiement, votre dossier copilot_flow est empaqueté en tant que modèle et un environnement cloud est créé. Le point de terminaison est configuré avec l’authentification Microsoft Entra ID. Vous pouvez mettre à jour le mode d’authentification souhaité dans le code, ou dans Azure AI Studio dans la page de détails du point de terminaison.

Important

Le déploiement de votre application sur un point de terminaison managé dans Azure engendre un coût de calcul en fonction du type d’instance que vous choisissez. Veillez à bien comprendre le coût associé, et à disposer d’un quota pour le type d’instance que vous spécifiez. Apprenez-en davantage sur les points de terminaison en ligne.

Créez le fichier deploy.py dans le dossier rag-tutorial. Ajoutez le code suivant :

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()

Important

Les noms du point de terminaison et du déploiement doivent être uniques au sein d’une région Azure. Si vous obtenez une erreur indiquant que le nom du point de terminaison ou du déploiement existe déjà, essayez un autre nom.

Générer les détails du déploiement

Ajoutez les lignes suivantes à la fin de votre script de déploiement pour afficher le résultat d’évaluation localement et obtenir un lien vers le studio :

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
    )
)

Maintenant, exécutez le script avec :

python deploy.py

Remarque

Le déploiement peut prendre jusqu’à dix minutes. Nous vous suggérons d’effectuer l’étape suivante pour attribuer l’accès au point de terminaison pendant que vous attendez.

Une fois le déploiement terminé, vous obtenez un lien vers la page de déploiement d’Azure AI Studio, où vous pouvez tester votre déploiement.

Vérifier le déploiement

Nous vous recommandons de tester votre application dans Azure AI Studio. Si vous préférez tester votre point de terminaison déployé localement, vous pouvez l’appeler avec du code personnalisé.

Notez le nom de votre point de terminaison, dont vous aurez besoin pour les étapes suivantes.

Accès au point de terminaison pour la ressource Azure OpenAI

Vous pouvez demander de l’aide au propriétaire de votre abonnement Azure (qui peut être votre administrateur informatique) pour cette section.

Pendant que vous attendez que votre application soit déployée, votre administrateur ou vous-même pouvez attribuer un accès en fonction du rôle au point de terminaison. Ces rôles permettent à l’application de s’exécuter sans clés dans l’environnement déployé, comme lors de son exécution locale.

Auparavant, vous avez attribué à votre compte un rôle spécifique pour pouvoir accéder à la ressource à l’aide de l’authentification Microsoft Entra ID. Attribuez maintenant ce même rôle Utilisateur Cognitive Services OpenAI au point de terminaison.

Remarque

Ces étapes sont similaires à la façon dont vous avez affecté un rôle à votre identité utilisateur afin d’utiliser Azure OpenAI Service dans le guide de démarrage rapide.

Pour vous accorder l’accès à la ressource Azure AI Services que vous utilisez :

  1. Dans AI Studio, accédez à votre projet et sélectionnez Paramètres dans le volet gauche.

  2. Dans la section Ressources connectées, sélectionnez le nom de connexion avec le type AIServices.

    Capture d’écran de la page des paramètres du projet, mettant en évidence comment sélectionner la ressource des services IA connectés pour l’ouvrir.

    Remarque

    Si vous ne voyez pas la connexion AIServices, utilisez plutôt la connexion Azure OpenAI.

  3. Dans la page détails de la ressource, sélectionnez le lien sous le titre Ressource pour ouvrir la ressource des services IA dans le portail Azure.

    Capture d’écran des détails de connexion de Services IA montrant comment ouvrir la ressource dans le portail Azure.

  4. Dans la page de gauche du portail Azure, sélectionnez Contrôle d’accès (IAM)>+ Ajouter>Ajouter une attribution de rôle.

  5. Recherchez le rôle utilisateur OpenAI Cognitive Services, puis sélectionnez-le. Sélectionnez ensuite Suivant.

    Capture d’écran de la page pour sélectionner le rôle d’utilisateur OpenAI Cognitive Services.

  6. Sélectionnez Identité managée. Puis, sélectionnez Sélectionner des membres.

  7. Dans le volet Sélectionner les membres qui s’ouvre, sélectionnez Point de terminaison en ligne Machine Learning pour l’identité managée, puis recherchez le nom de votre point de terminaison. Sélectionnez le point de terminaison, puis Sélectionner.

    Capture d’écran montrant la sélection des membres pour le point de terminaison en ligne.

  8. Passez à l’Assistant et sélectionnez Vérifier + affecter pour ajouter l’attribution de rôle.

Remarque

La propagation de l’accès peut prendre quelques minutes. Si vous recevez une erreur d’accès non autorisé lors du test à l’étape suivante, réessayez après quelques minutes.

Accès au point de terminaison pour la ressource Recherche Azure AI

Vous pouvez demander de l’aide au propriétaire de votre abonnement Azure (qui peut être votre administrateur informatique) pour cette section.

Attribuez le rôle Contributeur de données de l’index de recherche à votre point de terminaison, comme vous l’avez fait pour votre service Recherche Azure AI.

  1. Dans Azure AI Studio, sélectionnez Paramètres et accédez au service Recherche Azure AI connecté.

  2. Sélectionnez le lien pour ouvrir un résumé de la ressource. Sélectionnez le lien dans la page récapitulative pour ouvrir la ressource dans le portail Azure.

  3. Dans la page de gauche du portail Azure, sélectionnez Contrôle d’accès (IAM)>+ Ajouter>Ajouter une attribution de rôle.

    Capture d’écran montrant le contrôle d’accès pour la ressource de recherche.

  4. Recherchez le rôle Contributeur aux données de l’index de recherche, puis sélectionnez-le. Sélectionnez ensuite Suivant.

  5. Sélectionnez Identité managée. Puis, sélectionnez Sélectionner des membres.

  6. Dans le volet Sélectionner les membres qui s’ouvre, sélectionnez Point de terminaison en ligne Machine Learning pour l’identité managée, puis recherchez le nom de votre point de terminaison. Sélectionnez le point de terminaison, puis Sélectionner.

    Capture d’écran montrant la sélection du point de terminaison.

  7. Passez à l’Assistant et sélectionnez Vérifier + affecter pour ajouter l’attribution de rôle.

Remarque

La propagation de l’accès peut prendre quelques minutes. Si vous recevez une erreur d’accès non autorisé lors du test à l’étape suivante, réessayez après quelques minutes.

Tester votre déploiement dans AI Studio

Une fois le déploiement terminé, vous obtenez un lien pratique vers votre déploiement. Si vous n’utilisez pas le lien, accédez à l’onglet Déploiements dans votre projet et sélectionnez votre nouveau déploiement.

Capture d’écran montrant la vue d’ensemble du déploiement dans Azure AI Studio.

Sélectionnez l’onglet Test, et essayez de poser une question dans l’interface de conversation.

Par exemple, tapez « Are the Trailwalker hiking shoes waterproof? » et appuyez sur Entrée.

Capture d’écran montrant la réponse du déploiement dans Azure AI Studio.

L’affichage de la réponse confirme que votre déploiement a réussi.

Si vous obtenez une erreur, sélectionnez l’onglet Journaux pour obtenir plus de détails.

Remarque

Si vous recevez une erreur d’accès non autorisé, l’accès à votre point de terminaison n’a peut-être pas encore été appliqué. Réessayez dans quelques minutes.

Appeler l’application de conversation déployée localement

Si vous préférez vérifier votre déploiement localement, vous pouvez l’appeler via un script Python.

Définissez un script qui :

  • Construira une requête bien formée à notre URL de scoring.
  • Publiera la requête et gérera la réponse.

Créez un fichier invoke-local.py dans votre dossier rag-tutorial, avec le code suivant. Modifiez query et endpoint_name (et d’autres paramètres si nécessaire) afin qu’ils correspondent à votre cas d’usage.

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"]))

Vous devez voir la réponse de l’application de conversation à votre requête dans la console.

Remarque

Si vous recevez une erreur d’accès non autorisé, l’accès à votre point de terminaison n’a peut-être pas encore été appliqué. Réessayez dans quelques minutes.

Nettoyer les ressources

Pour éviter la facturation de coûts Azure inutiles, vous devez supprimer les ressources créées dans ce tutoriel si elles ne sont plus nécessaires. Pour gérer les ressources, vous pouvez utiliser le Portail Microsoft Azure.