Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Remarque
Ce document fait référence au portail Microsoft Foundry (classique).
🔍 Consultez la documentation Microsoft Foundry (nouvelle) pour en savoir plus sur le nouveau portail.
Dans ce guide de démarrage rapide, vous utilisez vos propres données avec des modèles Azure OpenAI pour créer une plateforme d’INTELLIGENCE artificielle conversationnelle puissante qui permet une communication plus rapide et plus précise.
Important
Il existe de nouvelles façons de créer des solutions conversationnelles avec vos propres données. Pour connaître la dernière approche recommandée, consultez Démarrage rapide : Utiliser la récupération agentique dans Recherche AZURE AI.
Conditions préalables
- Téléchargez les exemples de données à partir de GitHub si vous n’avez pas vos propres données.
Ajouter vos données à l’aide du portail Microsoft Foundry
Conseil / Astuce
Vous pouvez également utiliser Azure Developer CLI pour créer par programmation les ressources nécessaires à Azure OpenAI sur vos données.
Pour ajouter vos données à l’aide du portail :
-
Connectez-vous à Microsoft Foundry. Assurez-vous que l'interrupteur New Foundry est désactivé. Ces étapes font référence à Foundry (classique).
Sélectionnez votre ressource Azure OpenAI. Si vous disposez d’une ressource Foundry, vous pouvez créer un projet Foundry.
Dans le volet gauche, sélectionnez Playgrounds>Chat.
Dans le volet Configuration , sélectionnez votre déploiement de modèle.
Sélectionnez Ajouter vos données>Ajouter une source de données.
Dans la page source de données :
Sous Sélectionner une source de données, sélectionnez Charger des fichiers (préversion).
Conseil / Astuce
- Cette option nécessite une ressource Stockage Blob Azure et une ressource Recherche Azure AI pour accéder à vos données et les indexer. Pour plus d’informations, consultez les options de source de données et les types de fichiers pris en charge et les formats.
- Pour les documents et les jeux de données avec du texte long, nous vous recommandons d’utiliser le script de préparation des données.
Le partage de ressources inter-origines (CORS) est requis pour qu’Azure OpenAI accède à votre compte de stockage. Si CORS n’est pas déjà activé pour votre ressource Stockage Blob Azure, sélectionnez Activer CORS.
Sélectionnez votre ressource Recherche d’IA Azure.
Entrez un nom pour votre nouvel index.
Cochez la case qui reconnaît les effets de facturation de l’utilisation d’Azure AI Search.
Cliquez sur Suivant.
Dans la page Charger des fichiers :
Sélectionnez Rechercher un fichier, puis sélectionnez vos propres données ou les exemples de données que vous avez téléchargés à partir des conditions préalables.
Sélectionnez Charger des fichiers.
Cliquez sur Suivant.
Dans la page gestion des données :
Choisissez si vous souhaitez activer la recherche sémantique ou la recherche vectorielle pour votre index.
Important
- La recherche sémantique et la recherche vectorielle sont soumises à une tarification supplémentaire. Votre ressource Recherche Azure AI doit se trouver sur le niveau De base ou supérieur pour activer la recherche sémantique ou la recherche vectorielle. Pour plus d’informations, consultez Choisir un niveau et deslimites de service.
- Pour améliorer la qualité de la récupération d’informations et de la réponse du modèle, nous vous recommandons d’activer la recherche sémantique pour les langues de source de données suivantes : anglais, français, espagnol, portugais, italien, allemand, chinois(Zh), japonais, coréen, russe et arabe.
Cliquez sur Suivant.
Dans la page de connexion de données :
Indiquez s’il faut s’authentifier à l’aide d’une identité managée affectée par le système ou d’une clé API.
Cliquez sur Suivant.
Passez en revue vos configurations, puis sélectionnez Enregistrer et fermer.
Vous pouvez maintenant discuter avec le modèle, qui utilise vos données pour construire la réponse.
Terrain de jeu de conversation
Commencez à explorer les fonctionnalités Azure OpenAI avec une approche sans code au moyen du terrain de jeu de conversation. Il s’agit simplement d’une zone de texte dans laquelle vous pouvez envoyer une invite pour générer une saisie semi-automatique. À partir de cette page, vous pouvez rapidement itérer et expérimenter les fonctionnalités.
Le terrain de jeu vous offre des options pour personnaliser votre expérience de conversation. Dans le menu supérieur, vous pouvez sélectionner Déployer pour déterminer quel modèle génère une réponse à l’aide des résultats de la recherche de votre index. Vous choisissez le nombre de messages passés à inclure comme historique des conversations pour les réponses générées ultérieurement. L’historique des conversations apporte un contexte pour générer des réponses associées, mais consomme également l’utilisation des jetons. L’indicateur de progression du jeton d’entrée effectue le suivi du nombre de jetons de la question que vous envoyez.
Les paramètres avancés à gauche sont des paramètres de runtime, qui vous permettent de contrôler la récupération et la recherche d’informations pertinentes à partir de vos données. Un bon cas d’usage est lorsque vous souhaitez vous assurer que les réponses sont générées uniquement en fonction de vos données ou lorsque vous trouvez que le modèle ne peut pas générer une réponse en fonction des informations existantes sur vos données.
La rigueur détermine l'agressivité du système dans le filtrage des documents de recherche en fonction de leurs scores de similarité. La définition de la rigueur sur 5 indique que le système filtrera agressivement les documents, en appliquant un seuil de similarité très élevé. La recherche sémantique peut être utile dans ce scénario, car les modèles de classement effectuent mieux l’interprétation de l’intention de la requête. Des niveaux de rigueur inférieurs produisent des réponses plus loquaces, mais peuvent également inclure des informations qui ne figurent pas dans votre index. Cette valeur est définie sur 3 par défaut.
Documents récupérés est un nombre entier qui peut être défini sur 3, 5, 10 ou 20. Il contrôle le nombre de blocs de documents fournis au grand modèle de langage pour formuler la réponse finale. Par défaut, elle a la valeur 5.
Lorsque Limiter les réponses à vos données est activée, le modèle tente de s’appuyer uniquement sur vos documents pour les réponses. Cette valeur est définie sur true par défaut.
Envoyez votre première requête. Les modèles de conversation fournissent les meilleures performances dans les exercices de questions et réponses. Par exemple, « Quels sont mes plans d’intégrité disponibles ? » ou « Qu’est-ce que l’option Health plus ? ».
Les requêtes qui nécessitent une analyse des données échouent probablement, telles que « Quel plan d’intégrité est le plus populaire ? ». Les requêtes qui nécessitent des informations sur toutes vos données échoueront également, telles que « Combien de documents ai-je chargé ? ». N’oubliez pas que le moteur de recherche mène une recherche des segments ayant des termes, expressions ou construction exacts ou similaires à la requête. Et bien que le modèle puisse comprendre la question, si les résultats de la recherche sont des blocs du jeu de données, ce ne sont pas les bonnes informations pour répondre à ce type de question.
Les conversations sont limitées par le nombre de documents (blocs) retournés dans la réponse (limite de 3 à 20 dans le terrain de jeu du portail Foundry). Comme vous pouvez l’imaginer, poser une question sur « tous les titres » nécessite une analyse complète de l’intégralité du magasin vectoriel.
Déployer votre modèle
Une fois que vous êtes satisfait de l’expérience, vous pouvez déployer une application web directement depuis le portail en sélectionnant le bouton Déployer sur.
Cela vous donne la possibilité de déployer sur une application web autonome ou un copilote dans Copilot Studio (préversion) si vous utilisez vos propres données sur le modèle.
Si vous choisissez par exemple de déployer une application web :
La première fois que vous déployez une application web, vous devez sélectionner Créer une application web. Choisissez un nom pour l’application, qui fera partie de l’URL de l’application. Par exemple : https://<appname>.azurewebsites.net.
Sélectionnez votre abonnement, votre groupe de ressources, votre emplacement et votre plan tarifaire pour l’application publiée. Pour mettre à jour une application existante, sélectionnez Publier sur une application web existante, puis choisissez le nom de votre application précédente dans le menu déroulant.
Si vous choisissez de déployer une application web, consultez les Points importants à prendre en compte pour son utilisation.
Conditions préalables
- Un abonnement Azure : créez-en un gratuitement.
- Téléchargez les exemples de données à partir de GitHub si vous n’avez pas vos propres données.
- Le SDK .NET 8
Ajouter vos données à l’aide du portail Microsoft Foundry
Conseil / Astuce
Vous pouvez également utiliser Azure Developer CLI pour créer par programmation les ressources nécessaires à Azure OpenAI sur vos données.
Pour ajouter vos données à l’aide du portail :
-
Connectez-vous à Microsoft Foundry. Assurez-vous que l'interrupteur New Foundry est désactivé. Ces étapes font référence à Foundry (classique).
Sélectionnez votre ressource Azure OpenAI. Si vous disposez d’une ressource Foundry, vous pouvez créer un projet Foundry.
Dans le volet gauche, sélectionnez Playgrounds>Chat.
Dans le volet Configuration , sélectionnez votre déploiement de modèle.
Sélectionnez Ajouter vos données>Ajouter une source de données.
Dans la page source de données :
Sous Sélectionner une source de données, sélectionnez Charger des fichiers (préversion).
Conseil / Astuce
- Cette option nécessite une ressource Stockage Blob Azure et une ressource Recherche Azure AI pour accéder à vos données et les indexer. Pour plus d’informations, consultez les options de source de données et les types de fichiers pris en charge et les formats.
- Pour les documents et les jeux de données avec du texte long, nous vous recommandons d’utiliser le script de préparation des données.
Le partage de ressources inter-origines (CORS) est requis pour qu’Azure OpenAI accède à votre compte de stockage. Si CORS n’est pas déjà activé pour votre ressource Stockage Blob Azure, sélectionnez Activer CORS.
Sélectionnez votre ressource Recherche d’IA Azure.
Entrez un nom pour votre nouvel index.
Cochez la case qui reconnaît les effets de facturation de l’utilisation d’Azure AI Search.
Cliquez sur Suivant.
Dans la page Charger des fichiers :
Sélectionnez Rechercher un fichier, puis sélectionnez vos propres données ou les exemples de données que vous avez téléchargés à partir des conditions préalables.
Sélectionnez Charger des fichiers.
Cliquez sur Suivant.
Dans la page gestion des données :
Choisissez si vous souhaitez activer la recherche sémantique ou la recherche vectorielle pour votre index.
Important
- La recherche sémantique et la recherche vectorielle sont soumises à une tarification supplémentaire. Votre ressource Recherche Azure AI doit se trouver sur le niveau De base ou supérieur pour activer la recherche sémantique ou la recherche vectorielle. Pour plus d’informations, consultez Choisir un niveau et deslimites de service.
- Pour améliorer la qualité de la récupération d’informations et de la réponse du modèle, nous vous recommandons d’activer la recherche sémantique pour les langues de source de données suivantes : anglais, français, espagnol, portugais, italien, allemand, chinois(Zh), japonais, coréen, russe et arabe.
Cliquez sur Suivant.
Dans la page de connexion de données :
Indiquez s’il faut s’authentifier à l’aide d’une identité managée affectée par le système ou d’une clé API.
Cliquez sur Suivant.
Passez en revue vos configurations, puis sélectionnez Enregistrer et fermer.
Vous pouvez maintenant discuter avec le modèle, qui utilise vos données pour construire la réponse.
Récupérer des informations sur les ressources
Vous devez récupérer les informations suivantes pour authentifier votre application auprès de votre ressource Azure OpenAI. Ce guide de démarrage rapide suppose que vous avez chargé vos données dans un compte de stockage d’objets blob Azure et que vous avez créé un index Recherche Azure AI. Consultez Ajouter vos données à l’aide du portail Microsoft Foundry.
| Nom de la variable | Valeur |
|---|---|
AZURE_OPENAI_ENDPOINT |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource Azure OpenAI à partir du portail Azure. Voici un exemple de point de terminaison : https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Cette valeur correspond au nom personnalisé que vous avez choisi pour votre déploiement lorsque vous avez déployé un modèle. Vous pouvez trouver cette valeur sous Gestion des ressources>Déploiements dans le portail Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Cette valeur se trouve dans la section Vue d’ensemble quand vous examinez votre ressource Recherche Azure AI à partir du Portail Azure. |
AZURE_AI_SEARCH_INDEX |
Cette valeur correspond au nom de l’index que vous avez créé pour stocker vos données. Vous le trouverez dans la section Vue d’ensemble lors de l’examen de votre ressource Recherche Azure AI à partir du Portail Azure. |
En savoir plus sur l’authentification sans clé et la définition de variables d’environnement.
À partir du répertoire du projet, ouvrez le fichier Program.cs et remplacez son contenu par le code suivant :
using System;
using Azure.AI.OpenAI;
using System.ClientModel;
using Azure.AI.OpenAI.Chat;
using OpenAI.Chat;
using static System.Environment;
string azureOpenAIEndpoint = GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT");
string azureOpenAIKey = GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
string deploymentName = GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME");
string searchEndpoint = GetEnvironmentVariable("AZURE_AI_SEARCH_ENDPOINT");
string searchKey = GetEnvironmentVariable("AZURE_AI_SEARCH_API_KEY");
string searchIndex = GetEnvironmentVariable("AZURE_AI_SEARCH_INDEX");
AzureOpenAIClient openAIClient = new(
new Uri(azureOpenAIEndpoint),
new ApiKeyCredential(azureOpenAIKey));
ChatClient chatClient = openAIClient.GetChatClient(deploymentName);
// Extension methods to use data sources with options are subject to SDK surface changes. Suppress the
// warning to acknowledge and this and use the subject-to-change AddDataSource method.
#pragma warning disable AOAI001
ChatCompletionOptions options = new();
options.AddDataSource(new AzureSearchChatDataSource()
{
Endpoint = new Uri(searchEndpoint),
IndexName = searchIndex,
Authentication = DataSourceAuthentication.FromApiKey(searchKey),
});
ChatCompletion completion = chatClient.CompleteChat(
[
new UserChatMessage("What health plans are available?"),
],
options);
ChatMessageContext onYourDataContext = completion.GetMessageContext();
if (onYourDataContext?.Intent is not null)
{
Console.WriteLine($"Intent: {onYourDataContext.Intent}");
}
foreach (ChatCitation citation in onYourDataContext?.Citations ?? [])
{
Console.WriteLine($"Citation: {citation.Content}");
}
Important
Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations sur la sécurité des informations d’identification, consultez cet article de sécurité .
dotnet run Program.cs
Output
Contoso Electronics offers two health plans: Northwind Health Plus and Northwind Standard [doc1]. Northwind Health Plus is a comprehensive plan that provides coverage for medical, vision, and dental services, prescription drug coverage, mental health and substance abuse coverage, and coverage for preventive care services. It also offers coverage for emergency services, both in-network and out-of-network. On the other hand, Northwind Standard is a basic plan that provides coverage for medical, vision, and dental services, prescription drug coverage, and coverage for preventive care services. However, it does not offer coverage for emergency services, mental health and substance abuse coverage, or out-of-network services [doc1].
Intent: ["What are the available health plans?", "List of health plans available", "Health insurance options", "Types of health plans offered"]
Citation:
Contoso Electronics plan and benefit packages
Thank you for your interest in the Contoso electronics plan and benefit packages. Use this document to
learn more about the various options available to you...// Omitted for brevity
Cela attendra que le modèle ait généré l’intégralité de sa réponse avant d’imprimer les résultats.
Code source| Code source | Exemple
Conditions préalables
- Azure OpenAI
- Stockage Blob Azure
- Recherche Azure AI
-
Azure OpenAI ou déployé dans une région prise en charge et avec un modèle pris en charge.
- Veillez à attribuer au moins le rôle de Collaborateur Cognitive Services pour la ressource Azure OpenAI.
- Téléchargez les exemples de données à partir de GitHub si vous n’avez pas vos propres données.
Ajouter vos données à l’aide du portail Microsoft Foundry
Conseil / Astuce
Vous pouvez également utiliser Azure Developer CLI pour créer par programmation les ressources nécessaires à Azure OpenAI sur vos données.
Pour ajouter vos données à l’aide du portail :
-
Connectez-vous à Microsoft Foundry. Assurez-vous que l'interrupteur New Foundry est désactivé. Ces étapes font référence à Foundry (classique).
Sélectionnez votre ressource Azure OpenAI. Si vous disposez d’une ressource Foundry, vous pouvez créer un projet Foundry.
Dans le volet gauche, sélectionnez Playgrounds>Chat.
Dans le volet Configuration , sélectionnez votre déploiement de modèle.
Sélectionnez Ajouter vos données>Ajouter une source de données.
Dans la page source de données :
Sous Sélectionner une source de données, sélectionnez Charger des fichiers (préversion).
Conseil / Astuce
- Cette option nécessite une ressource Stockage Blob Azure et une ressource Recherche Azure AI pour accéder à vos données et les indexer. Pour plus d’informations, consultez les options de source de données et les types de fichiers pris en charge et les formats.
- Pour les documents et les jeux de données avec du texte long, nous vous recommandons d’utiliser le script de préparation des données.
Le partage de ressources inter-origines (CORS) est requis pour qu’Azure OpenAI accède à votre compte de stockage. Si CORS n’est pas déjà activé pour votre ressource Stockage Blob Azure, sélectionnez Activer CORS.
Sélectionnez votre ressource Recherche d’IA Azure.
Entrez un nom pour votre nouvel index.
Cochez la case qui reconnaît les effets de facturation de l’utilisation d’Azure AI Search.
Cliquez sur Suivant.
Dans la page Charger des fichiers :
Sélectionnez Rechercher un fichier, puis sélectionnez vos propres données ou les exemples de données que vous avez téléchargés à partir des conditions préalables.
Sélectionnez Charger des fichiers.
Cliquez sur Suivant.
Dans la page gestion des données :
Choisissez si vous souhaitez activer la recherche sémantique ou la recherche vectorielle pour votre index.
Important
- La recherche sémantique et la recherche vectorielle sont soumises à une tarification supplémentaire. Votre ressource Recherche Azure AI doit se trouver sur le niveau De base ou supérieur pour activer la recherche sémantique ou la recherche vectorielle. Pour plus d’informations, consultez Choisir un niveau et deslimites de service.
- Pour améliorer la qualité de la récupération d’informations et de la réponse du modèle, nous vous recommandons d’activer la recherche sémantique pour les langues de source de données suivantes : anglais, français, espagnol, portugais, italien, allemand, chinois(Zh), japonais, coréen, russe et arabe.
Cliquez sur Suivant.
Dans la page de connexion de données :
Indiquez s’il faut s’authentifier à l’aide d’une identité managée affectée par le système ou d’une clé API.
Cliquez sur Suivant.
Passez en revue vos configurations, puis sélectionnez Enregistrer et fermer.
Vous pouvez maintenant discuter avec le modèle, qui utilise vos données pour construire la réponse.
Récupérer les variables requises
Pour effectuer un appel sur Azure OpenAI, vous aurez besoin des variables suivantes. Ce guide de démarrage rapide suppose que vous avez chargé vos données dans un compte de stockage d’objets blob Azure et que vous avez créé un index Recherche Azure AI. Pour plus d’informations, consultez Ajouter vos données à l’aide de Microsoft Foundry.
| Nom de la variable | Valeur |
|---|---|
AZURE_OPENAI_ENDPOINT |
Vous trouverez cette valeur dans la section Clés et point de terminaison lors de l’examen de votre ressource Azure OpenAI à partir du portail Azure. Vous pouvez également trouver la valeur dans Foundry>Terrain de jeu de conversation>Mode Code. Voici un exemple de point de terminaison : https://my-resource.openai.azure.com. |
AZURE_OPENAI_API_KEY |
Vous trouverez cette valeur dans Gestion des ressources>Clés et point de terminaison lors de l’examen de votre ressource Azure OpenAI à partir du portail Azure. Vous pouvez utiliser soit KEY1, soit KEY2. Avoir toujours deux clés vous permet de faire pivoter et de régénérer en toute sécurité les clés sans provoquer d’interruption de service. |
AZURE_OPEN_AI_DEPLOYMENT_ID |
Cette valeur correspond au nom personnalisé que vous avez choisi pour votre déploiement lorsque vous avez déployé un modèle. Vous trouverez cette valeur sousDéploiements> ressources dans le portail Azure ou sousDéploiements> dans le portail Foundry. |
AZURE_AI_SEARCH_ENDPOINT |
Vous trouverez cette valeur dans la section Vue d’ensemble lors de l’examen de votre ressource Recherche d’Azure AI à partir du portail Azure. |
AZURE_AI_SEARCH_API_KEY |
Vous trouverez cette valeur dans la section Paramètres>Clés lors de l’examen de votre ressource Recherche d’Azure AI à partir du portail Azure. Vous pouvez utiliser la clé d’administration primaire ou secondaire. Avoir toujours deux clés vous permet de faire pivoter et de régénérer en toute sécurité les clés sans provoquer d’interruption de service. |
AZURE_AI_SEARCH_INDEX |
Cette valeur correspond au nom de l’index que vous avez créé pour stocker vos données. Vous le trouverez dans la section Vue d’ensemble lors de l’examen de votre ressource Recherche Azure AI à partir du Portail Azure. |
Variables d'environnement
Créez et affectez des variables d’environnement persistantes pour votre clé et votre point de terminaison.
Important
Utilisez les clés API avec précaution. N'incluez pas la clé API directement dans votre code et ne la diffusez jamais publiquement. Si vous utilisez une clé API, stockez-la en lieu sûr dans Azure Key Vault. Pour plus d’informations sur l’utilisation sécurisée des clés API dans vos applications, consultez Clés API avec Azure Key Vault.
Pour plus d’informations sur la sécurité des services IA, consultez Authentifier les demandes auprès d’Azure AI services.
Remarque
Spring AI affecte par défaut le nom du modèle à gpt-35-turbo. Il n’est nécessaire de fournir la valeur SPRING_AI_AZURE_OPENAI_MODEL que si vous avez déployé un modèle avec un autre nom.
export SPRING_AI_AZURE_OPENAI_ENDPOINT=REPLACE_WITH_YOUR_AOAI_ENDPOINT_VALUE_HERE
export SPRING_AI_AZURE_OPENAI_API_KEY=REPLACE_WITH_YOUR_AOAI_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_ENDPOINT=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_API_KEY=REPLACE_WITH_YOUR_AZURE_SEARCH_RESOURCE_KEY_VALUE_HERE
export SPRING_AI_AZURE_COGNITIVE_SEARCH_INDEX=REPLACE_WITH_YOUR_INDEX_NAME_HERE
export SPRING_AI_AZURE_OPENAI_MODEL=REPLACE_WITH_YOUR_MODEL_NAME_HERE
Créer une application Spring
Spring AI ne prend pas actuellement en charge les options AzureCognitiveSearchChatExtensionConfiguration qui permettent à une requête Azure AI d’encapsuler la méthode de Génération augmentée par la récupération (RAG) et de masquer les détails pour l’utilisateur. En guise d’alternative, vous pouvez toujours appeler la méthode RAG directement dans votre application pour interroger des données dans votre index Recherche Azure AI et utiliser des documents récupérés pour augmenter votre requête.
Spring AI prend en charge une abstraction VectorStore, et vous pouvez encapsuler Recherche Azure AI dans une implémentation Spring AI VectorStore pour interroger vos données personnalisées. Le projet suivant implémente un VectorStore personnalisé soutenu par Recherche Azure AI et exécute directement des opérations RAG.
Dans une fenêtre Bash, créez un répertoire pour votre application et accédez-y.
mkdir ai-custom-data-demo && cd ai-custom-data-demo
Exécutez la commande spring init à partir de votre répertoire de travail. Cette commande crée une structure de répertoires standard pour votre projet Spring, y compris le fichier source de classe Java principal et le fichier pom.xml utilisé pour la gestion des projets Maven.
spring init -a ai-custom-data-demo -n AICustomData --force --build maven -x
Les fichiers et dossiers générés ressemblent à la structure suivante :
ai-custom-data-demo/
|-- pom.xml
|-- mvn
|-- mvn.cmd
|-- HELP.md
|-- src/
|-- main/
| |-- resources/
| | |-- application.properties
| |-- java/
| |-- com/
| |-- example/
| |-- aicustomdatademo/
| |-- AiCustomDataApplication.java
|-- test/
|-- java/
|-- com/
|-- example/
|-- aicustomdatademo/
|-- AiCustomDataApplicationTests.java
Modifier l’application Spring
Modifiez le fichier pom.xml.
À partir de la racine du répertoire du projet, ouvrez le fichier pom.xml dans votre éditeur ou IDE préféré et remplacez le fichier par le contenu suivant :
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>ai-custom-data-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>AICustomData</name> <description>Demo project for Spring Boot</description> <properties> <java.version>17</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.experimental.ai</groupId> <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId> <version>0.7.0-SNAPSHOT</version> </dependency> <dependency> <groupId>com.azure</groupId> <artifactId>azure-search-documents</artifactId> <version>11.6.0-beta.10</version> <exclusions> <!-- exclude this to avoid changing the default serializer and the null-value behavior --> <exclusion> <groupId>com.azure</groupId> <artifactId>azure-core-serializer-json-jackson</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-snapshots</id> <name>Spring Snapshots</name> <url>https://repo.spring.io/snapshot</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories> </project>À partir du dossier src/main/java/com/example/aicustomdatademo , ouvrez AiCustomDataApplication.java dans votre éditeur ou IDE préféré et collez le code suivant :
package com.example.aicustomdatademo; import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; import org.springframework.ai.client.AiClient; import org.springframework.ai.document.Document; import org.springframework.ai.embedding.EmbeddingClient; import org.springframework.ai.prompt.Prompt; import org.springframework.ai.prompt.SystemPromptTemplate; import org.springframework.ai.prompt.messages.MessageType; import org.springframework.ai.prompt.messages.UserMessage; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import com.azure.core.credential.AzureKeyCredential; import com.azure.core.util.Context; import com.azure.search.documents.SearchClient; import com.azure.search.documents.SearchClientBuilder; import com.azure.search.documents.models.IndexingResult; import com.azure.search.documents.models.SearchOptions; import com.azure.search.documents.models.RawVectorQuery; import lombok.AllArgsConstructor; import lombok.NoArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.extern.jackson.Jacksonized; @SpringBootApplication public class AiCustomDataApplication implements CommandLineRunner { private static final String ROLE_INFO_KEY = "role"; private static final String template = """ You are a helpful assistant. Use the information from the DOCUMENTS section to augment answers. DOCUMENTS: {documents} """; @Value("${spring.ai.azure.cognitive-search.endpoint}") private String acsEndpoint; @Value("${spring.ai.azure.cognitive-search.api-key}") private String acsApiKey; @Value("${spring.ai.azure.cognitive-search.index}") private String acsIndexName; @Autowired private AiClient aiClient; @Autowired private EmbeddingClient embeddingClient; public static void main(String[] args) { SpringApplication.run(AiCustomDataApplication.class, args); } @Override public void run(String... args) throws Exception { System.out.println(String.format("Sending custom data prompt to Foundry Tool. One moment please...\r\n")); final var store = vectorStore(embeddingClient); final String question = "What are my available health plans?"; final var candidateDocs = store.similaritySearch(question); final var userMessage = new UserMessage(question); final String docPrompts = candidateDocs.stream().map(entry -> entry.getContent()).collect(Collectors.joining("\n")); final SystemPromptTemplate promptTemplate = new SystemPromptTemplate(template); final var systemMessage = promptTemplate.createMessage(Map.of("documents", docPrompts)); final var prompt = new Prompt(List.of(systemMessage, userMessage)); final var resps = aiClient.generate(prompt); System.out.println(String.format("Prompt created %d generated response(s).", resps.getGenerations().size())); resps.getGenerations().stream() .forEach(gen -> { final var role = gen.getInfo().getOrDefault(ROLE_INFO_KEY, MessageType.ASSISTANT.getValue()); System.out.println(String.format("Generated respose from \"%s\": %s", role, gen.getText())); }); } @Bean public VectorStore vectorStore(EmbeddingClient embeddingClient) { final SearchClient searchClient = new SearchClientBuilder() .endpoint(acsEndpoint) .credential(new AzureKeyCredential(acsApiKey)) .indexName(acsIndexName) .buildClient(); return new AzureCognitiveSearchVectorStore(searchClient, embeddingClient); } public static class AzureCognitiveSearchVectorStore implements VectorStore { private static final int DEFAULT_TOP_K = 4; private static final Double DEFAULT_SIMILARITY_THRESHOLD = 0.0; private SearchClient searchClient; private final EmbeddingClient embeddingClient; public AzureCognitiveSearchVectorStore(SearchClient searchClient, EmbeddingClient embeddingClient) { this.searchClient = searchClient; this.embeddingClient = embeddingClient; } @Override public void add(List<Document> documents) { final var docs = documents.stream().map(document -> { final var embeddings = embeddingClient.embed(document); return new DocEntry(document.getId(), "", document.getContent(), embeddings); }).toList(); searchClient.uploadDocuments(docs); } @Override public Optional<Boolean> delete(List<String> idList) { final List<DocEntry> docIds = idList.stream().map(id -> DocEntry.builder().id(id).build()) .toList(); var results = searchClient.deleteDocuments(docIds); boolean resSuccess = true; for (IndexingResult result : results.getResults()) if (!result.isSucceeded()) { resSuccess = false; break; } return Optional.of(resSuccess); } @Override public List<Document> similaritySearch(String query) { return similaritySearch(query, DEFAULT_TOP_K); } @Override public List<Document> similaritySearch(String query, int k) { return similaritySearch(query, k, DEFAULT_SIMILARITY_THRESHOLD); } @Override public List<Document> similaritySearch(String query, int k, double threshold) { final var searchQueryVector = new RawVectorQuery() .setVector(toFloatList(embeddingClient.embed(query))) .setKNearestNeighborsCount(k) .setFields("contentVector"); final var searchResults = searchClient.search(null, new SearchOptions().setVectorQueries(searchQueryVector), Context.NONE); return searchResults.stream() .filter(r -> r.getScore() >= threshold) .map(r -> { final DocEntry entry = r.getDocument(DocEntry.class); final Document doc = new Document(entry.getId(), entry.getContent(), Collections.emptyMap()); doc.setEmbedding(entry.getContentVector()); return doc; }) .collect(Collectors.toList()); } private List<Float> toFloatList(List<Double> doubleList) { return doubleList.stream().map(Double::floatValue).toList(); } } @Data @Builder @Jacksonized @AllArgsConstructor @NoArgsConstructor static class DocEntry { private String id; private String hash; private String content; private List<Double> contentVector; } }Important
Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations sur la sécurité des informations d’identification, consultez cet article de sécurité .
Revenez au dossier racine du projet et exécutez l’application à l’aide de la commande suivante :
./mvnw spring-boot:run
Output
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v3.1.5)
2023-11-07T14:40:45.250-06:00 INFO 18557 --- [ main] c.e.a.AiCustomDataApplication : No active profile set, falling back to 1 default profile: "default"
2023-11-07T14:40:46.035-06:00 INFO 18557 --- [ main] c.e.a.AiCustomDataApplication : Started AiCustomDataApplication in 1.095 seconds (process running for 1.397)
Sending custom data prompt to Foundry Tool. One moment please...
Prompt created 1 generated response(s).
Generated response from "assistant": The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Documentation de référence | Code source | Package (npm) | Exemples
Conditions préalables
Un abonnement Azure : créez-en un gratuitement.
Azure CLI est utilisé pour l’authentification sans mot de passe dans un environnement de développement local. Créez le contexte nécessaire en vous connectant avec Azure CLI.
Une ressource Azure OpenAI déployée dans une région prise en charge et avec un modèle pris en charge.
Veillez à attribuer au moins le rôle de Collaborateur Cognitive Services pour la ressource Azure OpenAI.
Téléchargez les exemples de données à partir de GitHub si vous n’avez pas vos propres données.
Prérequis pour Microsoft Entra ID
Pour l’authentification sans clé recommandée avec Microsoft Entra ID, vous devez effectuer les tâches suivantes :
- Installez l’interface Azure CLI utilisée pour l’authentification sans clé avec Microsoft Entra ID.
- Attribuez le rôle
Cognitive Services Userà votre compte d’utilisateur. Vous pouvez attribuer des rôles dans le Portail Azure sous Contrôle d’accès (IAM)>Ajouter une attribution de rôle.
Ajouter vos données à l’aide du portail Microsoft Foundry
Conseil / Astuce
Vous pouvez également utiliser Azure Developer CLI pour créer par programmation les ressources nécessaires à Azure OpenAI sur vos données.
Pour ajouter vos données à l’aide du portail :
-
Connectez-vous à Microsoft Foundry. Assurez-vous que l'interrupteur New Foundry est désactivé. Ces étapes font référence à Foundry (classique).
Sélectionnez votre ressource Azure OpenAI. Si vous disposez d’une ressource Foundry, vous pouvez créer un projet Foundry.
Dans le volet gauche, sélectionnez Playgrounds>Chat.
Dans le volet Configuration , sélectionnez votre déploiement de modèle.
Sélectionnez Ajouter vos données>Ajouter une source de données.
Dans la page source de données :
Sous Sélectionner une source de données, sélectionnez Charger des fichiers (préversion).
Conseil / Astuce
- Cette option nécessite une ressource Stockage Blob Azure et une ressource Recherche Azure AI pour accéder à vos données et les indexer. Pour plus d’informations, consultez les options de source de données et les types de fichiers pris en charge et les formats.
- Pour les documents et les jeux de données avec du texte long, nous vous recommandons d’utiliser le script de préparation des données.
Le partage de ressources inter-origines (CORS) est requis pour qu’Azure OpenAI accède à votre compte de stockage. Si CORS n’est pas déjà activé pour votre ressource Stockage Blob Azure, sélectionnez Activer CORS.
Sélectionnez votre ressource Recherche d’IA Azure.
Entrez un nom pour votre nouvel index.
Cochez la case qui reconnaît les effets de facturation de l’utilisation d’Azure AI Search.
Cliquez sur Suivant.
Dans la page Charger des fichiers :
Sélectionnez Rechercher un fichier, puis sélectionnez vos propres données ou les exemples de données que vous avez téléchargés à partir des conditions préalables.
Sélectionnez Charger des fichiers.
Cliquez sur Suivant.
Dans la page gestion des données :
Choisissez si vous souhaitez activer la recherche sémantique ou la recherche vectorielle pour votre index.
Important
- La recherche sémantique et la recherche vectorielle sont soumises à une tarification supplémentaire. Votre ressource Recherche Azure AI doit se trouver sur le niveau De base ou supérieur pour activer la recherche sémantique ou la recherche vectorielle. Pour plus d’informations, consultez Choisir un niveau et deslimites de service.
- Pour améliorer la qualité de la récupération d’informations et de la réponse du modèle, nous vous recommandons d’activer la recherche sémantique pour les langues de source de données suivantes : anglais, français, espagnol, portugais, italien, allemand, chinois(Zh), japonais, coréen, russe et arabe.
Cliquez sur Suivant.
Dans la page de connexion de données :
Indiquez s’il faut s’authentifier à l’aide d’une identité managée affectée par le système ou d’une clé API.
Cliquez sur Suivant.
Passez en revue vos configurations, puis sélectionnez Enregistrer et fermer.
Vous pouvez maintenant discuter avec le modèle, qui utilise vos données pour construire la réponse.
Récupérer des informations sur les ressources
Vous devez récupérer les informations suivantes pour authentifier votre application auprès de votre ressource Azure OpenAI. Ce guide de démarrage rapide suppose que vous avez chargé vos données dans un compte de stockage d’objets blob Azure et que vous avez créé un index Recherche Azure AI. Consultez Ajouter vos données à l’aide du portail Microsoft Foundry.
| Nom de la variable | Valeur |
|---|---|
AZURE_OPENAI_ENDPOINT |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource Azure OpenAI à partir du portail Azure. Voici un exemple de point de terminaison : https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Cette valeur correspond au nom personnalisé que vous avez choisi pour votre déploiement lorsque vous avez déployé un modèle. Vous pouvez trouver cette valeur sous Gestion des ressources>Déploiements dans le portail Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Cette valeur se trouve dans la section Vue d’ensemble quand vous examinez votre ressource Recherche Azure AI à partir du Portail Azure. |
AZURE_AI_SEARCH_INDEX |
Cette valeur correspond au nom de l’index que vous avez créé pour stocker vos données. Vous le trouverez dans la section Vue d’ensemble lors de l’examen de votre ressource Recherche Azure AI à partir du Portail Azure. |
En savoir plus sur l’authentification sans clé et la définition de variables d’environnement.
Configurer
Créez un dossier
use-data-quickstartet accédez au dossier de démarrage rapide avec la commande suivante :mkdir use-data-quickstart && cd use-data-quickstartCréez le
package.jsonavec la commande suivante :npm init -yInstallez la bibliothèque de client OpenAI pour JavaScript avec :
npm install openaiPour l’authentification sans mot de passe recommandée :
npm install @azure/identity
Ajouter le code JavaScript
Créez le fichier
index.jsavec le code suivant :const { DefaultAzureCredential, getBearerTokenProvider } = require("@azure/identity"); const { AzureOpenAI } = require("openai"); // Set the Azure and AI Search values from environment variables const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint"; const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint"; const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); // Required Azure OpenAI deployment name and API version const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4"; const apiVersion = process.env.OPENAI_API_VERSION || "2024-10-21"; function getClient() { return new AzureOpenAI({ endpoint, azureADTokenProvider, deployment: deploymentName, apiVersion, }); } async function main() { const client = getClient(); const messages = [ { role: "user", content: "What are my available health plans?" }, ]; console.log(`Message: ${messages.map((m) => m.content).join("\n")}`); const events = await client.chat.completions.create({ stream: true, messages: [ { role: "user", content: "What's the most common feedback we received from our customers about the product?", }, ], max_tokens: 128, model: "", data_sources: [ { type: "azure_search", parameters: { endpoint: searchEndpoint, index_name: searchIndex, authentication: { type: "api_key", key: searchKey, }, }, }, ], }); let response = ""; for await (const event of events) { for (const choice of event.choices) { const newText = choice.delta?.content; if (newText) { response += newText; // To see streaming results as they arrive, uncomment line below // console.log(newText); } } } console.log(response); } main().catch((err) => { console.error("The sample encountered an error:", err); });Connectez-vous à Azure à l’aide de la commande suivante :
az loginExécutez le fichier JavaScript.
node index.js
Output
Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Documentation de référence | Code source | Package (npm) | Exemples
Conditions préalables
Un abonnement Azure : créez-en un gratuitement.
Azure CLI est utilisé pour l’authentification sans mot de passe dans un environnement de développement local. Créez le contexte nécessaire en vous connectant avec Azure CLI.
Une ressource Azure OpenAI déployée dans une région prise en charge et avec un modèle pris en charge.
Veillez à attribuer au moins le rôle de Collaborateur Cognitive Services pour la ressource Azure OpenAI.
Téléchargez les exemples de données à partir de GitHub si vous n’avez pas vos propres données.
Prérequis pour Microsoft Entra ID
Pour l’authentification sans clé recommandée avec Microsoft Entra ID, vous devez effectuer les tâches suivantes :
- Installez l’interface Azure CLI utilisée pour l’authentification sans clé avec Microsoft Entra ID.
- Attribuez le rôle
Cognitive Services Userà votre compte d’utilisateur. Vous pouvez attribuer des rôles dans le Portail Azure sous Contrôle d’accès (IAM)>Ajouter une attribution de rôle.
Ajouter vos données à l’aide du portail Microsoft Foundry
Conseil / Astuce
Vous pouvez également utiliser Azure Developer CLI pour créer par programmation les ressources nécessaires à Azure OpenAI sur vos données.
Pour ajouter vos données à l’aide du portail :
-
Connectez-vous à Microsoft Foundry. Assurez-vous que l'interrupteur New Foundry est désactivé. Ces étapes font référence à Foundry (classique).
Sélectionnez votre ressource Azure OpenAI. Si vous disposez d’une ressource Foundry, vous pouvez créer un projet Foundry.
Dans le volet gauche, sélectionnez Playgrounds>Chat.
Dans le volet Configuration , sélectionnez votre déploiement de modèle.
Sélectionnez Ajouter vos données>Ajouter une source de données.
Dans la page source de données :
Sous Sélectionner une source de données, sélectionnez Charger des fichiers (préversion).
Conseil / Astuce
- Cette option nécessite une ressource Stockage Blob Azure et une ressource Recherche Azure AI pour accéder à vos données et les indexer. Pour plus d’informations, consultez les options de source de données et les types de fichiers pris en charge et les formats.
- Pour les documents et les jeux de données avec du texte long, nous vous recommandons d’utiliser le script de préparation des données.
Le partage de ressources inter-origines (CORS) est requis pour qu’Azure OpenAI accède à votre compte de stockage. Si CORS n’est pas déjà activé pour votre ressource Stockage Blob Azure, sélectionnez Activer CORS.
Sélectionnez votre ressource Recherche d’IA Azure.
Entrez un nom pour votre nouvel index.
Cochez la case qui reconnaît les effets de facturation de l’utilisation d’Azure AI Search.
Cliquez sur Suivant.
Dans la page Charger des fichiers :
Sélectionnez Rechercher un fichier, puis sélectionnez vos propres données ou les exemples de données que vous avez téléchargés à partir des conditions préalables.
Sélectionnez Charger des fichiers.
Cliquez sur Suivant.
Dans la page gestion des données :
Choisissez si vous souhaitez activer la recherche sémantique ou la recherche vectorielle pour votre index.
Important
- La recherche sémantique et la recherche vectorielle sont soumises à une tarification supplémentaire. Votre ressource Recherche Azure AI doit se trouver sur le niveau De base ou supérieur pour activer la recherche sémantique ou la recherche vectorielle. Pour plus d’informations, consultez Choisir un niveau et deslimites de service.
- Pour améliorer la qualité de la récupération d’informations et de la réponse du modèle, nous vous recommandons d’activer la recherche sémantique pour les langues de source de données suivantes : anglais, français, espagnol, portugais, italien, allemand, chinois(Zh), japonais, coréen, russe et arabe.
Cliquez sur Suivant.
Dans la page de connexion de données :
Indiquez s’il faut s’authentifier à l’aide d’une identité managée affectée par le système ou d’une clé API.
Cliquez sur Suivant.
Passez en revue vos configurations, puis sélectionnez Enregistrer et fermer.
Vous pouvez maintenant discuter avec le modèle, qui utilise vos données pour construire la réponse.
Récupérer des informations sur les ressources
Vous devez récupérer les informations suivantes pour authentifier votre application auprès de votre ressource Azure OpenAI. Ce guide de démarrage rapide suppose que vous avez chargé vos données dans un compte de stockage d’objets blob Azure et que vous avez créé un index Recherche Azure AI. Consultez Ajouter vos données à l’aide du portail Microsoft Foundry.
| Nom de la variable | Valeur |
|---|---|
AZURE_OPENAI_ENDPOINT |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource Azure OpenAI à partir du portail Azure. Voici un exemple de point de terminaison : https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Cette valeur correspond au nom personnalisé que vous avez choisi pour votre déploiement lorsque vous avez déployé un modèle. Vous pouvez trouver cette valeur sous Gestion des ressources>Déploiements dans le portail Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Cette valeur se trouve dans la section Vue d’ensemble quand vous examinez votre ressource Recherche Azure AI à partir du Portail Azure. |
AZURE_AI_SEARCH_INDEX |
Cette valeur correspond au nom de l’index que vous avez créé pour stocker vos données. Vous le trouverez dans la section Vue d’ensemble lors de l’examen de votre ressource Recherche Azure AI à partir du Portail Azure. |
En savoir plus sur l’authentification sans clé et la définition de variables d’environnement.
Configurer
Créez un dossier
use-data-quickstartet accédez au dossier de démarrage rapide avec la commande suivante :mkdir use-data-quickstart && cd use-data-quickstartCréez le
package.jsonavec la commande suivante :npm init -yMettez à jour le
package.jsonvers ECMAScript avec la commande suivante :npm pkg set type=moduleInstallez la bibliothèque de client OpenAI pour JavaScript avec :
npm install openaiPour l’authentification sans mot de passe recommandée :
npm install @azure/identity
Ajouter le code TypeScript
Créez le fichier
index.tsavec le code suivant :import { AzureOpenAI } from "openai"; import { DefaultAzureCredential, getBearerTokenProvider } from "@azure/identity"; import "@azure/openai/types"; // Set the Azure and AI Search values from environment variables const endpoint = process.env.AZURE_OPENAI_ENDPOINT || "Your endpoint"; const searchEndpoint = process.env.AZURE_AI_SEARCH_ENDPOINT || "Your search endpoint"; const searchIndex = process.env.AZURE_AI_SEARCH_INDEX || "Your search index"; // keyless authentication const credential = new DefaultAzureCredential(); const scope = "https://cognitiveservices.azure.com/.default"; const azureADTokenProvider = getBearerTokenProvider(credential, scope); // Required Azure OpenAI deployment name and API version const deploymentName = process.env.AZURE_OPENAI_DEPLOYMENT_NAME || "gpt-4"; const apiVersion = process.env.OPENAI_API_VERSION || "2024-07-01-preview"; function getClient(): AzureOpenAI { return new AzureOpenAI({ endpoint, azureADTokenProvider, deployment: deploymentName, apiVersion, }); } async function main() { const client = getClient(); const messages = [ { role: "user", content: "What are my available health plans?" }, ]; console.log(`Message: ${messages.map((m) => m.content).join("\n")}`); const events = await client.chat.completions.create({ stream: true, messages: [ { role: "user", content: "What's the most common feedback we received from our customers about the product?", }, ], max_tokens: 128, model: "", data_sources: [ { type: "azure_search", parameters: { endpoint: searchEndpoint, index_name: searchIndex, authentication: { type: "api_key", key: searchKey, }, }, }, ], }); let response = ""; for await (const event of events) { for (const choice of event.choices) { const newText = choice.delta?.content; if (newText) { response += newText; // To see streaming results as they arrive, uncomment line below // console.log(newText); } } } console.log(response); } main().catch((err) => { console.error("The sample encountered an error:", err); });Créez le fichier
tsconfig.jsonpour transpiler le code TypeScript et copiez le code suivant pour ECMAScript.{ "compilerOptions": { "module": "NodeNext", "target": "ES2022", // Supports top-level await "moduleResolution": "NodeNext", "skipLibCheck": true, // Avoid type errors from node_modules "strict": true // Enable strict type-checking options }, "include": ["*.ts"] }Transpiler de TypeScript à JavaScript.
tscConnectez-vous à Azure à l’aide de la commande suivante :
az loginExécutez le code avec la commande suivante :
node index.js
Important
Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations sur la sécurité des informations d’identification, consultez cet article de sécurité .
Output
Message: What are my available health plans?
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Conditions préalables
- Azure OpenAI
- Stockage Blob Azure
- Recherche Azure AI
- Une ressource Azure OpenAI déployée dans une région prise en charge et avec un modèle pris en charge.
- Veillez à attribuer au moins le rôle de Collaborateur Cognitive Services pour la ressource Azure OpenAI.
- Téléchargez les exemples de données à partir de GitHub si vous n’avez pas vos propres données.
Référence | Code source | Package (pypi) | Exemples
Ces liens font référence à l’API OpenAI pour Python. Il n’existe aucun Kit de développement logiciel (SDK) Python OpenAI spécifique à Azure. Découvrez comment basculer entre les services OpenAI et Azure OpenAI.
Ajouter vos données à l’aide du portail Microsoft Foundry
Conseil / Astuce
Vous pouvez également utiliser Azure Developer CLI pour créer par programmation les ressources nécessaires à Azure OpenAI sur vos données.
Pour ajouter vos données à l’aide du portail :
-
Connectez-vous à Microsoft Foundry. Assurez-vous que l'interrupteur New Foundry est désactivé. Ces étapes font référence à Foundry (classique).
Sélectionnez votre ressource Azure OpenAI. Si vous disposez d’une ressource Foundry, vous pouvez créer un projet Foundry.
Dans le volet gauche, sélectionnez Playgrounds>Chat.
Dans le volet Configuration , sélectionnez votre déploiement de modèle.
Sélectionnez Ajouter vos données>Ajouter une source de données.
Dans la page source de données :
Sous Sélectionner une source de données, sélectionnez Charger des fichiers (préversion).
Conseil / Astuce
- Cette option nécessite une ressource Stockage Blob Azure et une ressource Recherche Azure AI pour accéder à vos données et les indexer. Pour plus d’informations, consultez les options de source de données et les types de fichiers pris en charge et les formats.
- Pour les documents et les jeux de données avec du texte long, nous vous recommandons d’utiliser le script de préparation des données.
Le partage de ressources inter-origines (CORS) est requis pour qu’Azure OpenAI accède à votre compte de stockage. Si CORS n’est pas déjà activé pour votre ressource Stockage Blob Azure, sélectionnez Activer CORS.
Sélectionnez votre ressource Recherche d’IA Azure.
Entrez un nom pour votre nouvel index.
Cochez la case qui reconnaît les effets de facturation de l’utilisation d’Azure AI Search.
Cliquez sur Suivant.
Dans la page Charger des fichiers :
Sélectionnez Rechercher un fichier, puis sélectionnez vos propres données ou les exemples de données que vous avez téléchargés à partir des conditions préalables.
Sélectionnez Charger des fichiers.
Cliquez sur Suivant.
Dans la page gestion des données :
Choisissez si vous souhaitez activer la recherche sémantique ou la recherche vectorielle pour votre index.
Important
- La recherche sémantique et la recherche vectorielle sont soumises à une tarification supplémentaire. Votre ressource Recherche Azure AI doit se trouver sur le niveau De base ou supérieur pour activer la recherche sémantique ou la recherche vectorielle. Pour plus d’informations, consultez Choisir un niveau et deslimites de service.
- Pour améliorer la qualité de la récupération d’informations et de la réponse du modèle, nous vous recommandons d’activer la recherche sémantique pour les langues de source de données suivantes : anglais, français, espagnol, portugais, italien, allemand, chinois(Zh), japonais, coréen, russe et arabe.
Cliquez sur Suivant.
Dans la page de connexion de données :
Indiquez s’il faut s’authentifier à l’aide d’une identité managée affectée par le système ou d’une clé API.
Cliquez sur Suivant.
Passez en revue vos configurations, puis sélectionnez Enregistrer et fermer.
Vous pouvez maintenant discuter avec le modèle, qui utilise vos données pour construire la réponse.
Récupérer des informations sur les ressources
Vous devez récupérer les informations suivantes pour authentifier votre application auprès de votre ressource Azure OpenAI. Ce guide de démarrage rapide suppose que vous avez chargé vos données dans un compte de stockage d’objets blob Azure et que vous avez créé un index Recherche Azure AI. Consultez Ajouter vos données à l’aide du portail Microsoft Foundry.
| Nom de la variable | Valeur |
|---|---|
AZURE_OPENAI_ENDPOINT |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource Azure OpenAI à partir du portail Azure. Voici un exemple de point de terminaison : https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Cette valeur correspond au nom personnalisé que vous avez choisi pour votre déploiement lorsque vous avez déployé un modèle. Vous pouvez trouver cette valeur sous Gestion des ressources>Déploiements dans le portail Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Cette valeur se trouve dans la section Vue d’ensemble quand vous examinez votre ressource Recherche Azure AI à partir du Portail Azure. |
AZURE_AI_SEARCH_INDEX |
Cette valeur correspond au nom de l’index que vous avez créé pour stocker vos données. Vous le trouverez dans la section Vue d’ensemble lors de l’examen de votre ressource Recherche Azure AI à partir du Portail Azure. |
En savoir plus sur l’authentification sans clé et la définition de variables d’environnement.
Créer un environnement Python
- Créez un dossier nommé openai-python pour votre projet et un fichier de code Python nommé main.py. Passez à ce répertoire :
mkdir openai-python
cd openai-python
- Installez les bibliothèques Python suivantes :
pip install openai
pip install python-dotenv
Créer l’application Python
- À partir du répertoire du projet, ouvrez le fichier main.py, puis ajoutez le code suivant :
import os
import openai
import dotenv
dotenv.load_dotenv()
endpoint = os.environ.get("AZURE_OPENAI_ENDPOINT")
api_key = os.environ.get("AZURE_OPENAI_API_KEY")
deployment = os.environ.get("AZURE_OPENAI_DEPLOYMENT_NAME")
client = openai.AzureOpenAI(
azure_endpoint=endpoint,
api_key=api_key,
api_version="2024-10-21",
)
completion = client.chat.completions.create(
model=deployment,
messages=[
{
"role": "user",
"content": "What are my available health plans?",
},
],
extra_body={
"data_sources":[
{
"type": "azure_search",
"parameters": {
"endpoint": os.environ["AZURE_AI_SEARCH_ENDPOINT"],
"index_name": os.environ["AZURE_AI_SEARCH_INDEX"],
"authentication": {
"type": "api_key",
"key": os.environ["AZURE_AI_SEARCH_API_KEY"],
}
}
}
],
}
)
print(f"{completion.choices[0].message.role}: {completion.choices[0].message.content}")
Important
Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations sur la sécurité des informations d’identification, consultez cet article de sécurité .
- Exécutez la commande suivante :
python main.py
L’application imprime la réponse dans un format JSON adapté à une utilisation dans de nombreux scénarios. Elle inclut les réponses à vos requêtes et citations de vos fichiers chargés.
Conditions préalables
- Azure OpenAI
- Stockage Blob Azure
- Recherche Azure AI
- Une ressource Azure OpenAI déployée dans une région prise en charge et avec un modèle pris en charge.
- Veillez à attribuer au moins le rôle de Collaborateur Cognitive Services pour la ressource Azure OpenAI.
- Téléchargez les exemples de données à partir de GitHub si vous n’avez pas vos propres données.
Ajouter vos données à l’aide du portail Microsoft Foundry
Conseil / Astuce
Vous pouvez également utiliser Azure Developer CLI pour créer par programmation les ressources nécessaires à Azure OpenAI sur vos données.
Pour ajouter vos données à l’aide du portail :
-
Connectez-vous à Microsoft Foundry. Assurez-vous que l'interrupteur New Foundry est désactivé. Ces étapes font référence à Foundry (classique).
Sélectionnez votre ressource Azure OpenAI. Si vous disposez d’une ressource Foundry, vous pouvez créer un projet Foundry.
Dans le volet gauche, sélectionnez Playgrounds>Chat.
Dans le volet Configuration , sélectionnez votre déploiement de modèle.
Sélectionnez Ajouter vos données>Ajouter une source de données.
Dans la page source de données :
Sous Sélectionner une source de données, sélectionnez Charger des fichiers (préversion).
Conseil / Astuce
- Cette option nécessite une ressource Stockage Blob Azure et une ressource Recherche Azure AI pour accéder à vos données et les indexer. Pour plus d’informations, consultez les options de source de données et les types de fichiers pris en charge et les formats.
- Pour les documents et les jeux de données avec du texte long, nous vous recommandons d’utiliser le script de préparation des données.
Le partage de ressources inter-origines (CORS) est requis pour qu’Azure OpenAI accède à votre compte de stockage. Si CORS n’est pas déjà activé pour votre ressource Stockage Blob Azure, sélectionnez Activer CORS.
Sélectionnez votre ressource Recherche d’IA Azure.
Entrez un nom pour votre nouvel index.
Cochez la case qui reconnaît les effets de facturation de l’utilisation d’Azure AI Search.
Cliquez sur Suivant.
Dans la page Charger des fichiers :
Sélectionnez Rechercher un fichier, puis sélectionnez vos propres données ou les exemples de données que vous avez téléchargés à partir des conditions préalables.
Sélectionnez Charger des fichiers.
Cliquez sur Suivant.
Dans la page gestion des données :
Choisissez si vous souhaitez activer la recherche sémantique ou la recherche vectorielle pour votre index.
Important
- La recherche sémantique et la recherche vectorielle sont soumises à une tarification supplémentaire. Votre ressource Recherche Azure AI doit se trouver sur le niveau De base ou supérieur pour activer la recherche sémantique ou la recherche vectorielle. Pour plus d’informations, consultez Choisir un niveau et deslimites de service.
- Pour améliorer la qualité de la récupération d’informations et de la réponse du modèle, nous vous recommandons d’activer la recherche sémantique pour les langues de source de données suivantes : anglais, français, espagnol, portugais, italien, allemand, chinois(Zh), japonais, coréen, russe et arabe.
Cliquez sur Suivant.
Dans la page de connexion de données :
Indiquez s’il faut s’authentifier à l’aide d’une identité managée affectée par le système ou d’une clé API.
Cliquez sur Suivant.
Passez en revue vos configurations, puis sélectionnez Enregistrer et fermer.
Vous pouvez maintenant discuter avec le modèle, qui utilise vos données pour construire la réponse.
Récupérer des informations sur les ressources
Vous devez récupérer les informations suivantes pour authentifier votre application auprès de votre ressource Azure OpenAI. Ce guide de démarrage rapide suppose que vous avez chargé vos données dans un compte de stockage d’objets blob Azure et que vous avez créé un index Recherche Azure AI. Consultez Ajouter vos données à l’aide du portail Microsoft Foundry.
| Nom de la variable | Valeur |
|---|---|
AZURE_OPENAI_ENDPOINT |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource Azure OpenAI à partir du portail Azure. Voici un exemple de point de terminaison : https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Cette valeur correspond au nom personnalisé que vous avez choisi pour votre déploiement lorsque vous avez déployé un modèle. Vous pouvez trouver cette valeur sous Gestion des ressources>Déploiements dans le portail Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Cette valeur se trouve dans la section Vue d’ensemble quand vous examinez votre ressource Recherche Azure AI à partir du Portail Azure. |
AZURE_AI_SEARCH_INDEX |
Cette valeur correspond au nom de l’index que vous avez créé pour stocker vos données. Vous le trouverez dans la section Vue d’ensemble lors de l’examen de votre ressource Recherche Azure AI à partir du Portail Azure. |
En savoir plus sur l’authentification sans clé et la définition de variables d’environnement.
Exemples de commandes PowerShell
Les modèles Azure OpenAI sont optimisés pour fonctionner avec des entrées au format de conversation. La variable messages transmet un tableau de dictionnaires avec différents rôles dans la conversation délimités par système, utilisateur, outil et assistant. La variable dataSources se connecte à votre index Recherche cognitive Azure et permet aux modèles Azure OpenAI de répondre à l’aide de vos données.
Pour déclencher une réponse à partir du modèle, vous devez voir un message utilisateur indiquant que c’est au tour de l’assistant de répondre.
Conseil / Astuce
Vous pouvez utiliser plusieurs paramètres pour modifier la réponse du modèle, par exemple temperature ou top_p. Pour plus d’informations, consultez la documentation de référence.
# Azure OpenAI metadata variables
$openai = @{
api_key = $Env:AZURE_OPENAI_API_KEY
api_base = $Env:AZURE_OPENAI_ENDPOINT # your endpoint should look like the following https://YOUR_RESOURCE_NAME.openai.azure.com/
api_version = '2023-07-01-preview' # this may change in the future
name = 'YOUR-DEPLOYMENT-NAME-HERE' #This will correspond to the custom name you chose for your deployment when you deployed a model.
}
$acs = @{
search_endpoint = 'YOUR ACS ENDPOINT' # your endpoint should look like the following https://YOUR_RESOURCE_NAME.search.windows.net/
search_key = 'YOUR-ACS-KEY-HERE' # or use the Get-Secret cmdlet to retrieve the value
search_index = 'YOUR-INDEX-NAME-HERE' # the name of your ACS index
}
# Completion text
$body = @{
dataSources = @(
@{
type = 'AzureCognitiveSearch'
parameters = @{
endpoint = $acs.search_endpoint
key = $acs.search_key
indexName = $acs.search_index
}
}
)
messages = @(
@{
role = 'user'
content = 'What are my available health plans?'
}
)
} | convertto-json -depth 5
# Header for authentication
$headers = [ordered]@{
'api-key' = $openai.api_key
}
# Send a completion call to generate an answer
$url = "$($openai.api_base)/openai/deployments/$($openai.name)/extensions/chat/completions?api-version=$($openai.api_version)"
$response = Invoke-RestMethod -Uri $url -Headers $headers -Body $body -Method Post -ContentType 'application/json'
return $response.choices.messages[1].content
Exemple de sortie
The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans.
Important
Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification, comme La gestion des secrets PowerShell dans Azure Key Vault. Pour plus d’informations sur la sécurité des informations d’identification, consultez cet article de sécurité .
Converser avec votre modèle à l’aide d’une application web
Pour commencer à discuter avec le modèle Azure OpenAI qui utilise vos données, vous pouvez déployer une application web à l’aide du portail Microsoft Foundry ou d’un exemple de code que nous fournissons sur GitHub. Cette application se déploie à l’aide d’Azure App Service et fournit une interface utilisateur pour l’envoi de requêtes. Cette application peut être utilisée avec des modèles Azure OpenAI qui utilisent vos données, ou des modèles qui n’utilisent pas vos données. Consultez le fichier Lisez-moi dans le référentiel pour obtenir des instructions sur les exigences, la configuration et le déploiement. Vous pouvez éventuellement personnaliser la logique frontend et back-end de l’application web en modifiant le code source.
Conditions préalables
- Azure OpenAI
- Stockage Blob Azure
- Recherche Azure AI
- Une ressource Azure OpenAI déployée dans une région prise en charge et avec un modèle pris en charge.
- Veillez à attribuer au moins le rôle de Collaborateur Cognitive Services pour la ressource Azure OpenAI.
- Téléchargez les exemples de données à partir de GitHub si vous n’avez pas vos propres données.
Référence | Code source | Package (Go) | Exemples
Ajouter vos données à l’aide du portail Microsoft Foundry
Conseil / Astuce
Vous pouvez également utiliser Azure Developer CLI pour créer par programmation les ressources nécessaires à Azure OpenAI sur vos données.
Pour ajouter vos données à l’aide du portail :
-
Connectez-vous à Microsoft Foundry. Assurez-vous que l'interrupteur New Foundry est désactivé. Ces étapes font référence à Foundry (classique).
Sélectionnez votre ressource Azure OpenAI. Si vous disposez d’une ressource Foundry, vous pouvez créer un projet Foundry.
Dans le volet gauche, sélectionnez Playgrounds>Chat.
Dans le volet Configuration , sélectionnez votre déploiement de modèle.
Sélectionnez Ajouter vos données>Ajouter une source de données.
Dans la page source de données :
Sous Sélectionner une source de données, sélectionnez Charger des fichiers (préversion).
Conseil / Astuce
- Cette option nécessite une ressource Stockage Blob Azure et une ressource Recherche Azure AI pour accéder à vos données et les indexer. Pour plus d’informations, consultez les options de source de données et les types de fichiers pris en charge et les formats.
- Pour les documents et les jeux de données avec du texte long, nous vous recommandons d’utiliser le script de préparation des données.
Le partage de ressources inter-origines (CORS) est requis pour qu’Azure OpenAI accède à votre compte de stockage. Si CORS n’est pas déjà activé pour votre ressource Stockage Blob Azure, sélectionnez Activer CORS.
Sélectionnez votre ressource Recherche d’IA Azure.
Entrez un nom pour votre nouvel index.
Cochez la case qui reconnaît les effets de facturation de l’utilisation d’Azure AI Search.
Cliquez sur Suivant.
Dans la page Charger des fichiers :
Sélectionnez Rechercher un fichier, puis sélectionnez vos propres données ou les exemples de données que vous avez téléchargés à partir des conditions préalables.
Sélectionnez Charger des fichiers.
Cliquez sur Suivant.
Dans la page gestion des données :
Choisissez si vous souhaitez activer la recherche sémantique ou la recherche vectorielle pour votre index.
Important
- La recherche sémantique et la recherche vectorielle sont soumises à une tarification supplémentaire. Votre ressource Recherche Azure AI doit se trouver sur le niveau De base ou supérieur pour activer la recherche sémantique ou la recherche vectorielle. Pour plus d’informations, consultez Choisir un niveau et deslimites de service.
- Pour améliorer la qualité de la récupération d’informations et de la réponse du modèle, nous vous recommandons d’activer la recherche sémantique pour les langues de source de données suivantes : anglais, français, espagnol, portugais, italien, allemand, chinois(Zh), japonais, coréen, russe et arabe.
Cliquez sur Suivant.
Dans la page de connexion de données :
Indiquez s’il faut s’authentifier à l’aide d’une identité managée affectée par le système ou d’une clé API.
Cliquez sur Suivant.
Passez en revue vos configurations, puis sélectionnez Enregistrer et fermer.
Vous pouvez maintenant discuter avec le modèle, qui utilise vos données pour construire la réponse.
Prérequis pour Microsoft Entra ID
Pour l’authentification sans clé recommandée avec Microsoft Entra ID, vous devez effectuer les tâches suivantes :
- Installez l’interface Azure CLI utilisée pour l’authentification sans clé avec Microsoft Entra ID.
- Attribuez le rôle
Cognitive Services Userà votre compte d’utilisateur. Vous pouvez attribuer des rôles dans le Portail Azure sous Contrôle d’accès (IAM)>Ajouter une attribution de rôle.
Configurer
Créez un dossier
dall-e-quickstartet accédez au dossier de démarrage rapide avec la commande suivante :mkdir dall-e-quickstart && cd dall-e-quickstartPour l’authentification sans clé recommandée avec Microsoft Entra ID, connectez-vous à Azure avec la commande suivante :
az login
Récupérer des informations sur les ressources
Vous devez récupérer les informations suivantes pour authentifier votre application auprès de votre ressource Azure OpenAI. Ce guide de démarrage rapide suppose que vous avez chargé vos données dans un compte de stockage d’objets blob Azure et que vous avez créé un index Recherche Azure AI. Consultez Ajouter vos données à l’aide du portail Microsoft Foundry.
| Nom de la variable | Valeur |
|---|---|
AZURE_OPENAI_ENDPOINT |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource Azure OpenAI à partir du portail Azure. Voici un exemple de point de terminaison : https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Cette valeur correspond au nom personnalisé que vous avez choisi pour votre déploiement lorsque vous avez déployé un modèle. Vous pouvez trouver cette valeur sous Gestion des ressources>Déploiements dans le portail Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Cette valeur se trouve dans la section Vue d’ensemble quand vous examinez votre ressource Recherche Azure AI à partir du Portail Azure. |
AZURE_AI_SEARCH_INDEX |
Cette valeur correspond au nom de l’index que vous avez créé pour stocker vos données. Vous le trouverez dans la section Vue d’ensemble lors de l’examen de votre ressource Recherche Azure AI à partir du Portail Azure. |
En savoir plus sur l’authentification sans clé et la définition de variables d’environnement.
Exécuter le démarrage rapide
L’exemple de code de ce guide de démarrage rapide utilise Microsoft Entra ID pour l’authentification sans clé recommandée. Si vous préférez utiliser une clé API, vous pouvez remplacer l’implémentation NewDefaultAzureCredential par NewKeyCredential.
azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT")
credential, err := azidentity.NewDefaultAzureCredential(nil)
client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil)
Pour exécuter l’exemple :
Créez un fichier nommé quickstart.go. Copiez le code suivant dans le fichier quickstart.go .
package main import ( "context" "fmt" "log" "os" "github.com/Azure/azure-sdk-for-go/sdk/ai/azopenai" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" ) func main() { azureOpenAIEndpoint := os.Getenv("AZURE_OPENAI_ENDPOINT") credential, err := azidentity.NewDefaultAzureCredential(nil) client, err := azopenai.NewClient(azureOpenAIEndpoint, credential, nil) modelDeploymentID := os.Getenv("AZURE_OPENAI_DEPLOYMENT_NAME") // Azure AI Search configuration searchIndex := os.Getenv("AZURE_AI_SEARCH_INDEX") searchEndpoint := os.Getenv("AZURE_AI_SEARCH_ENDPOINT") searchAPIKey := os.Getenv("AZURE_AI_SEARCH_API_KEY") if modelDeploymentID == "" || azureOpenAIEndpoint == "" || searchIndex == "" || searchEndpoint == "" || searchAPIKey == "" { fmt.Fprintf(os.Stderr, "Skipping example, environment variables missing\n") return } client, err := azopenai.NewClientWithKeyCredential(azureOpenAIEndpoint, credential, nil) if err != nil { // Implement application specific error handling logic. log.Printf("ERROR: %s", err) return } resp, err := client.GetChatCompletions(context.TODO(), azopenai.ChatCompletionsOptions{ Messages: []azopenai.ChatRequestMessageClassification{ &azopenai.ChatRequestUserMessage{Content: azopenai.NewChatRequestUserMessageContent("What are my available health plans?")}, }, MaxTokens: to.Ptr[int32](512), AzureExtensionsOptions: []azopenai.AzureChatExtensionConfigurationClassification{ &azopenai.AzureSearchChatExtensionConfiguration{ // This allows Azure OpenAI to use an Azure AI Search index. // Answers are based on the model's pretrained knowledge // and the latest information available in the designated data source. Parameters: &azopenai.AzureSearchChatExtensionParameters{ Endpoint: &searchEndpoint, IndexName: &searchIndex, Authentication: &azopenai.OnYourDataAPIKeyAuthenticationOptions{ Key: &searchAPIKey, }, }, }, }, DeploymentName: &modelDeploymentID, }, nil) if err != nil { // Implement application specific error handling logic. log.Printf("ERROR: %s", err) return } fmt.Fprintf(os.Stderr, "Extensions Context Role: %s\nExtensions Context (length): %d\n", *resp.Choices[0].Message.Role, len(*resp.Choices[0].Message.Content)) fmt.Fprintf(os.Stderr, "ChatRole: %s\nChat content: %s\n", *resp.Choices[0].Message.Role, *resp.Choices[0].Message.Content, ) }Exécutez la commande suivante pour créer un module Go :
go mod init quickstart.goExécutez
go mod tidypour installer les dépendances requises :go mod tidyExécutez la commande suivante pour exécuter l’exemple :
go run quickstart.go
L’application imprime la réponse, y compris les réponses à votre requête et à vos citations à partir de vos fichiers chargés.
Conditions préalables
- Azure OpenAI
- Stockage Blob Azure
- Recherche Azure AI
- Une ressource Azure OpenAI déployée dans une région prise en charge et avec un modèle pris en charge.
- Veillez à attribuer au moins le rôle de Collaborateur Cognitive Services pour la ressource Azure OpenAI.
- Téléchargez les exemples de données à partir de GitHub si vous n’avez pas vos propres données.
Ajouter vos données à l’aide du portail Microsoft Foundry
Conseil / Astuce
Vous pouvez également utiliser Azure Developer CLI pour créer par programmation les ressources nécessaires à Azure OpenAI sur vos données.
Pour ajouter vos données à l’aide du portail :
-
Connectez-vous à Microsoft Foundry. Assurez-vous que l'interrupteur New Foundry est désactivé. Ces étapes font référence à Foundry (classique).
Sélectionnez votre ressource Azure OpenAI. Si vous disposez d’une ressource Foundry, vous pouvez créer un projet Foundry.
Dans le volet gauche, sélectionnez Playgrounds>Chat.
Dans le volet Configuration , sélectionnez votre déploiement de modèle.
Sélectionnez Ajouter vos données>Ajouter une source de données.
Dans la page source de données :
Sous Sélectionner une source de données, sélectionnez Charger des fichiers (préversion).
Conseil / Astuce
- Cette option nécessite une ressource Stockage Blob Azure et une ressource Recherche Azure AI pour accéder à vos données et les indexer. Pour plus d’informations, consultez les options de source de données et les types de fichiers pris en charge et les formats.
- Pour les documents et les jeux de données avec du texte long, nous vous recommandons d’utiliser le script de préparation des données.
Le partage de ressources inter-origines (CORS) est requis pour qu’Azure OpenAI accède à votre compte de stockage. Si CORS n’est pas déjà activé pour votre ressource Stockage Blob Azure, sélectionnez Activer CORS.
Sélectionnez votre ressource Recherche d’IA Azure.
Entrez un nom pour votre nouvel index.
Cochez la case qui reconnaît les effets de facturation de l’utilisation d’Azure AI Search.
Cliquez sur Suivant.
Dans la page Charger des fichiers :
Sélectionnez Rechercher un fichier, puis sélectionnez vos propres données ou les exemples de données que vous avez téléchargés à partir des conditions préalables.
Sélectionnez Charger des fichiers.
Cliquez sur Suivant.
Dans la page gestion des données :
Choisissez si vous souhaitez activer la recherche sémantique ou la recherche vectorielle pour votre index.
Important
- La recherche sémantique et la recherche vectorielle sont soumises à une tarification supplémentaire. Votre ressource Recherche Azure AI doit se trouver sur le niveau De base ou supérieur pour activer la recherche sémantique ou la recherche vectorielle. Pour plus d’informations, consultez Choisir un niveau et deslimites de service.
- Pour améliorer la qualité de la récupération d’informations et de la réponse du modèle, nous vous recommandons d’activer la recherche sémantique pour les langues de source de données suivantes : anglais, français, espagnol, portugais, italien, allemand, chinois(Zh), japonais, coréen, russe et arabe.
Cliquez sur Suivant.
Dans la page de connexion de données :
Indiquez s’il faut s’authentifier à l’aide d’une identité managée affectée par le système ou d’une clé API.
Cliquez sur Suivant.
Passez en revue vos configurations, puis sélectionnez Enregistrer et fermer.
Vous pouvez maintenant discuter avec le modèle, qui utilise vos données pour construire la réponse.
Récupérer des informations sur les ressources
Vous devez récupérer les informations suivantes pour authentifier votre application auprès de votre ressource Azure OpenAI. Ce guide de démarrage rapide suppose que vous avez chargé vos données dans un compte de stockage d’objets blob Azure et que vous avez créé un index Recherche Azure AI. Consultez Ajouter vos données à l’aide du portail Microsoft Foundry.
| Nom de la variable | Valeur |
|---|---|
AZURE_OPENAI_ENDPOINT |
Cette valeur se trouve dans la section Clés et point de terminaison quand vous examinez votre ressource Azure OpenAI à partir du portail Azure. Voici un exemple de point de terminaison : https://my-resource.openai.azure.com. |
AZURE_OPENAI_DEPLOYMENT_NAME |
Cette valeur correspond au nom personnalisé que vous avez choisi pour votre déploiement lorsque vous avez déployé un modèle. Vous pouvez trouver cette valeur sous Gestion des ressources>Déploiements dans le portail Azure. |
AZURE_AI_SEARCH_ENDPOINT |
Cette valeur se trouve dans la section Vue d’ensemble quand vous examinez votre ressource Recherche Azure AI à partir du Portail Azure. |
AZURE_AI_SEARCH_INDEX |
Cette valeur correspond au nom de l’index que vous avez créé pour stocker vos données. Vous le trouverez dans la section Vue d’ensemble lors de l’examen de votre ressource Recherche Azure AI à partir du Portail Azure. |
En savoir plus sur l’authentification sans clé et la définition de variables d’environnement.
Exemples de commandes cURL
Les modèles Azure OpenAI sont optimisés pour fonctionner avec des entrées au format de conversation. La variable messages transmet un tableau de dictionnaires avec différents rôles dans la conversation délimités par système, utilisateur, outil et assistant. La variable dataSources se connecte à votre index Recherche Azure AI et permet aux modèles Azure OpenAI de répondre à l’aide de vos données.
Pour déclencher une réponse à partir du modèle, vous devez voir un message utilisateur indiquant que c’est au tour de l’assistant de répondre.
Conseil / Astuce
Vous pouvez utiliser plusieurs paramètres pour modifier la réponse du modèle, par exemple temperature ou top_p. Pour plus d’informations, consultez la documentation de référence.
curl -i -X POST $AZURE_OPENAI_ENDPOINT/openai/deployments/$AZURE_OPENAI_DEPLOYMENT_NAME/chat/completions?api-version=2024-10-21 \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d \
'
{
"data_sources": [
{
"type": "azure_search",
"parameters": {
"endpoint": "'$AZURE_AI_SEARCH_ENDPOINT'",
"index_name": "'$AZURE_AI_SEARCH_INDEX'",
"authentication": {
"type": "api_key",
"key": "'$AZURE_AI_SEARCH_API_KEY'"
}
}
}
],
"messages": [
{
"role": "user",
"content": "What are my available health plans?"
}
]
}
'
Exemple de sortie
{
"id": "12345678-1a2b-3c4e5f-a123-12345678abcd",
"model": "gpt-4",
"created": 1709835345,
"object": "extensions.chat.completion",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "The available health plans in the Contoso Electronics plan and benefit packages are the Northwind Health Plus and Northwind Standard plans. [doc1].",
"end_turn": true,
"context": {
"citations": [
{
"content": "...",
"title": "...",
"url": "https://mysearch.blob.core.windows.net/xyz/001.txt",
"filepath": "001.txt",
"chunk_id": "0"
}
],
"intent": "[\"Available health plans\"]"
}
}
}
],
"usage": {
"prompt_tokens": 3779,
"completion_tokens": 105,
"total_tokens": 3884
},
"system_fingerprint": "fp_65792305e4"
}
Converser avec votre modèle à l’aide d’une application web
Pour commencer à discuter avec le modèle Azure OpenAI qui utilise vos données, vous pouvez déployer une application web à l’aide du portail Microsoft Foundry ou d’un exemple de code que nous fournissons sur GitHub. Cette application se déploie à l’aide d’Azure App Service et fournit une interface utilisateur pour l’envoi de requêtes. Cette application peut être utilisée avec des modèles Azure OpenAI qui utilisent vos données, ou des modèles qui n’utilisent pas vos données. Consultez le fichier Lisez-moi dans le référentiel pour obtenir des instructions sur les exigences, la configuration et le déploiement. Vous pouvez éventuellement personnaliser la logique frontend et back-end de l’application web en modifiant le code source.
Nettoyer les ressources
Si vous voulez nettoyer et supprimer une ressource Azure OpenAI ou Recherche Azure AI, vous pouvez supprimer la ressource ou le groupe de ressources. La suppression du groupe de ressources efface également les autres ressources qui y sont associées.