Transcription
1. Introduction: Bonjour et bienvenue dans ce cours, consacré à création d'un
agent d'IA avec Open AI, Lama Index, Pine
Cone et Streamlt Je suis le Vidar
Mendais et je serai le professeur de ce
cours. Qui suis-je ? Je suis titulaire d'un baccalauréat ès
sciences en mathématiques, d'une maîtrise
en science des données et analyse, axée sur le LMS Je suis un ingénieur
logiciel chevronné avec plus de six
ans d'expérience Je suis certifié AW, certifié Ashur et je suis un
passionné de cybersécurité Qu'allons-nous
faire dans ce cours ? Nous allons créer un agent
LLM basé sur le mini-modèle OpenAI GPT 40 L'objectif de l'agent sera de
trouver et de résumer les articles de
recherche de la plateforme d'archivage
et nous utiliserons le framework d'index Lama
afin d'augmenter la base de
connaissances de l'agent Qu'allons-nous
apprendre dans ce cours ? Je vais apprendre les
concepts de base de l'IA tels que les intégrations vectorielles, les index
vectoriels, la
récupération, la
génération augmentée ou RAC, les modèles
Crum, les agents de réaction,
comment optimiser les instructions des agents, les bases de données
vectorielles, l' indice
Lama pour
augmenter les connaissances, le besoin de
stream pour créer
une interface utilisateur et la déployer, ainsi que les meilleures pratiques en
Python et Python Quels outils allons-nous utiliser ? L'agent utilisera trois outils un moteur de requête rack pour récupérer des informations dans
une base de connaissances, un outil de récupération de documents de
recherche pour rechercher ou trouver des informations
sur des articles que nous n'avons pas dans notre
base de connaissances et un téléchargement
PDF si vous souhaitez télécharger des articles
directement sur votre J'espère que
ce cours vous plaira car j'ai beaucoup aimé le créer. J'espère pouvoir vous voir dans
la prochaine leçon. Au revoir
2. Préparer l'environnement de développement: Bonjour et bon retour.
Dans cette leçon, nous allons configurer l'environnement de
développement. Il y a quelques points que vous
devez garder à l'esprit. Nous allons utiliser le
code VS comme éditeur de code. Nous allons créer
un GidHubRPO pour partager le résultat final avec vous
et nous allons utiliser PDM, qui signifie Python
Dependency Manager,
pour gérer les dépendances du
projet Python pour gérer les dépendances du Nous aurons également besoin d' une clé d'API Open AI
pour utiliser leurs modèles. Quelles sont donc les dépendances que nous allons
avoir dans ce projet ? Nous allons avoir Archive, qui est une bibliothèque pour télécharger les articles depuis la plateforme d'
archivage, python point F pour gérer les variables d'
environnement. Dans ce cas, nous allons
avoir la clé d'API OpenAI. Nous voulons que ce soit un secret, c'est pourquoi nous
allons utiliser Python Mv Nous allons utiliser Notebook
parce que nous allons utiliser Jupiter Notebook et nous allons également installer
le Lemma Index, qui est le framework permettant
de créer des applications LLM C'est donc la
partie ennuyeuse du cours, mais il faut le faire. Allons sur github.com,
et voici mon compte GitHub Vous accédez à votre compte GitHub. Si vous n'en avez pas,
vous pouvez en créer un, et nous allons
créer un nouveau dépôt. Donc, le nom du dépôt, je vais l'appeler
Archive Researcher. Tu peux l'appeler
comme tu veux. Nous allons le rendre public afin que je puisse partager le résultat
final avec vous. Nous allons ajouter un Gid
Ignore pour un projet Python. Licence, non et ce
ne sont que des applications que j'ai. Si vous
n'avez aucune application,
cela ne s'affichera probablement pas
pour vous, mais cliquez simplement sur
Create Repositor Un tout nouveau repo
est créé pour moi. Je vais ouvrir un terminal, et je vais
cliquer ici sur le code, et je vais copier ce SSH Si vous n'avez pas de clé SSH, configurez-la dans
votre compte Gita, vous devez
alors utiliser HTTPS, mais SSH est la méthode
recommandée pour le faire Je vais le copier. Allez sur le terminal, dites git
clone, et collez-le Alors maintenant, j'ai ce dépôt sur ma machine locale et je
vais ouvrir le code VS ici Comme vous pouvez le constater, nous n'
avons pas le GTI nor, qui est le même
que celui que j'ai ici Si j'ouvre ce GTI Nor, vous trouverez
beaucoup de choses qui sont généralement ignorées
dans un projet Python Nous allons donc utiliser gestionnaire de dépendances
Python lorsque nous initialisons un
projet avec PDM, sont
ces éléments qui seront
ignorés Allons
chercher PVM PVM Python. L'URL est donc pdmpject.org. Si je clique ici, je vais
voir le site web de PDM. PDM, tel que décrit, est un package iPhone moderne
et un gestionnaire de dépendances prenant en charge les dernières normes
PEP. Mais c'est bien plus qu'
un simple gestionnaire de paquets. Il améliore votre
flux de travail de développement à divers égards. L'objectif principal du PDM est essentiellement la
résolution des dépendances Parce que lorsque vous
installez des packages, ceux-ci peuvent
dépendre de sous-packages. Les packages doivent donc s'entendre sur les versions des
sous-packages à installer. C'est essentiellement l'idée de la résolution des dépendances. Le PDM est un excellent outil pour gérer cela Alors, comment l'installez-vous ? Tout d'abord, vous avez besoin de Python 3.9 ou version ultérieure pour être installé. Il fonctionne sur plusieurs plateformes, notamment Windows,
Linux et macOS. Comme vous l'avez peut-être remarqué, j'utilise macOS. PDM permet également de gérer
plusieurs versions de Python Ainsi, par exemple, si je veux utiliser Python 3.10, 3.11 ou 3.12, je peux Nous allons voir comment
procéder dans un instant. Mais je veux que vous consultiez la documentation et que vous
suiviez les étapes de la méthode
d'installation recommandée. Comme PIP, PDM fournit un
script d'installation qui
installera PDM dans un Pour Linux et Mac, il
vous suffit de copier cette commande et de la
coller dans votre terminal. Dans Windows, vous pouvez le
faire avec PowerShell. Mais si vous êtes sous Windows, je vous recommande vivement utiliser le sous-système Windows pour Linux, afin de disposer d'un environnement
Linux sur votre machine Windows Si vous ne souhaitez pas le faire, si vous ne connaissez pas le sous-système
Windows pour Linux, vous pouvez installer
PDM avec OK. Donc, après cela, vous devriez avoir le PDM
dans votre machine Il existe également des instructions
si vous souhaitez désinstaller PDM, mais je vous conseille de le conserver C'est un excellent outil. Donc, si je vais sur mon
terminal et que je tape PDM, je l'agrandis Vous allez voir qu'il
y a beaucoup d'options. PDM ad est l'une des commandes
que nous allons utiliser, et c'est pour ajouter packages à un fichier appelé
Piroject Ceci est similaire au package Jason si vous venez
du monde de No JS. PDM, une autre commande que nous allons utiliser est PDM, qui consiste à initialiser un projet Pipe avec
Tumel Une autre commande que
nous allons
utiliser et que nous pouvons
utiliser est PDM Python, qui permet de gérer
les multiples versions de Python dont je
vous parlais il y a quelque temps Voyons voir, une autre commande très
importante est PDM remove,
qui est utilisée pour supprimer des packages du projet
Pi dans TamelFle D'accord ? Voyons donc ce qui
se passe si je tape PDM Python Donc, si je tape PDM Python, j'aurai des
sous-commandes supplémentaires La première est la liste, qui consiste à répertorier tous les interpréteurs Python
installés avec PDM Si je tape PDM Python list, vous verrez que
ces quatre versions de Python sont installées sur ma machine 3,12 0,2, 3,11 0,5, 3,13 0,0 et 3,11 Supposons maintenant que je souhaite installer
une nouvelle version de Python, je peux taper PVM Python install. Je dois spécifier la version de Python que
je souhaite installer Si je tape PDM Python
Install Help, vous verrez
que j'ai cet indicateur de liste Laissez-moi taper cette liste d'installation de PBM
Python et vous verrez toutes les versions
de Python disponibles Si je tape simplement PDM Python
Install comme je l'ai fait ici, la dernière version sera installée, Python 3.13 0.0 Mais supposons que je veuille
installer Python 3.12 0.7. Nous allons utiliser
cette version de Python dans ce projet
et nous installons simplement PDM Python et vous n'avez pas à taper
l'intégralité de l'application Python en C. Il vous suffit de taper 3.12 0.7 et
cela devrait suffire. Il téléchargera donc cette version
de Python, l'installera et enregistrera l'exécutable
dans ce dossier ici. Nous sommes maintenant prêts à
initialiser un projet PDM. Revenons au code VS et nous allons le taper dans
le terminal PDM Maintenant, si je l'
agrandis un peu, cela m'incitera à choisir la version de Python à
utiliser dans ce projet Je vais utiliser 3.12 0.7. C'est cette option ici. Je vais avoir
la quatrième option. OK. Et cela
va créer ce dossier appelé VENV, qui est l'
environnement virtuel. C'est ici que tous les packages
vont être installés, puis on
me demande quel
sera le nom du projet ? Je peux simplement taper Enter plusieurs fois pour conserver les valeurs
par défaut ici. OK. Cela crée donc un
projet Pi qui s'effondre. Encore une fois, si vous venez
du monde NoJS, cela ressemble à un fichier JSON de
package Ici, vous pouvez voir qu'il
contient des données sur
le projet, la description
du projet, les auteurs
du projet, les dépendances,
la version de Python
requise, etc. Ce que nous allons
faire, c'est
installer dès maintenant les dépendances nous aurons besoin
pour ce produit. Pour cela, je vais
dire PDM chez Archive,
index, typon point et Si je tape Enter, vous pouvez voir que le
problème est résolu pour l'environnement. Il résout tous
les sous-packages qui
vont être installés. Et cela peut prendre un certain temps. En attendant, je
veux que vous
remarquiez ce fichier Python PDM Cela indique simplement
que l'
exécutable Python de ce projet
se trouve dans ce fichier VENB Vous pouvez voir que c'est très
spécifique à ma machine. C'est pourquoi il figure sur le numéro GTI. Lorsque vous avez sélectionné ce
Python, GTI ou ce modèle, ce
fichier figure déjà dans le modèle, il est
donc déjà ignoré OK. Voyons maintenant ce
qui se passe. Cela a dépassé 1 minute et le problème est toujours en cours de résolution
pour les packages. Maintenant, il a résolu toutes les
dépendances. Il a résolu 149 paquets. C'est beaucoup parce que nous venons installer quatre de
ces packages. Mais au total, ces quatre
packages utilisent 149 packages en
arrière-plan. PDM est donc
suffisamment intelligent pour résoudre toutes
les versions afin
d' les versions afin éviter tout
conflit entre les versions Tout a été
installé avec succès, aucune erreur, et ce fichier journal
PDM a été créé Encore une fois, si vous
venez d'un monde sans JS, il
s'agit du package, du fichier journal du package. Et cela contient des informations sur toutes les dépendances, les sous-dépendances
qui ont été installées. La dernière chose que nous
allons faire, est de voir que nous allons
créer un fichier EMV à points Et ce fichier EMB va
contenir notre API OpenAI. Nous allons lier OpenAI ApiKey et ici nous allons
coller notre OpenAI Une stratégie ou une
meilleure pratique consiste
à avoir un fichier TNBTeample Cet exemple EMB ne figurera
donc pas dans le GitKnt et peut être
validé en toute sécurité Nous mettons simplement les mêmes informations que dans le fichier EMV, mais sans les valeurs Ici, nous n'avions pas encore
la valeur. Ici, nous n'en
aurons jamais la valeur. C'est une bonne pratique
pour
que tous ceux qui clonent le dépôt sachent que je dois avoir
un roi des API Open AI C'est tout pour cette leçon. J'espère que cela vous plaira et
que vous vous reverrez à la prochaine leçon. H
3. Obtenir une clé API OpenAI: Bonjour et bon retour.
Avant d' oublier, obtenons une clé d'API Open AI. Accédez à open.com, accédez aux
produits et accédez à API Login. Cela change tout le temps. Si vous n'avez pas
de compte Open AI, inscrivez-vous et si vous en
avez un, connectez-vous. Je vais me connecter avec mon compte. Et rendez-vous sur le tableau de bord. Et accédez aux clés d'API. Tout d'abord, vous
devez activer la facturation. Alors, allez dans les paramètres, passez à la facturation selon le mode de
paiement ici, et vous pouvez mettre 5$. Je pense que c'est le minimum. N'oubliez donc pas de le faire. Revenons au tableau de bord, aux clés d'
API, et
créons une nouvelle clé secrète. Cela s'appellera donc
Archive et le projet, vous pouvez étendre ces clés
d'API aux projets. Je ne vais pas le définir pour un produit spécifique car
je n'ai aucun projet. Je vais donc utiliser un
projet par défaut , et les autorisations, vous pouvez être très strict
et choisir ce que vous voulez, par exemple, uniquement
pour les modèles, pour le son, pour les
terminaisons de chat, pour les intégrations Je ne vais pas me
compliquer les choses. Je vais juste dire : Oh, je vais créer
la clé secrète et celle-ci
sera la mienne. Évidemment, je
vais le supprimer une
fois que j'aurai fini de
créer ce cours. Maintenant, je vais le copier. Je vais revenir au code Vs
et dans le fichier EMV à points, je vais juste le coller C'est la clé d'API que je vais
utiliser avant d'oublier, faisons une bande dessinée. Tapons le kit, ayons tout. Git commit et
nous allons dire un projet initialisé avec
PDM et ajoutant des dépendances Ensuite, nous pouvons pousser
ces chaînes. OK. Maintenant, si nous allons
sur Github et que
nous actualisons, nous verrons que le fichier
DotNB n'est pas L'exemple NB est validé, mais il ne contient rien C'est donc sûr. Sinon, les utilisateurs verront votre clé d'API et
ce sera une mauvaise chose. OK, donc c'est tout
pour cette leçon. J'espère que cela vous plaira et
que vous vous reverrez à la prochaine leçon.
4. Comprendre LlamaIndex et RAG: Bonjour et bon retour.
Alors, qu'est-ce que l'indice Lama ? Tout d'abord, quel est
le problème avec le LMS ? Ils sont excellents, mais ils sont
pré-formés sur de grandes quantités de données
accessibles au public. Quelle est la meilleure façon d'enrichir le LMS
avec nos propres données privées ? C'est là qu'intervient
l'indice Lama. Nous avons besoin d'une
boîte à outils complète pour aider à effectuer cette
augmentation de données pour les LLM Lama Index propose donc des
connecteurs de données pour ingérer vos sources de données
et formats de données existants tels que les API, les
PDF, les chiens et même les données SQL Il fournit également des
moyens de structurer vos données afin qu'elles puissent
être facilement utilisées avec LMS Nous allons voir que
le moyen le plus courant de structurer ces données
est d'utiliser un index vectoriel, fournit également une
interface de requête de récupération avancée sur vos Vous pouvez vous adapter à n'importe quelle invite de saisie
LM, retrouver le contexte et
obtenir une sortie augmentée en termes de
connaissances. On ne peut pas parler d'un indice ama
sans parler de RAC. Qu'est-ce que Rag ? Rag est une génération augmentée récupérable Il s'agit d'une approche du traitement du
langage naturel qui combine la force
de deux composants principaux. Récupération d'informations,
qui extrait
les données pertinentes d'une base de connaissances, d'une
base de données ou d'un
référentiel de documents
externe, et génération de texte,
qui utilise un
modèle de langage tel qu'OpenAIS,
GPT four Omni ou
autre pour générer du texte
humain sur la base des informations récupérées les données pertinentes d'une base de connaissances, d'une
base de données ou d'un
référentiel de documents
externe , et génération de texte, qui utilise un
modèle de langage tel qu'OpenAIS, GPT four Omni ou
autre pour générer texte
humain Comment fonctionne RAG ? Tout d'abord, un utilisateur pose une question ou une requête. Ensuite, nous récupérons
les documents pertinents d'une
source externe, puis nous
générons une réponse en utilisant un modèle de langage qui utilise
la requête de l'utilisateur et le contexte de récupération. Alors pourquoi devons-nous utiliser RAG ? Parce que nous pouvons avoir accès
à des informations à jour, qui permet aux systèmes d'IA d' intégrer des connaissances
allant au-delà de leurs données d'entraînement. Cela améliore la précision
des réponses car les réponses
sont désormais basées sur sources
vérifiées et récupérables et nous pouvons avoir une adaptabilité au
domaine Nous pouvons facilement adapter
le système à
des secteurs ou à des sujets spécifiques en le reliant à des phases de
connaissances spécialisées. C'est du rack dans une image. La première étape consiste à récupérer
et à ingérer ces documents, les
faire passer par
un modèle d'intégration et à stocker ces intégrations La deuxième étape consiste pour l'
utilisateur à poser une requête. Ensuite, cette
requête utilisateur passe par le même modèle d'intégration
, puis nous allons rechercher
dans la base de données vectorielle,
le contexte, les passages ou
les documents très similaires à la requête posée par l'
utilisateur. Lorsque nous aurons ce contexte, nous aurons la requête, le contexte et une invite
que nous allons concevoir. Nous allons transmettre toutes
ces informations au LLM, et le LLM va
générer une réponse,
et cette réponse sera renvoyée à l'utilisateur C'est Rag en bref. J'espère que cette vidéo vous plaira. Rendez-vous dans la prochaine leçon.
5. Que sont les agents ?: Bonjour et bon retour.
Parlons maintenant des agents. Qu'est-ce qu'un agent ? Un agent est un moteur de
raisonnement et de décision automatisé. Il prend en compte les informations
saisies par l'utilisateur et peut prendre des décisions
internes pour exécuter cette requête afin de
renvoyer le résultat correct. Les principaux composants de l'agent
peuvent inclure, sans toutefois s'y limiter, la décomposition d'une question complexe
en questions plus petites, choix d'un
outil externe à utiliser, paramètres
pour appeler cet outil, planification d'un ensemble de tâches, stockage des tâches déjà
terminées, un module de mémoire, etc. Les agents partagent donc cinq éléments de base
fondamentaux. Perception, raisonnement,
mémoire, planification et action. Le premier
élément de base est la perception. perception est la capacité de l'
agent à recueillir des
informations sur son environnement. Cet objectif implique le
traitement de requêtes de texte, l'analyse des données des capteurs,
l'interprétation d'images ou même la lecture de tableaux de
données structurés à partir d'une base de données. Plus
un agent peut
percevoir efficacement , plus le
contexte qu'il peut comprendre est riche. Grâce à une meilleure perception, les agents peuvent mieux
s'adapter aux changements et réagir avec précision à l'
évolution des conditions. Ensuite, nous avons un raisonnement. raisonnement est
l'endroit où l'agent donne un sens l'information
qu'il a perçue. Cela implique
d'interpréter les contextes, proposer différentes options
et de tirer des conclusions logiques Le raisonnement sous-tend l'intelligence d'un
agent. Cela garantit que l'agent
ne se contente pas de réagir aveuglément, mais qu'il évalue des scénarios pour prendre des décisions éclairées Le raisonnement avancé
implique souvent de tirer parti grands modèles linguistiques ou d'autres cadres d'IA pour comprendre les nuances
d'une situation donnée. Mémoire, la mémoire est
le moyen
utilisé par l'agent conserver les
informations pertinentes au fil du temps. Cela peut inclure un contexte à
court terme comme la dernière demande d'un utilisateur,
et des connaissances à long terme, telles qu'une base de données des interactions
passées ou une expertise
générale du secteur. La mémoire donne à l'agent
un sentiment de continuité. Au lieu de traiter
chaque interaction comme une interaction isolée, l'agent peut s'appuyer sur des expériences
antérieures améliorer sa précision et sa connaissance du
contexte au fur et à mesure. Ensuite, nous avons la planification.
La planification est l'endroit où l' agent
décide des mesures
à prendre pour atteindre ses objectifs. Il peut décomposer les
tâches complexes en étapes plus simples, les
séquencer dans
un ordre optimal et anticiper les obstacles
potentiels. planification garantit
que l'agent ne
se contente pas de réagir à une
demande à la fois,
mais qu' il trace de manière proactive la
voie à suivre pour atteindre des objectifs à plus long terme Cela est crucial pour des tâches telles que l'
optimisation de la chaîne d'approvisionnement ou la gestion de
projet ou pour
tout autre scénario dans lequel les mesures prises aujourd'hui
ont des applications futures. Nous avons pris des mesures. L'action est l'exécution effective
des décisions de l'agent. Par exemple, envoyer un e-mail, ajuster
les niveaux de stock, recommander un produit ou effectuer une opération au niveau
du système Sans action,
toute la perception, raisonnement, la mémoire et
la planification du monde seront gaspillés. action ferme la boucle
et permet
à l'agent d'avoir un impact tangible
sur son environnement, produisant ainsi un résultat concret. Comment travaillent-ils ensemble alors ? La perception adapte
l'agent aux données. La mémoire stocke et rappelle des informations
utiles du passé immédiat
et lointain. Le raisonnement utilise ces données
et ce contexte pour élaborer un plan,
qui définit les
étapes nécessaires pour atteindre les objectifs de
l'agent et l'action s'exécute sur ces étapes pour
créer une valeur mesurable Il existe des tonnes de cas d'utilisation. De nos jours, tout peut être un
agent. Nous avons des agents
d'ingénierie logicielle, des agents téléphoniques basés sur l'
IA, des
agents commerciaux, des agents de recherche. C'est ce que nous
allons faire maintenant. Un chef de cabinet de l'IA capable rationaliser les opérations quotidiennes,
c'est assez fou. Assistants de recherche sur les ventes,
agent comptable, assistant IA
mensuel et rapproché. De nos jours, les agents peuvent avoir de nombreux cas
d'utilisation . Comment les agents de l'IA
travailleront-ils dans la pratique ? Eh bien, vous devez
former l'agent IA. Vous devez fournir
votre cas d'utilisation, vos données et votre manuel pour adapter
les capacités de l'IA à vos besoins spécifiques Entrez des données telles que les
transcriptions, l'enregistrement des appels, les factures,
les critères de qualification et les objectifs clés pour
une adaptation précise Ensuite, vous devez configurer
les flux de travail et
les intégrations. Vous devez aligner l'agent
d'intelligence artificielle vos
outils et processus existants. Par exemple,
configurer des intégrations SIMD
avec des CRM, des calendriers
et des systèmes commerciaux
tout en définissant des actions, et des systèmes commerciaux
tout en définissant des actions, alertes et des protocoles d'escalade qui répondent aux exigences de votre
équipe Ensuite, vous devez déployer
et gérer les opérations. Vous devez lancer l'agent d'intelligence artificielle pour gérer les opérations de
manière autonome, suivre ses performances
grâce à des indicateurs en temps réel, évaluer les résultats et affiner processus pour obtenir des résultats
optimaux
6. Intégrations vectorielles: Parlons des intégrations
vectorielles. Les intégrations vectorielles sont des
représentations numériques de données. Les données peuvent être du texte, des images ou du son dans un espace de grande
dimension. Ce sont donc des vecteurs
de dimension fixe. Chaque donnée est
convertie en vecteur et capture
sa signification, son
contexte ou ses caractéristiques. Fonctionnement Les éléments similaires sont représentés sous forme de vecteurs
plus proches les uns des autres. C'est ainsi que vous pouvez
facilement comparer. Par exemple, les mots roi
et reine auront des vecteurs proches les uns des autres,
ce qui reflète leur similitude
sémantique Comment mesurez-vous
cette similitude ? Eh bien, il existe différentes
mesures que vous pouvez utiliser, comme le produit par points ou
la similitude en cosinus Que sont les index vectoriels ? Ce sont des structures de données
qui organisent ces intégrations vectorielles pour recherche et
une extraction efficaces Ils permettent aux systèmes d'intelligence artificielle de trouver
rapidement les points de données
les plus pertinents sur la base de mesures de
similarité telles que la similitude en cosinus
ou le produit par points, ces mesures dont je
parlais Ils génèrent des ensembles de données
volumineux et permettent une récupération
évolutive en temps
réel permettent une récupération
évolutive en temps
réel des informations pertinentes. Pour générer ces
vectorumbeddings, nous avons Dans ce cours,
nous allons utiliser le texte incorporant trois grands caractères, qui est un modèle d'
intégration avancé développé par Open AI Il est conçu pour
transformer le texte en représentations vectorielles de
grande dimension, capturant le sens
sémantique de l'entrée, comme nous l'avons
déjà expliqué Quelles sont les principales caractéristiques
de ce modèle d'intégration ? Il peut générer des représentations
de haute qualité. Il produit des intégrations qui capturent
efficacement le contexte, les relations et le
sens du Il est polyvalent,
il convient à un large éventail de tâches telles que la récupération d' informations, la recherche de
similarités
et le clustering, ainsi que
sa dimensionnalité qui permet d'
optimiser les vecteurs denses et de
grande dimension pour les J'espère que cette
leçon vous plaira dans le prochain.
7. Créer un outil pour récupérer des documents dans arXiv: Commençons donc à coder. Tout d'abord, nous allons
créer une pile d'outils. Depuis le terminal, les outils
tactiles pointent sur PY. Dans ce module, nous allons
utiliser la bibliothèque Archive. Donc, si nous examinons la documentation
de la bibliothèque Archive, vous verrez qu'Archive
n'est qu'un wrapper Python
pour l'API Archive Archive possède donc déjà une
API et cette bibliothèque
n'est qu'un wrapper pour utiliser cette
API de manière plus simple Alors, comment
l'installer avec PIP ? Nous l'avons fait avec le PDM. Nous importons des archives.
Alors faisons-le. Archive d'importation. Ensuite, nous pouvons récupérer les résultats en
construisant d'abord le client API
par défaut Créons ce client. Ensuite, par exemple,
nous pouvons rechercher
les dix articles les plus récents correspondant au mot-clé quantum. Ensuite, nous faisons simplement une recherche et nous pouvons
répéter ces résultats Results est un générateur, nous pouvons
donc itérer sur
ses éléments un par un Il existe également une documentation avancée sur la syntaxe
des
requêtes qui nous indique de consulter le manuel d'utilisation de l'API
Archive, dont le lien est disponible ici, et la requête peut être
quelque chose comme ça. AU signifie auteur.
Si je ne me trompe pas, et si je ne le sais pas. Allons sur ce lien
et voyons ces préfixes. AU signifie, TI signifie titre, ABS, résumé,
commentaire, etc. Si nous voulons
rechercher toutes ces choses
en même temps, il suffit de dire tout que ce soit ce que nous allons
faire dans notre fonction. Nous allons juste utiliser
et mettre en colonne un sujet. C'est ce que nous allons
faire. Commençons à coder. Nous allons définir cette fonction appelée
fetch archive papers, qui va
prendre deux paramètres Le premier est le
titre ou la requête, quel que soit le second paramètre qui sera le nombre d'articles. Combien de documents
voulons-nous récupérer ? La requête de recherche portera donc sur toutes les colonnes et sur le titre. Ce sera
notre requête de recherche. Alors c'est ce que nous allons faire. Je ne sais pas pourquoi ce
n'est pas une indentation en soi. Donc, une chose que nous devons
faire est de sélectionner l'interpréteur
Python. Je vais sur Mac, c'est une épingle Command
Shift sous Windows, je pense que c'est une épingle Control Shift et nous allons appuyer ici pour sélectionner un interpréteur
et nous allons sélectionner ce fichier V&V
à points Il a maintenant plus de fonctionnalités, l'éditeur de code, car il sait que
nous utilisons cet environnement
virtuel. Cette requête ne
sera pas quantique, ce sera une requête de recherche. Le résultat maximum
ne sera pas de dix, ce sera le
nombre de papiers . Ce paramètre
sera transmis ou construit
par l'agent. Vous allez voir
cela en action dans quelques leçons, puis triez
par date de soumission. C'est bon Nous allons maintenant initialiser
un tableau vide de documents et nous allons
obtenir les résultats Client de résultats qui recherche
des résultats. Nous avons maintenant un générateur
et nous allons itérer sur chacun
des résultats Pour obtenir des résultats, nos informations sur le papier seront
un dictionnaire avec un titre. Résultat ce titre Regardez le titre ce résultat et
il contient plus de détails. Comment savons-nous quel en est
le résultat ? Quels sont ses autres attributs ? Eh bien, si nous survolons le résultat, nous pouvons voir qu'il s'agit du type résultat. Quel
est le type de résultat ? Eh bien, nous pouvons
cliquer sur le bouton Contrôle ou cliquer sur
le bouton Commande sur le module d'archive ici avec la Commande
F ou Ctrl F ici sous Windows, nous pouvons rechercher un document, désolé, pas un
document pour le résultat. Nous devons donc nous salir
les mains ici et vous pouvez voir que c'est la
définition du résultat. Il possède un identifiant d'entrée,
qui est l'URL, la mise à jour, la date dernière mise à jour du résultat, la
date de publication, la date de publication
initiale du résultat,
le titre , les auteurs, qui est une liste
d'auteurs, le résumé, qui est une chaîne, un commentaire, commentaire de l'
auteur à présenter, le
journal, le jouet, etc. Voyons quel est cet auteur. L'auteur est une autre définition de
type qui n'a que le
nom comme attribut. Avec toutes ces informations, nous allons obtenir
plus d'attributs. Le deuxième attribut
sera un résumé, résolvez ce résumé. Nous allons également obtenir le résultat publié
qui a été publié. Nous allons obtenir
la référence du journal, nous avons vendu la référence du journal, nous allons obtenir le Di, nous résolvons que Di A
vous avez évidemment la saisie automatique dans l'éditeur
de code. Nous allons avoir la catégorie principale, la catégorie
principale. Nous allons avoir
les catégories, nous allons les résoudre, et GitHub Copilot
m'aide également Nous résolvons cette URL PDF, et l'archive d'archive, archive
résultante, l'URL,
et non l'archive. Il s'agit de l'ID d'entrée
et des auteurs, qui seront un tableau, auteur point par point pour l'auteur
dans les auteurs résultants. N'oubliez pas qu'il s'agissait
d'une liste d'auteurs. Ce seront
nos informations sur le papier, et nous allons ajouter
ces informations sur le papier à
la liste des articles Stylo, papier, encre. Enfin, nous allons
retourner tous les documents. C'est notre fonction simple
pour récupérer des documents d'archives, et comme vous le verrez,
ce sera également un outil pour l'agent C'est ce que nous allons
faire pour cette leçon. J'espère qu'il vous plaira.
Rendez-vous dans la prochaine leçon.
8. Créer un outil pour télécharger des documents: Bonjour et bon retour. Nous allons maintenant coder notre deuxième outil. Comme vous pouvez le constater, ce
ne sont que des fonctions Python, elles sont
donc très faciles à coder. Cette deuxième fonction sera un outil de téléchargement de PDF, qui
recevra une URL PDF, qui sera une chaîne
et un nom de fichier de sortie, qui sera
aussi bien une chaîne. Pour cela, nous allons
utiliser la bibliothèque de requêtes. Pour faire une demande de
téléchargement du PDF, nous allons également
utiliser la bibliothèque du système d'exploitation pour créer un répertoire
s'il n'
existe pas , car
nous voulons organiser notre projet. Nous allons donc tout d' abord essayer de créer
un répertoire appelé papers. Et s'il existe déjà, ne le créez pas. Ne lancez pas d'erreur, vivez avec. OK ? Et ici, nous allons
mettre le pass d'acceptation. Nous allons spécifier
la couche d'erreur. Nous allons maintenant déclarer
le chemin de sortie complet, et nous allons
dire OS, le chemin, la jointure, les documents
et le classement de sortie. Ce sera
le chemin de sortie complet,
le dossier des documents concaténé
avec le Ensuite, nous allons obtenir une réponse en utilisant
la bibliothèque de requêtes, nous allons envoyer une
requête GET à l'URL du PDF. Et s'il y a une erreur,
nous allons l'augmenter. Augmentez pour obtenir un statut. Cette méthode ne fait donc que déclencher une erreur H
TTP si elle se produit. Dans l'exception, ce que
nous allons faire, c'est accepter l'exception par
point des requêtes, l'exception par point comme E. Nous allons renvoyer
les chaînes et l'erreur, et nous allons
imprimer cette erreur. Si rien ne se passe,
nous allons ouvrir le chemin de sortie complet avec
les bonnes autorisations, WB, et nous allons nommer ce fichier
et nous allons le
fichier dont le contenu correspond au point de
réponse Et nous devons rendre quelque chose. Nous devons renvoyer une chaîne indiquant que PDF a été téléchargé avec succès et enregistré et
nous allons mettre le chemin de sortie
complet ici. OK ? Comme vous pouvez le
voir, il s'agit d'une fonction Python
très, très simple qui télécharge simplement quelque chose. Il peut télécharger un article, il peut le télécharger à
côté, peu importe. Dans ce cas, nous allons
simplement télécharger
le document à partir de l'URL du PDF. C'est tout pour cette vidéo. Très, très simple. J'espère qu' il
vous plaira et à bientôt dans le prochain.
9. Définir les modèles d'intégration et de LLM: OK, alors continuons à coder. Nous allons créer
un nouveau fichier appelé constantes dans le terminal,
touchez Constance PY. Dans ce fichier, nous allons
déclarer le modèle intégré et le modèle LM pour
le réutiliser lors la création de l'index et
de la création de l'agent Tout d'abord, nous allons appeler la fonction Load point M. Commençons par importer à partir
du point de chargement DotM. Cela permet de charger toutes les variables
d'environnement
à partir du fichier ENB Nous pouvons maintenant accéder à l'OpenAI
ApiKey avec le module OS. Nous allons importer et laisser Github Copilot m'aider à écrire
cet APK OS DOT Ça correspond à ce joli. Maintenant, nous allons dire que le
modèle d'intégration sera une
intégration d'IA ouverte et nous allons l'importer
à partir de
Plama index point
embedings intégration d'IA ouverte et nous allons l'importer
à partir OpenAI,
open AI à partir de là, open AI à partir de là, et il me Intégration ouverte de l'IA et type de modèle d'intégration de l'IA
ouverte. Nous avons autre chose.
L'intégration, non, c'est le cas Nous n'en avons pas besoin. Nous
n'avons besoin que de ces deux-là. Nous allons
créer une instance de l'intégration ouverte de l'IA Nous allons transmettre la clé API, qui sera la clé APN ouverte de
l'IA, et le modèle
sera du type de modèle d' intégration d'IA ouverte Regardez ça, nous avons
Ava, Baba Cree, DaVinci. Ce sont de très vieux modèles. Les plus récents sont Embed Ada
002 Embed Three Small
et bed Three Nous allons utiliser le format
embed three large. Et pour le modèle LM, je vais importer depuis Lama index point OpenAI,
Import Open AI Nous allons créer
une instance d'IA ouverte. Encore une fois, nous devons
transmettre la clé API, qui sera
notre IA, la clé API I, et le modèle, qui dans ce
cas sera une chaîne, et ce
sera GPT pour mini D'accord, voici donc les deux modèles d'Open AI
que nous allons utiliser. Je veux que tu remarques quelque chose. Lorsque nous avons importé des éléments provenant d'
intégrations et de LLM, nous n'avions que l' C'est parce que par défaut, Lama Index n'a
que ce plugin par défaut, uniquement les éléments d'IA ouverts. Mais si vous souhaitez
utiliser, par exemple, du
caillot, du Mistral AI ou autre, Lama possède tous
les connecteurs
dont nous avons parlé dans cette diapositive, mais vous devez
les installer séparément. J'espère que cette vidéo vous plaira.
On se voit dans le prochain.
10. Créer l'index et l'enregistrer localement: Bonjour et bon retour. Nous
sommes maintenant prêts à créer l'index. Afin de créer l'index, nous allons créer
un bloc-notes Jupiter appelé build Index,
le terminal, touch
build index IPYNB Génial. Tout d'abord, nous
allons ajouter une cellule. Et ici, si vous n'avez pas
le VENV, vous pouvez cliquer. Cela vous indiquera probablement sélectionner le noyau ici et que
vous allez choisir sur VENB quel est l'environnement
virtuel, désolé pour ce projet Assurez-vous que le point
VENV est sélectionné. Donc, tout d'abord, nous
allons créer notre index. Cela signifie notre base de connaissances. Il s'agira
d'articles sur un sujet spécifique. Que nous les avons déjà dans
notre base de données ou notre référentiel. Donc, tout d'abord, à partir des outils, nous allons importer
les documents d'archives et nous allons
récupérer certains Le sujet sera, ou le titre, modèles
linguistiques, c'
est-à-dire les modèles linguistiques. Nous voulons en savoir plus sur les modèles
linguistiques, et le nombre
d'articles sera de dix. OK. Vous pouvez télécharger
100 articles si vous le souhaitez. Peu importe le format ou le nombre de
papiers. N'oubliez pas que les index sont conçus pour
gérer les requêtes dans de
grands ensembles de données OK, nous allons donc
exécuter la cellule, et nous allons
imprimer les titres des
articles que nous récupérons. Donc du papier, du titre ou
du papier dans des papiers. Ce sont donc les articles que nous
récupérons qui sont liés
aux modèles linguistiques OK, maintenant que nous l'avons, nous allons créer
une fonction appelée créer des
documents à partir de documents. Et qu'est-ce qu'un document exactement ? Eh bien, il ne s'agit que
d'une interface générique pour un document de données. Ce document
se connecte donc simplement aux sources de données. Nous allons transmettre un texte qui
contiendra les informations relatives au titre de
l'article, aux auteurs du
résumé
de la publication, à la référence de la revue, au
DOI, à la catégorie principale, aux catégories, à
l'URL du PDF
et à l'URL de l'archive Nous allons mettre toutes ces informations dans
une seule chaîne
, puis nous allons transmettre
cette chaîne unique à cette chaîne unique à l'interface
de document de Lama Index. Tout d'abord, à partir de
Lama index point core, nous allons
importer le document, puis nous allons
créer des documents à partir de documents, et nous allons transmettre
la liste des articles. Tout d'abord, nous allons
initialiser une liste vide
, puis nous allons parcourir
ces articles Le contenu sera donc une seule chaîne contenant les
informations du titre, et je vais laisser Github Copilot faire le travail
ennuyeux ici Les auteurs seront une liste d'auteurs
séparés par une virgule N'oubliez pas que les auteurs sont une liste. Tu te souviens de ça ? C'est une liste. Nous allons également mettre le résumé, nous allons mettre
les informations publiées. Nous allons mettre la référence du
journal, la référence journal. Nous allons placer le
Di dans la catégorie principale. Les catégories sont également une liste. Bien que nous n'ayons pas
traité cette liste ici, nous l'avons simplement mise
et nous l'avons examinée. Toutes les catégories de résultats, c'est-à-dire une liste de chaînes. Nous pouvons joindre toutes ces
chaînes par cette commande. Nous allons avoir l'URL du PDF
ainsi que l'URL de l'archive. Ce qui, cette fois,
Githukpilot échoue. Oh, non, ça n'a pas échoué. C'est l'URL de l'archive. Oui, URL de l'archive. OK, super. Maintenant,
nous avons notre ficelle. Ce que nous allons faire maintenant, c'est ajouter le contenu
à un document Et le document a disparu, l'importation a disparu
parce que j'ai un paramètre qui supprime les documents
non utilisés, sauf. OK. Donc, revenons-en et disons que le texte
va être content. Et évidemment, nous devons
renvoyer cette liste, d'accord. Et maintenant, appelons
cette fonction. Disons des documents,
suite pour créer des
documents à partir de papiers, de papiers. OK. Et voyons cette liste. Cette liste est donc une liste
de cet objet de document, et chaque
objet de document possède un identifiant. Il n'y a pas encore
d'intégration. Ses métadonnées sont vides. Cela peut être utile dans de nombreuses
applications comportant des métadonnées, mais nous ne définissons aucune
métadonnée pour ce document. si vous le souhaitez, vous
pouvez mettre des métadonnées ici et y placer n'importe quel dictionnaire Python. Une information que vous souhaitez.
Permettez-moi de clore encore une fois. Il possède également plus d'attributs, mais celui qui nous intéresse
est la ressource texte, la ressource multimédia, le texte, et c' est la chaîne que nous construisons. Vous pouvez voir que cela peut être
une très longue chaîne. OK. Maintenant que nous l'
avons, nous allons créer notre index. Alors, comment s'y
prendre ? Commençons par importer à partir d'un index dot core. Importons les paramètres, et importons l'index du
magasin de vecteurs. Également à partir des constantes,
importons le modèle intégré,
car n'oubliez pas que nous devons faire passer le texte
par un modèle intégré. OK. Donc, tout d'abord,
nous allons dire que taille des blocs de
paramètres sera égale
à 1024 paramètres
Le chevauchement des morceaux sera égal à 50 Je vais expliquer ce que
c'est dans un instant. Permettez-moi d'abord de créer l'index. Je vais dire index du
magasin vectoriel à partir de documents. Nous allons transmettre la liste des documents et le modèle intégré sera le modèle intégré que nous avons
instancié instancié N'oubliez pas qu'il s'agit d'un
texte intégré en trois grandes dimensions. OK, alors quelle est la
taille de ces morceaux et leur chevauchement ? OK, donc la taille du morceau définit la propriété de taille du morceau
à ce nombre Cela signifie que les données, le texte ici, seront traitées par
blocs de 1024 unités Dans ce cas, les unités sont
synonymes de caractères. Si, par exemple, ce
texte comporte 2080 caractères, désolé, 2048 caractères, il sera
divisé en deux parties,
mais pas tout à fait car nous avons un autre
paramètre
appelé chevauchement de morceaux mais pas tout à fait car nous avons autre
paramètre
appelé Le chevauchement signifie
qu'il y aura un chevauchement de 50 unités
entre des segments consécutifs Cela peut être utile pour garantir la continuité entre les
segments lors du traitement des données Cela signifie qu'
un morceau peut avoir certain contexte avec le
morceau consécutif et vice versa Ces deux paramètres
sont donc très importants. Ils sont appelés
hyperparamètres car peuvent être de 128 si vous
souhaitez conserver plus de contexte, mais vous allez
avoir plus de morceaux Ce sont donc de bonnes valeurs par défaut
pour ces deux propriétés. Maintenant que nous l'avons, nous avons déjà notre index. Génial. Dans les coulisses, il
s'agit donc en fait d'appeler l'API OpenAI pour convertir
tous ces éléments en vecteurs Il utilise le texte incorporant trois grands modèles
d'intégration. Convertissez tout en vecteurs. Maintenant, nous pouvons stocker cet index en utilisant
le contexte de stockage, cette méthode persistante, et nous allons le stocker
dans un dossier appelé index. C'est vrai. Nous avons maintenant
ce dossier d'index
avec tous ces fichiers JSON, et c'est quelque chose que nous voulons
probablement avoir
dans le Git Ignore. Ajoutons donc l'index ici dans le Getting
car il est dynamique. Si vous recherchez autre
chose, l'index
va évidemment changer. C'est tout pour créer un index. Vous pouvez voir qu'avec
l'indice Lama, c'est tellement facile. Cet indice
est évidemment un indice local. Nous pouvons utiliser un index basé sur le cloud comme Pine Cone, un
service comme Pinecone, ou nous pouvons utiliser des
outils plus sophistiqués comme Chroma TB, qui est également une base de données
vectorielle locale, mais nous devons la déployer Il existe d'autres services, des services
cloud comme Vate pour stocker ces
index dans le cloud Ils utilisent AWS en coulisse ou GCP. Mais pour l'instant, nous
allons stocker l'index localement
dans ce dossier. J'espère que cette vidéo vous plaira et que vous vous retrouverez à la prochaine leçon.
11. Créer l'outil de moteur de requête RAG: Bonjour et bon retour. Nous allons maintenant commencer à
créer l'agent lui-même. Créons un autre
fichier appelé agent IPYNV. Cette fois, vous devez
sélectionner le noyau ici. N'oubliez pas de sélectionner VENV. Génial. Tout d'abord, nous allons
charger notre index depuis le stockage. C'est la première chose à faire. Tout ce qui est stocké
dans ces fichiers JSON, nous allons le charger. Lama Index utilise une méthode appelée indice de
charge depuis le stockage. À partir de Lama index point core,
nous allons donc importer
le contexte Starch et l'indice de charge depuis le stockage. Nous devons importer
le modèle d'intégration pour que ce contexte d'amidon soit un contexte
de
stockage à partir des valeurs par défaut, et que le répertoire de persistance
soit un index Nous pouvons maintenant charger l'index avec cet
indice de charge depuis le stockage. Nous transmettons le
contexte de stockage et le modèle d'intégration.
Génial. Maintenant, notre index est chargé,
notre index local. Ce que nous allons faire maintenant, c'est
créer un moteur de requêtes pour. Nous allons voir comment
fonctionne
cet outil de moteur de requêtes dans les coulisses. À partir de Lama index.co dot tools, nous allons importer
le moteur de requêtes dans Nous allons également importer
le modèle LLM à partir des constantes Le moteur de requête sera donc l'index, mais cet index a une méthode
appelée moteur de requête. Nous devons passer le modèle LLM, qui dans notre cas sera GPT four Omni, et nous pouvons transmettre un autre
paramètre appelé Top K, similitude, top K, et nous allons dire cinq. Nous allons récupérer au maximum cinq vecteurs
lorsque nous soumettons une requête, nous allons trouver un maximum de
cinq vecteurs similaires. Nous allons maintenant définir l'outil RAC en tant qu'outil de moteur de
requêtes. Et encore une fois, l'
importation disparaît, il faut
donc recommencer. Outils de base, moteur de
requêtes d'importation dans. À partir des valeurs par défaut,
les valeurs par défaut seront
le moteur de requête Nous devons également fournir
le nom de cet outil. Le nom sera donc un document de recherche, un outil de moteur de
requête. Et c'est aussi une bonne pratique
de le décrire. Et cette description
va aider l'agent à savoir en quoi consiste
cet outil. Je dois donc dire qu'il s'
agit d'une machine à chiffon basée des articles de recherche récents C'est donc l'outil que l'agent
va utiliser
pour récupérer des informations dans pour récupérer des informations dans notre base de données existante ou dans
notre référentiel existant Maintenant, je veux que vous
montriez que je veux
vous montrer les instructions que ce moteur de requête utilise dans les
coulisses Par défaut, Lama Index utilise une invite affinée avant de
renvoyer une réponse. Et nous allons en apprendre
davantage à ce sujet dans un instant. Tout d'abord, permettez-moi d'importer
depuis IPython cet affichage. Je vais importer
Markdown et Display. Ce ne sont que des fonctions
utilitaires pour voir les choses un
peu mieux ici à l'écran Je vais définir ce dictionnaire
d'invite d'affichage, et je vais transmettre un dictionnaire d'
invite pour les touches d'
invite et de saisie de ces éléments Je vais afficher un
peu de markdown ici. Le Markdown sera
la touche d'invite. Et tout cela va
prendre tout son sens dans un instant. Supportez-moi simplement. Et demandez à obtenir un modèle. Maintenant que nous avons
défini cette fonction, nous allons dire que le
dictionnaire des invites sera le moteur de requête
qui recevra les invites, et nous allons
afficher les OK. Moteur de requêtes. OK, nous n'avons pas
exécuté cette cellule. OK. C'est ici. Le moteur de requêtes
que nous avons défini
ici comporte donc deux invites. Le premier est ce modèle d'assurance qualité de
texte du synthétiseur de réponses,
et le second
est ce modèle d'affinage du
synthétiseur de réponses affinage du
synthétiseur Ainsi, lorsque nous récupérons
les informations pertinentes, une partie d'informations, utiliseront la partie la plus
pertinente, à droite. Il répondra à la
question ou à toute autre requête publiée par l'utilisateur en utilisant ce morceau
et en utilisant ce modèle Les informations contextuelles se trouvent ci-dessous. Et en fonction des informations
contextuelles et non des connaissances préalables,
répondez à la question. La requête est ce que nous avons indiqué en
tant qu' utilisateur et la réponse
est la réponse LLM Une fois qu'il aura obtenu une réponse, il va itérer
sur
les autres éléments d'information pertinents Parce que n'oubliez pas que nous allons avoir cinq
au maximum cinq,
et que les quatre autres utiliseront ce modèle ici. La requête initiale
est la suivante. Nous avons fourni
une réponse existante c'est
donc la réponse
de cette invite ici, nous avons la
possibilité d'affiner la réponse existante uniquement si nécessaire avec quelques contextes
supplémentaires ci-dessous. Ce contexte va
être un autre élément, une autre
information pertinente le nouveau contexte, affinez la réponse initiale
pour mieux répondre à la requête. Si le contexte n'est pas utile, renvoyez la réponse d'origine. C'est ce qu'on appelle un mode de
réponse dans l'index
Lama et nous avons
cette documentation ici. Le mode de réponse par
défaut est affiné, créez et affinez la réponse en
parcourant séquentiellement
chaque
morceau de texte à récupérer, ce qui entraîne un appel LLM distinct pour le
nœud ou Les détails, le premier
élément est utilisé dans une requête utilisant le
texte d'un modèle En utilisant ce modèle ici, en utilisant la partie
la plus pertinente le LLM va
récupérer une réponse Ensuite, la réponse
et le segment suivant ainsi que la
question initiale utilisent une requête avec le
modèle d'invite affiné et ainsi de
suite jusqu'à ce que tous les fragments
aient été analysés Avec les segments consécutifs, il utilisera ce
modèle ici et il aura une réponse affinée Si un morceau est trop gros
pour tenir dans la fenêtre,
compte tenu de la taille du bal, compte tenu de la taille du bal, il est divisé à l'aide d'un séparateur de texte à
jetons autorisant un certain
chevauchement de texte entre les segments, les nouveaux morceaux
supplémentaires sont considérés comme des fragments de la collection de morceaux d'
origine C'est uniquement si le
morceau est trop gros. Il existe un autre
mode de réponse appelé compact. Ainsi, le compact,
similaire à Affiner,
mais compact, concatène les morceaux au préalable,
ce qui réduit
le nombre d'appels LLM Ainsi, au lieu de parcourir les quatre autres
segments séparément, il va fusionner tous
ces quatre autres morceaux et exécuter cette invite avec le contenu
fusionné Il est donc très
important que vous compreniez ce qui se passe dans les
coulisses. Un agent a la capacité de se corriger lui-même en utilisant cette technique
créative raffinée. Nous allons conserver
cette approche, et nous allons
terminer la leçon ici. J'espère que cela vous plaira et
que vous vous reverrez à la prochaine leçon.
12. Créer et interagir avec l'agent: Bonjour et bon retour.
Nous allons maintenant définir les deux autres outils que l'agence va utiliser. Importons depuis les outils, téléchargeons
le PDF et
récupérons les documents d'archives Afin de définir ces outils, nous allons importer des outils depuis
Lama Index Cord. Nous allons importer un outil
fonctionnel. Et nous allons définir l'outil de
téléchargement PDF, qui sera une
instance de cet outil fonctionnel, et nous devons transmettre
la fonction elle-même, savoir télécharger le PDF. Encore une fois, nous devons
lui donner un nom. Je vais donc appeler cet outil de
téléchargement de fichiers PDF, et nous avons aussi,
désolé, un
outil de fonction par défaut Et nous devons également
lui donner une description. Il est recommandé d'en
donner une description. Je vais donc dire qu'il
s'agit d'une fonction Python. Cela télécharge le fichier PDF par lien. C'est notre
outil de téléchargement de PDF et nous allons
également définir un autre outil
appelé l'outil FEG Archive, qui
sera identique. Nous passons la fonction PE Archive
papers, lui donnons un nom, nous la
récupérons depuis Archive Et nous allons
vous donner la description disant de télécharger les
articles récents de Max
PursultsRcent sur le sujet Nous pouvons
y mettre cet espace réservé depuis Archive. C. Et il faut fermer ça. OK, maintenant que nous avons
défini ces deux outils, nous allons
créer une nouvelle cellule, et nous allons
créer l'agent. Donc, à partir de Lama index
point core, cet agent, nous allons importer
un agent React. Nous avons donc plusieurs choses ici, nous allons créer une
instance d'un agent React. Pourquoi réagir ? Parce qu'il va vers Cet agent fonctionne
en deux étapes principales. La première étape est le raisonnement Il reçoit
donc une requête, l'agent évalue
s'il dispose suffisamment d'informations pour répondre directement ou s'il a besoin d'un outil, puis il agit Si l'agent décide d'
utiliser un outil, il exécute l'outil
puis revient à la phase de
raisonnement pour
déterminer s'
il peut désormais répondre à déterminer s'
il peut désormais répondre la requête ou s'il
a besoin d'outils supplémentaires C'est donc aussi simple que de dire «
React Agent » à partir d'outils. Et transmettez une liste d'outils. Téléchargez donc le PDF 2, outil
Rack et
récupérez Archive 2 Nous devons fournir un LM
que cela va utiliser. Nous allons passer notre modèle
LM, le GPT 40 Mini. Enfin, nous allons dire que Vervos est vrai afin de savoir ce qui
se passe dans les coulisses, tous les journaux que cet
agent jette Et c'est tout. Nous avons maintenant créé un agent. Nous pouvons donc commencer à discuter
avec notre agent. Pour cela, nous allons avoir
besoin d'un modèle de requête. Créons un modèle de requête, et nous allons probablement l' affiner dans les prochaines leçons. Donc cela va dire que je suis intéressé par
un sujet, n'est-ce pas ? Trouvez dans votre base de
connaissances des articles liés à ce sujet. Utilisez le modèle suivant
pour interroger un document de recherche, outil de moteur de
requête pour. Je vais vous dire de fournir le
titre, le résumé, les auteurs et le lien pour
télécharger quatre articles. Laissez-moi voir quatre articles
liés au sujet. Période. J'ai Whoops. Et je dois dire que
s'il n'y en a pas, pourriez-vous récupérer le
plus récent sur Archive ? Depuis Archive. OK. Il s'agit donc d'un
modèle de requête que j'ai écrit. Voyons si cela fonctionne. Créons un nouveau moi et disons que la réponse est égale
à celle de l'agent qui discute. Nous allons transmettre le modèle de requête et formater
pour vous donner le sujet. Le sujet
portera sur les modèles multi-modèles. J'attends de cette
liste d'articles que, par
exemple, des modèles
multimodèles seront extraits. Et probablement autre chose. Mais je ne sais pas
quels autres articles seront récupérés
car ce n'est que le titre. Et souvenez-vous de ces
recherches pour le résumé, il contient un résumé, des
catégories et tout ça. Il va donc probablement aller
chercher d'autres documents également. Exécutons donc ceci, et vous pouvez voir que la sortie indique Running
Step et cet ID, l'entrée de l'étape est le
modèle de requête avec le sujet, qui est des modèles multimodaux. Maintenant, l'agent pense que la
langue actuelle de l'utilisateur est l'anglais. J'ai besoin d'un outil pour
m'aider à répondre à la question. L'action qu'il va entreprendre
va donc utiliser le
document de recherche, l'outil du moteur de requête, et l'entrée sera
la suivante : fournir un résumé du titre, auteurs et un lien
à télécharger pour les articles liés aux modèles
multimodaux Donc, ce que cela fait, c'est
utiliser ce moteur de requête. N'oubliez pas que le moteur de requête
utilise GPT four omni, il a la capacité de fournir une réponse en suivant
ce modèle ici Suivre ou indiquer le
titre, le résumé
des auteurs et le lien pour télécharger l'article. Le constat est
qu'il va revenir. Tout cela est
généré par GPT 40 M. Il donne le
titre, le résumé, les auteurs et l'URL du PDF Nous pouvons mieux visualiser
cette réponse en utilisant cette classe Markdown. Je vais dire Markdown,
réponse par point. OK. Maintenant, nous pouvons mieux
visualiser cela. C'est la réponse
de GPT 40 Mini. Il m'a juste donné une liste de
quatre articles. C'est génial. Dans cette leçon, nous
allons nous arrêter ici. Dans la prochaine leçon,
nous
verrons s' il est possible de télécharger
tous ces articles. J'espère qu'il vous plaira.
Rendez-vous dans la prochaine leçon.
13. Télécharger les documents et en chercher de nouveaux: Bonjour et bon retour.
Dans cette leçon, nous allons télécharger
tous ces articles. L'agent, souvenez-vous que l'une des fonctionnalités de
l'agent est qu'il conserve la mémoire des tâches
déjà terminées. Étant donné que l'agent conserve
cet historique des discussions, nous pouvons demander à charger
ensuite les articles sans
les mentionner explicitement. OK. Tapons donc ce nouvel
agent de réponse cellulaire qui discute et indique l'agent de télécharger tous
les articles que vous avez mentionnés. Voyons ce qui va se passer. Il exécute donc cette étape et la saisie consiste à
télécharger tous les articles que vous avez mentionnés, l'action
ou l'idée.
Tout d'abord, je dois
télécharger plusieurs fichiers PDF sur la
base des URL fournies pour
les articles relatifs aux modèles
multimodaux L'action consiste à télécharger le fichier
PDF deux. L'entrée de l'action
est cette URL PDF, et le fichier de sortie est celui-ci. Ce n'est que pour un article. Vous pouvez voir que dans ce dossier, il n'a téléchargé qu'un seul article. Ensuite, il passe
à l'autre article, qui est le texte
multilingue pour atteindre compréhension
visuelle,
qui est le second Mais regardez ça. Maintenant,
il dit que le voyou dit qu' il peut répondre
sans plus d'outils, et qu'il utilise toujours le hum, il n'est pas en train d'effectuer
une action La réponse est action.
Téléchargez le PDF 2. Il ne télécharge pas le deuxième fichier, ni le
troisième ou le quatrième. Nous allons résoudre ce problème en procédant une ingénierie rapide
dans ce chat. Mais pour l'instant,
continuons et bien, mettons la réponse en Markdown afin que nous puissions mieux voir les choses Je peux voir que la réponse
est téléchargez-le, utilisez l'outil de téléchargement PDF et il nous dit
la dernière chose qu'il a faite. Celui-ci. Cela n'est pas exact.
Nous allons régler ce problème. Mais pour l'instant, voyons
ce qui se passe si nous posons des questions sur un sujet qui n'est pas disponible dans cette
liste que nous avons trouvée. Allons interagir à
nouveau
avec l'agent et
parlons de l'agent, modèle de
requête,
et nous allons aborder un autre sujet comme l'informatique quantique,
quelque chose comme celui-ci. Aucun de ces articles ne
parle d'
informatique quantique, je crois. Voyons ce qui se passe si nous parlons de ce sujet
qui n'est pas disponible. Nous allons évidemment mieux
voir la réponse ici. Mais voyons le processus de
raisonnement. Le modèle
parle maintenant de l'informatique quantique. L'idée est que la langue
actuelle de l'utilisateur est l'anglais. J'ai besoin d'un outil pour
m'aider à répondre à la question. L'action consiste à rechercher un
document, un outil de moteur de requête. L'entrée est ce modèle, mais il semble qu'il n'
y ait rien en rapport avec
l'informatique quantique. L'idée est donc qu'il ne
semble y avoir aucun article disponible dans la base de
connaissances sur l'informatique quantique. Je vais chercher des
articles récents dans Archive. Il utilise maintenant le troisième outil, qui est Fetch from Archive, et l'entrée d'action est
le titre Quantum Computing
et les articles en comptent cinq OK. J'ai donc trouvé
ces cinq articles ici. Vous pouvez observer l'
intrication, la l'échelle d'une transition de
phase quantique sur
un ordinateur quantique, l'additivité
uniforme, ou quoi que ce soit d'autre, ces choses compliquées Mais il a définitivement trouvé nouveaux articles sans que nous
intervenions dans ce processus. C'est cool. La prochaine
étape de la prochaine leçon, ce que nous allons
faire, est de résoudre le problème du
téléchargement des articles.
14. Améliorer l'invite à télécharger des fichiers: Bonjour, et bon retour.
Donc, tout d'abord, faisons un commit, afin de ne pas perdre
toutes nos modifications. Je vais supprimer ce document afin que la prochaine fois que nous
réglerons ce problème, vous puissiez voir que
tout est résolu. Ajoutons donc tout. Ajoutons un
message de validation disant « créez la première version de l'agent et faisons un push. À. Maintenant, ce que nous allons faire ensuite c'est modifier cette invite ici, l'invite de
téléchargement, car pour
le moment c'est très simple, et ce n'est peut-être pas
la meilleure façon de le faire. Bien sûr, vous pouvez
utiliser Chat GPT ou Clot pour améliorer cette invite
ici, c'est ce que j'ai En fait, l'invite qu'il a reçue
pour résoudre ce problème était tout d'abord un
processus itératif J'ai essayé plusieurs
fois pour résoudre ce problème. J'ai essayé plusieurs invites, et c'est celle-ci
qui a résolu le problème J'ai également essayé d'autres approches, et je vais vous inviter
à essayer d'autres approches. Nous allons en discuter
dans un instant. Pour l'instant, je vais
répondre à l'invite, télécharger les
articles suivants et pour chaque article. Je vais dire,
tout d'abord, oups. Que se passe-t-il ? Traitez un papier à la fois. Ensuite, faisons-le comme ça. Comme ça. Ouais. Ensuite, indiquez numéro de
papier que vous êtes en train de
traiter parmi le total. Troisièmement, je ne sais pas
pourquoi ça va. Effectuez un cycle de téléchargement complet avant de passer à la version suivante. Quatrièmement, indiquez explicitement lorsque vous
passez à l'article suivant, et cinquièmement, ne fournissez
un résumé final qu'une fois tous
les articles téléchargés. Voici donc les nouvelles instructions
pour l' étape de téléchargement. OK ? Voyons donc ce qui se passe maintenant. Je vais tout
recommencer juste pour être
clair, effacer toutes les sorties, tout exécuter
et voyons ce qui se passe. Il récupère les
quatre articles relatifs aux
modèles multimodaux.
Maintenant c'est ici. Cela veut dire que je vais commencer à télécharger les
articles un par un, traitant chaque article dans
l'ordre dans lequel il a été répertorié. Action, téléchargement du PDF deux, la deuxième action consiste à nouveau à
télécharger le PDF deux. Mais maintenant, pour le texte
multilingue Rich visual, la troisième action
est la même en utilisant le PDF à télécharger, deux mais avec ces prototypes
multimodaux complets, et la quatrième action est la même mais avec
un vêtement de discussion Rat. Il a maintenant téléchargé
les quatre articles. Voyons maintenant ce qui se passe lorsqu' il récupère celui de l'
informatique quantique. Oh, oups Maintenant, il télécharge également ceux de l'informatique
quantique. Nous avons donc réglé une partie du problème. Nous avons réussi à télécharger les quatre articles que nous avions
explicitement définis pour
le téléchargement, mais maintenant les autres sont également téléchargés. Alors maintenant, nous devons faire
autre chose pour éviter cette situation
et vous pouvez voir cette dernière étape a également échoué. Permettez-moi de supprimer à nouveau tous
les articles, pour une raison quelconque. Ici, il n'est pas explicite qu'il n'est pas nécessaire de
télécharger les articles. Encore une fois, j'ai suivi
un processus itératif. Il s'agit d'essais et d'erreurs
et celui-ci est plus simple. Il suffit de dire qu'il ne
faut pas télécharger d'articles. À moins que l'utilisateur ne le
demande explicitement. Donc, en disant simplement à l'IA : « Hé, ne téléchargez pas les articles à
moins que l'utilisateur ne le dise », alors voyons ce qui se passe. Je vais effacer à nouveau toutes les
sorties et tout exécuter. Cette fois, j'ai dû modifier
le modèle de création, pas le modèle de téléchargement. Maintenant, il cherche à nouveau dans la
base de données ou dans l'index. Qu'est-ce que le document sur les
modèles multimodaux ? Il a trouvé les quatre articles, et voyons ce qui se passe. Tout ce processus est
une ingénierie rapide, tout comme lorsque vous effectuez une
ingénierie rapide pour HAGPT, vous pouvez également effectuer une
ingénierie rapide pour les agents Voyons ce qui se passe
dans le dossier des documents. J'ai téléchargé les quatre
articles avec succès. Les documents multimodaux. Jusqu'à 23 secondes. Et maintenant, il attire de nouveaux articles liés à l'informatique
quantique Ce que je pense maintenant, c'est
qu'il ne télécharge pas les articles sur l'
informatique quantique. C'est ici. Vous pouvez voir maintenant qu'il n'a trouvé qu'
un seul article
cette fois , mais c'est une bonne chose. Au moins, il n'a pas téléchargé tous les articles.
C'est bon signe. Faisons un commit ici. SG commit, compilons
la deuxième version du et faisons push. Cette fois, avec les
papiers inclus. C'est tout pour cette vidéo. J'espère que cela vous plaira
et à bientôt dans la prochaine leçon.
15. Créer un cours pour gérer l'index: Bonjour, et bon retour. Donc, ce que
nous allons faire maintenant, c'est
créer deux classes. Une classe sera
appelée gestionnaire d'index, et la seconde classe sera appelée
classe agent. Ces deux classes
auront donc pour but de capturer toute la logique que nous avons
créée ici dans ces blocs-notes
Jupiter
dans une classe afin que nous puissions la réutiliser.
Nous allons créer un stream illuminé qui utilise ces deux classes afin que les
choses soient un peu
plus faciles à gérer Nous allons donc tout d'abord
créer la classe du gestionnaire d'index. Nous allons donc définir ici une classe appelée gestionnaire d'index, et nous allons
créer un constructeur Et ici, nous allons juste avoir comme paramètre
le modèle intégré Le modèle Self Dot Embed sera celui que nous adopterons ici. Nous allons également définir
ce réseau vide de vapeurs. OK. Nous allons donc maintenant
définir une méthode de récupération des articles, qui va recevoir
comme paramètres le sujet que nous
voulons récupérer et
le nombre d'articles, nous allons fixer par défaut à
dix comme nous le faisions dans les carnets
Jupiter Donc, les articles à point automatique, au lieu d'être
maintenant un tableau vide, vont les appeler Fetch
Archive Papers avec un sujet, et les articles comptent Sujet. Génial. Et nous
devons nous calmer ici. OK. Maintenant que nous avons
ces documents à récupérer, nous allons également créer cette méthode appelée création de documents à partir de
documents Cette méthode sera exactement
la même que celle-ci. En fait, permettez-moi de tout copier-coller. ceci en retrait. Mais cette fois,
il ne recevra pas les articles en tant que paramètre car les articles sont déjà
initialisés ici Je vais juste dire pour le
papier à points multiples. Je vais également me débarrasser
de ces documents ici. Nous allons initialiser les
documents ailleurs. Nous allons dire que les
documents à point automatique ajoutent un document. Nous devons importer un document
depuis l'index Lama, n'est-ce pas ? Et nous pouvons renvoyer les documents ou simplement ne pas le faire,
c'est à vous de décider. Je m'en fous vraiment. Je vais
juste les rendre. OK, et ça dit que
les documents n'existent pas. C'est pourquoi nous
n'avons pas défini de documents. Alors, faisons-le ici. Ça ne fait de mal à personne.
Faisons-le ici. Auto-documents et terrain. Nous allons maintenant créer une méthode de création d'index,
Dev Create index, qui va appeler cette fonction de création
de document à partir de documents, et elle va également
rassembler et exécuter
cette logique ici. OK. Donc, quelque chose comme ça , nous l'avons inventé
et nous avons dû importer les paramètres et l'index du magasin
vectoriel. OK. Et ici, nous allons l'attribuer à une
variable d'instance appelée index. De plus, embed model, nous l'avons
dans le constructeur, donc nous pouvons appeler self
ce modèle embed, et documents est là,
self Je préfère donc
l'initialiser ici. Voilà, et voilà. C'est juste une question
d'organisation. Cela n'affecte pas le résultat. Mais maintenant, nous avons cette classe qui a cette méthode pour
récupérer les documents Je vais remplir
le tableau des articles. Ensuite, après avoir exécuté
cette méthode, vous pouvez créer l'index, puis nous avons besoin d'une autre
méthode pour récupérer l'index. Cette méthode va faire la même chose
que nous faisons ici. Cette même logique, nous
allons la mettre ici et évidemment nous devons importer des éléments, des
vecteurs
à indexer, un indice de charge
depuis le stockage Pour une raison ou une autre,
cela a été dupliqué Le modèle de lit sera
autodidacte et le modèle Bt. Et quoi d'autre ? Nous n'allons pas l'attribuer
mais renvoyer ce taux. Je pense donc que c'est tout ce que nous devons
faire pour ce cours. Nous pouvons également définir une méthode d'art uniquement pour imprimer
les titres des articles. Je vais donc parler de listes de documents, et nous allons simplement en
copier la logique. Comme imprimer du papier, carreau pour
papier, je m'occupe des papiers, pour montrer des choses si vous le souhaitez C'est tout pour ce cours. Dans la leçon suivante,
nous allons créer la classe d'agent. N'oubliez pas de valider et
d'ajouter le
gestionnaire d'index Cass. Poussez. C'est tout pour cette leçon. J'espère qu'il vous plaira.
Rendez-vous dans la prochaine leçon.
16. Créer un cours pour interagir avec l'agent: Génial. Nous allons maintenant créer une autre classe appelée
classe agent. Créons un autre fichier
appelé agent point PY. Ici, nous allons définir
cette classe appelée agent. Dans le destructeur, nous allons obtenir l'index
et le modèle LLM L'index Self point sera un index et le modèle LLM Self Dot sera un modèle
LLM Dans Deconstructuor,
nous allons créer le moteur de requêtes, l'outil RAG, l'outil de téléchargement de PDF, l'outil archivage Fetch
et
la méthode
de génération de l'agent pour créer l'agent Donc, en gros,
extrayez la logique de ce
bloc-notes Jupiter dans une classe. Donc, tout d'abord, créez,
créez un moteur de requêtes. Ce que cela va faire,
c'est essentiellement le faire. Prenez cette ligne de
code et mettez-la ici. Nous allons dire que le moteur
de requête
self point sera égal à self
point index en tant que moteur de requête, module
self point M et à similarité top
K égal à cinq. Cela peut également être un paramètre
du constructeur, mais codons-le en dur à cinq La deuxième méthode va être
de créer un outil RAC. Et en gros, ce
sera ça. Self Dot Rat
sera donc égal
à l'outil de moteur de requête. Importons-le dans
ce fichier et le moteur
de requête sera un moteur de requête
Self Point. Débarrassons-nous de ça
et voilà. Maintenant, l'autre méthode
sera
l' outil de téléchargement PDF intégré et il s' agira
essentiellement
de copier ceci, télécharger
automatiquement le PDF vers. Nous devons importer l'outil
fonctionnel et télécharger le PDF
à partir
du fichier d'outils ici. Voilà. Maintenant, créez l'outil Fetch Archive. Encore une fois, ça va être ça. Il suffit de le copier-coller ici. Dites « self point fetch
Archive tool » et importez l'archive de récupération
à partir du fichier d'outils Voilà. Nous allons maintenant
définir une autre méthode, qui
sera l'agent de construction. L'agent de construction sera exactement cela ici. Il suffit de le copier, le
coller ici et de l'importer en haut.
Voilà. Et il s'agira de l'outil PDF à télécharger
Self Dot, de l'outil Self Dot G, de l'outil archivage
Self Dot Fetch
et du taux de modèle Self Dot LLM Encore une fois, tous ces
paramètres, comme les verbes, sont vrais. Ils peuvent être définis dans l'
initialiseur si vous le souhaitez. Je vais juste les coder en dur et dire variables,
varios toujours vrai Maintenant, je vais dans
l'initialiseur pour appeler toutes ces
méthodes dans cet ordre Tout d'abord, le moteur de requêtes, puis l'outil de création de Rag,
puis l'outil de
téléchargement de fichiers PDF, puis de n'importe quel outil d'archivage pour animaux de
compagnie et enfin, de création de l'agent Génial. Il ne nous manque
qu'une seule méthode ici. Lorsque nous initialiserons
cette classe d'agent, l'agent sera
initialisé automatiquement, mais je veux une méthode de chat qui
recevra un message Ça va revenir à soi, l'agent, au chat. Un message. En gros,
avec cette interaction, nous n'allons plus transmettre ces modèles de
requêtes. Nous allons juste
transmettre n'importe quel message. Le message sera
essentiellement n'importe quelle chaîne ici. OK, c'est tout
pour ce cours. Encore une fois, c'est get at Git commit
as agent class et push. C'est tout pour cette
vidéo. J'espère que cela vous plaira et à
bientôt dans la prochaine leçon où nous allons
créer une application Sprint Let en utilisant ces deux classes.
17. Créer une interface utilisateur de chat avec Streamlit: Bonjour, et bon retour.
Ce que nous allons faire maintenant, c'est créer
une application Streamlet. Le Stream lead est un
framework Python permettant de créer des applications, en particulier des applications de données
comme on le dit ici. Il transforme les scripts de données en applications Web
partageables dans
MD, le tout entre pith Aucune
expérience en matière de front-end n'est requise. Vous allez dans la section galerie, vous verrez de nombreux
exemples que les gens ont créés avec Stream it. Par exemple, pour le LMS, ils ont créé des chatbots
ou un chat GPT avec la mémoire, beaucoup Vous pouvez voir les tendances,
Math GBT, portfolio, peu Et il dispose d'une grande
compatibilité ou de nombreux outils, je dirais, pour créer des cartes LLM OK. Nous allons donc commencer à créer ce chatbot pour
interagir avec l'agent Tout d'abord, nous devons installer streamlt en tant que dépendance PDM ajoute donc Streamlet et attend que la dépendance
soit installée En attendant, nous
allons créer un fichier appelé app point PY. OK. Ici, nous allons
importer notre classe d'agent, et nous allons également importer
notre classe de gestionnaire d'index. Nous allons également
importer à partir des constantes, du modèle intégré et
du modèle LM. OK. Et nous allons également importer
de manière fluide sous le nom ST. C'est ainsi que les membres de la communauté Python avaient
l'habitude d'importer cette bibliothèque. Il ne le reconnaît toujours pas car
il est toujours
en cours d'installation. Et nous allons commencer à créer l'application pendant
son installation. Donc, tout d'abord, nous devons
comprendre un concept dans Streamlt
qui est l'état de session Donc, dans Streamlt, nous
créons un script, et ce script est exécuté comme
s'il était dans une boucle sauvage Donc, tout ce que nous écrivons ici
sera recréé si nous ne mettons pas ces variables dans ce que l'on appelle
l'état de session Il
existe plusieurs façons mettre en cache ces variables, et l'une d'entre elles consiste
à utiliser un décorateur Ce décorateur s'appelle
ST stream lit cache. Ici, nous pouvons définir une fonction, et je vais appeler cette
fonction agent d'initialisation Parce que nous voulons que l'agent
ne soit initialisé qu'une seule fois. C'est pourquoi nous mettons cette ressource
en cache. Nous allons dire que le gestionnaire d'
index est équivalent au
gestionnaire d'index. N'oubliez pas que
nous devons passer le modèle d'intégration, puis nous pouvons obtenir
l'index en appelant la méthode retrieve index
que nous avons créée pour cette classe Enfin, nous allons
renvoyer un agent
avec un index et le modèle LM. OK. Nous allons maintenant
initialiser l' agent et l'état de la session OK. Alors, comment s'y prendre ? Nous disons que si l'agent n'est pas
dans l'état de session à points extrêmes , alors
nous allons dire « stream session state point
agent », « agent initialisé La première fois que ce script s'exécute, l'agent ne sera pas
dans l'état de session, il sera
donc initialisé Nous devons également initialiser dans l'état de session les
messages du chat Si les messages ne sont pas en état de session de
diffusion, les messages seront
alors un tableau vide. Stream Lead a donc un
moyen de créer des discussions. Nous allons voir comment il
utilise le concept de lignes. Donc, une partie
du chat sera
l'utilisateur ou l'humain, et l'autre partie
du chat sera l'assistant ou l'IA. Nous allons donc voir comment
cela fonctionne dans un instant. Ensuite, ce que nous allons
faire maintenant, c'est
afficher les messages du chat. N'oubliez pas que tout
cela va se dérouler comme dans une boucle temporelle. Nous devons donc chaque fois que ce script est exécuté,
imprimer les messages. Pour les messages en cours
de session, il
s'agit de la syntaxe que nous utilisons pour écrire les messages avec SD et elle contient cette variable de
message de discussion. Et que devons-nous mettre ? Le nom ? Le nom peut être l'utilisateur, l'assistant, l'IA ou un humain. L'utilisateur et l'humain sont
une seule et même chose. Assistant et IA
, c'est la même chose. Mais le message
va contenir le rôle. Nous allons donc parler du rôle du point de
message. Le rôle du message sera donc soit utilisateur soit assistant.
Comment le savons-nous ? Parce que nous allons définir cela dans un instant.
Supportez-moi, c'est tout. Donc, pour écrire
quelque chose dans le chat, nous utilisons cette méthode de marquage, et nous allons imprimer
le contenu du message ici OK. On pourrait dire que
les messages seront un ensemble de dictionnaires et que chaque dictionnaire
aura un rôle et un contenu Le rôle
sera soit utilisateur, soit assistant et le contenu sera le
message lui-même, qui peut être dans Markdown. Nous allons maintenant en créer les fonctionnalités de
base. Nous allons dire si c'est rapide, et nous allons appeler
cette méthode de saisie. Posez-moi des questions sur les vapeurs
utilisées pour la recherche. OK. Alors, qu'est-ce que cela signifie ? Cela signifie que si cette variable d'invite n'
est pas initialisée, cette syntaxe signifie, d'accord, initialisez-la pour qu'elle soit celle renvoyée cette entrée de chat Il s'agit simplement d'un espace réservé , comme vous allez le
voir dans un instant Donc, ce que nous tapons ici sera assigné à cette invite. OK. Alors maintenant, nous allons ajouter aux messages d'
état de session, lister ce dictionnaire
ici parce que lorsque je
vais saisir quelque chose,
je suis l'utilisateur Le rôle sera donc l'
utilisateur et le contenu sera celui attribué
dans cette invite. Génial. Nous l'avons donc ajouté, mais maintenant nous devons le
montrer à l'écran Donc, avec SD, le message de chat, et cette fois ce sera l'utilisateur. Je vais
noter l'invite. Je vais donc afficher
ce que j'ai tapé, en gros. Ensuite, je vais afficher la
réponse de l'assistant. Avec ST chat message, assistant, je vais obtenir la
réponse et la réponse sera récupérée
auprès de l'agent Rappelez-vous que nous
créons cette méthode de
chat , que nous passons
l'invite et que cela renvoie quelque chose qui
possède un attribut de réponse. Nous allons maintenant imprimer la
réponse et enfin, nous allons ajouter
la réponse aux
messages d' état de session, mais avec le rôle
de l'assistant C'est donc tout. Nous avons juste créé cette application en
33 lignes de code. Et pour l'exécuter, assurez-vous que dans votre terminal, fermez le terminal, assurez-vous ouvrir
à nouveau et
de l'afficher. Cela signifie que vous êtes dans
l' environnement virtuel, monsieur. Et si vous ne le voyez pas, vous pouvez également taper PDM use sorry, PDM Ben B ENV et
PDM BENV activate C'est le commandement. Imprimez donc la commande pour activer
l'environnement virtuel. Vous devrez donc
essentiellement taper ceci
et le coller. OK. Maintenant, je suis dans un environnement
virtuel. OK. Donc tu devrais voir ça. Lorsque cela s'affiche ou si vous n'avez pas de CSH
ou de Mac, saisissez-le simplement Évidemment, avec une commande
correcte, vous allez taper stream
it run up point PY. Cela ouvrira cette discussion ici, mais quelque chose ne va pas. Voyons donc ce que c'est une ressource de
cache, pas un cache. Essayons donc à nouveau. OK, ajoutons donc
quelque chose que j'ai oublié, et
ce sera
une vignette juste pour le voir un peu plus beau. Donc, chez Tile Archive,
Papers, Chatbot, oui. C'est un bon nom. J' espère donc que si vous êtes frais,
vous verrez ce titre. D'accord, comme je vous l'ai dit, il
s'agit d'un espace réservé
pour la saisie du chat Mais je peux taper n'importe quoi ici. Je vais dire, pouvez-vous aller chercher articles liés à la mécanique
quantique ? Et n'oubliez pas que la mécanique
quantique
ne fait pas partie de la base de connaissances. Voici donc cette petite icône qui indique que je suis l'utilisateur, et c'est l'assistant. Et ici, je vais
ajouter autre chose juste pour l'améliorer un
peu. Tout d'abord, je pense
qu'il a renvoyé la réponse, mais je veux être
plus convivial. Et ici, dans cette ligne, je vais dire
avec st point spinner, et je vais dire penser Bien que ce ne soit pas le cas, pendant que l'agent réfléchit, nous allons montrer Spinner qu'il soit plus convivial Permettez-moi de le copier
et de le refaire. Réfléchir avec un spinner. Parce que n'oubliez pas que
cela prend du temps. Il s'agit d'une
méthode plus conviviale pour afficher le résultat. Voyons ce que sont les lots. Donc oui, je pense que c'est terminé, ou je pense que c'est une erreur
pour une raison Arrêtons cela exécutons-le à nouveau et posons à nouveau
la même question. Pouvez-vous trouver des articles liés
à la mécanique quantique ? Il utilise donc l'outil Fetch from Archive, mais
il réfléchit toujours Attendons donc un moment, et voilà.
C'est la réponse. D'accord, nous avons maintenant une interface utilisateur pour voir les
résultats de notre dur labeur. J'espère que cette vidéo vous plaira, à bientôt dans la prochaine leçon.
18. Obtenir une clé API auprès de Pinecone: Bonjour et bon retour.
Nous allons donc maintenant stocker notre
indice dans Pine Ce. Pine Cone est donc un service dans
le cloud permettant de stocker des index. Cela signifie qu'il s'agit d'une
base de données vectorielle dans le cloud. Donc, comme il est dit ici, vous pouvez créer une IA compétente avec sa
base de données vectorielle au cœur. Pine Cone est la principale plateforme de
connaissances pour créer des applications d'
IA précises, sécurisées et évolutives. Vous pouvez donc créer
un compte gratuitement. De toute évidence, il y a un niveau gratuit. Vous pouvez choisir le plan de
démarrage pour les essais et pour les petites
applications. C'est gratuit. Vous avez Pinec sans serveur, vous avez Pinec Inference et Assistant, qui sont des produits
qu'ils sont en train de créer, et vous devez utiliser la région est des États-Unis,
un sur huit d'entre nous Vous pouvez commencer gratuitement, créer
un compte, puis vous connecter. Je vais le faire moi-même. Voilà, et ensuite ce que nous allons faire ici,
c'est créer un index. Cliquez sur ce bouton,
créez un index, et je vais dire Recherche dans les
archives. Vous pouvez configurer ici les
dimensions de ces vecteurs. N'oubliez pas que les vecteurs
ont des dimensions. Ce sont les intégrations, ou vous pouvez choisir N'oubliez pas que nous utilisons du texte en
incorporant trois grands caractères, nous pouvons
donc simplement le choisir
directement. Et regardez ça. Les dimensions sont automatiquement renseignées avec 3 072 C'est donc la dimension
des intégrations lorsque nous
utilisons ce Sans serveur. Je
vais choisir Ws. Je peux choisir d'autres
fournisseurs de cloud car je suis abonné au forfait payant et je
peux choisir d'autres régions. Mais si vous utilisez
le niveau gratuit, vous ne pourrez utiliser AWS
UseTo que pour activer protection contre la suppression afin d'empêcher
tout utilisateur de
supprimer accidentellement cet index Comme je vais le supprimer de
toute façon, cela n'a pas d'importance. OK. Vous avez maintenant créé
votre index dans le Cloud. Vous avez maintenant besoin de quelques clés d'API. J'ai créé une clé d'API.
Tu peux lui donner un nom. Vous pouvez donner des autorisations personnalisées ou si vous ne voulez pas vous
compliquer les choses pour le moment, donnez-leur
simplement toutes les autorisations, puis vous devrez
les copier et les copier
dans un endroit sûr Dans la leçon suivante,
nous allons créer une autre
classe appelée Index manager pinecone qui
hérite du gestionnaire d'
index et apporter quelques modifications
afin d'enregistrer les données dans afin d'enregistrer les données
19. Créer un gestionnaire d'index pour Pinecone: Bonjour, et bon retour.
Donc, tout d'abord, engageons-nous
à sauvegarder notre travail. Alors, passez à Git commit, et j'ai oublié ce que nous avons fait. Donc, oh, oui, nous l'avons
construit, diffusé en streaming. C'est ce que nous avons fait.
Nous faisons un Git Push. OK. Donc, ce que nous allons faire maintenant, c'est d'installer
deux dépendances, tout d'
abord, dont nous avons besoin
pour utiliser piece. Tout d'abord, nous avons besoin
du client Pine Cone, et nous aurons également besoin du Lama Index Vector
Stores Pinecone Laissons donc PDM faire le gros du travail et
installer ces dépendances L'autre point est que
nous allons créer un gestionnaire d'index
Pinecone point Pyle Et nous allons créer une autre classe appelée gestionnaire d'
index Pine cone. Mais nous allons utiliser l'
héritage ici et nous
allons hériter du gestionnaire
d'index Nous allons donc hériter de certaines méthodes de la classe du gestionnaire d'
index Donc, dans ce constructeur, nous allons avoir besoin, encore une fois,
du modèle intégré, du nom d'index de la de pin que
nous Nous allons appeler le constructeur
parent,
et le constructeur parent
n'a besoin que du modèle intégré Et nous allons créer
une instance de pomme de pin. Pour le moment, il ne s'affiche pas
parce qu'il est en cours d'installation, mais importons-le de différentes manières. Donc, à partir de Pine cone, nous allons importer
cette pomme de pin Eh bien, il a fini d'être installé, alors maintenant il reconnaît. Nous allons donc avoir
besoin de la clé API. Et cela va provenir des variables d' environnement.
Ce n'est pas ce que nous avons fait. Je ne sais pas pourquoi il fait
ça. Ce n'est pas ce que nous avons fait. Mettons ici un exemple d'
ENB à points, un cône d'épingle, clé d'
API ici dans l'ENB, nous allons mettre
la même chose mais avec la valeur réelle J'ai donc déjà copié
ma clé d'API. Vous devriez donc également le
copier pour le coller ici. Et évidemment, je vais le
supprimer plus tard. OK. Donc, pour
charger cette clé d'API, nous devons décharger le point m. Nous allons
donc
importer depuis le point Nous allons utiliser le
point de chargement du port M. Nous allons l'appeler
pour obtenir l'environnement
b à partir de ce fichier EMV Génial. Maintenant, ce que
nous allons faire c'est dire Self Dot Pine Ce Index, PC Dot Index, et nous allons
transmettre le nom de l'index. Ensuite, nous allons
initialiser le magasin de vecteurs en
tant que magasin vectoriel en forme de cône de pin, et nous devons l'importer Nous allons l'importer depuis Lama Index point vectorstores
point Pine cone,
Import Pine Cone Vector store. OK. Donc, pour ce magasin de vecteurs, nous devons transmettre l'indice de la pomme de
pin,
qui sera l'indice de la pomme de pin
à points automatiques, tel
que nous l' avons défini ici Nous avons également besoin du contexte
de stockage. Je vais dire que le contexte de
stockage Self Dot est égal à, et nous devons importer le contexte de stockage depuis
Lama Index point core, importer le contexte Starch. contexte de stockage provient des valeurs par défaut, et nous allons passer
cette fois au magasin vectoriel OK. Génial. Donc, ce que nous avons
fait jusqu'à présent, c'est d'appeler le constructeur de
ce gestionnaire d'index et assigner d'autres
variables ici Nous devons maintenant écrire la méthode de création d'index
à partir du gestionnaire d'index. N'oubliez pas que nous avons
cet index de création. Nous devons réécrire cela parce que maintenant nous allons stocker les choses dans Pine C. Nous faisons donc de même Nous initialisons un MTRray. Nous appelons la création de
documents à partir de documents, et nous avons défini les paramètres en conséquence. Nous devons également importer
les paramètres. Nous allons également obtenir les paramètres
à partir d'ici. Enfin et surtout, nous allons
bouleverser les vecteurs Désolé, soi ou
vecteur, index du magasin de vecteurs, que
je pense que nous
devons également importer d'ici. Index des magasins vectoriels. Ce que nous allons
faire ici est basé sur des documents
comme nous l'avons fait ici. OK. À partir de documents. Nous sommes sur l'index Self
Dot comme ça. Documents à points automatiques. Le contexte
de stockage sera
un contexte de stockage à points automatiques
et le modèle d'intégration ou
le modèle d'intégration
sera un modèle d'intégration à points automatiques OK. Voilà. Pour récupérer l'index, nous allons simplement renvoyer le point d'index du magasin
vectoriel à partir du magasin vectoriel, et nous allons
passer le magasin de vecteurs,
qui est le magasin vectoriel Self Dot et l'embed qui sera le
modèle Self point Embed C'est ça. C'est tout ce que
nous devons faire pour, euh, modifier les données et récupérer
l'index de la broche C. Donc, si nous allons ici, accéder
à la base de données, archiver pour la recherche,
aucun enregistrement pour l'instant Nous allons donc
créer un bloc-notes Jupiter, qui s'appellera Pine C, et dans ce bloc-notes
UPiter, nous allons remplacer
les vecteurs À partir de Constance,
importons le modèle intégré. Sélectionnons d'abord le noyau. Nous allons également importer
l'indice depuis le gestionnaire d'indices
Pinecone ,
le
gestionnaire d'indices Pinecone Nous allons créer
une instance de
ce gestionnaire d' index de classes
PyCon, passer le modèle intégré et
transmettre le nom de l'index, qui dans notre cas est Archive research, Archive
research Et maintenant, nous allons
aller chercher les articles , les modèles linguistiques Nous allons
récupérer les 101 derniers. Nous récupérons les articles
et nous sommes maintenant prêts à créer l'index Créons l'index. Vous pouvez voir, oups,
nous avons reçu une erreur, et c'est parce qu'elle indique, je pense que ce modèle doit
être intégré,
pas intégrer ce modèle pas intégrer Essayons encore une fois. Voyons si cela
résout le problème. Oui, donc pour une raison quelconque, il
s'agit d'un modèle intégré, mais saisie automatique
n'a pas fonctionné pour moi Donc, intégrez le modèle, pas intégrez. Le modèle intégré
renversera les vecteurs. Vous pouvez voir maintenant que nous avons inséré ces vecteurs dans l'espace de noms
par défaut Et vous pouvez voir ici le vecteur. Il ne s'agit essentiellement que de valeurs. Il y a 3 072 de
ces numéros ici, et ils contiennent des métadonnées, le contenu du
nœud, le type de nœud, ID du document, l'ID du document, etc. Donc, en gros, ce sont des vecteurs. Nous
en avons dix, dix vecteurs. Ce sont des intégrations. C'est ça. Il n'y a plus rien de magique là-dedans. Nous pouvons également récupérer
l'index en faisant cela : le gestionnaire d'
index récupère l'index et BLA nous
récupérons l'index, et nous pouvons également imprimer la liste des articles
que nous avons récupérés Vous pouvez donc voir maintenant
que c'est différent. Vous pouvez voir la vidéo Panda. En fait, nous allons apporter quelques modifications ici parce que
c'est difficile à lire. Voyons voir. Nous allons voir
le gestionnaire d'index, et ici nous allons dire pour
papier pour papier dans des articles. Imprimez simplement le
carreau en papier. Remplissez les papiers. OK. Alors c'est tout. C'est tout ce que nous devons faire. Cela ne se reflétera malheureusement pas car nous
devons redémarrer le noyau. Faisons donc ce gestionnaire d'
index. Désolée. Et nous n'allons pas
aller chercher Eh bien, oui, allons chercher les articles, mais créons, ne
créons pas à nouveau l'index Je vais juste énumérer les
journaux et les voici. Ce sont les documents
dont nous disposons actuellement. Maintenant, ce que nous allons
faire, c'est engager à sauvegarder nos progrès. Ajoutez le gestionnaire d'index
Pinec et recevez Push. C'est tout pour cette vidéo. J'espère que cela vous plaira, et
passons à la leçon suivante.
20. Utiliser l'index de la cône de pin dans l'application Streamlit: Génial. Nous avons maintenant nos
vecteurs dans Pine cone. Nous avons ces données,
ces titres dans Pine C. Test. Essayons de voir si
cela fonctionne réellement. Ainsi, dans notre application streamlt, lors de l'initialisation de notre agent, au lieu d'utiliser
le gestionnaire d'index, nous allons utiliser le gestionnaire d'
index pinecone OK. Nous devons donc
transmettre le nom de l'index, qui sera
Archive research. C'est le seul changement que
nous devons faire pour
obtenir les
données de la broche C. Testons cette
API à points simplifiée Voyons maintenant quel en est le
résultat. Je vais donc utiliser cette fois
ce modèle de requête que nous avons utilisé la dernière fois, qui se trouve ici. Voyons voir.
Remplaçons donc ceci. Je suis intéressé par les multi-modèles et les modèles
multi-modèles. Voyons donc si l'agent est capable de
récupérer des informations à
partir de cet
index des pommes de pin et de récupérer
les articles liés aux modèles
multimodaux Si nous voyons ici, c'est où ? Icône. Ce sont les articles sur
les modèles linguistiques. Il indique que
voici quelques articles récents
relatifs aux modèles multimodaux Traduction
et reconnaissance vocales sans ressources avec LMS et génération de
discours de longue durée avec des modèles de langage parlé Nous en avons un.
C'est où ? Celui-ci est une génération
vocale longue avec des modèles de langage parlé, et l'autre est
quel est son autre nom ? Traduction
vocale sans ressources,
traduction vocale sans ressources
et reconnaissance avec LM. J'ai réussi à récupérer les données de PyCon.
N'est-ce pas passionnant ? C'est ça. Nous avons maintenant
créé un agent qui stocke l'index dans le cloud. Il récupère
cela et fonctionne parfaitement. J'espère que cette leçon vous plaira
et que vous vous reverrez à la prochaine.
21. Déployer l'application pour rationaliser le cloud communautaire: Bonjour, et bon retour. Nous
allons donc maintenant déployer notre application sur le Community Cloud
diffusé en streaming Comme vous pouvez le constater, sur
la page d'accueil, déploiement sur le Community
Cloud est gratuit. C'est gratuit. Il vous suffit donc de vous
inscrire, de créer un compte, connecter votre compte GitHub, puis vous
pourrez trouver le dépôt Elle doit se trouver dans votre
compte Github et déployer cette application. C'est un processus très, très simple. Donc, ce que je vais
faire maintenant avant faire est de créer un fichier TXT à points d'
exigences. Pourquoi ? Parce que Streamlt
Community Cloud attend un fichier texte des exigences pour installer toutes les dépendances Il ne reconnaît pas
ce fichier journal pdmt, alors peut-être qu'ils le feront à l'
avenir,
mais pour le moment, ils ont besoin du point TextFile
requis PDM dispose donc de cette commande d'exportation. Donc, si vous tapez ceci, il l'affichera
dans le terminal, mais nous
voulons que ce soit dans un fichier. Nous utilisons donc ce symbole
supérieur à et disons : «
D'accord, nous voulons que cela figure dans le texte à points des
exigences ». Donc, si vous ouvrez ce fichier, il contiendra
toutes les dépendances
qui se trouvent dans le journal PDM, mais les exigences sont un fichier TXT à
points Faisons un commit
dans un fichier
TXT à points d'exigences. Allons-y. Passons maintenant au Streamed Community
Cloud pour
accéder au tableau de bord Une fois inscrit, inscrivez-vous, connectez votre
compte GitHub et vous pouvez cliquer sur ce bouton qui
dit créer une application Je vais choisir cette option, qui consiste à déployer une application
publique depuis GitHub Je vais donc rechercher le chercheur des
archives Ripple. N'oubliez pas que c'est mon Ripple. Je vais dire que le chemin du fichier
principal est app point PY,
et il s'agit d'un sous-domaine
choisi au hasard Votre domaine
sera cette application de streaming. Vous pouvez cliquer sur
Déployer pour déployer votre application. Mais cela ne
fonctionnera pas pour le moment car nous devons
définir des billes environnementales N'oubliez pas que nous avons besoin
de la clé d'API OpenAI et de la
clé d'API Pine Phone pour que cela fonctionne Si vous revenez pour partager ce
stream point IO, que vous cliquez sur les paramètres du projet
et que
vous passez au secret, vous pourrez
définir les secrets ou les bulles d'
environnement ici. Je vais les copier et les mettre en phase, mais vous devez
les mettre entre guillemets. Sinon, il
va se plaindre. Enregistrez les modifications et
l'application va maintenant se
déployer avec ces bulles d'
environnement. Je vais cliquer ici Si
vous cliquez sur cette application de gestion, vous verrez qu'elle a installé les dépendances
requises. J'installe tout cela
et les dépendances Python ont été installées à partir du
point d'exigences TXT, et c'est tout. Vous pouvez maintenant dire
bonjour au chat. s'agit d'un LLM, il saura donc qu'il n'a besoin d' aucune base de connaissances
pour répondre à Hello Nous allons maintenant utiliser le
modèle que nous avions ici. Mais pour garder à l'esprit
que vous n'en avez pas besoin, vous pouvez expérimenter
avec d'autres modèles, mais c'est celui qui fonctionne pour le moment, je
vais donc l'utiliser. Je m'intéresse aux
modèles multiples ici, aux modèles multiples. Voyons s'il
peut traiter cela. Je m'attends à ce que les journaux s'affichent ici, mais je ne sais pas pourquoi ils ne
s'affichent pas. Permettez-moi de rafraîchir ceci. Je vais le copier et rafraîchir juste pour voir qu'
il y a quelque chose là-dedans. Ouais. Si cela ne fonctionne pas, je vais redémarrer l'
application pour voir si cela fonctionne. Eh bien, cela a fonctionné cette fois, mais je ne vois pas les journaux ici. Habituellement, les journaux sont affichés ici, mais je ne sais pas pourquoi ils ne s'
affichent pas pour le moment. Quoi qu'il en soit, il a répondu par l'
un des articles de
la base de connaissances. N'oubliez pas que cette génération
vocale non formelle à
l'aide des
modèles de langage parlé se trouvait dans la base de connaissances.
Alors c'est tout. Vous pouvez maintenant partager ce lien avec vos amis et
les laisser tester votre application. J'espère que cette vidéo vous plaira, à bientôt dans la prochaine leçon.
22. Conclusion: Félicitations pour
avoir terminé ce cours. Merci d'avoir rejoint
cette aventure pour apprendre à créer des agents IA. Vous connaissez les outils nécessaires pour créer, améliorer et déployer des solutions d'IA
avec des applications du monde réel. Continuez à expérimenter,
restez curieux et souvenez-vous que les possibilités
de l'IA sont infinies Quelles sont les prochaines étapes ? Appliquez vos connaissances à des projets du monde
réel. C'est la meilleure façon d'apprendre. Partagez vos réussites contact avec la
communauté, continuez apprendre et restez au courant
des avancées de l'IA Vos commentaires sont importants. Veuillez prendre un moment pour laisser un avis ou partager votre opinion. Vos commentaires contribuent à améliorer ce cours et le contenu futur, et n'oubliez pas
de rester connecté. Faites-nous part de vos questions, idées de
projets ou simplement
pour partager vos progrès. Ensemble, nous pouvons rendre l'IA
accessible, et c'est le cas.