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é).
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.
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 packageevals
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.
Créez un fichier nommé evaluate.py dans votre dossier rag-tutorial.
Ajoutez le code suivant. Mettez à jour
dataset_path
etevaluation_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
À partir de votre console, connectez-vous à votre compte Azure avec Azure CLI :
az login
Installez les packages nécessaires :
pip install promptflow-evals pip install promptflow-azure
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.
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.
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 :
Dans AI Studio, accédez à votre projet et sélectionnez Paramètres dans le volet gauche.
Dans la section Ressources connectées, sélectionnez le nom de connexion avec le type AIServices.
Remarque
Si vous ne voyez pas la connexion AIServices, utilisez plutôt la connexion Azure OpenAI.
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.
Dans la page de gauche du portail Azure, sélectionnez Contrôle d’accès (IAM)>+ Ajouter>Ajouter une attribution de rôle.
Recherchez le rôle utilisateur OpenAI Cognitive Services, puis sélectionnez-le. Sélectionnez ensuite Suivant.
Sélectionnez Identité managée. Puis, sélectionnez Sélectionner des membres.
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.
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.
Dans Azure AI Studio, sélectionnez Paramètres et accédez au service Recherche Azure AI connecté.
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.
Dans la page de gauche du portail Azure, sélectionnez Contrôle d’accès (IAM)>+ Ajouter>Ajouter une attribution de rôle.
Recherchez le rôle Contributeur aux données de l’index de recherche, puis sélectionnez-le. Sélectionnez ensuite Suivant.
Sélectionnez Identité managée. Puis, sélectionnez Sélectionner des membres.
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.
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.
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.
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.
Contenu connexe
- En savoir plus sur les flux d’invite
- Pour un exemple d’application de conversation qui implémente RAG, voir Azure-Samples/rag-data-openai-python-promptflow