Créer un chatbot IA de base
Le modèle de chatbot IA présente une application bot, similaire à ChatGPT, qui répond aux questions des utilisateurs et permet aux utilisateurs d’interagir avec le bot IA dans Microsoft Teams. La bibliothèque IA Teams est utilisée pour générer le modèle d’application, fournissant les fonctionnalités permettant de créer des applications Teams basées sur l’IA.
Configuration requise
Installer | Pour l’utilisation... |
---|---|
Visual Studio Code | Environnements de build JavaScript, TypeScript ou Python. Utilisez la dernière version. |
Toolkit Teams | Microsoft Visual Studio Code extension qui crée une structure de projet pour votre application. Utilisez la dernière version. |
Node.js | Environnement runtime JavaScript principal. Pour plus d’informations, consultez Node.js table de compatibilité des versions pour le type de projet. |
Microsoft Teams | Microsoft Teams pour collaborer avec toutes les personnes avec lesquelles vous travaillez via des applications de conversation, de réunions et d’appels au même endroit. |
Azure OpenAI | Commencez par créer votre clé API OpenAI pour utiliser le transformateur préentraîné génératif (GPT) d’OpenAI. Si vous souhaitez héberger votre application ou accéder à des ressources dans Azure, vous devez créer un service Azure OpenAI. |
Créer un projet de chatbot IA de base
Ouvrez Visual Studio Code.
Sélectionnez l’icône Teams Toolkit dans la barre d’activité Visual Studio Code
Sélectionnez Créer une application.
Sélectionnez Agent du moteur personnalisé.
Sélectionnez Chatbot IA de base.
Sélectionnez JavaScript.
Sélectionnez Azure OpenAI.
Entrez vos informations d’identification OpenAI ou Azure OpenAI en fonction du service que vous sélectionnez. Ensuite, sélectionnez Entrée.
Sélectionnez Dossier par défaut.
Pour modifier l’emplacement par défaut, procédez comme suit :
- Sélectionnez Parcourir.
- Sélectionnez l’emplacement de l’espace de travail du projet.
- Sélectionnez Sélectionner un dossier.
Entrez un nom d’application pour votre application, puis sélectionnez la touche Entrée .
Vous avez créé votre espace de travail de projet de bot de conversation IA.
Sous EXPLORATEUR, accédez au fichier env.env.testtool.user>.
Mettez à jour les détails suivants :
SECRET_AZURE_OPENAI_API_KEY=<your-key>
AZURE_OPENAI_ENDPOINT=<your-endpoint>
AZURE_OPENAI_DEPLOYMENT_NAME=<your-deployment>
Pour déboguer votre application, sélectionnez la touche F5 ou, dans le volet gauche, sélectionnez Exécuter et déboguer (Ctrl+Maj+D), puis sélectionnez Déboguer dans l’outil de test (préversion) dans la liste déroulante.
L’outil de test ouvre le bot dans une page web.
Découvrez le code source de l’application bot
Folder | Sommaire |
---|---|
.vscode |
Visual Studio Code des fichiers pour le débogage. |
appPackage |
Modèles pour le manifeste de l’application Teams. |
env |
Fichiers d’environnement. |
infra |
Modèles de provisionnement de ressources Azure. |
src |
Code source de l’application. |
teamsapp.yml |
Il s’agit du fichier projet main Teams Toolkit. Le fichier projet définit deux éléments principaux : propriétés et définitions de phase de configuration. |
teamsapp.local.yml |
Cela remplace par des teamsapp.yml actions qui activent l’exécution et le débogage locaux. |
teamsapp.testtool.yml |
Cela remplace par des teamsapp.yml actions qui permettent l’exécution et le débogage locaux dans l’outil de test d’application Teams. |
src/index.js |
Configure le serveur d’applications bot. |
src/adapter.js |
Configure l’adaptateur de bot. |
src/config.js |
Définit les variables d’environnement. |
src/prompts/chat/skprompt.txt |
Définit l’invite. |
src/prompts/chat/config.json |
Configure l’invite. |
src/app/app.js |
Gère les logiques métier pour le chatbot d’IA de base. |
Fonctionnement du chatbot IA Teams
La bibliothèque d’IA Teams fournit un flux pour créer un chatbot intelligent avec des fonctionnalités IA comme suit :
TurnContext : l’objet de contexte de tour fournit des informations sur l’activité, telles que l’expéditeur et le destinataire, le canal et d’autres données nécessaires pour traiter l’activité.
TurnState : l’objet d’état de tour, semblable à un cookie, stocke les données du tour actuel. Cet objet, en tant que contexte de tour, est transmis dans l’ensemble de la logique d’application, y compris les gestionnaires d’activité et le système d’IA.
Authentification : si l’authentification utilisateur est configurée, Teams AI tente de connecter l’utilisateur. Si l’utilisateur est déjà connecté, le SDK récupère le jeton d’accès et continue. Sinon, le KIT de développement logiciel (SDK) lance le flux de connexion et termine le tour actuel.
Gestionnaires d’activités : la bibliothèque IA Teams exécute un ensemble de gestionnaires d’activités inscrits, ce qui vous permet de gérer plusieurs types d’activités. Le système de gestionnaire d’activités est la méthode principale d’implémentation de la logique d’application d’extension de bot ou de message. Il s’agit d’un ensemble de méthodes et de configurations qui vous permettent d’inscrire des rappels, appelés gestionnaires de routes, qui se déclenchent en fonction de l’activité entrante. L’activité entrante peut être sous la forme d’un message, d’une réaction de message ou de pratiquement n’importe quelle interaction au sein de l’application Teams.
Système IA : le système IA de la bibliothèque IA Teams est responsable de la modération des entrées et sorties, de la génération des plans et de leur exécution. Il peut être utilisé comme autonome ou routé vers par l’objet d’application. Les concepts importants sont les suivants :
- Gestionnaire d’invite : les Requêtes jouent un rôle crucial dans la communication et la direction du comportement de l’IA des modèles LLM (Large Language Models).
- Planificateur : le planificateur reçoit la demande de l’utilisateur, qui se présente sous la forme d’une invite ou d’un modèle d’invite, et retourne un plan pour y répondre. Pour ce faire, utilisez l’IA pour combiner des fonctions atomiques, appelées actions, qui sont inscrites auprès du système IA. Ces actions sont combinées en une série d’étapes qui permettent d’atteindre un objectif.
- Actions : une action est une fonction atomique inscrite dans le système d’IA.
Gestionnaire AfterTurn : une fois le gestionnaire d’activités ou le système IA exécuté, la bibliothèque IA Teams exécute un
afterTurn
gestionnaire. Le gestionnaire vous permet d’effectuer une action après le tour. S’il retourne en tant quetrue
, le Kit de développement logiciel (SDK) enregistre l’état de tour dans le stockage.Répondre à l’utilisateur : la bibliothèque IA Teams enregistre l’état et le bot peut envoyer les réponses à l’utilisateur.
Personnaliser un chatbot IA de base
Vous pouvez ajouter des personnalisations au-dessus de l’application de base pour créer des scénarios complexes comme suit :
Personnalisation de l’invite : Requêtes jouer un rôle crucial dans la communication et la direction du comportement de l’IA LLMs. Ils servent d’entrées ou de requêtes que les utilisateurs peuvent fournir pour obtenir des réponses spécifiques à partir d’un modèle. Voici une invite qui demande au LLM des suggestions de noms :
Demande
Give me 3 name suggestions for my pet golden retriever.
Réponse
Some possible name suggestions for a pet golden retriever are: - Bailey - Sunny - Cooper
Pour utiliser le projet généré avec teams Toolkit, vous pouvez créer les invites dans le
src/prompts/chat/skprompt.txt
fichier. Les invites écrites dans ce fichier sont insérées dans l’invite utilisée pour indiquer le LLM. La bibliothèque IA Teams définit la syntaxe suivante que vous pouvez utiliser dans le texte de l’invite :{{ $[scope].property }}
: la bibliothèque IA Teams affiche la valeur d’une propriété délimitée et définie dans l’état de tour. Il définit trois étendues de ce type : temp, user et conversation. Si aucune étendue n’est spécifiée, par défaut, la bibliothèque utilise l’étendue temporaire.Le
{{$[scope].property}}
est utilisé de la manière suivante :Dans le
src/app/turnState.ts
fichier, définissez l’état temporaire, l’état utilisateur, l’état de conversation et l’état de tour de l’application. Si leturnState.ts
fichier n’existe pas dans votre projet, créez-le soussrc/app
.import { DefaultConversationState, DefaultTempState, DefaultUserState, TurnState } from "@microsoft/teams-ai"; export interface TempState extends DefaultTempState { } export interface UserState extends DefaultUserState { } export interface ConversationState extends DefaultConversationState { tasks: Record<string, Task>; } export interface Task { title: string; description: string; } export type ApplicationTurnState = TurnState<ConversationState, UserState, TempState>;
Dans le
src/app/app.ts
fichier, utilisez l’état de tour de l’application pour initialiser l’application.const storage = new MemoryStorage(); const app = new Application<ApplicationTurnState>({ storage, ai: { planner, }, });
Dans le
src/prompts/chat/skprompt.txt
fichier, utilisez la propriété d’état délimitée telle que{{$conversation.tasks}}
.
Personnaliser les entrées utilisateur : la bibliothèque IA Teams vous permet d’augmenter l’invite envoyée à LLM en incluant les entrées utilisateur. Lorsque vous incluez des entrées utilisateur, vous devez le spécifier dans un fichier de configuration d’invite en définissant
completion.include_input
true
sur danssrc/prompts/chat/config.json
. Vous pouvez également configurer éventuellement le nombre maximal de jetons d’entrée utilisateur dans ensrc/prompts/chat/config.json
modifiantcompletion.max_input_tokens
. Cela est utile lorsque vous souhaitez limiter la longueur des entrées utilisateur afin d’éviter de dépasser la limite de jetons.Personnaliser l’historique des conversations : le Kit de développement logiciel (SDK) gère automatiquement l’historique des conversations, et vous pouvez le personnaliser comme suit :
Dans
src/prompts/chat/config.json
, configurezcompletion.include_history
. Sitrue
la valeur est , l’historique est inséré dans l’invite pour informer LLM du contexte de conversation.Nombre maximal de messages d’historique. Configurez
max_history_messages
lors de l’initialisationPromptManager
de .const prompts = new PromptManager({ promptsFolder: path.join(__dirname, "../prompts"), max_history_messages: 3, });
Nombre maximal de jetons d’historique. Configurez
max_conversation_history_tok
ens lors de l’initialisationPromptManager
de .const prompts = new PromptManager({ promptsFolder: path.join(__dirname, "../prompts"), max_conversation_history_tokens: 1000, });
Personnaliser le type de modèle : vous pouvez utiliser un modèle spécifique pour une invite. Dans le
src/prompts/chat/config.json
fichier , configurezcompletion.model
. Si aucun modèle n’est configuré pour l’invite, le modèle par défaut configuré dansOpenAIModel
est utilisé.Les modèles qui prennent en charge le Kit de développement logiciel (SDK) comme suit :
Modèle Pris en charge gpt-3.5-turbo Pris en charge gpt-3.5-turbo-16k Pris en charge gpt-3.5-turbo-instruct Non pris en charge à partir de la version 1.1.0 gpt-4 Pris en charge gpt-4-32k Pris en charge gpt-4-vision Pris en charge gpt-4-turbo Pris en charge DALL· E Non pris en charge Murmurer Non pris en charge TTS Non pris en charge Personnaliser les paramètres du modèle :
Dans le
src/prompts/chat/config.json
fichier, configurez les paramètres du modèle en cours d’exécution comme suit :- Max_tokens : nombre maximal de jetons à générer.
- Température : la température des modèles est comprise entre 0 et 2.
-
Top_p : modèles
top_p
sous la forme d’un nombre compris entre 0 et 2. -
Presence_penalty : modèles
presence_penalty
sous la forme d’un nombre compris entre 0 et 1. -
Frequency_penalty : modèles
frequency_penalty
sous la forme d’un nombre compris entre 0 et 1. - Stop_sequences : tableau de séquences d’arrêt qui, en cas d’accès, arrête la génération.