Introduction à LangChain
FULL TRANSCRIPT
alors bonjour à tous et à
toutes tous ceux qui nous rejoignent on
va juste attendre un petit peu quelques
minutes avant de commencer ce data
atelier j'espère que vous m'entendez
bien donc ça pe me permettre de vérifier
un peu si vous m'entendez si vous pouvez
juste mettre dans le chat que vous
m'entendez ça ça m'aidera à savoir que
je parle pas dans le
vide j'espère que vous voyez aussi le
mon
écran yes vous m'entendez super alors je
on va attendre quelques minutes histoire
que histoire que il y a du monde qui qui
nous rejoigne et puis voilà j'espère que
vous allez être nombreux j'espère
surtout que ça va vous
intéresser donc le thème d'aujourd'hui
c'est une introduction à longchain jeis
j'en dis pas plus maintenant je vais
aller dans le détail tout au long de la
présentation dans les grandes lignes
dans les grandes lignes
normalement cette présentation va plus
être va être un peu plus technique vers
la fin donc je va commencer par bien sû
les généralité et au fur à mesure qu'on
va avancer on va si on a le temps je
ferai du coup une partie un peu
démonstration pour montrer concrètement
comment est-ce qu'on utilise longchin et
comment est-ce qu'on on commence à
travailler avec longchin
euh
euh normalement pour la partie démo bien
entendu il va falloir être un petit peu
familier avec pyon avec les
environnements virtuels avec tout un tas
de choses euh donc voilà si jamais ça
vous êtes pas familier et cetera vous
pouvez juste regarder un petit peu par
curiosité et puis peut-être poser des
questions par la suite il y aura pas de
de souci là-dessus mais voilà vous allez
vraiment euh si vous avez vraiment une
connaissance on va dire une expérience
avec la avec la programmation ça va être
beaucoup plus simple pour vous de de
suivre et puis de de voir tout le tout
le
euh quoi d'autre donc on va faire j'ai
une partie présentation une partie démo
et puis une partie du coup où vous
pourrez poser vos questions mais il y a
pas de souci j'ai le chat en face de moi
et donc si je vois des questions entre
guillemets auxquelles je peux répondre
dans la foulée j'hésiterai pas à
répondre directement donc voilà c'est
parti on est 28 et il est 4 et donc
c'est parti pour la présentation
donc je vais commencer par me présenter
euh donc je suis Sébastien simet je suis
machine learning ingénieur chez datation
test euh voilà je suis un passionné
d'intelligence artificielle
euh dans le dans mon dans le cadre de
mes de de mes travaux euh mon objectif
c'est d'allier la création de contenu
euh au développement d'applications qui
utilisent du coup l'intelligence
artificielle donc généralement la
plupart du temps je suis à amener à
voilà à à combiner un petit peu les deux
pour pouvoir euh rendre explicite et
facile d'accès en fait des technologie
tout en essayant finalement de voilà de
de faire également du du développement
parce que ça a pour but quand même de
créer de la valeur pour pour des
entreprises donc mon travail ça va
consister la plupart du temps du coup
entre autres activités cheaptation test
à concevoir du coup des modèles d'IA euh
et à les combiner finalement avec
d'autres systèmes pour voilà pouvoir
essayer d' aller plus loin et puis de de
dégager surtout de la
valeur et donc aujourd'hui on va parler
spécifiquement de long chain euh mais
avant de passer sur long chain euh juste
pour que on arrive tous avec le même
background alors longchin s'utilise dans
le contexte de des ce qu'on appelle les
large language model donc avec des
modèles de type GPT ou des modèles de
type Lama je vais détailler à quoi ça
sert dans le cadre d'utilisation de ces
modèles là mais si on est dans
dans dans le dans le li générative et
donc c'est quand même bien d'avoir un
petit peu une sorte de recap sur d'où ça
un peu un peu d'histoire autour de la
création de long chain euh un petit peu
un un rapide rappel de ce que c'est
qu'un LLM avant finalement de rentrer
dans le corp dans le cœur du sujet donc
on va commencer par un peu d'histoire
euh donc si vous vous souvenez euh on va
dire décembre 2013 entre guillemets
c'est un petit peu en il y avait bien
entendu beaucoup de travaux sur
l'intelligence artificielle qui existait
et qui qui qui était en qui é en cours
mais on va dire là j'ai marqué des des
des grand des grands moments entre
guillemets qui ont qui ont qui sont
allés dans le sens de l'amélioration
finalement de des des techniques des
technologies di génératif donc ça a
commencé un petit peu avec les
modélisations deep learning de type RNN
donc ça c'est pour prendre en compte
finalement les séquences comme les
phrases les mots et cetera pour essayer
de prédire un petit peu les mots qui
viennent euh étant donné la des mots
d'entrée qui sont donnés à l'entrée du
système donc c'est donc vous voyez que
il y avait des des des gros
contributeurs comme Google finalement
qui euh dès le début finalement ont
beaucoup beaucoup beaucoup contribuer
finalement dans le développement de T
technologie 2018 open lance le modèle de
langage génératif gpt1 donc
c'était déjà en cours de recherche et
puis il lance du coup le premier modèle
général
euh novembre 2019 il open lance
gpt2 donc vous voyez en l'espace de
allez donc on a 2018 2019 2020 en
l'espace de 2 ans euh ils ont ils sont
accé ils ils sont allés très vite dans
le dans le développement et dans du coup
la mise à disposition des modèles
génératifs du coup de type GPT c'est une
architecture Transformers bien
particulière donc ils ont fait le 1 le 2
et du coup le gros succès finalement le
3 finalement qui qui est venu avec des
des compétences et des capacités assez
assez impressionnantes donc il publie il
publie gpt3 en 2020 et en octobre 2022
on a le lancement initial du framework
longchain par Harrison Chase et euh en
couche euh en couche Cola donc il sont
un peu les deux qui ont initié
finalement la création de ce framework
qui est totalement open source et donc
on peut le voir que par la suite après
2022 on arrive à 2023 avec la la levée
donc en avril 2023 longchain a levé 20
millions de dollars de financement et
une valorisation d'au moins de 200
millions de dollars donc voilà la
valorisation ça sert un peu à montrer
que euh c'est un framework c'est un
outil qui va beaucoup qui pèse déjà
beaucoup dans dans le développement
d'application qui utilisent le li
générative mais qui va continuer
finalement de grusir parce que
génalement quand on va investir des
capitaux l'objectif c'est de voilà c'est
de toucher à plein de use cas différents
et et voilà de créer des des
applications assez intéressantes donc
depuis 2022 Lang Chen a rapidement gagné
en popularité avec des contributions de
centaines de contributeurs sur GitHub
donc si vous allez sur le site de GitHub
de longchain vous allez voir énormément
de
contributions des discussions
euh également sur Twitter si vous allez
sur Twitter vous allez également voir
que c'est un framework c'est une
technologie qui est assez
assz assz répandu et une activité animée
sur le serveur discord également qui est
un petit peu l'équivalent on va dire
open finalement de slack sur lequel vous
avez également beaucoup de développeurs
qui lancent souvent leur projet open
source euh et qui ont les on va dire les
premiers échanges avec les utilisateurs
sur sur
discord donc une fois qu'on a vu ça donc
on a un peu vu d'où ça venait donc ça
c'est ça le développement de l'chin
s'inscrit dans la continuité finalement
des développement des des modèles donc
je pense qu'ils ont tout de suite vu
avec l' accélération du de la mise à
disposition de modèle dia générative ils
ont tout de suite le potentiel de tout
de suite créer des applications de de
tout de suite permettre la création
d'applications qui vont se baser
justement sur ce qu'on appelle les LLM
donc ou large language
model alors très rapidement parce que du
coup je vais supposer que vous êtes un
peu déjà familier avec ça mais je vais
donner quelques bases pour que voilà
ceux et celles qui sont pas vraiment
habitués vous puissiez savoir un peu de
quoi on
parle donc un modèle de langage c'est un
modèle probabiliste de langue naturelle
générant des probabilités de mots donc
ça veut dire quoi ça veut dire
que un modèle dit un modèle LLM donc un
large language model ne réfléchit pas
c'est pas un cerveau tel que on l'a dans
dans dans dans nos têtes c'est un outil
mathématique qui va du coup calculer les
probabilités d'occurrence de mots et
pour pouvoir générer cette probabilité
d'occurrence démo finalement euh ces
modèles ont été on a fait ce qu'on
appelle un entraînement sur énormément
de documents donc sur une grosse partie
Wikipédia sur une grosse partie de blog
et de tout un tas de d'informations sur
internet donc on parle souvent de
plusieurs plusieurs trabyytes de données
qui ont été sur lesquelles les modèles
ont été entraînés et l'objectif
lorsqu'on va prendre un modèle et qu'on
va l'entraîner sur une telle quantité de
données c'est pour lui permettre
d'apprendre euh de de déjà de de de
d'apprendre un peu la structure du
langage ça veut dire que le modèle va
s'habituer à voir des mots qui
apparaissent les uns à la suite des
autres et qui ont qui partagent un
certain contexte et il va se baser
finalement sur cette probabilité
d'occurrence des mots dans une séquence
pour pouvoir à partir d'une séquence
d'entrée qu'on va lui donner en entrée
générer une une séquence en sortie mais
encore une fois sur la base du coup de
la probabilité des mots qui vont
probablement arriver par la suite donc
les LLM sont des modèles euh de grande
taille encore une fois pour deux raisons
parce qu'ils ont été entraînés sur
énormément de jeux de données mais aussi
parce que ce sont des modèles qui ont
énormément de paramètres qui qui leur
ont permis justement d'apprendre du coup
on va dire la structure d'e d'un langage
bien particulier ou la la la structure
finalement d'un d'un texte sur laquel il
a été entraîné donc ils sont après
entraînés euh sur des données non au
début on va dire semi-étiqueté ça veut
dire qu'on va il va avoir une phase où
on va un peu guider le modèle dans ce
qu'il est censé donner en sortie et une
phase dans lequel on va un peu laisser
le modèle lui-même essayer de comprendre
la structure des données sur lesquell on
on l'entraîne pour l'utiliser plus tard
pour l'adapter c'est un peu ce que j'ai
essayé de schématiser ici ça veut dire
quoi ça veut dire que en le le la
création d'un modèle de type GPT euh la
création d'unun d'un service de Ty chat
GPT tel qu'on peut l' voir chez open
c'est fait c'est souvent fait en deux
étapes la première étape on va créer ce
qu'on appelle du coup un base model un
modèle de base ou un modèle fondateur
vous allez souvent retrouver ces terme
là on entraîne ce modèle fondateur il
est entraîné uniquement sur énormément
de quantités de texte pour comprendre et
décrypter la structure euh d'un texte et
par la suite ce modèle est ensuite
adapté à des use cas bien spécifiques
comme la réponse à des questions
réponses
comme la génération de tout un tas
d'informations comme l'analyse de
sentiments comme à tout un tas d'autres
tâches sur lesquel on peut bien vouloir
adapter un modèle de ce type donc il y a
bien il y a deux phases il y a la phase
de création du modèle de base et ensuite
il y a la phase vous allez souvent
entendre parler de F tuning de du modèle
de base donc une d'adaptation de ce
modèle de base à des Keys bien
spécifiques donc les LLM de base ou
foundational model souent entendre ça
dans la littérature sont form sur un
ensemble massif de données donc il
peuvent capturer la syntaxe la
sémantique inhérente à la langue humaine
et c'est pour ça justement que quand
vous vous entrez en en texte euh il a
déjà répéré la structure et il a déjà un
peu encrypter on va dire la sémantique
de ce que vous voulez dire et c'est
comme ça qui vous génère en fait quelque
chose qui va dans le sens de ce que vous
voulez par contre je vous disais dans la
deuxième étape donc on a une phase
d'entraînement où on va permettre au
modèle d'apprendre un tout un tas donc
on on va dire la à l'issue de
l'entraînement on va avoir quelqu'un on
va avoir un une un outil qui va avoir
des connaissances générales donc si je
prends l'analogie c'est comme vous vous
avez fini vous venez de valider je sais
pas votre master votre agrégation votre
thèse vous avez une connaissance on va
dire plutôt générale sur le sujet ou sur
les sujets sur lesquels vous avez
travaillé et maintenant quand vous
commencez à travailler dans une
entreprise bien entendu C entreprise là
va avoir ses propres processus et vous
allez donc être en quelque sorte adapté
au processus dans cette entreprise donc
on va comme si réorienter toutes vos
connaissances de base pour générer la
valeur dans un contexte bien spécifique
et c'est ce qu'on appelle du coup
l'adaptation don je parlais euh
précédemment donc il y a deux façons
d'adapter un modèle première façon c'est
ce qu'on appelle le fine tuning à
proprement parler qui est on va prendre
le modèle euh tel qu'on l'a entraîner et
on va euh on va continuer un petit peu
son entraînement sur des jeux de données
qui ont été étiquetés pour les tâches
sur lesquelles on veut qu'il soit un
spécialiste c'est souvent ce ce qu'on va
ce à quoi on va faire référence quand on
va parler de fine tuning et sinon
l'autre technique pour pouvoir adapter
un modèle un peu de base pour sortir
quelque chose qui va nous correspondre
c'est tout simplement via des techniques
de prompt engineering c'està-dire que
vous allez via le Prom utiliser les
connaissances générales pour essayer de
guider le mod modèle vers une sortie
bien spécifique et donc ça nous permet
de partir
euh euh bien sur la partie prompt
engineering du coup pour vous rappeler
rapidement ce que c'est comme ça on va
partir avec toutes les bases euh donc le
prompt engineering c'est un processus
utilisé pour structurer un texte compris
par un LLM en langage naturel pour
définir une tâche spécifique donc c'est
un processus pendant lequel vous allez
designer une une instruction qui va être
donnée en entrée au modèle et ce modèle
va devoir du coup euh sur la base de
l'instruction que vous lui avez fourni
essayer de donner quelque chose qui vous
correspond donc là j'ai grosso modo un
petit peu généré le processus si on peut
le générer comme ça le dans le prompt
engineering je vais pas insister
là-dessus parce qu'il y a déjà pas mal
de de ressources sur Internet et de de
webinars sur lesquels on a parlé de
prompt engineering donc il y a pas mal
de techniques pour essayer de structurer
le texte qu'on donne en entrée au au
modèle mais disons que ici c'était juste
pour dire on va donner on va structurer
ce ce cette sorte de message guide cette
sorte de d'instruction en lui donnant en
donnant quelques informations donc le
contexte la tonalité tout un tas de
choses et on va fournir finalement cette
cette instruction un peu
designé au modèle et c'est comme ça que
ce modèle va pouvoir s'adapter
finalement à la tâche à laquelle on on
veut qu'il
réponde donc le Pr inéering c'est c'est
un des moyens finalement d'adapter la
sortie ou la la réponse du modèle c'est
un processus itératif euh donc c'est
très difficile voir quasi impossible de
euh d'un seul coup euh écrire un prompt
qui vous donne exactement la réponse que
vous voulez généralement on va pas
fonctionner comme ça on va plutôt
essayer de partir de quelque chose de
très général et progressivement
converger vers finalement la sortie
qu'onut qu'on veut mettre en FA
et enfin le ce qu'on va ce qu'on donne
au modèle finalement c'est une
instruction qui est écrit en langage
naturel donc c'est comme si vous es en
train de typiquement de parler à
quelqu'un vous allez écrire un petit peu
ce qui vous parle ce dont vous avez
envie et le modèle finalement va vous on
l'espère vous donner une réponse
finalement qui va vous
arranger maintenant on a vu prompt
engineering on a vu LLM donc ce sont des
importante le LLM va nous per un peu le
cerveau qui va euh essayer de de
d'utiliser le texte pour pouvoir générer
quelque chose d'inédit et de nouveau et
on va avoir le prompt si on utilise pas
le F training on va avoir le prompt
engineering qui va guider le modèle
adapter le modèle à une situation bien
spécifique maintenant quand si on prend
tout ça et qu'on l'insère dans un
contexte de software engineering dans un
contexte de software engineering on va
vouloir créer une application qui fait
qui fait quelque chose
et dans le cadre du comp du du software
engéering on va pas juste avoir besoin
du LLM on va avoir besoin de ressources
on va avoir besoin typiquement de
données qu'on a en interne on va avoir
besoin de tout un tas d'outils
finalement qu'il faut connecter mettre
en commun pour créer un seul système qui
va délivrer une seule valeur et c'est
dans ce contexte là que longchain va
s'inscrire en fait langchain va
finalement être euh comme vous voyez sur
l'image une pièce centrale qui va
permettre de se connecter à plusieurs
modèles plusieurs types de modèles donc
on va voir l'an n'est pas seulement on
peut pas seulement le l'utiliser avec
openir on peut l'utiliser avec avec les
modèles Open Source Lama on peut
l'utiliser avec Mistral on peut
l'utiliser avec tout un tas de de de de
LLM également dans longchain il va il va
offrir des outils qui vont permettre
finalement de structurer notre prompt
engineering de les utiliser plus ou
moins facilement et en même temps on va
l' va également per permettre de se
connecter à différents outils ou données
dont on aurait besoin dans le cadre de
cette application là pour que ça
fonctionne donc pour simplifier le
développement et l'intégration des
différentes briques technologiques
l'utilisation de l' chainîn dans les
dans la dans dans le dans la stack
technologique devient incontournable
parce que si on enlève l' chain au
milieu ici potentiellement on va se
retrouver à avoir à connecter pas mal
d'outils open source et souvent
peut-être non open source pour essayer
de créer un seul système et donc c'est
là où c'est la force de lchain c'est
vraiment d'être centrale dans une sorte
de pièce maîtresse qui va un peu être un
peu le routeur entre guillemets de tout
un tas d'outils pour créer une
application qui va utiliser les
LLM et donc on en vient à le le focus de
cette de cette de ce data atelier qui
est du coup l'en et donc au planning on
va voir du coup qu'est-ce que ce que
c'est longchain pourquoi utiliser
longchain euh les composants clés avec
lesquels on va jouer qu sur lesquels on
va on va on va on va compter lorsqu'on
va créer une application sur la base de
longchain LLM et par la suite je vous
ferai plus enfin normalement j'ai déjà
exécuté le code je vous montrerai le
code je vous expliquerai comment ça
fonctionne euh voilà tout simplement
pour ne pas perdre du temps sinon ça
aurait pris quelques quelqu
temps alors je regarde vite fait
euh taxi j'ai pas de
question alors je vois la question on
peut faire le parallèle avec le entre
avec le fine tuning du modèle de
classification d'image oui on peut faire
le parallèle donc pour ceux qui
connaissent un petit peu on va dire la
modélisation typiquement deep learning
euh typiquement on peut prendre un
modèle de Deep learning pour pouvoir
réalis faire une modélisation de class
classification et la plupart du temps ce
qui se fait c'est que il y a déjà des
modèles qui existent donc on va prendre
un modèle qui existe déjà c'est-à-dire
qu'il y a déjà des paramètres qui ont
été entraîné et on va F tuner ce modèle
donc on va adapter ce modèle à la tâche
de classification à laquelle on veut
répondre c'est la même chose avec un LLM
on on part d'un d'un d'un modèle de base
finalement qui qui a été pré-entraîné et
on va l'adapter en utilisant des données
qui sont étiquetées finalement à une
tâche bien spécifique donc c'est
exactement les le le même le même
processus et donc c'est parti sur euh
qu'est-ce que l'enquène et un peu
qu'est-ce que qu'est-ce que l'ench nous
donne comme comme va nous apporter comme
comme force en donc si on résume
normalement j'en ai un petit peu parler
mais si on résume qu'est-ce que ça va
donner premièrement longchainîn est ass
c'est une interface
versatile donc déjà à la base longchain
c'est bien entendu un framework de
programmation il a été créé en python
mais il existe également en Javascript
et typescript mais on va dire
aujourd'hui c'est un peu les trois
langages sur lesquels longchain est
disponible euh ce que longchain va
offrir c'est un c'est une sorte d'outil
ou d'environnement de développement
centralisé qui va permettre de connecter
tout un tas d'outils assez facilement et
assez simplement et ça va facilement ça
va simplifier la vie du développeur
parce que euh beaucoup de d'actions dans
le développement euh c'est consiste à
connecter des pièces et des outils entre
eux pour essayer de les faire
fonctionner lorsqu'on enchaîne comme ça
3 4 C outils ça ça devient vite une
usine à gaz on a besoin finalement le la
plupart du temps ce que les développeurs
vont faire c'est de se créer en interne
des sortes de de de classe ou de
fonctions qui vont ass qui vont
permettre de simplifier leur code et
leur simplifier la vie et il a travaillé
un petit peu en Amond pour ça pour du
coup de base créer des fonctions et des
classes qui sont et des fonctions qui
sont réutilisées tout simplement dans le
cadre finalement de la création
d'application pour connecter pas mal
d'outils
[Musique]
euh donc l'chain est une interface du
coup polyvalente il a la possibilité de
se connecter comme je disais à plusieurs
modèles plusieurs LLM complètement
différent euh il fournit une interface
standard pour interagir avec de nombreux
LLM différents et également avec de
nombreux outils complètement différents
donc c'est un peu vraiment la force
qu'il apporte l'autre aspect ça va être
la modularité euh donc l'approche
modulaire de l'ANEN permet au
développeur de comparer dynamiquement
différents Prom donc dans avec lanchen
c'est assez simple finalement d'avoir au
sein de son code d'utiliser à la fois
pour la même application de designer
d'utiliser plusieurs prompts pour
répondre à des à des situations bien
particulières et asse de manière assez
flexible parce que si on utiliserait si
on utilisait pas long chain on sera
obligé finalement d'avoir
potentiellement des des des prompt un
peu à la rallonge avec des des
situations avec des descriptions de
assez précises de différentses eu sces
pour essayer de permettre au modèle de
de s'adapter mais finalement avec l' ch
on va un peu s'affranchir un peu de la
complexité de créer le prompt qui fait
pas mal de choses en créant plusieurs
petits Prom qu'on va combiner de manière
un peu assez
intelligente donc ce au sein de l'an ch
il va avoir plusieurs
composants qu'on va soit appeler segment
ou chaî euh qui sont conçus pour
effectuer des fonctions spécifiques donc
ils ont vraiment conçu longchin euh avec
T avec en tête le software engineering
et particulièrement le le le le concept
de separation of concern c'est-à-dire on
va vraiment avoir un outil qui est très
bon on va avoir des objets des
composants spécialisés pour des actions
bien spécifiques et on va donc les
combiner en utilisant ce qu'on va
appeler du coup au sein de dans dans le
jargon longchainîn des chaînes euh les
composants sont exécutés à la chaîne
donc imaginons vous avez combiné
plusieurs outils vous allez créer donc
une chaîne et quand vous exécutez cette
chaîne les éléments de la chaîne vont
s'exécuter du coup les uns à la suite
des
autres donc cette approche facilite le
développement et permet une plus grande
flexibilité finalement dans le dans le
dans le développement finalement d'une
application parce que finalement on va
on va très bien pouvoir au sein du même
code déjà le code va doit pouvoir être
très lisible on va savoir exactement
quelle fait quelle quelle fonction ou
quel composant fait quoi et et via la
création des chaînes on va avoir une
très bonne visualisation de de de la de
l'enchaînement finalement de de de tout
ce qu'on est en train de
faire langcha enfin c'est une c'est une
bibliothèque python mais c'est également
une bibliothèque d'outils euh donc euh
d'outils de composants et d'interface
donc on voit qu'on on a la possibilité
de se connecter à des bases de données
on a la possibilité d'incorporer au sein
de la programmation avec longchainîn des
promts plusieurs promp on a la
possibilité d'appeler plusieurs modèles
et c'est on a la possibilité de combiner
finalement tous ces outils au sein de
chaîne et on a la possibilité de créer
ce qu'on va appeler des agents je je
rentrer dans le détail un peu plus tard
mais on a la possibilité de créer des
agents assez simplement euh avec avec
l'ench euh donc les composants sont des
blocs de construction modulaire qui
combiné forme de des chaînes construites
pour réaliser des tâches spécifiques
donc ça on va tout simplement essayer de
combiner des outils qui font très bien
ce qui sa faire de manière spécialisée
dans un contexte euh un peu plus un peu
plus
général maintenant pourquoi pourquoi euh
pourquoi utiliser Lang chain donc ça
céit un peu ce que ça va apporter et
maintenant pourquoi euh on va l'utiliser
pourquoi ça va être utile donc j'en ai
listé j'ai listé quatre principaux point
il y en a plein mais j'en a listé
vraiment les quatre qui moi m'ont
beaucoup parlé et euh donc l'antienne en
gros ça permet ça va permettre de
résoudre ça va faciliter la vie du
développeur dans dans dans bien des cas
et on va partir du coup sur sur chacun
des points pour essayer de voir un peu
euh ce que ça
donne
premièrement Lang va faciliter
l'intégration euh donc je vous ai montré
tout à l'heure vous aviez vous avez
plein d'outils tout autour et
généralement quand on va créer une
application imaginons on va on veut
créer on voudrait créer une application
qui va lire des PDF et faire des résumés
et puis en faire une
synthèse pour pour pour quelqu'un
pour ou pour une organisation euh et
bien on vous voyez que dans le service
on a la on a le besoin d'aller se
connecter à une source de données de la
lire de de la de la de la présenter
finalement au au modèle pour pour
pouvoir l'utiliser pour pouvoir faire
une synthèse et donc l'entien va
permettre finalement de facilement
intégrer à la fois plusieurs modèles
mais à la fois plusieurs outils avec des
fonctions qui sont natives de l'anchain
et comme l'anchain bon bien entendu il y
a des fonctions de base python qu'on est
capable de venir greffer à l' Chen mais
déjà les fonctions natives de l' Chen
qu'il propose sont déjà assez puissantes
pour pouvoir se connecter à tout un tas
euh d'outils euh qui
existent donc l' va proposer
des intégrations externes transparentes
et des implémentations de bout en bout
qui vont permettre au au développeur
finalement de de se connecter à des
sources de données ou à des outils qui
vont permettre finalement l'application
de fonctionner dans un cadre dans un
cadre souité
ok deè point la gestion des
pr alors on a vu que finalement pour
pouvoir adapter un modèle un LLM
j'entends à une situation bien
spécifique on a deux voix on a la voix
du fine tuning qui est un peu plus
technique qui va demander beaucoup de
puissance de calcul si on a les moyens
mais sinon en généralement dans les cas
des projets qui vont utiliser les LLM on
va commencer par adapter via le Pr
engineering et donc l' va permettre
assez simplement assez facilement
d'avoir des outils qui vont euh
permettre aussi d'avoir une comme une
sorte de bibliothèque de prompt qu'on va
appeler au bon moment pour faire la
bonne action donc c'est assez c'est
assez lisible dans le code c'est assez
simple de à à mettre en place euh et on
peut on peut s'affranchir un peu d'avoir
comme je disais le le prompt qui est euh
qui qui a tous les éléments et qui est
complex on on peut avoir plusieurs
prompts qui sont appelés à plusieurs
endroits et qui sont euh exécutés ou
appelés de manière séquentielle via des
chaînes pour réaliser quelqu quelque
chose finalement d'assez
complexe
euh donc l'enchen va rationaliser du
coup les étapes intermédiaire pour pour
le développement des applications euh en
proposant finalement ces outils là qui
vont permettre euh de qui va permettre
de l'intégration finalement et qui va va
également permettre de combiner
d'utiliser plusieurs prompts et de gérer
les prompts assez simplement euh
typiquement on peut se faire une
bibliothèque de prompt et aller piocher
dedans et l'intégrer dans un dans un
dans une dans un développement logiciel
pour pouvoir faire quelque chose d'assez
euh d'assez
puissant 3è aspect la visualisation et
l'expérimentation donc le déboggage est
simplifié avec longchainîn qui intègre
du coup des outils pour rendre
transparents les expérimentations euh
parce que quand on développe bien
entendu euh la plupart du temps souvent
si vous avez utiliser déjà la librairie
open ai euh vous exécutez votre script
et euh vous attendez et vous vous avez
un retour euh souvent en tant que
développeur on veut savoir ce qui s'est
passé entre au moment où on a exécuté le
script et le moment où on a eu une
réponse et donc l'chin va offrir du coup
nativement des fonctions de déboggage
qui vont permettre de d'afficher les
étapes intermédiaires toutes les étapes
intermédiaires par lequel en fait passe
le traitement et de voir ainsi où où ça
coince euh quelle étape prend le plus de
temps et pouvoir ainsi rationaliser sur
sur l'enchaînement qu'on essaie
d'exécuter donc il a des il a pas mal
d'outils euh la plupart du temps il a un
paramètre qu'il faut tout simplement
mettre à trou lorsqu'on exécute une
fonction longchain et il vous affiche en
fait tout l'historique finalement de ce
qu'il est en train de faire et ça permet
de vérifier que le le que ça se déroule
très bien et que surtout euh ça ne ça ne
diverge pas et que voilà on va pouvoir
aller dans le détail de est-ce que ça a
marché est-ce que ça ne marche pas et
pouvoir ainsi optimiser finalement
peut-être le traitement qui a
lieu
dernier point sur pourquoi
longchain donc longchain comprend des
composants qui permettent au au LLM
finalement d'accéder à de N de nouvell
sources de données sans nécessiter un
nouvel entraînement donc généralement
c'est un peu ce qu'on va appeler la
technique de rag donc retrieval
augmented generation donc plutôt que
d'adapter notre modèle à des données
spécifiques pour essayer de répondre de
manière un peu spécialisé sur une tâche
vous pouvez très bien avoir de la
documentation au sein de vos entreprises
ou ou même pour vous-même
et permettre finalement en utilisant
l'chin et un LLM d'utiliser votre
documentation pour pouvoir formuler des
réponses donc bien entendu on va
combiner avec le proming bien entendu
mais on a également pour pouvoir le
faire de manière efficiente et efficace
on a besoin que l'enenne puisse se
connecter et puisse retrouver pas le
document en entier mais peut-être le la
phrase la phrase dans le document qui
nous permet de répondre et donc avec il
offre des fonctions natives qui le font
c'estàdire qui vont permettre finalement
d'aller répérer dans un corpus le
fragment finalement qui va qui va qui va
va qui va qui va être pertinent pour la
réponse pour la réponse qu'on attend et
on va exécuter et et par la suite il va
avoir l'exécution du LLM qui va utiliser
ça en tant que contexte pour répondre de
manière personnalisée à la demande qui a
été
faite
donc c'est un donc vous voyez c'est
c'est un c'est un framework assez assez
puissant assez assez flexible surtout et
qui permet d'avoir de la visibilité qui
permet de de de vraiment développer
assez simplement euh des adresser des
cas qui peuvent être assez compliqués et
maintenant pour pouvoir faire tout ça je
vous disais que l'chain utilise ce qu'on
appelle des composants donc des
composants qui sont auquels c'est un peu
comme des des familles de fonction euh
auxquelles vous allez faire appel pour
travailler donc on va aller dans le dans
le détail pour pouvoir présenter les
principaux mais just rapidement vous
allez avoir les modèles euh qui va vous
avez euh ce qui ce qui est dans
l'ancienne appelé model qui est une
sorte d'interface qui va se permettre de
se connecter à un LLM euh et de pouvoir
interagir avec ce LLM donc c'est une
sorte d'API qui se connecte à un LLM et
qui prend le Prom en entrée et qui euh
fait sol cite le modèle dans un contexte
bien particulier euh on a des des des
connecteurs on a tout un tas de
connecteurs euh dans langchin qui
permettre de se connecter à à des
diverses bases de données donc vous
pouvez vous connecter à postg SQL vous
pouvez vous connecter à squ Lite vous
pouvez vous conncter à tout un tas de
base de données pour pouvoir utiliser
les données qui se trouvve dans ces
bases de données euh vous avez des
chaînes euh donc euh des chaînes qui
construisent les séquences d'appel donc
on va rassembler au sein d'une chaîne
plusieurs outils qui vont s'exécuter de
manière séquentielle pour réaliser
quelque chose et très rapidement euh si
on a les agents don je vous parler euh
qui permettent de choisir qui permettent
au au aux modèles qui permettent aux
chaînes pardon qui permettent aux
chaînes qu'on va construire avec les LLM
à l'intérieur de choisir les outils à
utiliser en fonction de directive de
haut niveau donc c'est un peu comme
comme euh une fonction qui n'existe qui
n'exécute pas bêtement qui qui n'est qui
ne fonctionne pas bêtement sur le
principe de input output donc je prends
un truc en entrée je donne un truc en
sortie mais sur la base d'un input euh
l'outil va avoir de manière autonome à
sélectionner quel est le meilleur outil
à sa disposition qu'il faut utiliser
pour pouvoir répondre à la question il
va choisir l'outil il va l'exécuter il
va analyser le résultat de la sortie de
cet outil avant de donner une réponse
donc c'est un peu comme un mini voilà
mini on dire un mini cerveau qui ne ne
donne pas juste un output mais essaie de
donner l'output avec en utilisant le
meilleur outil de la meilleure manière
possible on a également la la mémoire
les les les les composants de mémoire
qui permettent finalement de gérer la
mémoire tout simplement euh quand on
utilise les LLM parce que alors si vous
utilisez chat GPT c'est la mémoire elle
est déjà gérée via le service donc vous
savez quand vous entrez un promt au fur
et à mesure que vous continuez vos
prompt vous conservez la mémoire de vos
des des des input précédents mais si ça
vous arrive d'utiliser euh de de faire
appel juste à l'API au modèle par
exemple gpt4 euh si vous ne conservez
pas l'historique entre guillemets de
tous les interactions que vous avez avec
gpt4 vous allez vous rendre compte que
il ne garde pas la mémoire en fait il ne
garde pas l'historique de tout ce que
vous avez échanger avec lui il va tout
simplement répondre à une question de
manière unitaire et donc langchen
intègre des composants de mémoire pour
garder en mémoire finalement des
éléments
d'historiques on a des callback qui sont
euh du coup des des des des rappels qui
enregistrent et diffusent euh des étapes
intermédiaires d'une chaîne donc au sein
d'une chaîne vous avez vu qu'on enchaîne
plusieurs composants ou plusieurs
fonctions les unes à la suite des autres
les callback vont enregistrer finalement
les les les résultats intermédiaire et
vous allez pouvoir vous en servir si
potentiellement dans dans dans le code
si jamais si jamais c'est nécessaire
donc ça c'était rapidement un peu grosso
modo à quoi servent les différents les
différentes composantes et donc on va
essayer de aller un peu sur chacun pour
donner un peu de spécificité même si
j'en ai déjà donné euh doné pas
mal donc on commence avec les modèles
donc je vous disais c'est une sorte
d'interface au sein de langchain qui va
permettre d'interagir avec euh avec les
les LLM en règle générale euh au sein de
l' au sein de l'chain finalement on a
trois types de modèles ou trois types
d'APS ou trois types d'interfaces de
modèle on va raisonner comme ça on a les
LLM donc typiquement c'est euh faire
appel à un modèle de type gpt4 ou GPT
3.5 ou euh Mistral ou ce que vous voulez
donc c'est il fournit une interface
standardisée euh qui permet euh d'
d'interagir avec le lélément question on
a les modèles de conversation donc c'est
des modèles c'est des API un peu
particulières qui ont une structure un
peu différente des LLM euh de base qui
sont optimisées dans le contexte euh où
on veut créer un chatbot par exemple où
on sait qu'on va il va y avoir une
interaction euh donc ça offre du coup
une approche plus structurée qui
permettre des qui est plutôt orienté
vers des conversations interactives avec
des
utilisateurs on append également des
modèles d'imbedding ou des des modèles
d'intégration qui sont utilisés dans le
cadre de ce qu'on appelle le rag don je
vous parlais précédemment qui est du
coup lorsqu'on va vouloir utiliser des
documents pour pouvoir répondre de
manière pertinente à une question et
donc du coup on utilise ce qu'on a
appelle des modèles d'embedding les
modèles d'embedding qu'est-ce qu'ils
font pour aller très rapidement dessus
c'est ils vont prendre des fragments de
documents et ils vont euh les convertir
en équivalent numérique il va on va
représenter un document sous forme d'une
succession de vecteurs donc des des des
suites de nombres et la particularité de
ces vecteurs là c'est que euh c'est une
sorte d'encodage ou de représentation à
la fois de la phrase ou du fragment de
phrase et de la sémantique qui est dans
la phrase
et donc du coup c'est plus facile
pourquoi on le fait pourquoi on
convertit au préalable un texte en
équivalent numérique c'est parce que
faire des recherches sur des vecteurs ou
comparer des vecteurs entre eux est
beaucoup beaucoup plus simple d'un point
de vue mathématique que comparer les
mots les phrases mot tabour en fait donc
on les compare en terme de vecteur on
compare les les vecteurs et c'est de
cette manière qu'on est capable de
savoir que dans tel document il y a tel
fragment qui va parler de telle notion
parce que dans sa représentation
numérique qui va y avoir la sémantique
finalement de la notionon
cherche donc il y a ces trois types de
modèles là au sein de long chain bien
entendu au sein de Lang il y a pas les
modèles en tant que tel ce sont comme je
dis des
interfaces qui vont elles interagir de
manière on va dire optimiser avec les
vrais modèles les vrais modèles
d'bedding ou de chat ou de ou de LLM
bien entendu c'est c'est ça va être des
modèles de type gpt4 ça va être des
modèles qui sont mis à disposition soit
en open source soit par euh du coup les
gros que l'on connaît comme Microsoft ou
comme comme Google et
cetera
[Musique]
euh donc les LLM juste pour aller
rapidement encore là-dessus euh donc
vont prendre donc ce sont ce type de
modèle euh la leur spécificité c'est
qu'ils euh prennent une chaîne de texte
en entrée et renvoie une chaîne de texte
en sortie donc l'exemple c'est que vous
fournissez euh une question par exemple
exemple quelle est la capitale de la
France et et le modèle va vous répondre
Paris tout simplement donc input output
le modèle analyse ce que vous dites et
puis en fonction de la base de
connaissance et des données bien entendu
sur lesquelles il a été entraîné il va
fournir une une
réponse faut savoir que je vous disais
que lchin a la possibilité d'interagir
avec plusieurs modèles donc actuellement
je pense que lchin intègre un peu
environ 26 LLM différents il a pas mal
de de fourniss ser de modèles assez
différents don il y en a 26 au sein de
l' Chen et chaque jour vu que c'est un
outil open source avveit une
contribution open source il y a de plus
en plus finalement de d'intégration
finalement à des différents outils ou
modèles qui sont qui sont mis en
place euh les chat les modèles de type
chat euh eux le leur spécificité c'est
qu'ils prennent une liste de messages en
entrée et renvoient un message donc la
liste de messages c'est par exemple la
dernière question que vous avez posée et
tout l'historique et c'est comme ça que
le modèle est capable de savoir un
d'avoir tout le contexte pour répondre à
une
question donc ils sont conçus pour dans
les situations un peu conversationnelles
pour pouvoir interagir de manière fluide
avec un
utilisateur donc pour simplifier pour
résumer du coup les les les LLM euh ou
l'interface LLM de long chain euh est
beaucoup plus simple et prend du coup
une seule chaîne en en entrée tandis que
les chats vont prendre une série euh de
messages du coup donnés en
entrée alors peut-être que je vais juste
jetter un coup d'œil parce que j'ai pas
forcément le chat en face de moi euh
pour voir si j'ai des
questions alors si j'ai bien compris
l'anken a les mêmes objectifs que
autogen un petit peu euh l'anken a un
petit peu les mêmes objectif euh à mon
sens autogen il est beaucoup plus
orienté vers la création d'agents on va
en parler par la suite euh mais oui vous
avez pas mal de fonctions de de de
points qui se recoupent avec
autogen euh donc LLM c'est comme tens of
flow et pythot sont des framework
exactement longchain c'est un framework
donc c'est pas simplement une simple
librairie c'est une librairie qui vient
avec pas mal d'outils qui permettent de
développer une application de bout en
bout en utilisant que des fonction de
l'anchain donc c'est c'est vraiment un
framewk
euh h donc je vous ai parlé du
rag alors est-ce que longchain peut
gérer la mise à jour de modèles via des
entraînements avec de nouvelles données
oou est-ce que on doit travailler avec
euh des modèles figés alors l'enchenne
euh de ce que je sais euh là tout de
suite ne ne c'est pas l'ANEN qui va
faaire l'entraînement du modèle euh
l'anchen va ça va permettre facilement
d'intégrer plusieurs outils entre eux
assez simplement y compris les modèles
la plupart du temps lorsque vous allez
vouloir F tuner euh des modèles soit
vous allez utiliser euh euh la open ai
parce que open open propose également
euh une possibilité de fine tuning euh
les les différents cloud providers euh
intègrent désormais également euh des
possibilités de fine tuning de modèles
au sein de leurs différents écosystèmes
donc Azure va avoir dans dans Azure ml
la possibilité de de de fine tuner des
modèles je crois que AWS ils ont ils ont
sorti récemment AWS bedwck qui permet
qui permettrait de faire la même chose
mais sinon c'est possible de le faire
via sage Maker également euh je ne doute
pas que vertex avec avec avec Google
c'est également le faire là-dessus euh
il y a pas de souci mais si jamais vous
êtes vous voulez le faire euh sans
forcément passer par un Cloud provider
vous pouvez également récupérer un
modèle euh sur hugging face tout
simplement vous récupérez un modèle
huging face et huggingf propose des
fonctions qui permettent de faire du
fine tuning donc c'est c'est quand vous
quand vous n'avez pas quand votre use
case
ne nécessite pas une euh une on va dire
un modèle euh de grande taille type gpt4
parce qu'il y a il y a ce qu'on appelle
les tiny LLM qui sont qui font qui font
quelques méga et qui sont euh optimisés
plus pour des tâches vraiment très
fonctionnel très très spécifique comme
peut-être je sais pas la détection de de
de sentiment et vous pouvez très bien
fine tuner ce type de modèle là euh en
local si vous avez des GPU mais comme je
vous disais funer un modèle nécessite
d'avoir de la puissance des calculs
c'est pour ça que pour l'instant il y a
que les les cloud providers entre
guillemets qui sont un peu en
avant-garde là-dessus mais si vous avez
une infrastructure avec des GPU euh vous
pouvez très bien même si vous avez un
abonnement Colab pro euh vous avez la
possibilité de F tuner un modèle euh
assez simplement mais disons qu'il y a
d'autres librairies qui vont qui sont
plutôt optimisé pour le fine tuning
euh plutôt que plutôt que l'chîn pour
l'instant peut-être qu'ils vont
l'inclure mais pour
l'instant
ok donc on continue avec le la prochaine
composante composant qui est du coup le
prompt ça vous connaissez les prompt en
règle générale donc le prompt c'est le
point d'entrée qui permet d'interagir
avec un
modèle langchain comprend du coup des
modèles de Prom donc quand par modèle de
Prom c'est qu' il va juste vous
permettre de structurer votre Prom de
manière assez simplifié bien entendu
toutes les techniques de prompt
engineering vous allez pouvoir les
appliquer euh VI la formulation de votre
promp mais pour pouvoir incorporer ces
Prom de manière assez simplifiée donc il
va proposer plusieurs outils pour
pouvoir le faire donc là ici on en a TR
a l'outil principal finalement vous
allez utiliser c'est le Prom template de
qui va prendre qui va prendre une
instruction telle que vous l'avez
designé et qui va permettre de
d'associer à cette instruction plusieurs
choses comme par
exemple les sélecteurs d'exemple le
selecteur d'exemple il est
utilisé lorsque vous voulez faire du f
shot learing fot Prom utiliseer la
technique de F shot avec du promt
engeneering c'est quoi la technique du f
shot c'est que vous vous dans la
structuration de votre Prom vous voulez
donner des exemples au modèle pour qu'il
puisse s'en inspirer pour pouvoir vous
répondre comme vous vous attendez donc
c'est possible de d'assez simplement
structurer le promp de base et puis
de lui passer un petit peu comme en
paramètre en fait les exemples de
manière dynamique de manière à ce qu'il
puisse bien sortir s'adapter à la sortie
que vous voulez on va également pouvoir
associer au Prom template les les
analyseurs de sortie pour structurer un
peu la sortie du message parce que si
vous avez déjà un peu utilisé
euh l'API de de open
a quand vous exécutez un modèle euh
quand vous quand vous lu posez une
question au LLM vous avez en sorti une
chaîne de caractère et souvent dans le
dans un contexte de de software
engineering ce qui est intéressant c'est
pas d'avoir c'est pas d'avoir une chaîne
de caractère c'est d'avoir par exemple
un dictionnaire avec des clés valeurs
quand on sait qu'on va passer à une
autre composante qui elle va ne faire
que récupérer des valeurs pour pouvoir
déclencher un autre traitement et donc
pour pouvoir plutôt que d'avoir à à
prendre le texte et puis à reformer un
peu euh un peu avec du du python je sais
pas le dictionnaire nous intéresse
longchain propose des fonctions qui vont
non seulement interagir avec le LM mais
sortir le message le la sortie de
manière de manière semistructurée
typiquement dans un dans un fichier dans
un une structure de dictionnaire qui va
être utilisé potentiellement par une
autre composante pour pouvoir pouvoir
travailler donc les Prom template donc
ça va être les outils qui vont permettre
de guider le format de sortie et en
donnant les instructions bien entendu au
LLM euh les sélecteur d'exemples euh
donc c'est ce qu'on va je vous disais
c'est utilisé dans la technique du FUS
shot pour pouvoir sélectionner de
manière dynamique des exemples qu'on va
passer au LLM pour pouvoir l'orienter
dans la réponse et les analysas de
sortie bon je viens d'en parler c'est
euh du coup pour pouvoir euh euh
structurer la sortie de manière à ce
comment on l'attend en fait et derrière
on va avoir du coup ce prompt qui qui va
être euh on va dire composé par le
développeur et qui va être passé
finalement au modèle qui lui va utiliser
l'interface qui est adaptée pour le
service ou le produit que vous essayez
de sur lequel vous
travaillez autre composante la mémoire
enfin mémoire et index donc c'est deux
de de choses donc je je commence par les
indexes donc je vous disais langch va
permettre finalement d'interagir avec
des sources de données de vraies sources
de données que vous avez dans votre
entreprise que ce soit des documents ça
peut être n'importe quel type de
documents ça peut être des CSV ça peut
être du PDF ça peut être des bases de
données et donc pour interagir avec ces
sources de données là du coup
longchainîn utilise du coup des indexes
euh donc qui vont permettre c'est
finalement entre guillemets des des
interfaces qui vont pareil permettre de
se connecter au documents et d'aller
finalement être avoir la possibilité
finalement de le de l'utiliser assez
simplement assez simplement avec
l'écosystème
longchain donc au sein des indexes on va
avoir des chargeurs de documents on va
avoir des des séparate de textes euh les
séparateurs de textes je vous pour
revenir sur l'exemple que je vous ai
donné précédemment c'est que euh souvent
ce qui va être intéressant euh lorsqu'on
va vouloir utiliser un document pour
pouvoir répondre à une question ce qui
va être intéressant c'est plutôt que de
vous dire alors le document se trouve le
la réponse se trouve dans le document de
tel nom c'est plutôt de vous dire dans
le document de tel nom à telle page et à
tel niveau vous avez la réponse et pour
pouvoir faire ça euh ce qu'on fait c'est
qu'on on prend un document et on le
découpe et on va sur les différents
briques du coup les différents morceaux
de document finalement on va les
convertir finalement en ce dont je
parlais précédemment on va convertir en
équivalent numérique donc en EMB bedding
et c'est ça qui va être utilisé
finalement pour pouvoir répérer le le
fragment qui est intéressant et
langchain va pouvoir remonter à l'
document La la zone dans le document et
donner toutes ces informations en terme
de métadonnées pour pouvoir
éventuellement les utiler si on en a
besoin donc c'est l'utilisation des
séparateurs de texte bien entendu
longchain intgre également des indexes
qui vont permettre de se connecter à des
vexor store donc les vextor Store c'est
pour stocker les Edding dont je parlais
donc les représentations numérique des
des fragments de texte sur lesquels on
veut travailler et on a également des
des des fonctions qui vont permettre
d'aller récupérer l'informationement ce
qui appelé des retriever euh dans
longch
sinon on a la mémoire ça ve dire que
quand vous voulez gérer la mémoire quand
vous voulez garder une espèce
d'historique l'en a toute une panoplie
de fonction pour pouvoir gérer plus ou
moins
efficacement la mémoire donc vous pouvez
il y a plusieurs fonctions qui vont vous
permettre soit de conserver toute la
mémoire soit de conserver un résumé de
la mémoire et cetera et cetera donc ça
en fonction de votre use case en
fonction du service ou du produit que
vous êtes en train de construire c'est
vous qui allez un peu définir à quelle
quelle est la profondeur entre
guillemets de l'historique que je veux
garder si si tout ce qui est si tout ce
qui est intéressant pour vous c'est
juste garder un petit peu le résumé de
tous les échanges précédents pour
pouvoir continuer si si également
l'utilisateur veut continuer la
conversation vous pouvez juste garder
que le résumé et pas tout l'historique
parce que tout garder tout ça a aussi
une implication en terme de de puissance
de calcul bien
entendu h donc il existe de nombreuses
euh euh donc il y a on va voir ça un peu
dans la partie démo je vous montrerai un
petit peu quelques fonctions parce que
l' en a énormément pour pouvoir pour
pouvoir gérer la mémoire donc il y a la
mémoire en terme de de type de mémoire
il y a la mémoire tampon un peu qui donc
il s'agit de la la forme de mémoire la
plus simple elle elle permet de stocker
assez simplement du coup un tampon de
toute la de tous les messages donc c'est
un peu vous gardez tout vous avez la
mémoire récapitulative ce que je vous
disais c'est euh juste regarder euh un
récapitulatif finalement peut-être des
10 des 10 dernières 10 dernières
interactions euh et cetera il y a
également un troisième type de mémoire
dans au sein de lachim c'est la mémoire
sec tout sec ça fait la base du coup
d'un modèle ça veut dire que ce type de
mémoire utilise un modèle euh donc
typiquement un modèle de Deep learning
derrière pour apprendre une
représentation de l'historique de la
conversation ça veut dire que les les
deux approches précédentes c'est soit on
garde tout soit on garde d'un résumé
mais il y a une troisième approche qui
consiste à avoir un modèle qui va
apprendre la représentation de
l'historique de des échanges qu'on a eu
et ce modèle va permettre de restituer
un petit peu euh si jamais l'utilisateur
veut continuer la
conversation donc cette représentation
peut ensuite être utilisée pour
améliorer les performances du modèle euh
et
cetera le choix du type de mémoire à
utiliser bien sûr bien entendu dépend de
euh du de l'application auquelle vous
vous réservez votre votre solution euh
par exemple la mémoire tempon donc le
fait de tout garder euh c'est un bon
choix pour les applications où il est
important de garder une trace de l'ordre
exact des messages vous pouvez y avoir à
être y être contraint pour des raisons
réglementaires de vous voulez exactement
garder qu'est-ce qui s'est dit à quel
moment donc là vous n'avez pas le choix
vous allez tout garder vous êtes en
mesure de revenir sur cette historique
et de savoir exactement qui avait dit
quoi à quel moment et tandis que la
mémoire récapitulative c'est un bon
choix pour les applications où il est
plus important de se concentrer sur
l'essentiel donc c'est pas besoin de
garder tout on veut juste garder un peu
en substance ce qui s'est dit donc les
analogies c'est euh euh vous voulez
juste à la sortie d'une réunion avoir le
récapitulatif c'est la mémoire
récapitulative euh qui
estt autre élément les chaînes donc
les chaînes donc ce module langchîn vous
permet d'enchaîner plusieurs outils du
coup pour répondre à des situations bien
spécifiques pourquoi on va utiliser des
chaînes parce que parfois un seul appel
à un LLM ne va pas
suffire pour résoudre une tâche par
exemple on a besoin juste on a le LLM
lui il a juste besoin entre guillemets
de prendre tous les éléments pour
répondre mais il a besoin en plus
d'autres choses pour pouvoir répondre de
la manière la plus pertinente euh donc
du coup typiquement au sein donc là ce
que représente l'image c'est une
représentation assez d'une d'une chaîne
assez simple il en existe des chaînes
beaucoup plus complexes que celle-là au
sein d'une chaîne d'une chaîne on va
avoir le promt bien entendu qui va
guider adapter le LLM vers une sortie
bien spécifique et on va avoir du coup
le LLM qui va prendre le relais
avecette cette forme avec le le le
template de PR qui lui a été donné pour
pouvoir idéalement répondre donc ça
c'est vraiment une chaîne simple on
prend un prompt on le on le combine avec
l'appel d'un LLM et puis ensuite on
donne une
réponse donc les deux types courants de
chaîne donc c'est le LLM chain c'est
entre guillemets la fonction simple de
pour pour enchaîner pour créer des
chaînes avec lchain LLM chain prend
beaucoup de diff différents types de
paramètres on verra un petit peu ça par
la suite donc entre bon il prend bien
entendu le Prom template et il prend
aussi également le LLM donc lui donner
le LLM don il qu'il doit utiliser et
vous lui donnez finalement le
l'instruction pour qu'il puisse savoir
finalement quoi en faire vous avez
également des chaînes qui vont être
liées à des sources de données vous
pouvez combiner dans la chaîne l'appel à
une source de données et puis un LLM
pour pouvoir euh potentiellement
répondre à une question un peu en
onehot
euh donc vous pouvez par exemple créer
une une chaîne qui obtient d'abord des
informations sur un sujet ça peut être
ça peut être une chaîne comme ça qui
retrouve d'abord des informations euh et
et ensuite utilise ces informations là
pour pouvoir générer une synthèse ça
c'est un exemple de de chaînage
finalement qui est fait qui est
simplement fait euh avec l'ANA donc les
chaînes vont faciliter la combinaison de
plusieurs outils donc c'est un peu le
cœur de l'an cha he c'est dans le nom il
y a langue et il y a chin donc langue
c'est parce que ça utilise les LLM et
chin c'est un enchaînement finalement de
plusieurs outils et donc c'est le le
fait de de de combiner finalement
plusieurs outils qui sont assez
spécialistes dans ce qu'ils font euh
pour pouvoir c'est un peu l'union fait
la force tout simplement on va prendre
des spécialistes pour pouvoir répondre à
une situation bien
spécifique les agents
maintenant les agents euh c'est un peu
c'est des décideurs comme je vous disais
c'est des décideurs autonomes dans
langanen donc qui vont permettre
d'interagir avec de manière autonome ça
c'est ça le la subtilité c'est qu' vont
interagir de manière autonome à
différents composants donc typiquement
dans un dans un agent euh vous allez lui
fournir une liste d'outils vous allez
peut-être c'est c'est l'analogie
typiquement c'est euh euh je sais pas
vous venez d'arriver dans une entreprise
on vous donne un PC on vous
donne je sais pas tout un tas de
d'outils euh je sais pas un cahier pour
Notter des des des feutres et cetera et
c'est vous qui de manière autonome allez
décider quand est-ce qu'il est Jud
d'utiliser du PC quand il est judicié de
prendre des notes et cetera et c'est la
même chose avec avec un agent c'est que
on lui donne accès au LLM et une suite
d'outils y compris des fonctions python
c'est possible de designer de créer des
fonctions python custom et de les
appeler en tant que outil assez
simplement avec l'antien et sur la base
du coup de la question de l'input que va
formuler un utilisateur l'agent va
décider de l'outil va décider de manière
autonome de l'outil qui est le plus
adapté pour pouvoir répondre à votre
question il va utiliser cet outil donc
c'est ce qu'on appelle souvent la
première action il utilise l'outil
ensuite il il analyse
si non il utilise l'outil il en fait un
résumé il fait imaginons vous lui dites
je sais pas quel est le président de la
France et vous lui avez donné comme
outil un une API pour pouvoir aller
faire une recherche sur internet et WIK
ia par exemple et donc de manière
autonome il va peut-être se dire ok pour
pouvoir répondre à cette question
peut-être que j'ai plus besoin d'un
navigateur plus que Wikipédia donc il va
il va appeler wikipé il va appeler le
navigateur qui va aller faire une
recherche il va faire une synthèse il va
raisonner sur cette synthèse en disant
est-ce que je suis confiant sur la
réponse que j'ai si jamais il n'est pas
confiant il va faire des boucles il va
par exemple revenir ici et faire appel à
un autre outil pour essayer d'aller plus
loin si jamais il est conf il va donner
une réponse en disant ok à la base de à
la suite de l'analyse que j'en ai faite
je pense que la réponse la plus adéquate
c'est celle-ci mais il va le faire de
manière
autonome donc il y en a deux types
principaux de d'agents au sein de de de
longchin il y a les agents d'action et
les agents de planification et
d'exécution les agents d'action ils vont
ils vont du coup gérer des petites
tâches tandis que les agents de
planification et d'exécution vont gérer
des tâches un peu plus comp qui
nécessite un peu de planifier un petit
peu dans quel ordre on va faire les
choses avant de se lancer dans dans dans
la tâche en question donc ça va
nécessiter euh des tâches un peu plus un
peu plus
complexes euh l'interface des agents
offre une une donc une certaine
souplesse donc on pourrait tout
construire avec des chaînes simples mais
souvent on a besoin plutôt plutôt que
d'avoir 10 chaînes d'avoir un agent avec
une une liste d'outils qui va
faire appel à la bonne au bon outil voir
la bonne chaîne au bon
moment un agent du coup il a accès à une
s à une série
d'outils il détermine lequel il
utilise les agents peuvent utiliser
plusieurs outils et utiliser la sortie
d'un outil comme entrée donc il est
possible qu'il utilise un outil comme il
est possible qu'il utilise plusieurs
outils à la à la fois donc il est pas il
est vraiment pas limité c'est de manière
autonome qu'il essaie de voir un peu
qu'est-ce qui de quoi il a besoin ou
pas alors sur les cas d'utilisation
alors il y en a énormément des cas
d'utilisation de de de long chain
euh le premier que j'ai listé ici c'est
que bien entendu quand on va créer des
applications qui vont utiliser les LLM
avec longchain qui est aussi intéressant
c'est de garder un c'est de monitorer la
solution c'est de savoir quand a fait
appel au LLM est-ce que ça a marché
est-ce que ça a pas marché qu'est-ce qui
a pris du temps et cetera donc dans
l'écosystème longchain ils ont également
ils ont créé deux outils en fait ils ont
créé langsmith langsmith qui va
permettre le le monitoring donc à chaque
fois qu'il va y avoir par langchain un
appel à une chaîne quelle qu'elle soit
le l'exécution du résultat de cette
chaîne ou de toute la du temps
d'exécution et tout un tas de métriques
vont être enregistré dans Lang Smith et
ça va vous permettre finalement de faire
un monitoring de de vos applications
donc c'est typiquement vous vous créez
une application qui je sais pas qui est
utilisé en interne une entreprise pour
générer des synthèses de d'email par
exemple tu dis n'importe quoi et donc à
chaque fois que un utilisateur va
utiliser l'application il va avoir du
coup une trace de ce qui s'est fait et
c'est comme ça que vous allez pouvoir un
peu euh voir ce qui se passe voir si
c'est normal voir si vous avez des
délais de la latence pas de latence si
le modèle répond toujours de manière
cohérente ou pas du
tout deuxème cas qui assez répandu euh
c'est la création de chatbot euh donc il
y a pas mal vu que l' chîn embarque pas
mal d'outils pour créer des des des des
chatbot assez simplement euh vous pouvez
euh du coup avec la en combinant avec
les chaînes avec les mémoires et
peut-être aussi avec les agents vous
pouvez créer un chatbot qui fait des
choses euh qui fait plein plein de
choses assez simplement parce que vous
pouvez faire la même chose avec euh euh
la le module openi finalement Python qui
existe c'est possible de faire la même
chose mais ce que va apporter l'enquenne
c'est vraiment la un peu la la clarté
dans la programmation et la la
simplicité dans dans la création de de
cette
solution l'en maintenant ils ils ont
fait un partenariat avec MongoDB pour
pouvoir étendre finalement le capacité
de stockage donc du coup ça permet ça ça
vous dit que ça permet ça ça les
rapproche et ça permet de faire en sorte
qu'il y a qu'il y a pas mal de personnes
d'entreprise qui utilisent modb et bien
de combiner un peu la puissance des deux
si vous avez des données je sa pas de
clientèle ou tout un tas de choses dans
monodb euh voilà l'intégration voilà
elle est elle est de elle est elle est
native en fait elle peut se faire assez
assez
simple donc les tâches les cas
d'utilisation donc vous pouvez avoir de
de l'analyse de la synthèse de documents
donc par exemple extraire des
informations d'un document euh de
différents formats que ce soit PDF Excel
et cetera et en faire une synthèse
entendu on a parlé du chatbot donc vous
pouvez créer des des agents
conversationnels donc capables de
répondre à des questions de fournir des
informations ou d'effectuer des tâches
alors aujourd'hui il existe tout un tas
de plateformes qui permettent de créer
des chatbot sans avoir à coder
euh et ce que va apporter l'entien dans
ce cas de figure c'est juste le côté
l'adaptabilité donc c'est de faire en
sorte que vous pouvez créer de manière
vous avez vous êtes juste limité par
votre imagination sur un peu la
flexibilité ou ce que vous voulez que
votre chatbot euh fasse derrière euh et
derrière vous pouvez également aller
plus loin c'està-dire créer Unat B qui
permet de faire de la réservation
typiquement de je sais pas de billet en
ligne en en interfaçant finalement une
interface de chat avec un agent derrière
qui va sur la base des informations qui
lui sont fournies finalement mettre en
place du coup de la réservation et puis
déclencher des livraisons ou des choses
comme ça euh bien entendu quand on
développe avec lankin j'en ai parlé un
petit peu c'est très facile de faire du
débuggage euh donc il va donc générer du
code dans plusieurs langues à partir de
description vous avez toute une trace
qui est fait dans Lang SMI et même dans
l'interface de programmation pour voir
un peu ce qui se passe et pour savoir
comment améliorer alors j'ai vu des cas
d'utilisation également utiliser
longchain pour faire du scrapping du web
scrapping euh pour récupérer des données
et pareil pour pouvoir aller euh pour
pouvoir raisonner sur cette données pour
pouvoir faire des choses
euh la réponse la réponse aux questions
ça c'est toujours dans le cas figure de
du du chatbot et le trisième outil donc
je vous ai parlé de Lang Smith mais ils
ont également créé récemment Lang SVE
qui va vous permettre finalement après
que vous ayez créé votre application
imaginons vous avez créé un chatbot de
déployer du coup via langsve finalement
votre application assz
simplement je crois que les deux Lang sm
c'est Lang sm c'est sûr vous pouvez
créer un compte dessus gratuitement euh
mais Lang Lang aussi je pense que vous
pouvez créer un compte gratuit pour
pouvoir déployer des applications même
si c'est briillé bien entendu pour des
des des situations euh beaucoup
juste des prototypes ou des choses de ou
des choses
similaires donc la polyvalence et la
puissance de longcha sont évidente en
fait en soi parce que ça permet de faire
pas mal de choses c'est assez flexible
on peut créer tout un tas d'applications
assez diverses euh les système de
questions-réponses l'analyse de données
euh vous pouvez créer les chatbot faire
des résumés euh l'intégrer avec
différentes technologies donc c'est un
peu tout ça que va va offrir finalement
long chain en avec des outils natifs
longchain c'est vraiment pour ça qu'on
parle de
framework alors je vais revenir un petit
peu sur le chat
euh
alors tac tac tac je vais
remonter on a parlé de la mise àjoute
des données
euh ce qu'on sauvegarde en mémoire peut
être stocké sur le Cloud oui euh quand
vous Gén quand vous utilisez des des
les composants de mémoire euh vous
pouvez stocker où vous voulez en fait
vous pouvez le stocker en mémoire en
mémoire RAM vous l'utiliser
euh là tout de suite
vous pouvez sauvegarder tout ça bien
entendu
fa euh l'analyse de la qualité de la
réponse est par est est par seuil ou
quand il n a pas de progress
alors l'analyse de la qualité alors il y
a plusieurs niveaux il y a déjà euh euh
est-ce que le code s'exécute bien génère
bien ce pourquoi on l'a on est en train
de le créer il y a bien entendu les
métadonnées d'exécution c'est euh euh
combien de temps ça a pris euh si ça
abouti et cetera euh euh maintenant pour
pouvoir vous euh via typiquement si vous
si vous enregistrez toutes les
interactions que vous avez avec Len euh
avec LM par exemple vous pouvez aller
sur LM voir exactement qui a exécuté
quoi quel prompt a été utilisé quelle
réponse il y a eu avec quel prompt donc
vous êtes vraiment capable d'aller dans
le détail de toutes les interactions et
c'est vrai que j'en ai pas parlé parce
que normalement le le temps fil mais
langch intègre également euh des
fonctions de de comment je vais dire de
de de de ah le mot m'échappe euh de
typiquement quand vous voulez euh euh
euh avant de déployer votre votre votre
solution qui utilise un LLM vous voulez
euh avoir une vérification un peu de la
pertinence des réponses donc il a aussi
des outils qui vont permettre de de de
avec des des des questions et des
réponses euh sûres que vous connaissez
vous allez pouvoir comparer un peu euh
la pertinence des réponses qui sont
données par langchin donc il y a des
fonctions pour pour euh voilà à des fins
de modération voilà c'est le mot que je
chercher euh il il a des fonctions pour
des fins de modération pour euh vérifier
la toxicité euh vérifier tout un tas de
choses avant fin de vérifier que voilà
le votre système ne va pas dérailler une
fois en production avant de le mettre en
production et il peut vous pouvez
également utiliser les LM mais je pense
que ça vous devez savoir pour euh
générer finalement sur la base des
questions et réponses euh sûr que vous
connaissez générer avec des documents
que vous avez en base de données des
questions réponses de manière
automatique et les utiliser pour faire
de la modération vous avez également
cette possibilité là avec
l'
alors l'appli créé avec langchain est au
final une appli python oui si vous
travaillez avec Python on la déploie
comment de la même manière que vous
déployez n'importe quelle application
donc vous créez l'application vous la
containurisez c'est un peu ce qu'on va
essayer de faire et vous la
déployez via une web app sur Azure ou ou
ce que vous voulez n'importe où ça
marche et c'est pour ça qu'ils ont
également créé Lang pour euh faire en
sorte que dès que votre application est
prêt faciliter un peu cette cette étape
de déploiement là
aussi donc voilà vous c'est du reste du
python donc c'est une librrairie python
donc vous vous faites votre code vous la
testez en local ça marche vous la passez
en test on s valider vous la passez en
PR exactement de la même manière euh
comment l' se positionne face au au au
cours que l'on a vu sur la formation DS
du bag of world text mining alors les
techniques les techniques qui sont
souhaité qui sont qui sont affiché là
dans le je peut-être afficher yes les
techniques qui sont affiché là dans la
dans la question donc
typiquement le bag of word le text
mining le text summarization le Tex
extraction et cetera c'est c'est les
techniques qui sont utilisées finalement
j'ai envie de dire des techniques de
base qui sont utilisé quand on fait de
la modélisation quand on fait du machine
learning classique pour
pouvoir faire de la modélisation sur la
base B des données textuelles donc là ça
c'est sûr que derrière bien entendu on a
capitalisé sur ces outils là pour
pouvoir créer les LLM maintenant en soi
comme je disais longchain c'est pas
c'est pas longchain qui va faire
l'analyse ou qui va utiliser le texte
longchain il va juste permettre de
d'avoir la la surcouche qui va permettre
l'interfaçage simplifié avec les LLM et
d'autres outils et donc les techniqu que
vous que vous souhaitez qui vous qui
sont cité là
euh euh c'est vont être remplacés entre
guillemet par le LLM lui qui va prendre
le relais donc vous pouvez très bien
utiliser un LLM euh euh pour les tâches
de classification euh sur un texte ça se
fait souvent pour pouvoir faire
maintenant de l'analyse de sentiment
assez j'ai envie dire simplement euh
avant il fallait effectivement entraîner
un modèle typiquement sur la base de
cette technique-ci pour en créer un pour
créer un modèle avec les LLM euh vous il
vous suffit de passer un texte et de
faire un prompt et de vous dire euh euh
suris la base du PRME que je vais te
donner je veux que tu me donnes le
sentiment
associé et lui donner des exemples en
disant je m'attends à trois sentiments
de base donc positif négatif neutre euh
et puis et lui donner des exemples et
sur la base de ça via le texte que vous
lui donnez il va vous donner euh des il
va vous donner il va vous faire une
analyse de sentiment et d'ailleurs vous
pouvez que vous d'ailleurs vous pouvez
réutiliser pour pouvoir faire du machine
learning derrière éventuellement donc
c'est un ça ça va ça va ça ça modifie un
peu les les les stratégies de
modélisation classique en en permettant
d'aller peut-être un peu plus vite sur
certain in tche en
fait donc voilà
h ok donc du coup démo et je vais
essayer de
partager mon
écran si
j'arrive
[Musique]
hop hop voilà donc j'ai créé un petit
GitHub euh je vais essayer de le
nettoyer un petit peu si jamais ça vous
intéresse par la suite c'est un peu un
chantier l'objectif euh d'ici C de vous
montrer concrètement comment on fait
première étape
euh je claque donc première étape avant
de rentrer dans la partie code première
étape bien entendu il faut que vous ayez
un environnement de travail on va dire
prêt c'est quoi l'environnement de
travail typiquement si vous travaillez
en local vous allez créer un
environnement virtuel
euh je rentre pas dans les détails je
vais supposer que vous connaissez donc
c'est vual en et cetera ensuite dans cet
environnement virtuel vous allez
installer bien entendu longchain
longchain s'installe de manière assez
simple PIP install longchain et puis
vous êtes prêts généralement on va
utiliser
plusieurs libreries ensemble donc c'est
ce que je vais commencer par oups par
vous montrer si j'arrive donc je vais
regarder le
requirement donc moi dans mon truc j'ai
mis bien entendu longchain avec Open ai
et puis docay ça ce sont des des
libreries qui vont l'aider typiquement à
aller lire des documents des des
fichiers CSV ou des choses comme ça
euh en parallèle de longchain natif pur
euh il a également longchain T openi qui
est une sorte de de micro longchain avec
des fonctions euh spécifiquement euh qui
sont spécifiquement dédiés finalement
avec les API open ai et notamment avec
Azure openi également j'utilise j'ai
installé alors tous les autres libries
que j'ai installé ne sont pas forcément
obligés ce qui est forcément nécessaire
ça va être longchain tout ce qui est du
longchain euh moi j'ai installé d'autres
librairies parce que du coup je voulais
un peu euh explorer la la possibilité de
long chain d'aller chercher des modèles
qui se trouvent sur hugging face donc
c'est pour ça que j'ai utilisé installer
les Transformers la librie Transformers
avec le hugging face hub qui me permet
d'aller me connecter à hugging face et
récupérer finalement et pouvoir utiliser
un modèle hugging face euh et après il y
a d'autres outils donc typiquement
Wikipédia YouTube Search ou doc doc Go
qui vont vous permettre qui vont me
permettre finalement de faire de la
recherche euh sur internet depuis long
chain finalement depuis mon
environnement de de programmation donc
pour la mise en place vous créez votre
environnement vous vous vous vous
activez votre environnement et vous
installez les libreries qui qui sont
nécessaires donc à minima PIP install
longchaîn ça c'est le niveau zéro et
maintenant via via un un via une
interface en en notebook vous pouvez
très bien
euh enfin commencer assez simplement
donc là on va je vous montre d'abord les
composants de base comme on a vu en
terme de code et puis après
progressivement on va voir un peu
comment les combine donc premièrement je
vous ai parlé du prompt et du promt
template spécifiquement qui permet
finalement de mettre en forme finalement
le prompt que l'on veut créer donc vous
importez c'est du python classique from
lunch import template et après vous sous
forme de texte vous voyez vous vous vous
designz votre promp avec toutes les
techniques de Prom engéering que vous
connaissez euh ici la spécificité de
longchain c'est que typiquement quand
vous voulez passer en paramètres euh
vous voulez passer un paramètre à une
chaîne de caractère vous n'êtes pas
obligé de mettre le F là-devant vous
n'êtes pas obligé il suffit juste de
mettre sous forme de caractère sous
forme de chaîne de caractères euh impr
prompt avec entre entre entre cur et
bracket comme ça qu' appelle euh le
paramètre finalement qu'on veut utiliser
et après on va utiliser le Pr template
qui va utiliser cette chaîne de
caractère et qui va permettre de
spécifier c'est quoi l'input dans cette
chaîne de
caractère donc je prends ma chaîne de
caractères et puis je spécifie que dans
cette chaîne de caractères mon input
c'est name et donc c'est possible donc
une fois que vous avez une fois qu' le
promt il a été mis en forme comme ça
donc vous voyez ça ressemble à du python
parce que du coup c'est comme si tout ça
c'était une chaîne de caractère parce
que après on peut juste faire un format
et puis spécif le le le nom du paramètre
et avoir le template qui va être passé
au LLM donc c'est comme ça qu'on va
créer un template c'est qu'on va vous
allez créer euh une chaîne de caractères
avec des des données d'entrée des
paramètres d'entrée votre votre prompt
va incorporer euh des des paramètres
d'entrée que vous allez spécifier via le
Prom template et c'est comme ça que vous
allez pouvoir figer vos prompt dans la
dans le processus de création de de vos
applications et ne faire que passer des
paramètres donc ça c'est le Pr template
la mémoire donc en terme de mémoire je
vous disais vous avez énormément de
types de de mémoire dans dans de façon
de gérer la mémoire donc quelques
fonctions donc vous avez la classe chat
message history donc qui est je un peu
grosi qui est l'une des classes
importantes des modules longchain il
s'agit d'un d'un d'unun surcouche en soi
légère qui va qui est pratique qui est
utilisé pour enregistrer des messages du
coup humains il il a donc on va
permettre de donc typiquement le cas
d'usage c'est peut-être comme ici je
veux donner un historique à mon à mon à
mon LLM avant de lui écrire mon prompt
je vais lui donner un historique donc je
peux créer je peux utiliser de la
mémoire donc le chat message history
donc c'est un peu comme si c'était une
interaction avec avec entre un humain et
un modèle et je vais lui spécifier en
fait les les éléments de les éléments de
notre conversation peut-être passer et
je vais passer cette historique
finalement au Prom template par la suite
pour qu' il puissent en prendre en
considération lorsqu'il va appeler
lorsque la chaîne va appeler le
modèle donc tout ça c'est un ça ce n'est
qu'un seul exemple euh vous avez un
autre qui est le conversation buffer
memory qui fonctionne à peu près de la
même manière en soit retenez juste que
euh le la mémoire la gestion de la
mémoire vous avez des fonctions
spécifiques pour différents cas de
figure
euh vous avez une qui va vous permettre
de gérer la mémoire un peu dynamiquement
pendant que vous êtes en train de de de
discuter avec avec le avec le LLM et
puis vous avez
euh une autre manière qui consiste à à à
stocker ça dans une sorte d'objet de
mémoire qui va être passé en LLM
peut-être un peu plus tard dans la
conversation donc maintenant si on les
combine mémoire et chaîne donc la chaîne
elle a besoin
a priori de deux composants de base elle
a besoin du prompt et elle a besoin du
modèle qu'elle va utiliser donc le
modèle moi j'ai utilisé du coup un
modèle que j'ai déployé sur Azure donc
c'est pour ça que je prends tout un tas
de de de paramètres là mais vous pouvez
très bien utiliser avec avec Open avec
le la Py de openi ça marche tout aussi
bien donc là typiquement le cas
d'utilisation ici c'était juste pour
vous montrer que c'est possible de
déployer un modèle depuis un Cloud
provider et de l'utiliser dans le cadre
de vos la création de vos applications
et l'avantage l'un des avantages de
faire ça c'est que euh vous avez la
garantie finalement que tout ce que vous
inter tout ce que vous vous vous vous
transmettez vous échangz avec ce modèle
reste dans le périmètre de l'entreprise
donc vous savez c'est vous qui avez la
main sur qu'est-ce qui est gardé
qu'est-ce qui n'est pas gardé et
C donc j'utilise mon je prends un modèle
de chat euh parce que je je veux un
modèle je vous ai dit il y avait trois
types de modèles les chat les LLM et
puis les embedding mais ce cas de figure
si c'est un modèle un peu de chat dans
je m'attends à faire de l'interaction
avec avec le modèle et puis je vais
créer vous voyez en plus d'avoir donc
une chaîne qui existe c'est la
conversation chain qui est optimisée
pour pouvoir faire des interactions
finalement avec un modèle donc je vais
lui spécifier le LLM que je veux
utiliser que j'ai défini préalablement
et la mémoire donc vous voyez à quoi
sert la mémoire c'est que je peux
précharger
l'historique et le passer en paramètrre
finalement à une chaîne pour que il
puisse répondre étant donné cette
mémoire et donc j'ai utilisé un autre
paramètre ici qui est le verbos ég TR
c'est pour justement permettre de voir
exactement tout ce qui se passe donc
quand on exécute on voit qu'il entre
dans la chaîne il commence par
construire le prompt donc vous voyez le
prompt il est il est euh il est il est
il est il est euh euh il est il est déjà
préformé vous voyez là je n'ai je je
n'ai fait rien d'autre que euh lui
donner euh une question une question ou
alors euh donner un un début de texte
donc ça c'est l'équivalent de mon de de
de ma de ma de mon instruction que je
veux la tâche que je veux qu'il réalise
et langchain en fait la force de l'in
c'est que ils ont déjà un er tout un tas
de prompt de format de prompt don vous
voyez que le prompt global c'est
celui-ci c'est the following et c'est
friendly conversation between un humain
et donc c'est le Prom template qui est
associé à à cette chaîneci donc qui qui
guide un peu les le mode d'interaction
et on voit bien que ce que je lui donne
là en entrée il est
donné il est il permet de compléter le
prompt et ce prompt est passé du coup au
LLM qui lui me donne une réponse et ça
j'ai cette j'ai j'ai tout ça parce que
j'ai mis le verbos égal trou
c'est-à-dire montre-moi les différentes
interactions qu'il y
avait
euh et donc comme je vous disais j'ai
défini une mémoire ici donc j'ai déiné
un objet de type mémoire pourquoi parce
que c'est pour vous montrer que pour
pouvoir continuer la conversation donc
là je lui ai posé une première question
il m'a répondu et maintenant je peux lui
poser une deuxième question derrière
sans lui refournir tout le reste parce
que automatiquement toutes les
interactions qu'il fait il les
sauvegarde dans cet objet donc je peux
lui poser là je lui ai demandé de me
donner des informations sur un site qui
est bien qui est assez bien connu avec
pas mal de ressources supitant notamment
et je continue en lui demandant des
sites qui sont similaires et donc il est
capable on voit dans le prompt que il y
a la
première question il y a la la réponse
qu' a donné et puis ensuite il y a le
reste il y a la deuxième question et
donc c'est c'est ça c'est à ça que c'est
à la mémoire c'est finalement de
continuer la conversation donc c'est
tout ça est encapsulé dans conversation
chain et permet de le faire assez
simple
euh pour vous montrer
rapidement un agent pour vous montrer
que c'est vraiment très simple de créer
un agent
c'està-dire une chaîne autonome qui va
décider elle-même des outils qu'elle
utilise premier outil je uise doc doc Go
search run c'est du coup une fonction
qui va permettre de de faire de la
recherche sur internet via laapi doc Go
encapsulé nativement dans longchain et
donc je v ça c'est juste pour vous
tester et pour vous montrer ce que ça
donne en sortie vous pouvez faire une
recherche et avoir un résultat sous
forme de texte deuxième outil que je
vais tester c'est Wikipédia donc je peux
aller faire de la recherche sur les
pages de Wikipédia en lui spécifiant
juste un mot clé et maintenant je vais
créer mon agent et donc mon
agent si je vous montre juste la syntaxe
de l'agent je lui donne la liste des
outils
donc tout simplement le le la capacité
de chercher sur internet et la et
l'outil de Wikipédia je lui spécifier le
modèle qu'il va utiliser euh et puis je
lui dis un petit peu comment il va se
comporter c'est un peu son comportement
et derrière je peux lui poser une
question et il va décider lui tout seul
euh de quel outil il va de quel outil il
a besoin donc si on regarde euh le la la
succession des des différentes des
différents
enchaînements donc il entre dans
l'exécution on voit il dit il risonne
lui-même que il a il pourrait avoir
besoin euh de de de vérifier que
l'information n'a pas changé depuis donc
il fait appel à dug do go search il
récupère le texte et maintenant il
analyse donc il a confirmé que Joe Biden
c'est bien le président actuel des
États-Unis et puis il me donne la
réponse finale et donc vous voyez juste
le code c'est juste celui-là j'ai à
aucun moment je lui ai dit commence par
utiliser tel outil ou tel autre et
l'ordre ici n'a aucune espèce
d'importance euh donc lui tout seul
décide quel outil il utilise et raisonne
sur ses résultats
lui-même donc pareil donc l'autre
exemple que j'ai fait c'est lui demander
euh du coup quelle est l'histoire de de
la Tourel et donc tout simplement pareil
là dans ce cas de figure il a raisonné
plutôt avec Wikipédia en disant ok
peut-être l'information je vais la voir
beaucoup plus de Wikipédia donc il a
fait appel à la p de Wikipédia il a
récupéré le texte il fait un résumé du
texte et puis il me donne une réponse
finale de la même manière et donc pareil
pour vous montrer que il est capable de
d'enchaîner comme ça je lui ai posé une
question un peu plus un peu plus
compliquée c'est euh du coup euh je lui
ai demandé d'abord est-ce que est-ce que
les est-ce que les agents long chain
peut pouvoir non non la possibilité de
faire appel que à un seul outil à la
fois c'était exprès c'était pour que il
se ils se base à la fois qu'il essaie de
rechercher à la fois sur Internet et à
la fois sur Wikipédia pour voir si ça
marche et on voit bien que il commence
par utiliser la la recherche euh il
n'est pas certain donc il fait une
nouvelle recherche il n'est pas certain
et il utilise Wikipédia et donc lui tout
seul enchaîne en fait euh des
interactions avec les différents outils
qu'il a et jusqu'à me donner une réponse
finale en me disant il y a pas de Claire
réponse euh qu'il a trouvé avec ces deux
outilslà donc on peut très bien imaginer
avoir au sein de l'entreprise pas mal
d'outils typiquement des outils de une
par exemple un qui va se connecter à une
base de données un autre qui va se
connecter une base documentaire et
cetera et créer un agent qui va lui tout
seul décider où est-ce qu'il est plus
pertinent finalement d'aller rechercher
l'information et puis de la combiner
pour pouvoir répondre de manière
pertinente donc vous voyez c'est assez
simple vous voyez c'est ça déande pas
beaucoup de ligne de code euh c'est
peut-être celle-ci c'est peut-être la
création du modèle avec Azure open c'est
peut-être le plus long mais vous avez
des fonctions qui sont déjà prépackagées
qui sont prêtes à être employé pour
pouvoir euh pour pouvoir pouvoir
atter alors je vais revenir juste
checker il y a pas de question
oui alors j'espère que la taille de la
police est mieux désolé euh le lien pour
le repipo je le fais dès la dès que je
fini le le Data atelier parce que j'ai
encore pas mal de cleaning à faire il
pour pas que vous ayez voilà j'ai essayé
pas mal de choses assez assez diverses
et variées euh l'utilisation d'agent
doit avoir un impact sur la rapidité euh
s'il fait souvent plusieurs recherches
il doit y avoir une compromis à trouver
entre les performances c'est la
pertinence oui bien entendu ça a un
impact euh parce que du coup il peut
itérer comme ça sur plusieurs outils
mais je pense mais j'ai pas encore
vraiment creusé mais ça doit être
possible de euh ça doit être possible de
spécifier un petit peu quand au bout de
combien de temps en fait il faut qu'il
s'arrête faut juste que je je plonge un
peu dans la documentation mais ça doit
être possible de forcer un petit peu
l'arrire au bout d'un moment avant de
avant de
partir hop alors je reviens j'augmente
encore
là comme ça et puis on va peut-être
aller je juste vous montrer rapidement
en fait d'autres possibilité avec avec
l' donc pareil c'est juste pour aller un
peu plus pour vous montrer juste que
c'est possible rapidement d'interfacer
long avec huging face donc c'est
possible d'aller chercher des modèles
qui se trouvent
suruging bon pour ça il faut il faut
avoir il faut avoir installé du
coup alors où est-ce que jeis importer
le hugging face la librairie qui permet
de se connecter finalement à l'interface
hugging face de spécifier le modèle
qu'il nous faut et de passer en
paramètres finalement les paramètres de
notre modèle et donc pareil la la
syntaxe est la même tout simplement je
définis mon modèle et toujours j'utilise
un PR template toujours avec une chaîne
de caractères je passe des des
paramètres en entrée et puis je crée une
chaîne de base donc là typiquement vous
avez une la chaîne la plus simple de
l'an chain c'est une chaîne qui prend
juste le prompt et le LLM tout
simplement et pareil donc je crème donc
la séquence elle est toujours pareil je
défini mon modèle je définiis mon
template de prompt et puis mon template
de prompt j'ai défini ma chaîne et puis
après je la utilise c'est toujours le
workfow il est toujours il est toujours
pareil
euh donc là j'ai utilisé un modèle
flanty F qui est assez connu typiquement
souvent US cas pour vous montrer comment
on F Tune des modèles on par souvent de
flanty Five
euh pour parti pour parti d'un modèle
qui a pas forc qui qui est bon mais pas
pas pas comme Monti attend et pour
essayer de de gonfler un peu sa capacité
euh c'était juste pour vous montrer la
différence entre un un petit modèle
comme celui-ci qui est quand même
relativement petit par rapport à à à GPT
3.5 parce que ce que j'utilise avec aus
GPT 3.5
h donc là pour des questions simples
euh il arrive à répondre mais si je
commence à lui poser une série de
questions bah il me répond complètement
à la place à à côté de la plaque donc
sur des questions de raisonnement sur
des questions un peu de culture générale
et cetera il est pas du tout adapté et
alors qu'avec un un un GPT 3.5 tubo tout
simple euh les réponses sont sont tout
de suite tout de suite
qualitatif alors ce que je voulais vous
montrer également ici parce que tout ça
c'est la la même chose que précédemment
on crée le modèle on crée le template
euh on crée notre chaîne et puis on
l'utilise
euh oui je voulais vous montrer que
euh vous
pouvez je regarde juste vite fait
ouais
[Musique]
c'est il y a bon je voulais voilà c'est
ça je voulais vous montrer qu'il y a
plusieurs autres chaînes bien entendu il
y en a il y en a il y en a énormément de
chaînes la chaîne la plus simple c'est
LLM chain mais vous avez également la
transform chain qui qui vous permet de
de d'utiliser des fonctions python que
vous-même vous avez créé pour pouvoir
appliquer pouvoir les utiliser dans une
chaîne vous avez les sequen chîn qui
permet d'enchaîner plusieurs LLM chain
les unes à la suite des autres euh vous
avez la LLM matchain qui intègre déjà
des outils pour des questions un peu de
calcul euh en utilisant les
mathématiques euh donc donc c'est
l'exemple que que j'ai mis ici c'est euh
par exemple si vous avez des questions
de ce type qu'il faut faire des calculs
euh typiquement on va élever à la
puissance 16 en nombre et donc avec lui
en utilisant le LLM chain on voit que
encapsulé au sein de longchain il va
faire appel à des outils qui vont
euh mieux calculer les valeurs parce que
comme je vous disais le LLM de base ne
raisonne pas tout ce qu'il sort c'est
des c'est une série de probabilités et
sur la base de ces probabilités on
reconstruit en fait les
mots donc en soit il ne raisonne pas il
ne fait pas de calcul et donc pour
pouvoir augmenter un peu les capacités
du L NOTAM sur des calculs on peut lui
assoer des outils donc le l mat intègre
finalement outils auquel le LLM fait
appel pour pouvoir faire des calculs
bien
spécifi donc là vous avez vu j'ai juste
la seule les seules fonctions que j'ai
fait j'ai juste importé euh les
différents les différents modèles j'ai
juste je me suis juste créé une fonction
assez rapide pour voir quand j'exécute
une chaîne compter le nombre de token
donc le nombre de mots entre guillemets
euh qui est qui sont générés qui sont
utilisés par le LLM c'est le but de
cette de cette fonctionuss euh j'ai créé
mon modèle moi j'ai j'ai complété j'ai
utilisé ma chaîne pardon euh et donc
quand je l'utilise et quand on regarde
le template qui le le template qui é
créé donc on voit
translate donc tout ce template je l'ai
jamais écrit et c'est c'est pour ça
qu'il existe plusieurs chaînes au sein
de long chain parce que dans les chaînes
en fait dans dans certaines chaînes assz
assez spécifiques ils ont déjà intégré
des templates de prompt qui n'attendent
que que des bouts d'instruction pour
pouvoir euh pour pouvoir
continuer c'était pour vous montrer ça
avec les chain rapidement pour vous
montrer que c'est possible de
d'appliquer pas mal de techniques de
prompt
engineering alors là j'en ai pris que
donc là je vous a au début je vous
montrer que que des des exemples assez
simples on va dire de promt
hop je vais réduire
ça pu
[Musique]
réduire bon oker comme ça donc pareil
avec un Prom template on peut avoir un
Prom qui est beaucoup plus long mon
template euh du coup je peux enfin je
peux avoir un template qui est beaucoup
plus beaucoup plus composé donc on lui
dis de répondre à une question sur la
base d'un contexte qu'on va lui donner
euh si il ne connaît pas la réponse on
lui spécifie de de dire je ne connais
pas plutôt que d'inventer ça c'est pour
limiter euh ce que Microsoft s'appelle
fabrication qui est l'hallucination pour
éviter qu'il ne qu' ne qui n'ille qui
n'aille dans le décor le contexte on lui
donne un texte mais on pourrait très
bien c'est ce que je vais vous montrer
par la suite lui spécifier ce contexte
un peu de manière dynamique en lu en lui
spécifiant ça en donnée d'entrée et puis
la variable qu'on va spécifier donc la
requête de de l'utilisateur donc ça
c'est notre chaîne de caraè de base
ensuite on utilise un Prom template pour
englober tout ça et spécifier quelle est
la variable d'entrée donc si on met ça
bout à bout et quand on affiche tout le
prompt on a tout ça avec la question que
je viens de formuler donc on a spécifier
à la fois ce qu'on voulait le contexte
euh avec le format qu'on attendait et
pareil j'utilise toujours mon 3.5
classique je l'intègre dans une chaîne
simple et je complète finalement je
passe ça c'est ma variable d'entrée ça
c'est ce que je passe en entrée donc
j'appelle mon Prom mon mon ma chaîne en
lui spécifiant finalement la question
avec mon prompt qui est déjà encapsulé
donc ça c'est pour vous montrer que
quand vous quand on crée des
applications euh le le prompt
engineering reste au centre donc il va
quand même falloir guider le modèle sur
qu'est-ce qu'on veut faire et de quel
sur quel format on s'y attend donc le
les techniques de Prom engineering vont
être au cœur finalement de toutes les
applications qui va utiliser l' et on va
donc dans le code finalement de votre
application vous allez avoir des Prom
qui sont figés qui sont qui sont qui
doivent être bien construit pour pouvoir
adresser des situations bien spécifiques
et vous et l'utilisateur il va juste via
barre de recherche un truc comme un truc
similaire entrere ça ça requête c'est
tout ce que l'utilisateur va avoir le
droit de faire et en tâche de fond c'est
langchainîn qui va prendre le relais
pour compléter le prompt et déclencher
la chaîne qu'il faut déclencher pour
pouvoir répondre à la question donc on
passe le modèle on spécifie le prompt on
on remplace la question donc je voulais
lister
euh les modèles et les providers de
modèles au format macdown et donc du
coup il me il me donne la la réponse
avec le format que j'attends donc vous
voyez que bon il a c'est pas juste ceci
euh vous avez hugging face qui est une
plateforme sur laquelle vous pouvez
trouver des modèles vous avez bien sûr
open vous avez bien sûr Gini de Google
et vous avez un qui est pas souvent
connu qui est cooher aussi qui est un
provider de modèle il y en a il y en a
pas mal il y a nistral il y a euh il y
en
a pour vous montrer comment rapidement
on peut faire du f shot F shot prompt
c'est dans mon prompt j'inclus des
exemples pour que le modèle puisse s'en
inspirer
pour pouvoir aller pour pouvoir répondre
donc il a une chaîne il a un Prom
template spécifique pour le fot Prom
template comme comme comme il l'a je
définis mes exemples donc question
réponse question réponse pour lui
montrer un peu comment doit faire euh je
commence à créer ma chaîne de caractère
je l'inclus vous voyez dans un Prom
templ de base au
début euh donc je je crée plusieurs
plusieurs composants donc là euh c'est
un premier composant donc je vais créer
euh un promp exemple euh avec les
exemples ici
dessus je spécifie juste un préfixe qui
va venir au tout début et un suffixe qui
va venir à la fin de mon prompt donc en
fait là je suis en train de de créer mon
prompt par morceau plutôt que d'avoir un
prompt qui est long et qui fait la
taille d'une page euh je définis des
briques que je vais rassembler de coup
dans mon F shot from template là je lui
spécifie les exemples je lui spécifie
euh l'exemple de prompt les les les la
le format entre guillemet de de mes
exemples pour qu'il puisse lire mes
exemples et les décrypter je spécifie ce
qui va mettre en début de prompt et ce
qui va mettre en fin de prompt et je
spécifie ma ma mes ma variable ou mes
variables d'entrée avec mes séparateurs
et donc quand on met tout ça bout à bout
ça donne un promt comme ça et donc vous
voyez on n'est pas obligé d'écrire tout
ça euh parce que si vous travaillez avec
l'API d'Open tout simplement vous allez
écrire tout ça en prompt vous allez
beaucoup itérer beaucoup réfléchir sur
comment bien formuler le prompt avec les
bons trucs et cetera ici j'ai juste
défini mes mon mon prompt par par
morceau entre guillemets et puis je l'ai
je l'ai réuni du coup dans le FUS shot
pour qu'il me crée finalement mon prompt
euh
global à quoi ça peut servir de faire
tout ça on peut très bien imaginer que
vous travailleer à plusieurs et vous
voulez utiliser par exemple le même
préfixe dans plusieurs euh dans
plusieurs dans plusieurs codes et donc
là ça devient beaucoup plus flexible
parce que vous allez avoir par exemple
un code qui va utiliser ce préfixe là et
un autre qui COD qui va utiliser un
autre préfixe donc vous pouvez avoir une
bibliothèque entre guillemets de de
morceaux de prompt que vous combinez que
vous réajustez un petit peu comme vous
le souhaitez pour répondre à différents
besoins donc ça c'est le
promt
global qui permet de faire du f du fot
donc làdessus je peux créer maintenant
ma chaîne et fait exactement comme
précédemment
ou je pour aller un peu plus loin ça
c'est un peu plus technique c'était
juste pour vous montrer que c'est
possible
de donner de manière dynamique des
exemples par exemple
là j'ai une suite d'exemple et ce que je
veux faire c'est que je veux pas lui
donner tout ça je veux lui donner par
exemple les TR premiers
ou premiers et pas tous les exemples
vous pouvez avoir une base de question
réponse d'exemple de ce que vous voulez
vous voulez pas lui donner tout vous
voulez lui donner juste un fragment et
donc ils ont pensé à ça ils ont créé à
du coup l bas example selector donc il
va sélectionner des exemples sur la base
longueur et l'objectif ici c'est que on
va lui donner notre base du coup
d'exemple on va lui donner l'exemple
prompt qui va qui va lui permettre de
décrypter comment est-ce que les
exemples sont doivent être interprétés
et on va on va lui spécifier euh la
longueur maximale que doit avoir nos
exemples donc quand il va atteindre du
coup quand il va quand il
va calculer la longueur et qu'il va
atteindre 50 il va s'arrêter il va il va
s'arrêter il va plus prendre les autres
exemp donc ça permet de dynamiquement
ajuster en fait c'est-à-dire euh euh ne
pas avoir à la main à revenir faire du
copier-collé de rajouter des exemples à
chaque fois d'avoir une seule base et
puis de dynamiquement choisir un petit
peu le nombre d'exemple qu on passe au
au modèle et donc on a un f shot
template c'est le même que précédemment
et on va spécifier le exemple selector
qu'on a fait
précédemment donc c'est exactement la la
même chose c'est juste que
euh euh on va
dynamiquement en en avec le la longueur
qu'on lui a fourni il va faire en sorte
que quand il va créer tout le prompt la
longueur maximale finalement il va
l'ajuster il va il va sélectionner les
il va sélectionner un ou plusieurs
exemples de telle manière que le prompte
final est la longueur qu'on lui a
spécifié euh
ok
euh alors je juste vérifier hop si vous
êtes toujours avec moi je pense que
vouses vous êtes toujours avec moi alors
rapidement
euh juste rapidement c'est également
possible de de de spécifier euh euh le
format de sortie donc je vous disais
précédemment quand on crée un système
euh le ce que le LLM donne en sortie
c'est généralement une chaîne de
caractère al c'est pas intéressant d'un
point de vue programmation parce que
peut-être qu'on veut avoir un
dictionnaire pour pouvoir le passer dans
une autre base de données peut-être pour
l'insérer directement dans une base de
données donc je sais pas euh je m'étais
amusé à vous pouvez créer par exemple un
un simple chatbot qui prend une commande
et euh pour pouvoir déclencher le
système finalement de préparation et de
de et de livraison et cetera le système
l'autre l'autre partie du système va
attendre juste un JSON par exemple ou un
dictionnaire avec les clés valeurs le
nom du client le montant laadresse et
cetera et récupérer pour pouvoir
déclencher notre traitement donc on va
avoir besoin pour ça de de de faire en
sorte que la sortie de notre LLM a un
format bien spécifique donc langchain
pareil ils ont des fonctions pour
structurer la sortie de notre LLM donc
c'est un peu plus complexe mais ça se
fait très bien on va spécifier
finalement là c'est le le cas de figure
où on veut que la sortie soit sous
format de dictionnaire on va spécifier
des clés de dictionnaire avec les
descriptions de chacune des clés on va
les combiner on va on va les rassembler
dans un outil euh qui va un peu
permettre de mettre en forme la sortie
du
LLM et on va l'utiliser euh dans euh
alors je vais juste descendre
là donc je crée mon Prom
template et puis euh je lui spécifie le
format avec les fonctions qui sont
précéd qui sont mis précédemment donc ça
veut dire quoi ça veut dire que quand je
vais incorporer ce template euh dans une
dans dans une chaîne que je je vais
l'utiliser avec un LLM il va me générer
euh le for plutôt que de me générer une
chaîne de caractèes il va me générer
exactement le format que je que
j'attends non ça c'est un peu plus
technique mais euh c'était juste pour
vous montrer que c'est que c'est
possible donc vous avez déjà vous avez
vu maintenant un peu euh les
fonctionnalités de base donc on utilise
un modèle on a plusieurs types de
chaînes on peut les combiner un peu
comme on veut les agents sont faciles à
créer
la modularité de du framework long chain
permet d'avoir quelque chose vraiment de
d'assez d'ASS d'assz facile à mettre en
place alors on aura peut-être pas le
temps de que je vous montre un peu les
chaînes et puis comment est-ce qu'on
peut raisonner sur des documents mais ce
que je voulais vous montrer c'était
imaginons maintenant qu'on veut créer
euh une application
simple
l'application quand on veut application
test là par exemple c'est je vais créer
une application qui va me générer des
scripts de vidéo je sais pas je suis
peut-être youtubeur je dis n'importe
quoi et j'ai envie d'avoir de générer
des scripts des scripts de vidéos
courtes qu'estce qui passe bien sous
YouTube donc ça c'est mon c'est ce que
c'est ce que j'attends donc ce que je
vais créer ou ce que j'ai j'ai envie de
créer par exemple c'est assez simplement
juste un prototype avec stream lead
euh streaml va avoir voir du coup deux
champs un un un champ dans lequel
l'utilisateur va mettre un mot- clé et
un autre champ qui va apparaître qui va
avoir le scripte vidéo YouTube que je
veux que je pourrais utiliser ou que je
pourraisajuster si besoin et donc pour
ça je vais utiliser l'anin les LLM donc
open ai pour pouvoir le faire donc
premier élément avec le mot clé que je
que que je mets dans la barre de
recherche euh je vaux utiliser pour je
vais utiliser open ai je vais utiliser
GPT 3.5 pour être précis euh pour
générer le un titre accrocheur sur la
base du mot-cé que j'ai mis donc je vais
créer une chaîne donc une chaîne qui
prend en entrée des mots- clé et qui
avec un prompt template que j'ai défini
va me générer un titre accrocheur et
bien entendu je vais utiliser la mémoire
pour pouvoir essayer de garder
l'historique de ce que je suis en train
de faire une fois que j'ai mon titre
euh ce que je veux ce que je veux passer
la
sortie de cette chaîne à une autre
chaîne qui elle va prendre le titre va
prendre euh une recherche internet sur
les mots
clés va également prendre alors j'ai
oublié de le mettre euh mais c'est pas
grave je le dire à l'oral et va
également
prendre va également aller sur Wikipédia
récupérer euh ce qui est trouvé à propos
de ces mots clés là et c'est ce prompt
là c'est ce avec c'est via ce prompt que
je vais
euh générer mon script mon script vidéo
potentiellement idéal donc dans mes
outils python bien entendu parce que ça
reste du python long chain parce que
c'est c'est c'est un peu la plate la la
la la plateforme entre guillemets
centrale qui va permettre d'intégrer
tout ça euh bien sûr doc Go euh
Wikipédia que j'ai pas cité pour pouvoir
récupérer euh les l'informations sur
Wikipédia et l'informations sur sur
internet alors pourquoi j'ai combiné les
deux parce que on peut très bien voir
euh une information sur Wikipédia qui
est pas tout à fait correcte par rapport
au mot clés qu'on a mis et avoir une
recherche internet qui va venir avec
vraiment la vraie avec l'information que
l'on cherche et donc le fait de combiner
les deux ça va aider un peu le modèle à
savoir comment il doit se réajuster pour
euh pour essayer de construire un script
qui qui qui envoie la peine donc je
voulais deux sources d'information pour
le pour le donner en contexte au modèle
pour qu'il arrive à faire des choses
plus ou
moins euh
donc je vais vous montrer également que
on peut utiliser LM assez assez
simplement donc LMI c'est la plateforme
de monitoring qui a été développé par
les créateurs de longchain donc c'est
une plateforme indépendante vous pouvez
créer votre compte sur longmi vous allez
récupérer une apiik exactement comme sur
pas mal de services et en fait vous
allez l'incorporer dans votre dans votre
dans vos la la P qui dans vos variaable
d'environnement et chaque fois que l'cha
va être déclenché il va enregistrer la
trace sur l et c'est assez simple
d'utilisation euh vous allez voir et
enfin euh je vais travailler avec docker
parce que je veux pour vous montrer que
voilà on peut encapsuler tout ça avec
docker je vais travailler du coup avec
docker donc là j'ai mis un peu les
commandes mais je vais vous montrer
maintenant les les fichiers docker enfin
déjà on commence par le
requirement donc dans mes requirements
vous voyez j'ai beaucoup moins que
précédemment j'ai mon streaml parce que
je vais l'utiliser j'ai open ai j'ai
long chain alors le longchain core il
est nécessaire pour l sm d'après la doc
euh et j'ai inclus également wikipéia
YouTube search et puis même si on va pas
l'utiliser ça sera ça sera peut-être
pour pouvoir étendre un petit peu euh
mon application plus tard euh et avec
Doc doc Go search donc très simple j'ai
un requirement assez assez simple et
basique
maintenant je vous montre le code qui
est pas non plus très compliqué c'est un
seul code j'importe toutes mes
librairies mes promes template mes
mémoires toutes mes mes interfaces qu'il
me
faut je dis je
je en terme de de paramètres d'entrée je
veux permettre à l'utilisateur de de
jouer un petit peu avec la créativité du
modèle donc c'est le paramètres de
température des modèles donc je donne la
possibilité à l'utilisateur de d'être
plus ou moins créatif donc à zéro c'est
c'est le moins créatif possible et et le
et le et le et le zéro et le 1 c'est
c'est euh c'est c'est très créatif mais
il y a des risques finalement que qu'il
qu'il hallucine un petit peu alors
l'hallucination n'est pas forcément une
mauvaise chose c'est très bien lement
dans pour des cas de cas de figures
comme celle-ci où on a besoin d'être
créatif on a besoin de quelque chose
d'un peu d'innovant et un peu de
novateur donc là on peut monter un peu
la la température donc la créativité euh
à 1 par exemple à0 on peut la à à 1 par
exemple oui à et maintenant si quand on
va plutôt travailler avec de la
recherche documentaire où on veut que le
modèle raisonne uniquement sur la base
des données qu'on lui a fourni on va
plutôt partir sur une créativité qui est
très très faible pour du coup lui
permettre de se focaliser sur les sur
les sur les sur les
données donc j'ai défini mon modèle
comme comme comme avant sans souci mais
vous pouvez j'ai utilisé AZ chat open ai
mais vous pouvez utiliser open ai
classique avec euh laapik ça il a
absolument euh au c'est exactement la
même chose euh et là du coup je commence
donc ma première chaîne ma première
chaîne euh c'est celle qui va me générer
mon titre accrocheur donc euh je créé
mon premier pr template en disant give
me YouTube videoé title about this mais
ça c'est très simple mais j'aurais pu
euh lui dire je veux un titre avec euh
assez accrochur pour tel type de tel
type de cible euh sur Youtube par
exemple donc on peut très bien
personnaliser un petit peu tout ça et je
spécifie ma variable d'entrée donc on va
juste rentrer des mots clés et on va
avoir un
titre je définir ma mémoire et je
rassemble tout dans un dans une chaîne
donc ma mémoire mon template
oups hop donc ma m oui ça ma mémoire mon
template euh euh ma variable et puis
tout ça je vais les mettre dans une
chaîne ça c'est ma première chaîne qui
va me générer mon titre accrochat deuxè
chaîne je je veux générer mon mon mon
mon script vidéo donc mon template c'est
que je veux une un script d'une vidéo
attractive du coup qui va euh utiliser
le titre qui a été généré précédemment
et qui va utiliser en même temps
Wikipédia et une recherche internet donc
ça donc en entrée de ce de cette chaîne
de ce de cette chaîne-ci je devrais
avoir mon titre une recherche de
Wikipédia et une recherche d'Internet et
pareil je je crée mon modèle non modèle
ma mémoire
euh ma chaîne dans laquelle je rassemble
tout par la suite euh bon pour aller
très vite là-dessus même si euh juste
pour vous expliquer c'est juste j'ai
défini des fonctions pour pouvoir
éventuellement euh réexécuter euh euh
typiquement la recherche Wikipédia ou
Internet si jamais il y a un problème
pour pouvoir définir une sorte de
logique de retry euh donc j'ai défin un
décorateur bon c'est un peu plus
technique mais euh vous on peut faire
carrément
ça j'ai juste définis ça un peu pour
m'assurer que à chaque fois le LLM va
recevoir en fait quelque chose ou alors
d'être averti si jamais il y a un
problème avec ces deux outilslà et de
manière indépendante ça c'est encore
c'est des c'est des petits Typs de
software engéering c'est que j'ai défini
deux fonctionsépendantes donc une qui va
faire appel du coup à à à la à à l'API
qui est incorporé dans langchain pour
pouvoir faire appel à à à Wikipédia et
celle une une autre fonction qui va
faire appel à l'API du coup de doc Doo
comme ça de
manière ind dépendante je peux euh
modifier ces deux fonctions un peu et et
leur associer des des comportements des
modes d'opération un peu
différents donc c'est pour ça que j'ai
défini F Wikipédia fetch Wikipédia data
et FCH
websarch et
donc j'ai défini une fonction qui va
être exécutée un peu en asynchrone parce
que quand vous travaillez avec
streaml streamlit de base prend le
processus d'exécution par défaut et pour
spécifier pour pour spécifier du coup à
l'environnement dans lequel streaml est
en train de tourner qui il faut qu'il
exécute quelque chose en background en
tâche de fond on définit des fonctions
asynchrones donc qui va qui vont faire
appel du coup à toute ma logique que
j'essaie de définir donc premièrléement
je je vais prendre le titre qui a été
généré en déclenchant ma chaîne sur la
base du mot-cé je vais cherche je vais
faire ma recherche internet je vais
faire ma recherche Web et après je vais
déclencher ma deuxè chaîne en lui
passant le titre la recherche et la
recherche internet et et et il va me
sortir en fait en fait mon script avec
toutes les avec toutes les les données
qui ont été générées euh dans cette
fonction asynchrone
euh donc là ça c'est juste la fonction
pour pouvoir l'exécuter en mode
asynchrone en même temps que streamlate
mais on peut aussi faire 100
euh et puis après vous voyez là
finalement le code de mon streamlit il
est assez simple je définis mon titre je
mets ma barre ma barre d'entrée dans
laquelle l'utilisateur va rentrer en les
mots clés et puis après je fais appel à
ma fonction asynchrone comme ça mon
stream l tourne et en asynchrone en
masqué j'ai une autre fonction qui va
tourner et va me retourner un résultat
et puis après j'affiche mon script et le
titre choisi et puis après
optionnellement je peux afficher la
recherche internet qui a eu lieu et la
recherche internet qui a eu lieu donc
voilà vous voyez c'est très simple en
soi
euh ça prend voais quelques minutes et
puis vous avez une logique un peu assez
complexe qui est faite j'ai un modèle
j'ai deux chaînes qui vont se qui vont
s'exécuter les unes à la suite des
autres et derrière je vais faire appel
du coup à mon modèle finalement qui
tourne chez Azure euh euh le DOCA file
très simple aussi pour ceux qui
connaissent hop pour pouvoir encapsuler
tout ça parce que je voulais faire
tourner du coup mon application dans un
environnement isolé donc très simplement
je travaille avec Python 3.8 j'installe
mes librairies qui se trouve dans mon
requirement et puis après je lance mon
application euh derrière j'ai juste créé
mon le doc compose pour pouvoir le
lancer euh simplement sans avoir à
exécuter les commandes que j'ai mis ici
qui peuvent alors qui se fond parce
qu'il faut d'abord construire l'image et
ensuite euh exécuter l'image euh donc
moi généralement par simplicité ce que
je veux c'est exécuter une commande et
d'avoir tout ce qui fonctionne donc
c'est pour ça que j'ai créé le dek
compose qui me fait les deux
direct ok donc maintenant je vais vous
montrer ce que ça
donne ce que ça donne directement en
exécutant
et il est sur mon deuxè écran et je vais
le
[Musique]
partagerreen
code ok donc là c'est le RMI que je vous
montré précédemment et
là c'est mon application que
j'avais
h donc là j'ai déjà j'ai déjà pris
exécuter un petit peu les choses c'est
juste pour vous montrer que c'est bon
donc h je vais construire absolument
toute mon architecture avec
le
donc mon image elle est déjà créée donc
ça va aller plutôt assez vite et
normalement je devrais avoir alors
j'aurais dû partager plutôt l'écran ce
que je vais faire que je partager tout
l'écran comme ça vous
aur
hop local
host
allez et je
partage
screen
voilà donc voilà l'application une fois
que ça donne donc vous avez j'ai la
barre de créativité là sur le sur la
gauche et ici je peux rentrer finalement
euh n'importe quoi donc je vais rentrer
long chain
pour montrer assez simplement ah non
j'ai mal écrit mais bon tant pis on va
voir un peu ce que ça ce qui se
passe
bon entendu il faut avoir la puissance
de calcul derrière mais normalement je
pense que ça
devrait le faire donc il va faire deux
choses première recherche sur internet
et deè recherche wikipéia bon là je me
suis trompé donc effectivement c'est
complètement à côté de la
plaque voilà mais j'ai le titre
accrocheur j'ai le script vidéo donc
vous voyez il me donne les voix off avec
les séquences exactement pour pouvoir
par exemple coller ça tout ça à une
vidéo et puis je peux avoir ce qu'il a
trouvé comme recherche comme sur
Wikipédia et ce qu'il a trouvé comme
recherche sur internet donc en recherche
sur internet il a quand même trouvé
langchain malgré le fait que je lui ai
donné un truc un peu en ambié il a quand
même trouvé long et on on regarde
alors est la
plaqueokme trouvé ça
pourraitélioréé un peu à
comment comment faire le truc mais par
la recherche quand
Mme
allez
ok donc exploring the power of longch
the futurecentr langage learning ça
paraî plutôt plutôt pas
mal donc il vous il donne même en fait
comment est-ce qu'on doit on peut on
peut construire euh la vidéo YouTube en
disant un peu les plans qu'on doit faire
les voix off donc euh challenge après
bon je vous avoue c'est largement
améliorable parce que quand on lit un
petit peu ça reste quand même un petit
peu général et donc c'est là où vous
voyez maintenant où va où va entrer en
ligne de commande le prompt engineering
typiquement dans mon prompt peut-être
que j'ai pas été assez je sais pas je
l'ai pas bien orienté donc euh même s'il
a même si en terme de format je trouve
que ça
va mais en terme de pertinence par
rapport au ce que je veux lu je lui
donner soit je lui donne plusieurs mots
clés soit du coup je dois modifier un
peu mon prompt pour qu'il puisse pour
qu'il puisse un peu qu' puisse un
peu
donc ok donc c'est une bonne
introduction un framework qui Fa
simplifier la création d'application
ok ça offre une suite d'outil de
composant et d'interfac donc qui font en
sorte que l'interaction soit
facilité
donc il fait le focus sur la partie
modèle de la
plaque ok
véfier bon il vous donne pas mal
d'outils et donc onit il a dans
Wikipédia il a bien trouvé longchain
summary on peut voir un peu euh les
information qu'il a et puis en terme de
recherche Internet on voit qu'il a bien
trouvé Longchen et puis du coup il est
capable de l'utiliser donc bien entendu
le système il est largement largement
améliorable mais c'était pour vous
montrer que euh si voilà en en quelques
minutes vous pouvez avoir quelque chose
comme ça et donc la barre de créativité
pareil c'est que je peux modifier lui
demander de être euh plus ou moins
créatif donc je vous rappelle je me
rapprocher vers la gauche mois je vais
être créatif et plus ver la droite plus
je vais être créatif c'est pour ça que
plutôt que de parler de température euh
j'ai mis
créativité
euh donc là est-ce que
chain ok
framework c'est bon
ok
ok bon pourquoi
pas bon il là il repart sur son truc bon
je pense que là il a il essaie de coller
beaucoup plus aux données qui lui sont
fournies et donc de de faire des choses
au moins voilà en terme de prototype ça
montre juste que voilà vous voyez c'est
c'est en soi pas très compliqué d'avoir
quelque chose d'assez similaire alors
donc du coup sur cette base moi donc moi
je l'ai fait
avec avec Wikipédia et Go bien entendu
il là existe d'autres outils
d'intégration vous pouvez les combiner
avec des bases de données
euh vous pouvez les combiner avec des
des rapports des CSV et cetera et avoir
une analyse de CSV qui est fait un petit
peu comme c'est fait avec l'outil data
analyse de chat GPT vous pouvez euh vous
créez vous-même quelque chose un peu
custom pour faire des analyses avec vos
données à vous et et de manière plus ou
moins sécurité sécurisé bien entendu si
vous avez bien entendu tout bien isolé
et si vous utilisez typiquement un
modèle que vous hébergez dans votre
entreprise donc là j'utilise avec Azure
open mais vous pouvez l'utiliser avec
avec Mistral avec une avec des versions
Open Source
euh vous pouvez également l'utiliser
avec un outil open source qui s'appelle
olama qui permet d'avoir de de faire
tourner des LLM en local en CPU donc
sans avoir besoin de s des calculs
énormes alors les résultats devont
dépendre de la tâche spécifique sur
laquelle vous travaillez mais c'est
possible alors est-ce qu'il y a d'autres
questions je regarde
euh analyse alors pour faire une analyse
d'une entreprise donnée à partir du coup
d'un Data frame de commentaire client
par exemple extrait des points faibles
et des points positifs quel modèle on
préponise alors toujours en terme de
d'utilisation des LLM et de prompt
engineering il faut toujours aller
simplement de toute façon quand vous
regardez les les la la méthodologie
projet de création d'applications qui
utilisent les LLM euh on arrive enfin
l'option de F tuner un modèle elle est
toujours à la toute toute fin parce
qu'elle va demander beaucoup plus de
moyens et généralement quand on va
vouloir F tuner ça veut dire qu'on on
veut quelque chose d'assez spécifique et
ce cette spécificité là c'est ce qui
dégage notre valeur on va généralement
commencer par euh sélectionner un modèle
c'est-à-dire euh est-ce qu'on on va
utiliser un Open Source un petit modèle
ou on va utiliser un un modèle type gpt4
pour ça donc va sélectionner le modèle
qu'on veut utiliser ensuite on va
toujours commencer par faire du prompt
engineering pour voir si juste en
faisant du prompt on peut avoir des
choses qui sont assez acceptables
euh une fois que si jamais le prompt
engineering on on voit que ça commence à
avoir du potentiel on va encsuler toute
cette logique avec
l'antien donc du coup vous allez
typiquement écrire un prompt qui dit un
truc similaire à
euh je sais pas je vais te fournir une
base de de de documents et euh analyse
ces documents et fais-moi des
recommandations sur la base des
documents que tu vas lire et cetera donc
l'chain va avoir des fonctions qui vont
permettre de charger en mémoire
typiquement des CSV des fichiers Excel
des PDF et cetera et avoir utiliser le
le la chaîne comme je vous ai montré
pour analyser euh pour analyser les
choses d'ailleurs je peux vous montrer
alors c'est vrai que ça fait déjà 2h euh
peut-être qu'il faudra que j'accélère un
peu euh je vais peut-être vous montrer
vite fait euh si ceux que ça intéresse
et cell que ça
intéresse c'est dans mon ripo que j'ai
mis
ça il est là mon ripo et je vais aller
dans dans dans euh q& of a
document alors du coup j'aborde pas mal
de notions ici sur lesquel je passe très
vite je vous ai parlé de l'embedding sa
nécessité et
cetera donc on va généralement quand on
va vouloir faire de la recherche sur un
document on va passer par de l'embeding
et donc on va utiliser un modèle
d'embedding jusqu'à présent j'utilisis
un modèle de chat donc qui permet une
interaction le modèle d'embedding lui je
peux aussi l'avoir chezure open mais
vous avez également la même chose bien
entendu chez les autres donc c'est
modèle bien spécifique que je vais
utiliser typiquement céit pour vous
montrer l'exemple que quand je je
définis ici mon modèle et quand je lui
passe une chaîne de caractères il me
renvoie un vecteur donc c'est une
représentation vectorielle de cette
chaîne de caractères et la spécificité
comme je vous disais c'est que cette
représentation vectorielle conserve la
sémantique euh de ce qui est dit dans
dans ce dans ce
texte donc ici j'importe un document 1
csv1 dataframe classique où j'ai nom et
puis
description lchain propose une fonction
CSV loader qui permet de charger un
fichier
CSV donc je charge mon fichier CSV et du
coup je peux naviguer via cette fonction
dans ce document
là derrière je vais me définir un un
objet de mémoire mais qui va se
s'inspirer qui va se baser sur un
document donc il va se baser sur mon mon
le document que j'ai préchargeur mémoire
donc je définis c'est un objet de
mémoire un peu particulier il il en
existe d'autres hein mais celui-là va
l'utiliser donc vous voyez je lui
spécifie le document les documents qui
sont préchargés ici et je lui spécifie
également le modèle d'embedding parce
que du coup il va retranscrire tout le
document finalement en équivalent
numérique et il va le faire en mémoire
ça c'est on pourrait très bien ici
utiliser un une Vect un vector store
c'est-à-dire une base donné qui va
stocker des vecteurs d'eding donc
ilaliste plein vous pouvez l'utiliser
vous pouvez stocker des vecteurs d'eding
dans du relationnel vous pouvez
également le stocker dans du non
relationnel ça va dépendre de ce que
enfin de la base de données à laquelle
vous avez accès il y a des bases de
données comme P code qui sont assez
connus pour ça qui sont qui nativement
ont des outils pour ça vous pouvez
également utiliser redis qui est aussi
un cas d'utilisation donc voilà donc ici
je le charge en mémoire donc en mémoire
RAM pour pouvoir euh travailler
directement avec ça donc typiquement
c'est le cas d'utilisation c'est je ne
veux pas utiliser une base de données et
j'ai une base documentaire qui est assez
petite donc plutôt que de la charger
dans une base de données je préfère à
chaque fois la mettre en mémoire pour
pouvoir
l'utiliser donc j'ai défini un peu donc
ça ça va me servir un peu de base
documentaire et donc là je vais définir
un retriever donc un objet qui va se qui
va permettre d'aller euh comparer les
embedding pour choisir les
représentations numériques qui sont les
plus pertinentes avec ma la question et
choisir les documents associés pour
pouvoir les les passer au LLM c'est le
but du retriever je crée une chaîne donc
vous voyez j'ai une chaîne retrieval q&
toute simple euh elle est faite pour
prendre un LLM et prendre un retriever
donc un objet qui encsule des documents
et des embedding et je peux lui poser
des questions directement donc vous
voyez je lui demande de lister euh tous
les shirts du coup qui ont de la
protection solaire dessus et je lui
spécifie le format et je passe ça
directement à ma chaîne donc ma chaîne
qu'est-ce qu'elle va faire elle va aller
trouver les documents associé via le
Retriever et elle va elle va le passer
cedocument à mon l à mon LLM et mon LLM
va me répondre finalement en terme de
synthèse donc quand j'exécute ma chaîne
euh pareil vous avez ça parce que j'ai
mis verbos = true donc c'est pour voir
ce qui se passe et donc là j'ai le le
résultat il me dit quand c'est quand il
est entré dans la chaîne et quand il a
fini avec le résultat et donc derrière
je peux le mettre en forme avec la
fonction macdown euh qui me fait qui me
donne du coup le récapitulatif un peu de
euh de de ce qu'il a vu dans les données
avec un
résumé et derrière vous pouvez avoir
accès euh directement euh sans avoir à
utiliser un LLM vous pouvez également
avoir accès au document en luiê au
fragment du document en lui-même donc
vous voyez a exécuté dessus un la la
méthode similarity search euh avec une
chaîne de caractère sans avoir avoir
appelé un un LM et cet objet là cet
objet qui contient à la fois les
invembeding et les fragments de
documents est capable par en en
calculant les distances entre les
vecteurs d'identifier euh les fragments
qui sont les plus pertinents par rapport
à ma réponse donc c'est ce qui est fait
automatiquement par euh cette
chaîne-ci par la par la RAL qn c'est ce
qui est fait automatiquement derrière
mais c'était pour montrer que quand on
va utiliser des documents on va pas
utiliser le LLM pour pouvoir faire des
synthèses mais on peut également faire
de la simple euh recherche de similarité
donc des des mots des fragments
similaires à une recherche pour avoir
les résultats
associ donc c'est un peu simplement vous
pouvez faire un truc comme ça qui euh
euh qui vous donne euh qui permet de
d'interagir ou de raisonner avec un
document à l'intérieur du coup euh
typiquement là je suis dans un jpitre
mais j'aurais pu créer également une
application Stream qui va permettre à un
utilisateur de charger le CSV et sur la
base du CSV qu'il est chargé de lui
poser des questions donc c'est recréer
tout simplement un petit peu ce qui est
fait dans dans l'objet dans le l'outil
data analyse
ok donc com le temps commence à passer
donc je
vais regarder s'il y a d'autres
questions
et je vais repartager juste mes slides
pour pouvoir conclure tout ça
tranquillement
donc
conclusion simple du coup lchain c'est
un outil c'est un
framework utiliser en Python ou en
d'autres langues pour pouvoir simplifier
un peu le développement l'application
euh donc ça il va offrir du coup une
interface euh standardisée pour pouvoir
réaliser des intégrations avec des
outils externes assez simplement et avec
des outils qui vont permettre le
débugage pour pouvoir voir un peu ce qui
se passe
euh
donc donc bien qu'il donc bien qu'il
faut prendre en compte du coup les du
coup les exigences en termees de
ressources parce que ça utilise les LLM
derrière et que souvent euh pour les les
processus qui sont notamment un peu
complexes vous avez besoin de de
puissance de calculs
[Musique]
euh la la l'utilisation de longchain va
permettre finalement de simplifier un
petit peu l'interaction qui peut y avoir
entre tout ça al c'est un peu le
vraiment le but euh de but de l'ch et
euh normalement si j'y arrive
hop je vais vous mettre dans le chat euh
du coup j'ai trouvé c c cheat cheat qui
est super bien faite et qui est et qui
est et qui est accessible
hop voilà euh qui vous donne un peu pas
mal de de fonctions et d'outils euh qui
sont dans l'écosystème longchain donc si
vous voulez avoir vraiment une sorte de
vision un peu globale de tout ce dont
j'ai parlé aujourd'hui avec plus
d'outils bien entendu parce qu'il y a
pas mal de choses à l'intérieur vous
avez les principaux donc vous avez la
gestion de mémoire vous avez les chaînes
quelques chaînes principales euh vous
avez les promp template qui permettent
un peu de faire les prompt euh vous avez
les les les documents de load ur qui
permet de charger des documents vous
pouvez voir que vous avez vous pouvez
charger des CSV des PDF et tout un tas
de formats assez divers et puis vous
avez des la possibilité de vous
connecter à des bases de données euh
comme vextor Store pour pouvoir
enregistrer des des des vecteurs tout
simplement d' bedding pour pouvoir faire
de la ce qu'on app le rag donc la
retrieval ament generation euh assez
assez simplement et puis euh euh bien
entendu donc sur le sur le sur le sur
l'image que vous vous devez enfin je
vous ai mis le lien donc vous l'aurez en
cran euh chez vous euh vous voyez que
pour pouvoir euh la partie quantization
euh c'est typique et la partie fine
tuning vous voyez ce n'est pas ce n'est
pas l'ch qui est utilisé mais c'est les
fonctions de hugging face donc les
fonctions de hugging face pour pouvoir
euh la qutisation va permettre de
réduire la taille des modèles donc
typiquement euh euh quand généralement
quand vous finissez d'entraîner un
modèle il peut avoir un certain une
certaine taille et donc donc vous allez
un peu la contation va permettre de de
réduire un peu la taille du modèle sans
perdre beaucoup en terme de performance
et vous avez les fonctions de F tuning
vous avez tout ça qui sont sont proposés
du coup par la librie huging face qui
permet de de F tuner et de réduire la
taille des modèles de manière assez
simple donc voilà donc c'est pour ça que
voilà généralement vous allez travailler
avec Open hing face et long ch un petit
peu en parallèle pour pouvoir développer
des choses
ok donc
voilà c'est un peu ce dont je voulais
vous parler alors je pense que j'ai
débordé j'ai un peu abusé mais peut-être
si vous avez des questions là comme ça
je peux en prendre avant de se séparer
alors quelle est la différence entre
longchain et Lama
index alors j'ai pas encore approfondi
vraiment Lama index donc je Seris pas en
mesure de vous dire exactement mais
juste si je pars juste sur le nom j'ai
plutôt l'impression que euh Lama index
généralement quand vous voyez index dans
le nom euh ça fait juste typiquement
l'anchîn a également des index c'est
tout simplement des objets qui vont
permettre de se connecter euh à des
outils euh typiquement à des bases de
données et pouvoir récupérer le truc
mais attendez je vais creuser hein euh
j'ai pas encore vraiment creusé la main
index
et alors je vois que c'est un ok
framework qui Connect euh à des sources
de données qui permett de connecter des
LLM à des sources de données euh avec
pour différents use case donc je pense
que la main index a des à des euh à des
points de de similitude avec longchain
euh mais à mon avis longchin a peut-être
beaucoup plus d'outils euh parce que
longchain commence à avoir une
communauté assez assez assez énorme et
il y a déjà de pas mal de plateformes
qui utilisent longchainîn pour pouvoir
créer leurs propres service donc je
pense que c'est un terme de de de
complémentarité des outils il y en a pas
mal
ok alors normalement je pense que
j'avais répondu à toutes les questions
euh donc pour le notebook euh je vais le
le cleaner un petit peu euh ne mettre
que typiquement je vais vous mettre
l'application que j'ai faite avec par
exemple les notebook et enlever un petit
peu tous les le le des ordres qui s'y
trouvent euh comme ça vous pouvez avoir
quelque chose de propre et euh je
mettrai aussi à disposition le lien des
slides pour que vous puissiez
éventuellement si ça vous intéresse bien
entendu euh y avoir accès et donc euh
donc merci à vous pour ceux qui ont sont
restés après 2h 200 de je m'attendais
pas à faire autant de temps je suis
désolé si jamais j'ai un petit peu
débordé en tout cas c'est tellement
passionnant que voilà on peut dire pas
mal beaucoup de choses là-dessus et
j'espère que vous avez appris des choses
et que bah du coup je vous dis à bientôt
lors peut-être d'une autre formation
tion et euh voilà continuer de d'être
curieux voilà c'est le mot de la
fin merci à vous et puis euh et puis
bonne
soirée ok je laisse le dans le je laisse
le notebook je laisse les notebooks
comme ça vous les avez et euh et vous
pouvez euh et vous pouvez
creuser c'est vrai que je vous ai même
pas montré l'Ance sm mais ce sera une
prochaine fois sera une
prochaine
ok ok bon merci à tous et à une
prochaine
UNLOCK MORE
Sign up free to access premium features
INTERACTIVE VIEWER
Watch the video with synced subtitles, adjustable overlay, and full playback control.
AI SUMMARY
Get an instant AI-generated summary of the video content, key points, and takeaways.
TRANSLATE
Translate the transcript to 100+ languages with one click. Download in any format.
MIND MAP
Visualize the transcript as an interactive mind map. Understand structure at a glance.
CHAT WITH TRANSCRIPT
Ask questions about the video content. Get answers powered by AI directly from the transcript.
GET MORE FROM YOUR TRANSCRIPTS
Sign up for free and unlock interactive viewer, AI summaries, translations, mind maps, and more. No credit card required.