TRANSCRIPTFrench

Introduction à LangChain

2h 22m 1s24,053 words3,661 segmentsFrench

FULL TRANSCRIPT

0:12

alors bonjour à tous et à

0:14

toutes tous ceux qui nous rejoignent on

0:17

va juste attendre un petit peu quelques

0:19

minutes avant de commencer ce data

0:22

atelier j'espère que vous m'entendez

0:24

bien donc ça pe me permettre de vérifier

0:26

un peu si vous m'entendez si vous pouvez

0:28

juste mettre dans le chat que vous

0:30

m'entendez ça ça m'aidera à savoir que

0:32

je parle pas dans le

0:35

vide j'espère que vous voyez aussi le

0:38

mon

0:41

écran yes vous m'entendez super alors je

0:45

on va attendre quelques minutes histoire

0:47

que histoire que il y a du monde qui qui

0:50

nous rejoigne et puis voilà j'espère que

0:52

vous allez être nombreux j'espère

0:53

surtout que ça va vous

0:55

intéresser donc le thème d'aujourd'hui

0:58

c'est une introduction à longchain jeis

1:00

j'en dis pas plus maintenant je vais

1:01

aller dans le détail tout au long de la

1:05

présentation dans les grandes lignes

1:07

dans les grandes lignes

1:10

normalement cette présentation va plus

1:12

être va être un peu plus technique vers

1:14

la fin donc je va commencer par bien sû

1:15

les généralité et au fur à mesure qu'on

1:18

va avancer on va si on a le temps je

1:20

ferai du coup une partie un peu

1:21

démonstration pour montrer concrètement

1:24

comment est-ce qu'on utilise longchin et

1:26

comment est-ce qu'on on commence à

1:28

travailler avec longchin

1:31

euh

1:32

euh normalement pour la partie démo bien

1:35

entendu il va falloir être un petit peu

1:37

familier avec pyon avec les

1:38

environnements virtuels avec tout un tas

1:40

de choses euh donc voilà si jamais ça

1:44

vous êtes pas familier et cetera vous

1:45

pouvez juste regarder un petit peu par

1:47

curiosité et puis peut-être poser des

1:48

questions par la suite il y aura pas de

1:50

de souci là-dessus mais voilà vous allez

1:51

vraiment euh si vous avez vraiment une

1:53

connaissance on va dire une expérience

1:55

avec la avec la programmation ça va être

1:57

beaucoup plus simple pour vous de de

2:00

suivre et puis de de voir tout le tout

2:02

le

2:03

euh quoi d'autre donc on va faire j'ai

2:07

une partie présentation une partie démo

2:10

et puis une partie du coup où vous

2:11

pourrez poser vos questions mais il y a

2:13

pas de souci j'ai le chat en face de moi

2:15

et donc si je vois des questions entre

2:17

guillemets auxquelles je peux répondre

2:18

dans la foulée j'hésiterai pas à

2:20

répondre directement donc voilà c'est

2:22

parti on est 28 et il est 4 et donc

2:27

c'est parti pour la présentation

2:32

donc je vais commencer par me présenter

2:34

euh donc je suis Sébastien simet je suis

2:36

machine learning ingénieur chez datation

2:39

test euh voilà je suis un passionné

2:41

d'intelligence artificielle

2:43

euh dans le dans mon dans le cadre de

2:46

mes de de mes travaux euh mon objectif

2:49

c'est d'allier la création de contenu

2:51

euh au développement d'applications qui

2:54

utilisent du coup l'intelligence

2:55

artificielle donc généralement la

2:58

plupart du temps je suis à amener à

3:00

voilà à à combiner un petit peu les deux

3:03

pour pouvoir euh rendre explicite et

3:06

facile d'accès en fait des technologie

3:08

tout en essayant finalement de voilà de

3:11

de faire également du du développement

3:13

parce que ça a pour but quand même de

3:14

créer de la valeur pour pour des

3:16

entreprises donc mon travail ça va

3:18

consister la plupart du temps du coup

3:20

entre autres activités cheaptation test

3:22

à concevoir du coup des modèles d'IA euh

3:26

et à les combiner finalement avec

3:27

d'autres systèmes pour voilà pouvoir

3:29

essayer d' aller plus loin et puis de de

3:31

dégager surtout de la

3:33

valeur et donc aujourd'hui on va parler

3:36

spécifiquement de long chain euh mais

3:39

avant de passer sur long chain euh juste

3:42

pour que on arrive tous avec le même

3:44

background alors longchin s'utilise dans

3:46

le contexte de des ce qu'on appelle les

3:48

large language model donc avec des

3:51

modèles de type GPT ou des modèles de

3:52

type Lama je vais détailler à quoi ça

3:56

sert dans le cadre d'utilisation de ces

3:57

modèles là mais si on est dans

4:00

dans dans le dans le li générative et

4:04

donc c'est quand même bien d'avoir un

4:05

petit peu une sorte de recap sur d'où ça

4:08

un peu un peu d'histoire autour de la

4:10

création de long chain euh un petit peu

4:13

un un rapide rappel de ce que c'est

4:15

qu'un LLM avant finalement de rentrer

4:18

dans le corp dans le cœur du sujet donc

4:20

on va commencer par un peu d'histoire

4:22

euh donc si vous vous souvenez euh on va

4:25

dire décembre 2013 entre guillemets

4:27

c'est un petit peu en il y avait bien

4:29

entendu beaucoup de travaux sur

4:30

l'intelligence artificielle qui existait

4:32

et qui qui qui était en qui é en cours

4:34

mais on va dire là j'ai marqué des des

4:37

des grand des grands moments entre

4:39

guillemets qui ont qui ont qui sont

4:41

allés dans le sens de l'amélioration

4:43

finalement de des des techniques des

4:45

technologies di génératif donc ça a

4:47

commencé un petit peu avec les

4:49

modélisations deep learning de type RNN

4:51

donc ça c'est pour prendre en compte

4:53

finalement les séquences comme les

4:55

phrases les mots et cetera pour essayer

4:57

de prédire un petit peu les mots qui

4:59

viennent euh étant donné la des mots

5:02

d'entrée qui sont donnés à l'entrée du

5:05

système donc c'est donc vous voyez que

5:07

il y avait des des des gros

5:09

contributeurs comme Google finalement

5:10

qui euh dès le début finalement ont

5:14

beaucoup beaucoup beaucoup contribuer

5:15

finalement dans le développement de T

5:17

technologie 2018 open lance le modèle de

5:21

langage génératif gpt1 donc

5:25

c'était déjà en cours de recherche et

5:27

puis il lance du coup le premier modèle

5:29

général

5:31

euh novembre 2019 il open lance

5:36

gpt2 donc vous voyez en l'espace de

5:38

allez donc on a 2018 2019 2020 en

5:41

l'espace de 2 ans euh ils ont ils sont

5:44

accé ils ils sont allés très vite dans

5:45

le dans le développement et dans du coup

5:47

la mise à disposition des modèles

5:49

génératifs du coup de type GPT c'est une

5:51

architecture Transformers bien

5:53

particulière donc ils ont fait le 1 le 2

5:56

et du coup le gros succès finalement le

5:58

3 finalement qui qui est venu avec des

6:00

des compétences et des capacités assez

6:01

assez impressionnantes donc il publie il

6:04

publie gpt3 en 2020 et en octobre 2022

6:09

on a le lancement initial du framework

6:12

longchain par Harrison Chase et euh en

6:16

couche euh en couche Cola donc il sont

6:19

un peu les deux qui ont initié

6:21

finalement la création de ce framework

6:22

qui est totalement open source et donc

6:26

on peut le voir que par la suite après

6:27

2022 on arrive à 2023 avec la la levée

6:30

donc en avril 2023 longchain a levé 20

6:33

millions de dollars de financement et

6:35

une valorisation d'au moins de 200

6:37

millions de dollars donc voilà la

6:39

valorisation ça sert un peu à montrer

6:41

que euh c'est un framework c'est un

6:44

outil qui va beaucoup qui pèse déjà

6:47

beaucoup dans dans le développement

6:48

d'application qui utilisent le li

6:50

générative mais qui va continuer

6:52

finalement de grusir parce que

6:53

génalement quand on va investir des

6:55

capitaux l'objectif c'est de voilà c'est

6:57

de toucher à plein de use cas différents

6:59

et et voilà de créer des des

7:00

applications assez intéressantes donc

7:02

depuis 2022 Lang Chen a rapidement gagné

7:05

en popularité avec des contributions de

7:08

centaines de contributeurs sur GitHub

7:10

donc si vous allez sur le site de GitHub

7:12

de longchain vous allez voir énormément

7:13

de

7:14

contributions des discussions

7:17

euh également sur Twitter si vous allez

7:19

sur Twitter vous allez également voir

7:21

que c'est un framework c'est une

7:22

technologie qui est assez

7:23

assz assz répandu et une activité animée

7:27

sur le serveur discord également qui est

7:29

un petit peu l'équivalent on va dire

7:31

open finalement de slack sur lequel vous

7:33

avez également beaucoup de développeurs

7:34

qui lancent souvent leur projet open

7:36

source euh et qui ont les on va dire les

7:39

premiers échanges avec les utilisateurs

7:41

sur sur

7:45

discord donc une fois qu'on a vu ça donc

7:48

on a un peu vu d'où ça venait donc ça

7:50

c'est ça le développement de l'chin

7:52

s'inscrit dans la continuité finalement

7:54

des développement des des modèles donc

7:57

je pense qu'ils ont tout de suite vu

7:58

avec l' accélération du de la mise à

8:01

disposition de modèle dia générative ils

8:03

ont tout de suite le potentiel de tout

8:05

de suite créer des applications de de

8:06

tout de suite permettre la création

8:08

d'applications qui vont se baser

8:10

justement sur ce qu'on appelle les LLM

8:13

donc ou large language

8:15

model alors très rapidement parce que du

8:18

coup je vais supposer que vous êtes un

8:20

peu déjà familier avec ça mais je vais

8:21

donner quelques bases pour que voilà

8:23

ceux et celles qui sont pas vraiment

8:25

habitués vous puissiez savoir un peu de

8:26

quoi on

8:28

parle donc un modèle de langage c'est un

8:31

modèle probabiliste de langue naturelle

8:34

générant des probabilités de mots donc

8:37

ça veut dire quoi ça veut dire

8:39

que un modèle dit un modèle LLM donc un

8:42

large language model ne réfléchit pas

8:46

c'est pas un cerveau tel que on l'a dans

8:48

dans dans dans nos têtes c'est un outil

8:52

mathématique qui va du coup calculer les

8:54

probabilités d'occurrence de mots et

8:57

pour pouvoir générer cette probabilité

8:59

d'occurrence démo finalement euh ces

9:01

modèles ont été on a fait ce qu'on

9:03

appelle un entraînement sur énormément

9:06

de documents donc sur une grosse partie

9:09

Wikipédia sur une grosse partie de blog

9:11

et de tout un tas de d'informations sur

9:13

internet donc on parle souvent de

9:15

plusieurs plusieurs trabyytes de données

9:18

qui ont été sur lesquelles les modèles

9:20

ont été entraînés et l'objectif

9:22

lorsqu'on va prendre un modèle et qu'on

9:24

va l'entraîner sur une telle quantité de

9:25

données c'est pour lui permettre

9:28

d'apprendre euh de de déjà de de de

9:31

d'apprendre un peu la structure du

9:32

langage ça veut dire que le modèle va

9:34

s'habituer à voir des mots qui

9:37

apparaissent les uns à la suite des

9:38

autres et qui ont qui partagent un

9:40

certain contexte et il va se baser

9:42

finalement sur cette probabilité

9:44

d'occurrence des mots dans une séquence

9:46

pour pouvoir à partir d'une séquence

9:48

d'entrée qu'on va lui donner en entrée

9:50

générer une une séquence en sortie mais

9:52

encore une fois sur la base du coup de

9:54

la probabilité des mots qui vont

9:56

probablement arriver par la suite donc

9:59

les LLM sont des modèles euh de grande

10:03

taille encore une fois pour deux raisons

10:05

parce qu'ils ont été entraînés sur

10:07

énormément de jeux de données mais aussi

10:09

parce que ce sont des modèles qui ont

10:11

énormément de paramètres qui qui leur

10:14

ont permis justement d'apprendre du coup

10:16

on va dire la structure d'e d'un langage

10:18

bien particulier ou la la la structure

10:20

finalement d'un d'un texte sur laquel il

10:22

a été entraîné donc ils sont après

10:24

entraînés euh sur des données non au

10:27

début on va dire semi-étiqueté ça veut

10:30

dire qu'on va il va avoir une phase où

10:32

on va un peu guider le modèle dans ce

10:34

qu'il est censé donner en sortie et une

10:36

phase dans lequel on va un peu laisser

10:37

le modèle lui-même essayer de comprendre

10:40

la structure des données sur lesquell on

10:41

on l'entraîne pour l'utiliser plus tard

10:43

pour l'adapter c'est un peu ce que j'ai

10:45

essayé de schématiser ici ça veut dire

10:47

quoi ça veut dire que en le le la

10:50

création d'un modèle de type GPT euh la

10:54

création d'unun d'un service de Ty chat

10:56

GPT tel qu'on peut l' voir chez open

10:58

c'est fait c'est souvent fait en deux

11:00

étapes la première étape on va créer ce

11:02

qu'on appelle du coup un base model un

11:04

modèle de base ou un modèle fondateur

11:07

vous allez souvent retrouver ces terme

11:09

là on entraîne ce modèle fondateur il

11:12

est entraîné uniquement sur énormément

11:14

de quantités de texte pour comprendre et

11:16

décrypter la structure euh d'un texte et

11:21

par la suite ce modèle est ensuite

11:23

adapté à des use cas bien spécifiques

11:26

comme la réponse à des questions

11:28

réponses

11:29

comme la génération de tout un tas

11:31

d'informations comme l'analyse de

11:33

sentiments comme à tout un tas d'autres

11:34

tâches sur lesquel on peut bien vouloir

11:36

adapter un modèle de ce type donc il y a

11:39

bien il y a deux phases il y a la phase

11:40

de création du modèle de base et ensuite

11:42

il y a la phase vous allez souvent

11:44

entendre parler de F tuning de du modèle

11:46

de base donc une d'adaptation de ce

11:48

modèle de base à des Keys bien

11:52

spécifiques donc les LLM de base ou

11:55

foundational model souent entendre ça

11:57

dans la littérature sont form sur un

11:59

ensemble massif de données donc il

12:00

peuvent capturer la syntaxe la

12:03

sémantique inhérente à la langue humaine

12:06

et c'est pour ça justement que quand

12:07

vous vous entrez en en texte euh il a

12:11

déjà répéré la structure et il a déjà un

12:13

peu encrypter on va dire la sémantique

12:17

de ce que vous voulez dire et c'est

12:18

comme ça qui vous génère en fait quelque

12:20

chose qui va dans le sens de ce que vous

12:23

voulez par contre je vous disais dans la

12:25

deuxième étape donc on a une phase

12:27

d'entraînement où on va permettre au

12:30

modèle d'apprendre un tout un tas donc

12:32

on on va dire la à l'issue de

12:35

l'entraînement on va avoir quelqu'un on

12:37

va avoir un une un outil qui va avoir

12:40

des connaissances générales donc si je

12:42

prends l'analogie c'est comme vous vous

12:45

avez fini vous venez de valider je sais

12:47

pas votre master votre agrégation votre

12:49

thèse vous avez une connaissance on va

12:52

dire plutôt générale sur le sujet ou sur

12:53

les sujets sur lesquels vous avez

12:55

travaillé et maintenant quand vous

12:56

commencez à travailler dans une

12:57

entreprise bien entendu C entreprise là

12:59

va avoir ses propres processus et vous

13:01

allez donc être en quelque sorte adapté

13:04

au processus dans cette entreprise donc

13:05

on va comme si réorienter toutes vos

13:08

connaissances de base pour générer la

13:10

valeur dans un contexte bien spécifique

13:12

et c'est ce qu'on appelle du coup

13:13

l'adaptation don je parlais euh

13:16

précédemment donc il y a deux façons

13:19

d'adapter un modèle première façon c'est

13:22

ce qu'on appelle le fine tuning à

13:24

proprement parler qui est on va prendre

13:26

le modèle euh tel qu'on l'a entraîner et

13:29

on va euh on va continuer un petit peu

13:33

son entraînement sur des jeux de données

13:35

qui ont été étiquetés pour les tâches

13:37

sur lesquelles on veut qu'il soit un

13:38

spécialiste c'est souvent ce ce qu'on va

13:41

ce à quoi on va faire référence quand on

13:42

va parler de fine tuning et sinon

13:45

l'autre technique pour pouvoir adapter

13:46

un modèle un peu de base pour sortir

13:48

quelque chose qui va nous correspondre

13:50

c'est tout simplement via des techniques

13:51

de prompt engineering c'està-dire que

13:53

vous allez via le Prom utiliser les

13:56

connaissances générales pour essayer de

13:57

guider le mod modèle vers une sortie

14:00

bien spécifique et donc ça nous permet

14:04

de partir

14:05

euh euh bien sur la partie prompt

14:08

engineering du coup pour vous rappeler

14:10

rapidement ce que c'est comme ça on va

14:12

partir avec toutes les bases euh donc le

14:15

prompt engineering c'est un processus

14:18

utilisé pour structurer un texte compris

14:21

par un LLM en langage naturel pour

14:23

définir une tâche spécifique donc c'est

14:26

un processus pendant lequel vous allez

14:27

designer une une instruction qui va être

14:31

donnée en entrée au modèle et ce modèle

14:33

va devoir du coup euh sur la base de

14:36

l'instruction que vous lui avez fourni

14:37

essayer de donner quelque chose qui vous

14:39

correspond donc là j'ai grosso modo un

14:41

petit peu généré le processus si on peut

14:44

le générer comme ça le dans le prompt

14:46

engineering je vais pas insister

14:47

là-dessus parce qu'il y a déjà pas mal

14:49

de de ressources sur Internet et de de

14:51

webinars sur lesquels on a parlé de

14:52

prompt engineering donc il y a pas mal

14:54

de techniques pour essayer de structurer

14:56

le texte qu'on donne en entrée au au

14:58

modèle mais disons que ici c'était juste

15:01

pour dire on va donner on va structurer

15:03

ce ce cette sorte de message guide cette

15:06

sorte de d'instruction en lui donnant en

15:08

donnant quelques informations donc le

15:11

contexte la tonalité tout un tas de

15:14

choses et on va fournir finalement cette

15:17

cette instruction un peu

15:18

designé au modèle et c'est comme ça que

15:21

ce modèle va pouvoir s'adapter

15:23

finalement à la tâche à laquelle on on

15:25

veut qu'il

15:27

réponde donc le Pr inéering c'est c'est

15:30

un des moyens finalement d'adapter la

15:32

sortie ou la la réponse du modèle c'est

15:35

un processus itératif euh donc c'est

15:39

très difficile voir quasi impossible de

15:41

euh d'un seul coup euh écrire un prompt

15:46

qui vous donne exactement la réponse que

15:47

vous voulez généralement on va pas

15:48

fonctionner comme ça on va plutôt

15:50

essayer de partir de quelque chose de

15:52

très général et progressivement

15:54

converger vers finalement la sortie

15:57

qu'onut qu'on veut mettre en FA

16:02

et enfin le ce qu'on va ce qu'on donne

16:04

au modèle finalement c'est une

16:05

instruction qui est écrit en langage

16:07

naturel donc c'est comme si vous es en

16:09

train de typiquement de parler à

16:10

quelqu'un vous allez écrire un petit peu

16:12

ce qui vous parle ce dont vous avez

16:14

envie et le modèle finalement va vous on

16:17

l'espère vous donner une réponse

16:18

finalement qui va vous

16:22

arranger maintenant on a vu prompt

16:25

engineering on a vu LLM donc ce sont des

16:29

importante le LLM va nous per un peu le

16:32

cerveau qui va euh essayer de de

16:35

d'utiliser le texte pour pouvoir générer

16:37

quelque chose d'inédit et de nouveau et

16:39

on va avoir le prompt si on utilise pas

16:41

le F training on va avoir le prompt

16:43

engineering qui va guider le modèle

16:45

adapter le modèle à une situation bien

16:47

spécifique maintenant quand si on prend

16:49

tout ça et qu'on l'insère dans un

16:51

contexte de software engineering dans un

16:53

contexte de software engineering on va

16:55

vouloir créer une application qui fait

16:57

qui fait quelque chose

16:59

et dans le cadre du comp du du software

17:01

engéering on va pas juste avoir besoin

17:03

du LLM on va avoir besoin de ressources

17:05

on va avoir besoin typiquement de

17:06

données qu'on a en interne on va avoir

17:08

besoin de tout un tas d'outils

17:10

finalement qu'il faut connecter mettre

17:12

en commun pour créer un seul système qui

17:15

va délivrer une seule valeur et c'est

17:18

dans ce contexte là que longchain va

17:20

s'inscrire en fait langchain va

17:22

finalement être euh comme vous voyez sur

17:24

l'image une pièce centrale qui va

17:26

permettre de se connecter à plusieurs

17:30

modèles plusieurs types de modèles donc

17:32

on va voir l'an n'est pas seulement on

17:35

peut pas seulement le l'utiliser avec

17:36

openir on peut l'utiliser avec avec les

17:39

modèles Open Source Lama on peut

17:41

l'utiliser avec Mistral on peut

17:43

l'utiliser avec tout un tas de de de de

17:46

LLM également dans longchain il va il va

17:48

offrir des outils qui vont permettre

17:50

finalement de structurer notre prompt

17:52

engineering de les utiliser plus ou

17:53

moins facilement et en même temps on va

17:57

l' va également per permettre de se

17:59

connecter à différents outils ou données

18:01

dont on aurait besoin dans le cadre de

18:03

cette application là pour que ça

18:06

fonctionne donc pour simplifier le

18:09

développement et l'intégration des

18:11

différentes briques technologiques

18:12

l'utilisation de l' chainîn dans les

18:14

dans la dans dans le dans la stack

18:16

technologique devient incontournable

18:18

parce que si on enlève l' chain au

18:20

milieu ici potentiellement on va se

18:22

retrouver à avoir à connecter pas mal

18:24

d'outils open source et souvent

18:26

peut-être non open source pour essayer

18:29

de créer un seul système et donc c'est

18:31

là où c'est la force de lchain c'est

18:33

vraiment d'être centrale dans une sorte

18:34

de pièce maîtresse qui va un peu être un

18:37

peu le routeur entre guillemets de tout

18:40

un tas d'outils pour créer une

18:42

application qui va utiliser les

18:45

LLM et donc on en vient à le le focus de

18:50

cette de cette de ce data atelier qui

18:53

est du coup l'en et donc au planning on

18:56

va voir du coup qu'est-ce que ce que

18:58

c'est longchain pourquoi utiliser

19:00

longchain euh les composants clés avec

19:03

lesquels on va jouer qu sur lesquels on

19:05

va on va on va on va compter lorsqu'on

19:07

va créer une application sur la base de

19:08

longchain LLM et par la suite je vous

19:12

ferai plus enfin normalement j'ai déjà

19:14

exécuté le code je vous montrerai le

19:15

code je vous expliquerai comment ça

19:17

fonctionne euh voilà tout simplement

19:19

pour ne pas perdre du temps sinon ça

19:20

aurait pris quelques quelqu

19:23

temps alors je regarde vite fait

19:27

euh taxi j'ai pas de

19:35

question alors je vois la question on

19:38

peut faire le parallèle avec le entre

19:39

avec le fine tuning du modèle de

19:42

classification d'image oui on peut faire

19:45

le parallèle donc pour ceux qui

19:47

connaissent un petit peu on va dire la

19:49

modélisation typiquement deep learning

19:52

euh typiquement on peut prendre un

19:54

modèle de Deep learning pour pouvoir

19:56

réalis faire une modélisation de class

19:58

classification et la plupart du temps ce

20:00

qui se fait c'est que il y a déjà des

20:01

modèles qui existent donc on va prendre

20:03

un modèle qui existe déjà c'est-à-dire

20:04

qu'il y a déjà des paramètres qui ont

20:06

été entraîné et on va F tuner ce modèle

20:09

donc on va adapter ce modèle à la tâche

20:10

de classification à laquelle on veut

20:12

répondre c'est la même chose avec un LLM

20:15

on on part d'un d'un d'un modèle de base

20:18

finalement qui qui a été pré-entraîné et

20:21

on va l'adapter en utilisant des données

20:23

qui sont étiquetées finalement à une

20:25

tâche bien spécifique donc c'est

20:27

exactement les le le même le même

20:30

processus et donc c'est parti sur euh

20:34

qu'est-ce que l'enquène et un peu

20:35

qu'est-ce que qu'est-ce que l'ench nous

20:37

donne comme comme va nous apporter comme

20:40

comme force en donc si on résume

20:42

normalement j'en ai un petit peu parler

20:43

mais si on résume qu'est-ce que ça va

20:45

donner premièrement longchainîn est ass

20:48

c'est une interface

20:50

versatile donc déjà à la base longchain

20:53

c'est bien entendu un framework de

20:55

programmation il a été créé en python

20:58

mais il existe également en Javascript

21:00

et typescript mais on va dire

21:03

aujourd'hui c'est un peu les trois

21:04

langages sur lesquels longchain est

21:06

disponible euh ce que longchain va

21:09

offrir c'est un c'est une sorte d'outil

21:12

ou d'environnement de développement

21:13

centralisé qui va permettre de connecter

21:15

tout un tas d'outils assez facilement et

21:17

assez simplement et ça va facilement ça

21:20

va simplifier la vie du développeur

21:21

parce que euh beaucoup de d'actions dans

21:24

le développement euh c'est consiste à

21:27

connecter des pièces et des outils entre

21:29

eux pour essayer de les faire

21:30

fonctionner lorsqu'on enchaîne comme ça

21:32

3 4 C outils ça ça devient vite une

21:35

usine à gaz on a besoin finalement le la

21:37

plupart du temps ce que les développeurs

21:39

vont faire c'est de se créer en interne

21:41

des sortes de de de classe ou de

21:43

fonctions qui vont ass qui vont

21:46

permettre de simplifier leur code et

21:47

leur simplifier la vie et il a travaillé

21:49

un petit peu en Amond pour ça pour du

21:51

coup de base créer des fonctions et des

21:53

classes qui sont et des fonctions qui

21:54

sont réutilisées tout simplement dans le

21:56

cadre finalement de la création

21:58

d'application pour connecter pas mal

22:00

d'outils

22:01

[Musique]

22:04

euh donc l'chain est une interface du

22:07

coup polyvalente il a la possibilité de

22:09

se connecter comme je disais à plusieurs

22:11

modèles plusieurs LLM complètement

22:14

différent euh il fournit une interface

22:17

standard pour interagir avec de nombreux

22:19

LLM différents et également avec de

22:21

nombreux outils complètement différents

22:23

donc c'est un peu vraiment la force

22:26

qu'il apporte l'autre aspect ça va être

22:29

la modularité euh donc l'approche

22:32

modulaire de l'ANEN permet au

22:33

développeur de comparer dynamiquement

22:35

différents Prom donc dans avec lanchen

22:37

c'est assez simple finalement d'avoir au

22:39

sein de son code d'utiliser à la fois

22:42

pour la même application de designer

22:44

d'utiliser plusieurs prompts pour

22:46

répondre à des à des situations bien

22:47

particulières et asse de manière assez

22:49

flexible parce que si on utiliserait si

22:52

on utilisait pas long chain on sera

22:55

obligé finalement d'avoir

22:56

potentiellement des des des prompt un

22:59

peu à la rallonge avec des des

23:01

situations avec des descriptions de

23:03

assez précises de différentses eu sces

23:05

pour essayer de permettre au modèle de

23:07

de s'adapter mais finalement avec l' ch

23:09

on va un peu s'affranchir un peu de la

23:11

complexité de créer le prompt qui fait

23:13

pas mal de choses en créant plusieurs

23:15

petits Prom qu'on va combiner de manière

23:17

un peu assez

23:19

intelligente donc ce au sein de l'an ch

23:22

il va avoir plusieurs

23:24

composants qu'on va soit appeler segment

23:26

ou chaî euh qui sont conçus pour

23:29

effectuer des fonctions spécifiques donc

23:30

ils ont vraiment conçu longchin euh avec

23:33

T avec en tête le software engineering

23:35

et particulièrement le le le le concept

23:38

de separation of concern c'est-à-dire on

23:40

va vraiment avoir un outil qui est très

23:42

bon on va avoir des objets des

23:44

composants spécialisés pour des actions

23:46

bien spécifiques et on va donc les

23:48

combiner en utilisant ce qu'on va

23:50

appeler du coup au sein de dans dans le

23:52

jargon longchainîn des chaînes euh les

23:55

composants sont exécutés à la chaîne

23:58

donc imaginons vous avez combiné

24:01

plusieurs outils vous allez créer donc

24:04

une chaîne et quand vous exécutez cette

24:06

chaîne les éléments de la chaîne vont

24:08

s'exécuter du coup les uns à la suite

24:10

des

24:14

autres donc cette approche facilite le

24:16

développement et permet une plus grande

24:19

flexibilité finalement dans le dans le

24:21

dans le développement finalement d'une

24:22

application parce que finalement on va

24:25

on va très bien pouvoir au sein du même

24:27

code déjà le code va doit pouvoir être

24:29

très lisible on va savoir exactement

24:31

quelle fait quelle quelle fonction ou

24:33

quel composant fait quoi et et via la

24:36

création des chaînes on va avoir une

24:38

très bonne visualisation de de de la de

24:42

l'enchaînement finalement de de de tout

24:44

ce qu'on est en train de

24:46

faire langcha enfin c'est une c'est une

24:50

bibliothèque python mais c'est également

24:52

une bibliothèque d'outils euh donc euh

24:55

d'outils de composants et d'interface

24:57

donc on voit qu'on on a la possibilité

24:59

de se connecter à des bases de données

25:00

on a la possibilité d'incorporer au sein

25:03

de la programmation avec longchainîn des

25:04

promts plusieurs promp on a la

25:06

possibilité d'appeler plusieurs modèles

25:09

et c'est on a la possibilité de combiner

25:11

finalement tous ces outils au sein de

25:13

chaîne et on a la possibilité de créer

25:14

ce qu'on va appeler des agents je je

25:16

rentrer dans le détail un peu plus tard

25:17

mais on a la possibilité de créer des

25:19

agents assez simplement euh avec avec

25:22

l'ench euh donc les composants sont des

25:26

blocs de construction modulaire qui

25:28

combiné forme de des chaînes construites

25:30

pour réaliser des tâches spécifiques

25:32

donc ça on va tout simplement essayer de

25:34

combiner des outils qui font très bien

25:36

ce qui sa faire de manière spécialisée

25:38

dans un contexte euh un peu plus un peu

25:40

plus

25:44

général maintenant pourquoi pourquoi euh

25:48

pourquoi utiliser Lang chain donc ça

25:49

céit un peu ce que ça va apporter et

25:51

maintenant pourquoi euh on va l'utiliser

25:53

pourquoi ça va être utile donc j'en ai

25:56

listé j'ai listé quatre principaux point

25:58

il y en a plein mais j'en a listé

25:59

vraiment les quatre qui moi m'ont

26:01

beaucoup parlé et euh donc l'antienne en

26:03

gros ça permet ça va permettre de

26:06

résoudre ça va faciliter la vie du

26:08

développeur dans dans dans bien des cas

26:12

et on va partir du coup sur sur chacun

26:14

des points pour essayer de voir un peu

26:16

euh ce que ça

26:19

donne

26:20

premièrement Lang va faciliter

26:22

l'intégration euh donc je vous ai montré

26:26

tout à l'heure vous aviez vous avez

26:28

plein d'outils tout autour et

26:29

généralement quand on va créer une

26:31

application imaginons on va on veut

26:33

créer on voudrait créer une application

26:35

qui va lire des PDF et faire des résumés

26:39

et puis en faire une

26:41

synthèse pour pour pour quelqu'un

26:44

pour ou pour une organisation euh et

26:46

bien on vous voyez que dans le service

26:49

on a la on a le besoin d'aller se

26:51

connecter à une source de données de la

26:53

lire de de la de la de la présenter

26:56

finalement au au modèle pour pour

26:58

pouvoir l'utiliser pour pouvoir faire

26:59

une synthèse et donc l'entien va

27:02

permettre finalement de facilement

27:03

intégrer à la fois plusieurs modèles

27:05

mais à la fois plusieurs outils avec des

27:07

fonctions qui sont natives de l'anchain

27:10

et comme l'anchain bon bien entendu il y

27:12

a des fonctions de base python qu'on est

27:14

capable de venir greffer à l' Chen mais

27:17

déjà les fonctions natives de l' Chen

27:19

qu'il propose sont déjà assez puissantes

27:21

pour pouvoir se connecter à tout un tas

27:22

euh d'outils euh qui

27:24

existent donc l' va proposer

27:28

des intégrations externes transparentes

27:31

et des implémentations de bout en bout

27:33

qui vont permettre au au développeur

27:36

finalement de de se connecter à des

27:39

sources de données ou à des outils qui

27:41

vont permettre finalement l'application

27:42

de fonctionner dans un cadre dans un

27:45

cadre souité

27:54

ok deè point la gestion des

27:58

pr alors on a vu que finalement pour

28:01

pouvoir adapter un modèle un LLM

28:04

j'entends à une situation bien

28:06

spécifique on a deux voix on a la voix

28:10

du fine tuning qui est un peu plus

28:11

technique qui va demander beaucoup de

28:12

puissance de calcul si on a les moyens

28:14

mais sinon en généralement dans les cas

28:16

des projets qui vont utiliser les LLM on

28:18

va commencer par adapter via le Pr

28:21

engineering et donc l' va permettre

28:24

assez simplement assez facilement

28:26

d'avoir des outils qui vont euh

28:28

permettre aussi d'avoir une comme une

28:30

sorte de bibliothèque de prompt qu'on va

28:32

appeler au bon moment pour faire la

28:33

bonne action donc c'est assez c'est

28:36

assez lisible dans le code c'est assez

28:37

simple de à à mettre en place euh et on

28:41

peut on peut s'affranchir un peu d'avoir

28:42

comme je disais le le prompt qui est euh

28:45

qui qui a tous les éléments et qui est

28:47

complex on on peut avoir plusieurs

28:49

prompts qui sont appelés à plusieurs

28:50

endroits et qui sont euh exécutés ou

28:53

appelés de manière séquentielle via des

28:56

chaînes pour réaliser quelqu quelque

28:57

chose finalement d'assez

28:59

complexe

29:01

euh donc l'enchen va rationaliser du

29:04

coup les étapes intermédiaire pour pour

29:06

le développement des applications euh en

29:09

proposant finalement ces outils là qui

29:11

vont permettre euh de qui va permettre

29:13

de l'intégration finalement et qui va va

29:15

également permettre de combiner

29:17

d'utiliser plusieurs prompts et de gérer

29:19

les prompts assez simplement euh

29:21

typiquement on peut se faire une

29:22

bibliothèque de prompt et aller piocher

29:24

dedans et l'intégrer dans un dans un

29:27

dans une dans un développement logiciel

29:29

pour pouvoir faire quelque chose d'assez

29:30

euh d'assez

29:33

puissant 3è aspect la visualisation et

29:38

l'expérimentation donc le déboggage est

29:41

simplifié avec longchainîn qui intègre

29:43

du coup des outils pour rendre

29:45

transparents les expérimentations euh

29:47

parce que quand on développe bien

29:49

entendu euh la plupart du temps souvent

29:50

si vous avez utiliser déjà la librairie

29:52

open ai euh vous exécutez votre script

29:55

et euh vous attendez et vous vous avez

29:57

un retour euh souvent en tant que

29:59

développeur on veut savoir ce qui s'est

30:01

passé entre au moment où on a exécuté le

30:02

script et le moment où on a eu une

30:04

réponse et donc l'chin va offrir du coup

30:07

nativement des fonctions de déboggage

30:09

qui vont permettre de d'afficher les

30:10

étapes intermédiaires toutes les étapes

30:12

intermédiaires par lequel en fait passe

30:14

le traitement et de voir ainsi où où ça

30:17

coince euh quelle étape prend le plus de

30:20

temps et pouvoir ainsi rationaliser sur

30:22

sur l'enchaînement qu'on essaie

30:24

d'exécuter donc il a des il a pas mal

30:26

d'outils euh la plupart du temps il a un

30:28

paramètre qu'il faut tout simplement

30:30

mettre à trou lorsqu'on exécute une

30:32

fonction longchain et il vous affiche en

30:35

fait tout l'historique finalement de ce

30:37

qu'il est en train de faire et ça permet

30:39

de vérifier que le le que ça se déroule

30:43

très bien et que surtout euh ça ne ça ne

30:45

diverge pas et que voilà on va pouvoir

30:47

aller dans le détail de est-ce que ça a

30:48

marché est-ce que ça ne marche pas et

30:50

pouvoir ainsi optimiser finalement

30:53

peut-être le traitement qui a

30:56

lieu

31:00

dernier point sur pourquoi

31:02

longchain donc longchain comprend des

31:04

composants qui permettent au au LLM

31:07

finalement d'accéder à de N de nouvell

31:10

sources de données sans nécessiter un

31:11

nouvel entraînement donc généralement

31:13

c'est un peu ce qu'on va appeler la

31:15

technique de rag donc retrieval

31:17

augmented generation donc plutôt que

31:20

d'adapter notre modèle à des données

31:23

spécifiques pour essayer de répondre de

31:26

manière un peu spécialisé sur une tâche

31:29

vous pouvez très bien avoir de la

31:31

documentation au sein de vos entreprises

31:33

ou ou même pour vous-même

31:35

et permettre finalement en utilisant

31:37

l'chin et un LLM d'utiliser votre

31:40

documentation pour pouvoir formuler des

31:42

réponses donc bien entendu on va

31:44

combiner avec le proming bien entendu

31:46

mais on a également pour pouvoir le

31:48

faire de manière efficiente et efficace

31:50

on a besoin que l'enenne puisse se

31:51

connecter et puisse retrouver pas le

31:54

document en entier mais peut-être le la

31:57

phrase la phrase dans le document qui

31:59

nous permet de répondre et donc avec il

32:02

offre des fonctions natives qui le font

32:03

c'estàdire qui vont permettre finalement

32:04

d'aller répérer dans un corpus le

32:08

fragment finalement qui va qui va qui va

32:10

va qui va qui va être pertinent pour la

32:12

réponse pour la réponse qu'on attend et

32:14

on va exécuter et et par la suite il va

32:17

avoir l'exécution du LLM qui va utiliser

32:19

ça en tant que contexte pour répondre de

32:22

manière personnalisée à la demande qui a

32:24

été

32:26

faite

32:29

donc c'est un donc vous voyez c'est

32:31

c'est un c'est un framework assez assez

32:33

puissant assez assez flexible surtout et

32:35

qui permet d'avoir de la visibilité qui

32:37

permet de de de vraiment développer

32:40

assez simplement euh des adresser des

32:44

cas qui peuvent être assez compliqués et

32:47

maintenant pour pouvoir faire tout ça je

32:49

vous disais que l'chain utilise ce qu'on

32:51

appelle des composants donc des

32:53

composants qui sont auquels c'est un peu

32:55

comme des des familles de fonction euh

32:58

auxquelles vous allez faire appel pour

33:00

travailler donc on va aller dans le dans

33:03

le détail pour pouvoir présenter les

33:05

principaux mais just rapidement vous

33:07

allez avoir les modèles euh qui va vous

33:10

avez euh ce qui ce qui est dans

33:12

l'ancienne appelé model qui est une

33:14

sorte d'interface qui va se permettre de

33:17

se connecter à un LLM euh et de pouvoir

33:19

interagir avec ce LLM donc c'est une

33:21

sorte d'API qui se connecte à un LLM et

33:24

qui prend le Prom en entrée et qui euh

33:26

fait sol cite le modèle dans un contexte

33:28

bien particulier euh on a des des des

33:31

connecteurs on a tout un tas de

33:32

connecteurs euh dans langchin qui

33:34

permettre de se connecter à à des

33:36

diverses bases de données donc vous

33:38

pouvez vous connecter à postg SQL vous

33:40

pouvez vous connecter à squ Lite vous

33:42

pouvez vous conncter à tout un tas de

33:43

base de données pour pouvoir utiliser

33:45

les données qui se trouvve dans ces

33:46

bases de données euh vous avez des

33:48

chaînes euh donc euh des chaînes qui

33:51

construisent les séquences d'appel donc

33:53

on va rassembler au sein d'une chaîne

33:56

plusieurs outils qui vont s'exécuter de

33:58

manière séquentielle pour réaliser

33:59

quelque chose et très rapidement euh si

34:03

on a les agents don je vous parler euh

34:06

qui permettent de choisir qui permettent

34:08

au au aux modèles qui permettent aux

34:10

chaînes pardon qui permettent aux

34:11

chaînes qu'on va construire avec les LLM

34:13

à l'intérieur de choisir les outils à

34:15

utiliser en fonction de directive de

34:18

haut niveau donc c'est un peu comme

34:20

comme euh une fonction qui n'existe qui

34:23

n'exécute pas bêtement qui qui n'est qui

34:25

ne fonctionne pas bêtement sur le

34:26

principe de input output donc je prends

34:28

un truc en entrée je donne un truc en

34:30

sortie mais sur la base d'un input euh

34:33

l'outil va avoir de manière autonome à

34:35

sélectionner quel est le meilleur outil

34:37

à sa disposition qu'il faut utiliser

34:39

pour pouvoir répondre à la question il

34:41

va choisir l'outil il va l'exécuter il

34:43

va analyser le résultat de la sortie de

34:46

cet outil avant de donner une réponse

34:48

donc c'est un peu comme un mini voilà

34:51

mini on dire un mini cerveau qui ne ne

34:53

donne pas juste un output mais essaie de

34:55

donner l'output avec en utilisant le

34:57

meilleur outil de la meilleure manière

34:59

possible on a également la la mémoire

35:02

les les les les composants de mémoire

35:04

qui permettent finalement de gérer la

35:06

mémoire tout simplement euh quand on

35:09

utilise les LLM parce que alors si vous

35:12

utilisez chat GPT c'est la mémoire elle

35:14

est déjà gérée via le service donc vous

35:16

savez quand vous entrez un promt au fur

35:18

et à mesure que vous continuez vos

35:19

prompt vous conservez la mémoire de vos

35:21

des des des input précédents mais si ça

35:24

vous arrive d'utiliser euh de de faire

35:27

appel juste à l'API au modèle par

35:30

exemple gpt4 euh si vous ne conservez

35:33

pas l'historique entre guillemets de

35:35

tous les interactions que vous avez avec

35:37

gpt4 vous allez vous rendre compte que

35:39

il ne garde pas la mémoire en fait il ne

35:41

garde pas l'historique de tout ce que

35:42

vous avez échanger avec lui il va tout

35:44

simplement répondre à une question de

35:46

manière unitaire et donc langchen

35:48

intègre des composants de mémoire pour

35:50

garder en mémoire finalement des

35:52

éléments

35:54

d'historiques on a des callback qui sont

35:56

euh du coup des des des des rappels qui

35:59

enregistrent et diffusent euh des étapes

36:02

intermédiaires d'une chaîne donc au sein

36:03

d'une chaîne vous avez vu qu'on enchaîne

36:05

plusieurs composants ou plusieurs

36:07

fonctions les unes à la suite des autres

36:08

les callback vont enregistrer finalement

36:10

les les les résultats intermédiaire et

36:13

vous allez pouvoir vous en servir si

36:15

potentiellement dans dans dans le code

36:17

si jamais si jamais c'est nécessaire

36:19

donc ça c'était rapidement un peu grosso

36:22

modo à quoi servent les différents les

36:24

différentes composantes et donc on va

36:26

essayer de aller un peu sur chacun pour

36:28

donner un peu de spécificité même si

36:29

j'en ai déjà donné euh doné pas

36:32

mal donc on commence avec les modèles

36:35

donc je vous disais c'est une sorte

36:37

d'interface au sein de langchain qui va

36:39

permettre d'interagir avec euh avec les

36:42

les LLM en règle générale euh au sein de

36:45

l' au sein de l'chain finalement on a

36:47

trois types de modèles ou trois types

36:50

d'APS ou trois types d'interfaces de

36:52

modèle on va raisonner comme ça on a les

36:54

LLM donc typiquement c'est euh faire

36:57

appel à un modèle de type gpt4 ou GPT

37:00

3.5 ou euh Mistral ou ce que vous voulez

37:03

donc c'est il fournit une interface

37:05

standardisée euh qui permet euh d'

37:09

d'interagir avec le lélément question on

37:12

a les modèles de conversation donc c'est

37:15

des modèles c'est des API un peu

37:17

particulières qui ont une structure un

37:18

peu différente des LLM euh de base qui

37:21

sont optimisées dans le contexte euh où

37:24

on veut créer un chatbot par exemple où

37:25

on sait qu'on va il va y avoir une

37:27

interaction euh donc ça offre du coup

37:30

une approche plus structurée qui

37:32

permettre des qui est plutôt orienté

37:34

vers des conversations interactives avec

37:37

des

37:38

utilisateurs on append également des

37:40

modèles d'imbedding ou des des modèles

37:43

d'intégration qui sont utilisés dans le

37:45

cadre de ce qu'on appelle le rag don je

37:47

vous parlais précédemment qui est du

37:48

coup lorsqu'on va vouloir utiliser des

37:51

documents pour pouvoir répondre de

37:52

manière pertinente à une question et

37:55

donc du coup on utilise ce qu'on a

37:56

appelle des modèles d'embedding les

37:57

modèles d'embedding qu'est-ce qu'ils

37:59

font pour aller très rapidement dessus

38:01

c'est ils vont prendre des fragments de

38:03

documents et ils vont euh les convertir

38:06

en équivalent numérique il va on va

38:09

représenter un document sous forme d'une

38:11

succession de vecteurs donc des des des

38:14

suites de nombres et la particularité de

38:17

ces vecteurs là c'est que euh c'est une

38:19

sorte d'encodage ou de représentation à

38:21

la fois de la phrase ou du fragment de

38:23

phrase et de la sémantique qui est dans

38:25

la phrase

38:27

et donc du coup c'est plus facile

38:28

pourquoi on le fait pourquoi on

38:30

convertit au préalable un texte en

38:33

équivalent numérique c'est parce que

38:34

faire des recherches sur des vecteurs ou

38:36

comparer des vecteurs entre eux est

38:39

beaucoup beaucoup plus simple d'un point

38:40

de vue mathématique que comparer les

38:42

mots les phrases mot tabour en fait donc

38:44

on les compare en terme de vecteur on

38:46

compare les les vecteurs et c'est de

38:48

cette manière qu'on est capable de

38:50

savoir que dans tel document il y a tel

38:52

fragment qui va parler de telle notion

38:54

parce que dans sa représentation

38:56

numérique qui va y avoir la sémantique

38:57

finalement de la notionon

38:59

cherche donc il y a ces trois types de

39:02

modèles là au sein de long chain bien

39:03

entendu au sein de Lang il y a pas les

39:05

modèles en tant que tel ce sont comme je

39:07

dis des

39:08

interfaces qui vont elles interagir de

39:11

manière on va dire optimiser avec les

39:13

vrais modèles les vrais modèles

39:15

d'bedding ou de chat ou de ou de LLM

39:18

bien entendu c'est c'est ça va être des

39:20

modèles de type gpt4 ça va être des

39:22

modèles qui sont mis à disposition soit

39:25

en open source soit par euh du coup les

39:27

gros que l'on connaît comme Microsoft ou

39:29

comme comme Google et

39:34

cetera

39:36

[Musique]

39:38

euh donc les LLM juste pour aller

39:41

rapidement encore là-dessus euh donc

39:43

vont prendre donc ce sont ce type de

39:44

modèle euh la leur spécificité c'est

39:47

qu'ils euh prennent une chaîne de texte

39:49

en entrée et renvoie une chaîne de texte

39:51

en sortie donc l'exemple c'est que vous

39:54

fournissez euh une question par exemple

39:56

exemple quelle est la capitale de la

39:58

France et et le modèle va vous répondre

40:00

Paris tout simplement donc input output

40:03

le modèle analyse ce que vous dites et

40:05

puis en fonction de la base de

40:06

connaissance et des données bien entendu

40:08

sur lesquelles il a été entraîné il va

40:10

fournir une une

40:12

réponse faut savoir que je vous disais

40:15

que lchin a la possibilité d'interagir

40:17

avec plusieurs modèles donc actuellement

40:19

je pense que lchin intègre un peu

40:22

environ 26 LLM différents il a pas mal

40:25

de de fourniss ser de modèles assez

40:27

différents don il y en a 26 au sein de

40:29

l' Chen et chaque jour vu que c'est un

40:31

outil open source avveit une

40:32

contribution open source il y a de plus

40:33

en plus finalement de d'intégration

40:35

finalement à des différents outils ou

40:37

modèles qui sont qui sont mis en

40:41

place euh les chat les modèles de type

40:43

chat euh eux le leur spécificité c'est

40:46

qu'ils prennent une liste de messages en

40:48

entrée et renvoient un message donc la

40:51

liste de messages c'est par exemple la

40:54

dernière question que vous avez posée et

40:55

tout l'historique et c'est comme ça que

40:57

le modèle est capable de savoir un

40:59

d'avoir tout le contexte pour répondre à

41:02

une

41:03

question donc ils sont conçus pour dans

41:06

les situations un peu conversationnelles

41:08

pour pouvoir interagir de manière fluide

41:11

avec un

41:13

utilisateur donc pour simplifier pour

41:16

résumer du coup les les les LLM euh ou

41:20

l'interface LLM de long chain euh est

41:23

beaucoup plus simple et prend du coup

41:25

une seule chaîne en en entrée tandis que

41:26

les chats vont prendre une série euh de

41:28

messages du coup donnés en

41:34

entrée alors peut-être que je vais juste

41:37

jetter un coup d'œil parce que j'ai pas

41:38

forcément le chat en face de moi euh

41:41

pour voir si j'ai des

41:43

questions alors si j'ai bien compris

41:45

l'anken a les mêmes objectifs que

41:46

autogen un petit peu euh l'anken a un

41:49

petit peu les mêmes objectif euh à mon

41:51

sens autogen il est beaucoup plus

41:53

orienté vers la création d'agents on va

41:55

en parler par la suite euh mais oui vous

41:58

avez pas mal de fonctions de de de

42:00

points qui se recoupent avec

42:03

autogen euh donc LLM c'est comme tens of

42:06

flow et pythot sont des framework

42:09

exactement longchain c'est un framework

42:11

donc c'est pas simplement une simple

42:13

librairie c'est une librairie qui vient

42:15

avec pas mal d'outils qui permettent de

42:17

développer une application de bout en

42:18

bout en utilisant que des fonction de

42:20

l'anchain donc c'est c'est vraiment un

42:22

framewk

42:25

euh h donc je vous ai parlé du

42:29

rag alors est-ce que longchain peut

42:32

gérer la mise à jour de modèles via des

42:34

entraînements avec de nouvelles données

42:36

oou est-ce que on doit travailler avec

42:38

euh des modèles figés alors l'enchenne

42:41

euh de ce que je sais euh là tout de

42:44

suite ne ne c'est pas l'ANEN qui va

42:46

faaire l'entraînement du modèle euh

42:49

l'anchen va ça va permettre facilement

42:51

d'intégrer plusieurs outils entre eux

42:54

assez simplement y compris les modèles

42:56

la plupart du temps lorsque vous allez

42:57

vouloir F tuner euh des modèles soit

43:00

vous allez utiliser euh euh la open ai

43:03

parce que open open propose également

43:05

euh une possibilité de fine tuning euh

43:08

les les différents cloud providers euh

43:10

intègrent désormais également euh des

43:13

possibilités de fine tuning de modèles

43:15

au sein de leurs différents écosystèmes

43:16

donc Azure va avoir dans dans Azure ml

43:20

la possibilité de de de fine tuner des

43:22

modèles je crois que AWS ils ont ils ont

43:24

sorti récemment AWS bedwck qui permet

43:27

qui permettrait de faire la même chose

43:29

mais sinon c'est possible de le faire

43:30

via sage Maker également euh je ne doute

43:32

pas que vertex avec avec avec Google

43:35

c'est également le faire là-dessus euh

43:37

il y a pas de souci mais si jamais vous

43:39

êtes vous voulez le faire euh sans

43:40

forcément passer par un Cloud provider

43:43

vous pouvez également récupérer un

43:44

modèle euh sur hugging face tout

43:46

simplement vous récupérez un modèle

43:48

huging face et huggingf propose des

43:50

fonctions qui permettent de faire du

43:51

fine tuning donc c'est c'est quand vous

43:53

quand vous n'avez pas quand votre use

43:55

case

43:56

ne nécessite pas une euh une on va dire

44:00

un modèle euh de grande taille type gpt4

44:03

parce qu'il y a il y a ce qu'on appelle

44:05

les tiny LLM qui sont qui font qui font

44:07

quelques méga et qui sont euh optimisés

44:10

plus pour des tâches vraiment très

44:12

fonctionnel très très spécifique comme

44:13

peut-être je sais pas la détection de de

44:15

de sentiment et vous pouvez très bien

44:17

fine tuner ce type de modèle là euh en

44:20

local si vous avez des GPU mais comme je

44:23

vous disais funer un modèle nécessite

44:26

d'avoir de la puissance des calculs

44:27

c'est pour ça que pour l'instant il y a

44:28

que les les cloud providers entre

44:30

guillemets qui sont un peu en

44:31

avant-garde là-dessus mais si vous avez

44:34

une infrastructure avec des GPU euh vous

44:36

pouvez très bien même si vous avez un

44:37

abonnement Colab pro euh vous avez la

44:39

possibilité de F tuner un modèle euh

44:42

assez simplement mais disons qu'il y a

44:45

d'autres librairies qui vont qui sont

44:46

plutôt optimisé pour le fine tuning

44:49

euh plutôt que plutôt que l'chîn pour

44:51

l'instant peut-être qu'ils vont

44:53

l'inclure mais pour

44:54

l'instant

44:56

ok donc on continue avec le la prochaine

44:59

composante composant qui est du coup le

45:01

prompt ça vous connaissez les prompt en

45:03

règle générale donc le prompt c'est le

45:06

point d'entrée qui permet d'interagir

45:08

avec un

45:10

modèle langchain comprend du coup des

45:13

modèles de Prom donc quand par modèle de

45:16

Prom c'est qu' il va juste vous

45:17

permettre de structurer votre Prom de

45:19

manière assez simplifié bien entendu

45:21

toutes les techniques de prompt

45:22

engineering vous allez pouvoir les

45:24

appliquer euh VI la formulation de votre

45:27

promp mais pour pouvoir incorporer ces

45:30

Prom de manière assez simplifiée donc il

45:32

va proposer plusieurs outils pour

45:35

pouvoir le faire donc là ici on en a TR

45:39

a l'outil principal finalement vous

45:41

allez utiliser c'est le Prom template de

45:44

qui va prendre qui va prendre une

45:47

instruction telle que vous l'avez

45:48

designé et qui va permettre de

45:50

d'associer à cette instruction plusieurs

45:53

choses comme par

45:54

exemple les sélecteurs d'exemple le

45:58

selecteur d'exemple il est

46:00

utilisé lorsque vous voulez faire du f

46:02

shot learing fot Prom utiliseer la

46:05

technique de F shot avec du promt

46:08

engeneering c'est quoi la technique du f

46:10

shot c'est que vous vous dans la

46:12

structuration de votre Prom vous voulez

46:14

donner des exemples au modèle pour qu'il

46:16

puisse s'en inspirer pour pouvoir vous

46:18

répondre comme vous vous attendez donc

46:20

c'est possible de d'assez simplement

46:22

structurer le promp de base et puis

46:26

de lui passer un petit peu comme en

46:27

paramètre en fait les exemples de

46:30

manière dynamique de manière à ce qu'il

46:32

puisse bien sortir s'adapter à la sortie

46:35

que vous voulez on va également pouvoir

46:38

associer au Prom template les les

46:40

analyseurs de sortie pour structurer un

46:43

peu la sortie du message parce que si

46:45

vous avez déjà un peu utilisé

46:49

euh l'API de de open

46:51

a quand vous exécutez un modèle euh

46:55

quand vous quand vous lu posez une

46:56

question au LLM vous avez en sorti une

46:58

chaîne de caractère et souvent dans le

47:01

dans un contexte de de software

47:03

engineering ce qui est intéressant c'est

47:04

pas d'avoir c'est pas d'avoir une chaîne

47:06

de caractère c'est d'avoir par exemple

47:07

un dictionnaire avec des clés valeurs

47:10

quand on sait qu'on va passer à une

47:11

autre composante qui elle va ne faire

47:13

que récupérer des valeurs pour pouvoir

47:15

déclencher un autre traitement et donc

47:17

pour pouvoir plutôt que d'avoir à à

47:19

prendre le texte et puis à reformer un

47:21

peu euh un peu avec du du python je sais

47:24

pas le dictionnaire nous intéresse

47:27

longchain propose des fonctions qui vont

47:29

non seulement interagir avec le LM mais

47:31

sortir le message le la sortie de

47:34

manière de manière semistructurée

47:36

typiquement dans un dans un fichier dans

47:37

un une structure de dictionnaire qui va

47:39

être utilisé potentiellement par une

47:41

autre composante pour pouvoir pouvoir

47:45

travailler donc les Prom template donc

47:47

ça va être les outils qui vont permettre

47:49

de guider le format de sortie et en

47:51

donnant les instructions bien entendu au

47:53

LLM euh les sélecteur d'exemples euh

47:57

donc c'est ce qu'on va je vous disais

47:58

c'est utilisé dans la technique du FUS

47:59

shot pour pouvoir sélectionner de

48:00

manière dynamique des exemples qu'on va

48:02

passer au LLM pour pouvoir l'orienter

48:05

dans la réponse et les analysas de

48:07

sortie bon je viens d'en parler c'est

48:09

euh du coup pour pouvoir euh euh

48:12

structurer la sortie de manière à ce

48:14

comment on l'attend en fait et derrière

48:16

on va avoir du coup ce prompt qui qui va

48:19

être euh on va dire composé par le

48:22

développeur et qui va être passé

48:24

finalement au modèle qui lui va utiliser

48:27

l'interface qui est adaptée pour le

48:29

service ou le produit que vous essayez

48:31

de sur lequel vous

48:35

travaillez autre composante la mémoire

48:38

enfin mémoire et index donc c'est deux

48:40

de de choses donc je je commence par les

48:42

indexes donc je vous disais langch va

48:45

permettre finalement d'interagir avec

48:46

des sources de données de vraies sources

48:48

de données que vous avez dans votre

48:49

entreprise que ce soit des documents ça

48:51

peut être n'importe quel type de

48:52

documents ça peut être des CSV ça peut

48:54

être du PDF ça peut être des bases de

48:56

données et donc pour interagir avec ces

49:00

sources de données là du coup

49:01

longchainîn utilise du coup des indexes

49:03

euh donc qui vont permettre c'est

49:06

finalement entre guillemets des des

49:07

interfaces qui vont pareil permettre de

49:09

se connecter au documents et d'aller

49:12

finalement être avoir la possibilité

49:13

finalement de le de l'utiliser assez

49:15

simplement assez simplement avec

49:16

l'écosystème

49:18

longchain donc au sein des indexes on va

49:21

avoir des chargeurs de documents on va

49:24

avoir des des séparate de textes euh les

49:27

séparateurs de textes je vous pour

49:28

revenir sur l'exemple que je vous ai

49:30

donné précédemment c'est que euh souvent

49:32

ce qui va être intéressant euh lorsqu'on

49:35

va vouloir utiliser un document pour

49:37

pouvoir répondre à une question ce qui

49:39

va être intéressant c'est plutôt que de

49:41

vous dire alors le document se trouve le

49:44

la réponse se trouve dans le document de

49:45

tel nom c'est plutôt de vous dire dans

49:48

le document de tel nom à telle page et à

49:50

tel niveau vous avez la réponse et pour

49:52

pouvoir faire ça euh ce qu'on fait c'est

49:55

qu'on on prend un document et on le

49:56

découpe et on va sur les différents

50:00

briques du coup les différents morceaux

50:01

de document finalement on va les

50:02

convertir finalement en ce dont je

50:04

parlais précédemment on va convertir en

50:07

équivalent numérique donc en EMB bedding

50:09

et c'est ça qui va être utilisé

50:11

finalement pour pouvoir répérer le le

50:14

fragment qui est intéressant et

50:15

langchain va pouvoir remonter à l'

50:18

document La la zone dans le document et

50:21

donner toutes ces informations en terme

50:22

de métadonnées pour pouvoir

50:24

éventuellement les utiler si on en a

50:26

besoin donc c'est l'utilisation des

50:28

séparateurs de texte bien entendu

50:31

longchain intgre également des indexes

50:33

qui vont permettre de se connecter à des

50:35

vexor store donc les vextor Store c'est

50:38

pour stocker les Edding dont je parlais

50:40

donc les représentations numérique des

50:42

des fragments de texte sur lesquels on

50:44

veut travailler et on a également des

50:47

des des fonctions qui vont permettre

50:48

d'aller récupérer l'informationement ce

50:51

qui appelé des retriever euh dans

50:54

longch

50:56

sinon on a la mémoire ça ve dire que

50:58

quand vous voulez gérer la mémoire quand

51:00

vous voulez garder une espèce

51:02

d'historique l'en a toute une panoplie

51:04

de fonction pour pouvoir gérer plus ou

51:06

moins

51:07

efficacement la mémoire donc vous pouvez

51:09

il y a plusieurs fonctions qui vont vous

51:11

permettre soit de conserver toute la

51:12

mémoire soit de conserver un résumé de

51:15

la mémoire et cetera et cetera donc ça

51:17

en fonction de votre use case en

51:18

fonction du service ou du produit que

51:20

vous êtes en train de construire c'est

51:21

vous qui allez un peu définir à quelle

51:24

quelle est la profondeur entre

51:25

guillemets de l'historique que je veux

51:26

garder si si tout ce qui est si tout ce

51:29

qui est intéressant pour vous c'est

51:32

juste garder un petit peu le résumé de

51:33

tous les échanges précédents pour

51:34

pouvoir continuer si si également

51:37

l'utilisateur veut continuer la

51:38

conversation vous pouvez juste garder

51:40

que le résumé et pas tout l'historique

51:43

parce que tout garder tout ça a aussi

51:45

une implication en terme de de puissance

51:47

de calcul bien

51:51

entendu h donc il existe de nombreuses

51:54

euh euh donc il y a on va voir ça un peu

51:57

dans la partie démo je vous montrerai un

51:59

petit peu quelques fonctions parce que

52:01

l' en a énormément pour pouvoir pour

52:04

pouvoir gérer la mémoire donc il y a la

52:06

mémoire en terme de de type de mémoire

52:09

il y a la mémoire tampon un peu qui donc

52:11

il s'agit de la la forme de mémoire la

52:13

plus simple elle elle permet de stocker

52:15

assez simplement du coup un tampon de

52:17

toute la de tous les messages donc c'est

52:20

un peu vous gardez tout vous avez la

52:22

mémoire récapitulative ce que je vous

52:23

disais c'est euh juste regarder euh un

52:26

récapitulatif finalement peut-être des

52:28

10 des 10 dernières 10 dernières

52:30

interactions euh et cetera il y a

52:33

également un troisième type de mémoire

52:35

dans au sein de lachim c'est la mémoire

52:37

sec tout sec ça fait la base du coup

52:39

d'un modèle ça veut dire que ce type de

52:41

mémoire utilise un modèle euh donc

52:45

typiquement un modèle de Deep learning

52:46

derrière pour apprendre une

52:48

représentation de l'historique de la

52:50

conversation ça veut dire que les les

52:52

deux approches précédentes c'est soit on

52:54

garde tout soit on garde d'un résumé

52:55

mais il y a une troisième approche qui

52:56

consiste à avoir un modèle qui va

52:59

apprendre la représentation de

53:01

l'historique de des échanges qu'on a eu

53:03

et ce modèle va permettre de restituer

53:05

un petit peu euh si jamais l'utilisateur

53:07

veut continuer la

53:09

conversation donc cette représentation

53:11

peut ensuite être utilisée pour

53:13

améliorer les performances du modèle euh

53:16

et

53:18

cetera le choix du type de mémoire à

53:21

utiliser bien sûr bien entendu dépend de

53:24

euh du de l'application auquelle vous

53:27

vous réservez votre votre solution euh

53:30

par exemple la mémoire tempon donc le

53:32

fait de tout garder euh c'est un bon

53:34

choix pour les applications où il est

53:36

important de garder une trace de l'ordre

53:38

exact des messages vous pouvez y avoir à

53:41

être y être contraint pour des raisons

53:43

réglementaires de vous voulez exactement

53:45

garder qu'est-ce qui s'est dit à quel

53:47

moment donc là vous n'avez pas le choix

53:48

vous allez tout garder vous êtes en

53:50

mesure de revenir sur cette historique

53:52

et de savoir exactement qui avait dit

53:54

quoi à quel moment et tandis que la

53:56

mémoire récapitulative c'est un bon

53:58

choix pour les applications où il est

54:00

plus important de se concentrer sur

54:01

l'essentiel donc c'est pas besoin de

54:04

garder tout on veut juste garder un peu

54:06

en substance ce qui s'est dit donc les

54:09

analogies c'est euh euh vous voulez

54:12

juste à la sortie d'une réunion avoir le

54:14

récapitulatif c'est la mémoire

54:16

récapitulative euh qui

54:21

estt autre élément les chaînes donc

54:25

les chaînes donc ce module langchîn vous

54:28

permet d'enchaîner plusieurs outils du

54:31

coup pour répondre à des situations bien

54:33

spécifiques pourquoi on va utiliser des

54:35

chaînes parce que parfois un seul appel

54:38

à un LLM ne va pas

54:41

suffire pour résoudre une tâche par

54:44

exemple on a besoin juste on a le LLM

54:46

lui il a juste besoin entre guillemets

54:47

de prendre tous les éléments pour

54:49

répondre mais il a besoin en plus

54:51

d'autres choses pour pouvoir répondre de

54:52

la manière la plus pertinente euh donc

54:55

du coup typiquement au sein donc là ce

54:58

que représente l'image c'est une

54:59

représentation assez d'une d'une chaîne

55:02

assez simple il en existe des chaînes

55:04

beaucoup plus complexes que celle-là au

55:06

sein d'une chaîne d'une chaîne on va

55:07

avoir le promt bien entendu qui va

55:10

guider adapter le LLM vers une sortie

55:13

bien spécifique et on va avoir du coup

55:15

le LLM qui va prendre le relais

55:18

avecette cette forme avec le le le

55:20

template de PR qui lui a été donné pour

55:22

pouvoir idéalement répondre donc ça

55:25

c'est vraiment une chaîne simple on

55:26

prend un prompt on le on le combine avec

55:28

l'appel d'un LLM et puis ensuite on

55:30

donne une

55:32

réponse donc les deux types courants de

55:35

chaîne donc c'est le LLM chain c'est

55:37

entre guillemets la fonction simple de

55:40

pour pour enchaîner pour créer des

55:42

chaînes avec lchain LLM chain prend

55:44

beaucoup de diff différents types de

55:46

paramètres on verra un petit peu ça par

55:47

la suite donc entre bon il prend bien

55:50

entendu le Prom template et il prend

55:53

aussi également le LLM donc lui donner

55:55

le LLM don il qu'il doit utiliser et

55:58

vous lui donnez finalement le

56:00

l'instruction pour qu'il puisse savoir

56:02

finalement quoi en faire vous avez

56:04

également des chaînes qui vont être

56:05

liées à des sources de données vous

56:07

pouvez combiner dans la chaîne l'appel à

56:10

une source de données et puis un LLM

56:12

pour pouvoir euh potentiellement

56:14

répondre à une question un peu en

56:19

onehot

56:21

euh donc vous pouvez par exemple créer

56:24

une une chaîne qui obtient d'abord des

56:26

informations sur un sujet ça peut être

56:29

ça peut être une chaîne comme ça qui

56:30

retrouve d'abord des informations euh et

56:33

et ensuite utilise ces informations là

56:35

pour pouvoir générer une synthèse ça

56:37

c'est un exemple de de chaînage

56:38

finalement qui est fait qui est

56:40

simplement fait euh avec l'ANA donc les

56:43

chaînes vont faciliter la combinaison de

56:44

plusieurs outils donc c'est un peu le

56:46

cœur de l'an cha he c'est dans le nom il

56:48

y a langue et il y a chin donc langue

56:50

c'est parce que ça utilise les LLM et

56:52

chin c'est un enchaînement finalement de

56:54

plusieurs outils et donc c'est le le

56:57

fait de de de combiner finalement

56:59

plusieurs outils qui sont assez

57:00

spécialistes dans ce qu'ils font euh

57:02

pour pouvoir c'est un peu l'union fait

57:03

la force tout simplement on va prendre

57:04

des spécialistes pour pouvoir répondre à

57:06

une situation bien

57:09

spécifique les agents

57:12

maintenant les agents euh c'est un peu

57:15

c'est des décideurs comme je vous disais

57:16

c'est des décideurs autonomes dans

57:18

langanen donc qui vont permettre

57:20

d'interagir avec de manière autonome ça

57:23

c'est ça le la subtilité c'est qu' vont

57:25

interagir de manière autonome à

57:28

différents composants donc typiquement

57:31

dans un dans un agent euh vous allez lui

57:33

fournir une liste d'outils vous allez

57:35

peut-être c'est c'est l'analogie

57:37

typiquement c'est euh euh je sais pas

57:39

vous venez d'arriver dans une entreprise

57:41

on vous donne un PC on vous

57:44

donne je sais pas tout un tas de

57:46

d'outils euh je sais pas un cahier pour

57:48

Notter des des des feutres et cetera et

57:51

c'est vous qui de manière autonome allez

57:53

décider quand est-ce qu'il est Jud

57:55

d'utiliser du PC quand il est judicié de

57:57

prendre des notes et cetera et c'est la

57:58

même chose avec avec un agent c'est que

58:00

on lui donne accès au LLM et une suite

58:04

d'outils y compris des fonctions python

58:06

c'est possible de designer de créer des

58:08

fonctions python custom et de les

58:10

appeler en tant que outil assez

58:12

simplement avec l'antien et sur la base

58:15

du coup de la question de l'input que va

58:18

formuler un utilisateur l'agent va

58:20

décider de l'outil va décider de manière

58:23

autonome de l'outil qui est le plus

58:25

adapté pour pouvoir répondre à votre

58:27

question il va utiliser cet outil donc

58:30

c'est ce qu'on appelle souvent la

58:31

première action il utilise l'outil

58:34

ensuite il il analyse

58:39

si non il utilise l'outil il en fait un

58:42

résumé il fait imaginons vous lui dites

58:45

je sais pas quel est le président de la

58:47

France et vous lui avez donné comme

58:49

outil un une API pour pouvoir aller

58:52

faire une recherche sur internet et WIK

58:54

ia par exemple et donc de manière

58:57

autonome il va peut-être se dire ok pour

58:58

pouvoir répondre à cette question

59:00

peut-être que j'ai plus besoin d'un

59:01

navigateur plus que Wikipédia donc il va

59:04

il va appeler wikipé il va appeler le

59:06

navigateur qui va aller faire une

59:08

recherche il va faire une synthèse il va

59:11

raisonner sur cette synthèse en disant

59:13

est-ce que je suis confiant sur la

59:15

réponse que j'ai si jamais il n'est pas

59:17

confiant il va faire des boucles il va

59:18

par exemple revenir ici et faire appel à

59:21

un autre outil pour essayer d'aller plus

59:23

loin si jamais il est conf il va donner

59:25

une réponse en disant ok à la base de à

59:28

la suite de l'analyse que j'en ai faite

59:31

je pense que la réponse la plus adéquate

59:33

c'est celle-ci mais il va le faire de

59:35

manière

59:36

autonome donc il y en a deux types

59:38

principaux de d'agents au sein de de de

59:42

longchin il y a les agents d'action et

59:44

les agents de planification et

59:45

d'exécution les agents d'action ils vont

59:47

ils vont du coup gérer des petites

59:49

tâches tandis que les agents de

59:51

planification et d'exécution vont gérer

59:53

des tâches un peu plus comp qui

59:55

nécessite un peu de planifier un petit

59:56

peu dans quel ordre on va faire les

59:58

choses avant de se lancer dans dans dans

60:02

la tâche en question donc ça va

60:04

nécessiter euh des tâches un peu plus un

60:06

peu plus

60:07

complexes euh l'interface des agents

60:09

offre une une donc une certaine

60:12

souplesse donc on pourrait tout

60:14

construire avec des chaînes simples mais

60:17

souvent on a besoin plutôt plutôt que

60:19

d'avoir 10 chaînes d'avoir un agent avec

60:22

une une liste d'outils qui va

60:25

faire appel à la bonne au bon outil voir

60:29

la bonne chaîne au bon

60:31

moment un agent du coup il a accès à une

60:33

s à une série

60:35

d'outils il détermine lequel il

60:38

utilise les agents peuvent utiliser

60:41

plusieurs outils et utiliser la sortie

60:43

d'un outil comme entrée donc il est

60:44

possible qu'il utilise un outil comme il

60:46

est possible qu'il utilise plusieurs

60:47

outils à la à la fois donc il est pas il

60:50

est vraiment pas limité c'est de manière

60:52

autonome qu'il essaie de voir un peu

60:53

qu'est-ce qui de quoi il a besoin ou

61:00

pas alors sur les cas d'utilisation

61:03

alors il y en a énormément des cas

61:05

d'utilisation de de de long chain

61:09

euh le premier que j'ai listé ici c'est

61:13

que bien entendu quand on va créer des

61:15

applications qui vont utiliser les LLM

61:17

avec longchain qui est aussi intéressant

61:19

c'est de garder un c'est de monitorer la

61:22

solution c'est de savoir quand a fait

61:24

appel au LLM est-ce que ça a marché

61:26

est-ce que ça a pas marché qu'est-ce qui

61:27

a pris du temps et cetera donc dans

61:29

l'écosystème longchain ils ont également

61:31

ils ont créé deux outils en fait ils ont

61:33

créé langsmith langsmith qui va

61:35

permettre le le monitoring donc à chaque

61:38

fois qu'il va y avoir par langchain un

61:40

appel à une chaîne quelle qu'elle soit

61:43

le l'exécution du résultat de cette

61:46

chaîne ou de toute la du temps

61:47

d'exécution et tout un tas de métriques

61:49

vont être enregistré dans Lang Smith et

61:51

ça va vous permettre finalement de faire

61:53

un monitoring de de vos applications

61:55

donc c'est typiquement vous vous créez

61:57

une application qui je sais pas qui est

61:58

utilisé en interne une entreprise pour

62:01

générer des synthèses de d'email par

62:03

exemple tu dis n'importe quoi et donc à

62:05

chaque fois que un utilisateur va

62:07

utiliser l'application il va avoir du

62:08

coup une trace de ce qui s'est fait et

62:11

c'est comme ça que vous allez pouvoir un

62:12

peu euh voir ce qui se passe voir si

62:15

c'est normal voir si vous avez des

62:16

délais de la latence pas de latence si

62:18

le modèle répond toujours de manière

62:20

cohérente ou pas du

62:22

tout deuxème cas qui assez répandu euh

62:26

c'est la création de chatbot euh donc il

62:28

y a pas mal vu que l' chîn embarque pas

62:30

mal d'outils pour créer des des des des

62:33

chatbot assez simplement euh vous pouvez

62:36

euh du coup avec la en combinant avec

62:38

les chaînes avec les mémoires et

62:40

peut-être aussi avec les agents vous

62:41

pouvez créer un chatbot qui fait des

62:44

choses euh qui fait plein plein de

62:46

choses assez simplement parce que vous

62:48

pouvez faire la même chose avec euh euh

62:51

la le module openi finalement Python qui

62:53

existe c'est possible de faire la même

62:55

chose mais ce que va apporter l'enquenne

62:57

c'est vraiment la un peu la la clarté

63:00

dans la programmation et la la

63:01

simplicité dans dans la création de de

63:03

cette

63:05

solution l'en maintenant ils ils ont

63:08

fait un partenariat avec MongoDB pour

63:09

pouvoir étendre finalement le capacité

63:11

de stockage donc du coup ça permet ça ça

63:13

vous dit que ça permet ça ça les

63:16

rapproche et ça permet de faire en sorte

63:17

qu'il y a qu'il y a pas mal de personnes

63:19

d'entreprise qui utilisent modb et bien

63:21

de combiner un peu la puissance des deux

63:23

si vous avez des données je sa pas de

63:24

clientèle ou tout un tas de choses dans

63:26

monodb euh voilà l'intégration voilà

63:28

elle est elle est de elle est elle est

63:30

native en fait elle peut se faire assez

63:32

assez

63:33

simple donc les tâches les cas

63:36

d'utilisation donc vous pouvez avoir de

63:38

de l'analyse de la synthèse de documents

63:40

donc par exemple extraire des

63:41

informations d'un document euh de

63:43

différents formats que ce soit PDF Excel

63:46

et cetera et en faire une synthèse

63:48

entendu on a parlé du chatbot donc vous

63:50

pouvez créer des des agents

63:51

conversationnels donc capables de

63:53

répondre à des questions de fournir des

63:55

informations ou d'effectuer des tâches

63:57

alors aujourd'hui il existe tout un tas

63:59

de plateformes qui permettent de créer

64:00

des chatbot sans avoir à coder

64:03

euh et ce que va apporter l'entien dans

64:06

ce cas de figure c'est juste le côté

64:08

l'adaptabilité donc c'est de faire en

64:10

sorte que vous pouvez créer de manière

64:13

vous avez vous êtes juste limité par

64:14

votre imagination sur un peu la

64:16

flexibilité ou ce que vous voulez que

64:18

votre chatbot euh fasse derrière euh et

64:21

derrière vous pouvez également aller

64:22

plus loin c'està-dire créer Unat B qui

64:24

permet de faire de la réservation

64:25

typiquement de je sais pas de billet en

64:28

ligne en en interfaçant finalement une

64:31

interface de chat avec un agent derrière

64:33

qui va sur la base des informations qui

64:35

lui sont fournies finalement mettre en

64:36

place du coup de la réservation et puis

64:38

déclencher des livraisons ou des choses

64:39

comme ça euh bien entendu quand on

64:43

développe avec lankin j'en ai parlé un

64:45

petit peu c'est très facile de faire du

64:47

débuggage euh donc il va donc générer du

64:50

code dans plusieurs langues à partir de

64:51

description vous avez toute une trace

64:53

qui est fait dans Lang SMI et même dans

64:55

l'interface de programmation pour voir

64:57

un peu ce qui se passe et pour savoir

64:59

comment améliorer alors j'ai vu des cas

65:01

d'utilisation également utiliser

65:03

longchain pour faire du scrapping du web

65:05

scrapping euh pour récupérer des données

65:07

et pareil pour pouvoir aller euh pour

65:09

pouvoir raisonner sur cette données pour

65:10

pouvoir faire des choses

65:13

euh la réponse la réponse aux questions

65:17

ça c'est toujours dans le cas figure de

65:19

du du chatbot et le trisième outil donc

65:22

je vous ai parlé de Lang Smith mais ils

65:24

ont également créé récemment Lang SVE

65:28

qui va vous permettre finalement après

65:29

que vous ayez créé votre application

65:31

imaginons vous avez créé un chatbot de

65:33

déployer du coup via langsve finalement

65:35

votre application assz

65:37

simplement je crois que les deux Lang sm

65:40

c'est Lang sm c'est sûr vous pouvez

65:42

créer un compte dessus gratuitement euh

65:44

mais Lang Lang aussi je pense que vous

65:47

pouvez créer un compte gratuit pour

65:48

pouvoir déployer des applications même

65:50

si c'est briillé bien entendu pour des

65:53

des des situations euh beaucoup

65:55

juste des prototypes ou des choses de ou

65:56

des choses

65:58

similaires donc la polyvalence et la

66:00

puissance de longcha sont évidente en

66:02

fait en soi parce que ça permet de faire

66:04

pas mal de choses c'est assez flexible

66:06

on peut créer tout un tas d'applications

66:08

assez diverses euh les système de

66:10

questions-réponses l'analyse de données

66:13

euh vous pouvez créer les chatbot faire

66:17

des résumés euh l'intégrer avec

66:19

différentes technologies donc c'est un

66:21

peu tout ça que va va offrir finalement

66:24

long chain en avec des outils natifs

66:26

longchain c'est vraiment pour ça qu'on

66:28

parle de

66:31

framework alors je vais revenir un petit

66:34

peu sur le chat

66:36

euh

66:38

alors tac tac tac je vais

66:44

remonter on a parlé de la mise àjoute

66:46

des données

66:47

euh ce qu'on sauvegarde en mémoire peut

66:50

être stocké sur le Cloud oui euh quand

66:51

vous Gén quand vous utilisez des des

66:54

les composants de mémoire euh vous

66:56

pouvez stocker où vous voulez en fait

66:58

vous pouvez le stocker en mémoire en

67:00

mémoire RAM vous l'utiliser

67:03

euh là tout de suite

67:05

vous pouvez sauvegarder tout ça bien

67:07

entendu

67:09

fa euh l'analyse de la qualité de la

67:13

réponse est par est est par seuil ou

67:17

quand il n a pas de progress

67:19

alors l'analyse de la qualité alors il y

67:22

a plusieurs niveaux il y a déjà euh euh

67:24

est-ce que le code s'exécute bien génère

67:27

bien ce pourquoi on l'a on est en train

67:30

de le créer il y a bien entendu les

67:32

métadonnées d'exécution c'est euh euh

67:35

combien de temps ça a pris euh si ça

67:38

abouti et cetera euh euh maintenant pour

67:41

pouvoir vous euh via typiquement si vous

67:45

si vous enregistrez toutes les

67:47

interactions que vous avez avec Len euh

67:49

avec LM par exemple vous pouvez aller

67:51

sur LM voir exactement qui a exécuté

67:54

quoi quel prompt a été utilisé quelle

67:58

réponse il y a eu avec quel prompt donc

68:00

vous êtes vraiment capable d'aller dans

68:01

le détail de toutes les interactions et

68:04

c'est vrai que j'en ai pas parlé parce

68:05

que normalement le le temps fil mais

68:07

langch intègre également euh des

68:10

fonctions de de comment je vais dire de

68:14

de de de ah le mot m'échappe euh de

68:19

typiquement quand vous voulez euh euh

68:22

euh avant de déployer votre votre votre

68:26

solution qui utilise un LLM vous voulez

68:28

euh avoir une vérification un peu de la

68:30

pertinence des réponses donc il a aussi

68:32

des outils qui vont permettre de de de

68:34

avec des des des questions et des

68:36

réponses euh sûres que vous connaissez

68:38

vous allez pouvoir comparer un peu euh

68:41

la pertinence des réponses qui sont

68:42

données par langchin donc il y a des

68:43

fonctions pour pour euh voilà à des fins

68:46

de modération voilà c'est le mot que je

68:47

chercher euh il il a des fonctions pour

68:50

des fins de modération pour euh vérifier

68:52

la toxicité euh vérifier tout un tas de

68:54

choses avant fin de vérifier que voilà

68:56

le votre système ne va pas dérailler une

68:58

fois en production avant de le mettre en

69:00

production et il peut vous pouvez

69:02

également utiliser les LM mais je pense

69:04

que ça vous devez savoir pour euh

69:06

générer finalement sur la base des

69:08

questions et réponses euh sûr que vous

69:11

connaissez générer avec des documents

69:13

que vous avez en base de données des

69:14

questions réponses de manière

69:15

automatique et les utiliser pour faire

69:18

de la modération vous avez également

69:20

cette possibilité là avec

69:22

l'

69:24

alors l'appli créé avec langchain est au

69:27

final une appli python oui si vous

69:30

travaillez avec Python on la déploie

69:33

comment de la même manière que vous

69:34

déployez n'importe quelle application

69:36

donc vous créez l'application vous la

69:38

containurisez c'est un peu ce qu'on va

69:40

essayer de faire et vous la

69:43

déployez via une web app sur Azure ou ou

69:47

ce que vous voulez n'importe où ça

69:49

marche et c'est pour ça qu'ils ont

69:51

également créé Lang pour euh faire en

69:54

sorte que dès que votre application est

69:55

prêt faciliter un peu cette cette étape

69:58

de déploiement là

69:59

aussi donc voilà vous c'est du reste du

70:02

python donc c'est une librrairie python

70:04

donc vous vous faites votre code vous la

70:06

testez en local ça marche vous la passez

70:08

en test on s valider vous la passez en

70:10

PR exactement de la même manière euh

70:14

comment l' se positionne face au au au

70:17

cours que l'on a vu sur la formation DS

70:20

du bag of world text mining alors les

70:24

techniques les techniques qui sont

70:25

souhaité qui sont qui sont affiché là

70:27

dans le je peut-être afficher yes les

70:30

techniques qui sont affiché là dans la

70:32

dans la question donc

70:34

typiquement le bag of word le text

70:37

mining le text summarization le Tex

70:39

extraction et cetera c'est c'est les

70:41

techniques qui sont utilisées finalement

70:43

j'ai envie de dire des techniques de

70:44

base qui sont utilisé quand on fait de

70:46

la modélisation quand on fait du machine

70:47

learning classique pour

70:50

pouvoir faire de la modélisation sur la

70:53

base B des données textuelles donc là ça

70:56

c'est sûr que derrière bien entendu on a

70:58

capitalisé sur ces outils là pour

71:00

pouvoir créer les LLM maintenant en soi

71:03

comme je disais longchain c'est pas

71:04

c'est pas longchain qui va faire

71:06

l'analyse ou qui va utiliser le texte

71:07

longchain il va juste permettre de

71:09

d'avoir la la surcouche qui va permettre

71:11

l'interfaçage simplifié avec les LLM et

71:15

d'autres outils et donc les techniqu que

71:17

vous que vous souhaitez qui vous qui

71:19

sont cité là

71:21

euh euh c'est vont être remplacés entre

71:25

guillemet par le LLM lui qui va prendre

71:27

le relais donc vous pouvez très bien

71:28

utiliser un LLM euh euh pour les tâches

71:32

de classification euh sur un texte ça se

71:36

fait souvent pour pouvoir faire

71:37

maintenant de l'analyse de sentiment

71:38

assez j'ai envie dire simplement euh

71:41

avant il fallait effectivement entraîner

71:43

un modèle typiquement sur la base de

71:44

cette technique-ci pour en créer un pour

71:46

créer un modèle avec les LLM euh vous il

71:49

vous suffit de passer un texte et de

71:51

faire un prompt et de vous dire euh euh

71:53

suris la base du PRME que je vais te

71:55

donner je veux que tu me donnes le

71:57

sentiment

71:58

associé et lui donner des exemples en

72:00

disant je m'attends à trois sentiments

72:02

de base donc positif négatif neutre euh

72:05

et puis et lui donner des exemples et

72:08

sur la base de ça via le texte que vous

72:10

lui donnez il va vous donner euh des il

72:13

va vous donner il va vous faire une

72:14

analyse de sentiment et d'ailleurs vous

72:16

pouvez que vous d'ailleurs vous pouvez

72:17

réutiliser pour pouvoir faire du machine

72:20

learning derrière éventuellement donc

72:22

c'est un ça ça va ça va ça ça modifie un

72:24

peu les les les stratégies de

72:26

modélisation classique en en permettant

72:28

d'aller peut-être un peu plus vite sur

72:29

certain in tche en

72:32

fait donc voilà

72:35

h ok donc du coup démo et je vais

72:39

essayer de

72:45

partager mon

72:47

écran si

72:52

j'arrive

72:54

[Musique]

72:55

hop hop voilà donc j'ai créé un petit

73:00

GitHub euh je vais essayer de le

73:02

nettoyer un petit peu si jamais ça vous

73:04

intéresse par la suite c'est un peu un

73:06

chantier l'objectif euh d'ici C de vous

73:09

montrer concrètement comment on fait

73:13

première étape

73:16

euh je claque donc première étape avant

73:20

de rentrer dans la partie code première

73:22

étape bien entendu il faut que vous ayez

73:24

un environnement de travail on va dire

73:26

prêt c'est quoi l'environnement de

73:28

travail typiquement si vous travaillez

73:30

en local vous allez créer un

73:32

environnement virtuel

73:34

euh je rentre pas dans les détails je

73:36

vais supposer que vous connaissez donc

73:37

c'est vual en et cetera ensuite dans cet

73:41

environnement virtuel vous allez

73:42

installer bien entendu longchain

73:44

longchain s'installe de manière assez

73:46

simple PIP install longchain et puis

73:49

vous êtes prêts généralement on va

73:52

utiliser

73:54

plusieurs libreries ensemble donc c'est

73:56

ce que je vais commencer par oups par

74:00

vous montrer si j'arrive donc je vais

74:03

regarder le

74:05

requirement donc moi dans mon truc j'ai

74:07

mis bien entendu longchain avec Open ai

74:10

et puis docay ça ce sont des des

74:12

libreries qui vont l'aider typiquement à

74:14

aller lire des documents des des

74:16

fichiers CSV ou des choses comme ça

74:18

euh en parallèle de longchain natif pur

74:22

euh il a également longchain T openi qui

74:25

est une sorte de de micro longchain avec

74:29

des fonctions euh spécifiquement euh qui

74:33

sont spécifiquement dédiés finalement

74:34

avec les API open ai et notamment avec

74:37

Azure openi également j'utilise j'ai

74:40

installé alors tous les autres libries

74:42

que j'ai installé ne sont pas forcément

74:44

obligés ce qui est forcément nécessaire

74:46

ça va être longchain tout ce qui est du

74:48

longchain euh moi j'ai installé d'autres

74:51

librairies parce que du coup je voulais

74:52

un peu euh explorer la la possibilité de

74:55

long chain d'aller chercher des modèles

74:57

qui se trouvent sur hugging face donc

74:59

c'est pour ça que j'ai utilisé installer

75:01

les Transformers la librie Transformers

75:04

avec le hugging face hub qui me permet

75:06

d'aller me connecter à hugging face et

75:08

récupérer finalement et pouvoir utiliser

75:11

un modèle hugging face euh et après il y

75:15

a d'autres outils donc typiquement

75:16

Wikipédia YouTube Search ou doc doc Go

75:19

qui vont vous permettre qui vont me

75:20

permettre finalement de faire de la

75:21

recherche euh sur internet depuis long

75:25

chain finalement depuis mon

75:26

environnement de de programmation donc

75:28

pour la mise en place vous créez votre

75:31

environnement vous vous vous vous

75:34

activez votre environnement et vous

75:35

installez les libreries qui qui sont

75:37

nécessaires donc à minima PIP install

75:40

longchaîn ça c'est le niveau zéro et

75:43

maintenant via via un un via une

75:46

interface en en notebook vous pouvez

75:48

très bien

75:49

euh enfin commencer assez simplement

75:52

donc là on va je vous montre d'abord les

75:54

composants de base comme on a vu en

75:56

terme de code et puis après

75:58

progressivement on va voir un peu

75:59

comment les combine donc premièrement je

76:02

vous ai parlé du prompt et du promt

76:03

template spécifiquement qui permet

76:05

finalement de mettre en forme finalement

76:08

le prompt que l'on veut créer donc vous

76:12

importez c'est du python classique from

76:14

lunch import template et après vous sous

76:17

forme de texte vous voyez vous vous vous

76:20

designz votre promp avec toutes les

76:22

techniques de Prom engéering que vous

76:23

connaissez euh ici la spécificité de

76:26

longchain c'est que typiquement quand

76:28

vous voulez passer en paramètres euh

76:31

vous voulez passer un paramètre à une

76:32

chaîne de caractère vous n'êtes pas

76:33

obligé de mettre le F là-devant vous

76:35

n'êtes pas obligé il suffit juste de

76:38

mettre sous forme de caractère sous

76:39

forme de chaîne de caractères euh impr

76:42

prompt avec entre entre entre cur et

76:46

bracket comme ça qu' appelle euh le

76:48

paramètre finalement qu'on veut utiliser

76:51

et après on va utiliser le Pr template

76:53

qui va utiliser cette chaîne de

76:55

caractère et qui va permettre de

76:57

spécifier c'est quoi l'input dans cette

76:59

chaîne de

77:01

caractère donc je prends ma chaîne de

77:03

caractères et puis je spécifie que dans

77:04

cette chaîne de caractères mon input

77:06

c'est name et donc c'est possible donc

77:10

une fois que vous avez une fois qu' le

77:12

promt il a été mis en forme comme ça

77:14

donc vous voyez ça ressemble à du python

77:15

parce que du coup c'est comme si tout ça

77:17

c'était une chaîne de caractère parce

77:19

que après on peut juste faire un format

77:21

et puis spécif le le le nom du paramètre

77:24

et avoir le template qui va être passé

77:27

au LLM donc c'est comme ça qu'on va

77:29

créer un template c'est qu'on va vous

77:30

allez créer euh une chaîne de caractères

77:32

avec des des données d'entrée des

77:34

paramètres d'entrée votre votre prompt

77:37

va incorporer euh des des paramètres

77:39

d'entrée que vous allez spécifier via le

77:41

Prom template et c'est comme ça que vous

77:43

allez pouvoir figer vos prompt dans la

77:48

dans le processus de création de de vos

77:50

applications et ne faire que passer des

77:54

paramètres donc ça c'est le Pr template

77:57

la mémoire donc en terme de mémoire je

77:59

vous disais vous avez énormément de

78:01

types de de mémoire dans dans de façon

78:04

de gérer la mémoire donc quelques

78:06

fonctions donc vous avez la classe chat

78:09

message history donc qui est je un peu

78:14

grosi qui est l'une des classes

78:17

importantes des modules longchain il

78:19

s'agit d'un d'un d'unun surcouche en soi

78:22

légère qui va qui est pratique qui est

78:24

utilisé pour enregistrer des messages du

78:26

coup humains il il a donc on va

78:28

permettre de donc typiquement le cas

78:30

d'usage c'est peut-être comme ici je

78:31

veux donner un historique à mon à mon à

78:35

mon LLM avant de lui écrire mon prompt

78:38

je vais lui donner un historique donc je

78:40

peux créer je peux utiliser de la

78:41

mémoire donc le chat message history

78:43

donc c'est un peu comme si c'était une

78:45

interaction avec avec entre un humain et

78:48

un modèle et je vais lui spécifier en

78:51

fait les les éléments de les éléments de

78:53

notre conversation peut-être passer et

78:56

je vais passer cette historique

78:57

finalement au Prom template par la suite

78:59

pour qu' il puissent en prendre en

79:02

considération lorsqu'il va appeler

79:03

lorsque la chaîne va appeler le

79:06

modèle donc tout ça c'est un ça ce n'est

79:08

qu'un seul exemple euh vous avez un

79:10

autre qui est le conversation buffer

79:12

memory qui fonctionne à peu près de la

79:14

même manière en soit retenez juste que

79:17

euh le la mémoire la gestion de la

79:20

mémoire vous avez des fonctions

79:21

spécifiques pour différents cas de

79:23

figure

79:24

euh vous avez une qui va vous permettre

79:26

de gérer la mémoire un peu dynamiquement

79:28

pendant que vous êtes en train de de de

79:30

discuter avec avec le avec le LLM et

79:34

puis vous avez

79:35

euh une autre manière qui consiste à à à

79:38

stocker ça dans une sorte d'objet de

79:40

mémoire qui va être passé en LLM

79:42

peut-être un peu plus tard dans la

79:46

conversation donc maintenant si on les

79:48

combine mémoire et chaîne donc la chaîne

79:52

elle a besoin

79:53

a priori de deux composants de base elle

79:55

a besoin du prompt et elle a besoin du

79:57

modèle qu'elle va utiliser donc le

80:00

modèle moi j'ai utilisé du coup un

80:02

modèle que j'ai déployé sur Azure donc

80:04

c'est pour ça que je prends tout un tas

80:05

de de de paramètres là mais vous pouvez

80:08

très bien utiliser avec avec Open avec

80:12

le la Py de openi ça marche tout aussi

80:15

bien donc là typiquement le cas

80:17

d'utilisation ici c'était juste pour

80:19

vous montrer que c'est possible de

80:20

déployer un modèle depuis un Cloud

80:23

provider et de l'utiliser dans le cadre

80:25

de vos la création de vos applications

80:27

et l'avantage l'un des avantages de

80:30

faire ça c'est que euh vous avez la

80:32

garantie finalement que tout ce que vous

80:35

inter tout ce que vous vous vous vous

80:37

transmettez vous échangz avec ce modèle

80:39

reste dans le périmètre de l'entreprise

80:42

donc vous savez c'est vous qui avez la

80:44

main sur qu'est-ce qui est gardé

80:45

qu'est-ce qui n'est pas gardé et

80:48

C donc j'utilise mon je prends un modèle

80:50

de chat euh parce que je je veux un

80:53

modèle je vous ai dit il y avait trois

80:54

types de modèles les chat les LLM et

80:56

puis les embedding mais ce cas de figure

80:58

si c'est un modèle un peu de chat dans

81:00

je m'attends à faire de l'interaction

81:02

avec avec le modèle et puis je vais

81:06

créer vous voyez en plus d'avoir donc

81:08

une chaîne qui existe c'est la

81:10

conversation chain qui est optimisée

81:13

pour pouvoir faire des interactions

81:15

finalement avec un modèle donc je vais

81:17

lui spécifier le LLM que je veux

81:19

utiliser que j'ai défini préalablement

81:22

et la mémoire donc vous voyez à quoi

81:26

sert la mémoire c'est que je peux

81:28

précharger

81:29

l'historique et le passer en paramètrre

81:32

finalement à une chaîne pour que il

81:33

puisse répondre étant donné cette

81:38

mémoire et donc j'ai utilisé un autre

81:40

paramètre ici qui est le verbos ég TR

81:42

c'est pour justement permettre de voir

81:44

exactement tout ce qui se passe donc

81:46

quand on exécute on voit qu'il entre

81:48

dans la chaîne il commence par

81:50

construire le prompt donc vous voyez le

81:52

prompt il est il est euh il est il est

81:54

il est il est euh euh il est il est déjà

81:58

préformé vous voyez là je n'ai je je

82:01

n'ai fait rien d'autre que euh lui

82:03

donner euh une question une question ou

82:07

alors euh donner un un début de texte

82:11

donc ça c'est l'équivalent de mon de de

82:13

de ma de ma de mon instruction que je

82:15

veux la tâche que je veux qu'il réalise

82:17

et langchain en fait la force de l'in

82:20

c'est que ils ont déjà un er tout un tas

82:23

de prompt de format de prompt don vous

82:25

voyez que le prompt global c'est

82:27

celui-ci c'est the following et c'est

82:30

friendly conversation between un humain

82:31

et donc c'est le Prom template qui est

82:34

associé à à cette chaîneci donc qui qui

82:37

guide un peu les le mode d'interaction

82:40

et on voit bien que ce que je lui donne

82:42

là en entrée il est

82:43

donné il est il permet de compléter le

82:46

prompt et ce prompt est passé du coup au

82:49

LLM qui lui me donne une réponse et ça

82:54

j'ai cette j'ai j'ai tout ça parce que

82:57

j'ai mis le verbos égal trou

82:58

c'est-à-dire montre-moi les différentes

82:59

interactions qu'il y

83:02

avait

83:04

euh et donc comme je vous disais j'ai

83:07

défini une mémoire ici donc j'ai déiné

83:10

un objet de type mémoire pourquoi parce

83:12

que c'est pour vous montrer que pour

83:13

pouvoir continuer la conversation donc

83:15

là je lui ai posé une première question

83:17

il m'a répondu et maintenant je peux lui

83:19

poser une deuxième question derrière

83:21

sans lui refournir tout le reste parce

83:22

que automatiquement toutes les

83:24

interactions qu'il fait il les

83:25

sauvegarde dans cet objet donc je peux

83:27

lui poser là je lui ai demandé de me

83:30

donner des informations sur un site qui

83:32

est bien qui est assez bien connu avec

83:33

pas mal de ressources supitant notamment

83:36

et je continue en lui demandant des

83:38

sites qui sont similaires et donc il est

83:40

capable on voit dans le prompt que il y

83:43

a la

83:44

première question il y a la la réponse

83:47

qu' a donné et puis ensuite il y a le

83:49

reste il y a la deuxième question et

83:52

donc c'est c'est ça c'est à ça que c'est

83:53

à la mémoire c'est finalement de

83:55

continuer la conversation donc c'est

83:57

tout ça est encapsulé dans conversation

83:59

chain et permet de le faire assez

84:03

simple

84:05

euh pour vous montrer

84:07

rapidement un agent pour vous montrer

84:10

que c'est vraiment très simple de créer

84:11

un agent

84:13

c'està-dire une chaîne autonome qui va

84:16

décider elle-même des outils qu'elle

84:19

utilise premier outil je uise doc doc Go

84:24

search run c'est du coup une fonction

84:27

qui va permettre de de faire de la

84:28

recherche sur internet via laapi doc Go

84:31

encapsulé nativement dans longchain et

84:34

donc je v ça c'est juste pour vous

84:36

tester et pour vous montrer ce que ça

84:38

donne en sortie vous pouvez faire une

84:39

recherche et avoir un résultat sous

84:41

forme de texte deuxième outil que je

84:44

vais tester c'est Wikipédia donc je peux

84:46

aller faire de la recherche sur les

84:48

pages de Wikipédia en lui spécifiant

84:51

juste un mot clé et maintenant je vais

84:53

créer mon agent et donc mon

84:55

agent si je vous montre juste la syntaxe

84:58

de l'agent je lui donne la liste des

85:00

outils

85:02

donc tout simplement le le la capacité

85:06

de chercher sur internet et la et

85:07

l'outil de Wikipédia je lui spécifier le

85:10

modèle qu'il va utiliser euh et puis je

85:13

lui dis un petit peu comment il va se

85:15

comporter c'est un peu son comportement

85:18

et derrière je peux lui poser une

85:19

question et il va décider lui tout seul

85:22

euh de quel outil il va de quel outil il

85:26

a besoin donc si on regarde euh le la la

85:29

succession des des différentes des

85:31

différents

85:33

enchaînements donc il entre dans

85:35

l'exécution on voit il dit il risonne

85:38

lui-même que il a il pourrait avoir

85:40

besoin euh de de de vérifier que

85:43

l'information n'a pas changé depuis donc

85:45

il fait appel à dug do go search il

85:48

récupère le texte et maintenant il

85:51

analyse donc il a confirmé que Joe Biden

85:54

c'est bien le président actuel des

85:56

États-Unis et puis il me donne la

85:58

réponse finale et donc vous voyez juste

86:01

le code c'est juste celui-là j'ai à

86:02

aucun moment je lui ai dit commence par

86:05

utiliser tel outil ou tel autre et

86:07

l'ordre ici n'a aucune espèce

86:09

d'importance euh donc lui tout seul

86:12

décide quel outil il utilise et raisonne

86:15

sur ses résultats

86:17

lui-même donc pareil donc l'autre

86:19

exemple que j'ai fait c'est lui demander

86:21

euh du coup quelle est l'histoire de de

86:23

la Tourel et donc tout simplement pareil

86:27

là dans ce cas de figure il a raisonné

86:30

plutôt avec Wikipédia en disant ok

86:32

peut-être l'information je vais la voir

86:33

beaucoup plus de Wikipédia donc il a

86:35

fait appel à la p de Wikipédia il a

86:37

récupéré le texte il fait un résumé du

86:39

texte et puis il me donne une réponse

86:42

finale de la même manière et donc pareil

86:45

pour vous montrer que il est capable de

86:47

d'enchaîner comme ça je lui ai posé une

86:50

question un peu plus un peu plus

86:51

compliquée c'est euh du coup euh je lui

86:55

ai demandé d'abord est-ce que est-ce que

86:57

les est-ce que les agents long chain

86:58

peut pouvoir non non la possibilité de

87:01

faire appel que à un seul outil à la

87:04

fois c'était exprès c'était pour que il

87:06

se ils se base à la fois qu'il essaie de

87:09

rechercher à la fois sur Internet et à

87:10

la fois sur Wikipédia pour voir si ça

87:12

marche et on voit bien que il commence

87:14

par utiliser la la recherche euh il

87:18

n'est pas certain donc il fait une

87:21

nouvelle recherche il n'est pas certain

87:23

et il utilise Wikipédia et donc lui tout

87:25

seul enchaîne en fait euh des

87:28

interactions avec les différents outils

87:30

qu'il a et jusqu'à me donner une réponse

87:32

finale en me disant il y a pas de Claire

87:34

réponse euh qu'il a trouvé avec ces deux

87:36

outilslà donc on peut très bien imaginer

87:39

avoir au sein de l'entreprise pas mal

87:41

d'outils typiquement des outils de une

87:43

par exemple un qui va se connecter à une

87:44

base de données un autre qui va se

87:46

connecter une base documentaire et

87:47

cetera et créer un agent qui va lui tout

87:50

seul décider où est-ce qu'il est plus

87:52

pertinent finalement d'aller rechercher

87:53

l'information et puis de la combiner

87:55

pour pouvoir répondre de manière

87:58

pertinente donc vous voyez c'est assez

88:00

simple vous voyez c'est ça déande pas

88:02

beaucoup de ligne de code euh c'est

88:04

peut-être celle-ci c'est peut-être la

88:06

création du modèle avec Azure open c'est

88:08

peut-être le plus long mais vous avez

88:10

des fonctions qui sont déjà prépackagées

88:12

qui sont prêtes à être employé pour

88:13

pouvoir euh pour pouvoir pouvoir

88:19

atter alors je vais revenir juste

88:21

checker il y a pas de question

88:27

oui alors j'espère que la taille de la

88:29

police est mieux désolé euh le lien pour

88:32

le repipo je le fais dès la dès que je

88:34

fini le le Data atelier parce que j'ai

88:36

encore pas mal de cleaning à faire il

88:38

pour pas que vous ayez voilà j'ai essayé

88:39

pas mal de choses assez assez diverses

88:41

et variées euh l'utilisation d'agent

88:44

doit avoir un impact sur la rapidité euh

88:46

s'il fait souvent plusieurs recherches

88:49

il doit y avoir une compromis à trouver

88:51

entre les performances c'est la

88:52

pertinence oui bien entendu ça a un

88:54

impact euh parce que du coup il peut

88:56

itérer comme ça sur plusieurs outils

88:58

mais je pense mais j'ai pas encore

88:59

vraiment creusé mais ça doit être

89:00

possible de euh ça doit être possible de

89:03

spécifier un petit peu quand au bout de

89:06

combien de temps en fait il faut qu'il

89:07

s'arrête faut juste que je je plonge un

89:09

peu dans la documentation mais ça doit

89:11

être possible de forcer un petit peu

89:13

l'arrire au bout d'un moment avant de

89:15

avant de

89:17

partir hop alors je reviens j'augmente

89:21

encore

89:25

là comme ça et puis on va peut-être

89:26

aller je juste vous montrer rapidement

89:28

en fait d'autres possibilité avec avec

89:31

l' donc pareil c'est juste pour aller un

89:34

peu plus pour vous montrer juste que

89:37

c'est possible rapidement d'interfacer

89:39

long avec huging face donc c'est

89:41

possible d'aller chercher des modèles

89:43

qui se trouvent

89:44

suruging bon pour ça il faut il faut

89:46

avoir il faut avoir installé du

89:50

coup alors où est-ce que jeis importer

89:54

le hugging face la librairie qui permet

89:56

de se connecter finalement à l'interface

89:58

hugging face de spécifier le modèle

90:00

qu'il nous faut et de passer en

90:01

paramètres finalement les paramètres de

90:03

notre modèle et donc pareil la la

90:05

syntaxe est la même tout simplement je

90:08

définis mon modèle et toujours j'utilise

90:10

un PR template toujours avec une chaîne

90:14

de caractères je passe des des

90:16

paramètres en entrée et puis je crée une

90:19

chaîne de base donc là typiquement vous

90:20

avez une la chaîne la plus simple de

90:22

l'an chain c'est une chaîne qui prend

90:24

juste le prompt et le LLM tout

90:27

simplement et pareil donc je crème donc

90:30

la séquence elle est toujours pareil je

90:32

défini mon modèle je définiis mon

90:35

template de prompt et puis mon template

90:37

de prompt j'ai défini ma chaîne et puis

90:39

après je la utilise c'est toujours le

90:41

workfow il est toujours il est toujours

90:43

pareil

90:45

euh donc là j'ai utilisé un modèle

90:47

flanty F qui est assez connu typiquement

90:51

souvent US cas pour vous montrer comment

90:53

on F Tune des modèles on par souvent de

90:54

flanty Five

90:56

euh pour parti pour parti d'un modèle

90:59

qui a pas forc qui qui est bon mais pas

91:02

pas pas comme Monti attend et pour

91:04

essayer de de gonfler un peu sa capacité

91:06

euh c'était juste pour vous montrer la

91:07

différence entre un un petit modèle

91:09

comme celui-ci qui est quand même

91:11

relativement petit par rapport à à à GPT

91:14

3.5 parce que ce que j'utilise avec aus

91:16

GPT 3.5

91:19

h donc là pour des questions simples

91:22

euh il arrive à répondre mais si je

91:24

commence à lui poser une série de

91:26

questions bah il me répond complètement

91:28

à la place à à côté de la plaque donc

91:30

sur des questions de raisonnement sur

91:32

des questions un peu de culture générale

91:34

et cetera il est pas du tout adapté et

91:37

alors qu'avec un un un GPT 3.5 tubo tout

91:41

simple euh les réponses sont sont tout

91:44

de suite tout de suite

91:46

qualitatif alors ce que je voulais vous

91:49

montrer également ici parce que tout ça

91:51

c'est la la même chose que précédemment

91:52

on crée le modèle on crée le template

91:55

euh on crée notre chaîne et puis on

91:58

l'utilise

92:00

euh oui je voulais vous montrer que

92:05

euh vous

92:07

pouvez je regarde juste vite fait

92:11

ouais

92:12

[Musique]

92:13

c'est il y a bon je voulais voilà c'est

92:16

ça je voulais vous montrer qu'il y a

92:17

plusieurs autres chaînes bien entendu il

92:19

y en a il y en a il y en a énormément de

92:21

chaînes la chaîne la plus simple c'est

92:22

LLM chain mais vous avez également la

92:25

transform chain qui qui vous permet de

92:28

de d'utiliser des fonctions python que

92:30

vous-même vous avez créé pour pouvoir

92:33

appliquer pouvoir les utiliser dans une

92:35

chaîne vous avez les sequen chîn qui

92:37

permet d'enchaîner plusieurs LLM chain

92:41

les unes à la suite des autres euh vous

92:43

avez la LLM matchain qui intègre déjà

92:45

des outils pour des questions un peu de

92:47

calcul euh en utilisant les

92:49

mathématiques euh donc donc c'est

92:51

l'exemple que que j'ai mis ici c'est euh

92:54

par exemple si vous avez des questions

92:55

de ce type qu'il faut faire des calculs

92:57

euh typiquement on va élever à la

92:58

puissance 16 en nombre et donc avec lui

93:02

en utilisant le LLM chain on voit que

93:06

encapsulé au sein de longchain il va

93:08

faire appel à des outils qui vont

93:11

euh mieux calculer les valeurs parce que

93:14

comme je vous disais le LLM de base ne

93:16

raisonne pas tout ce qu'il sort c'est

93:19

des c'est une série de probabilités et

93:22

sur la base de ces probabilités on

93:23

reconstruit en fait les

93:25

mots donc en soit il ne raisonne pas il

93:27

ne fait pas de calcul et donc pour

93:29

pouvoir augmenter un peu les capacités

93:30

du L NOTAM sur des calculs on peut lui

93:32

assoer des outils donc le l mat intègre

93:38

finalement outils auquel le LLM fait

93:41

appel pour pouvoir faire des calculs

93:42

bien

93:44

spécifi donc là vous avez vu j'ai juste

93:48

la seule les seules fonctions que j'ai

93:49

fait j'ai juste importé euh les

93:52

différents les différents modèles j'ai

93:55

juste je me suis juste créé une fonction

93:56

assez rapide pour voir quand j'exécute

93:58

une chaîne compter le nombre de token

94:00

donc le nombre de mots entre guillemets

94:02

euh qui est qui sont générés qui sont

94:05

utilisés par le LLM c'est le but de

94:07

cette de cette fonctionuss euh j'ai créé

94:10

mon modèle moi j'ai j'ai complété j'ai

94:14

utilisé ma chaîne pardon euh et donc

94:16

quand je l'utilise et quand on regarde

94:19

le template qui le le template qui é

94:21

créé donc on voit

94:23

translate donc tout ce template je l'ai

94:26

jamais écrit et c'est c'est pour ça

94:29

qu'il existe plusieurs chaînes au sein

94:30

de long chain parce que dans les chaînes

94:32

en fait dans dans certaines chaînes assz

94:34

assez spécifiques ils ont déjà intégré

94:36

des templates de prompt qui n'attendent

94:39

que que des bouts d'instruction pour

94:41

pouvoir euh pour pouvoir

94:44

continuer c'était pour vous montrer ça

94:46

avec les chain rapidement pour vous

94:49

montrer que c'est possible de

94:52

d'appliquer pas mal de techniques de

94:54

prompt

94:55

engineering alors là j'en ai pris que

94:57

donc là je vous a au début je vous

94:59

montrer que que des des exemples assez

95:02

simples on va dire de promt

95:05

hop je vais réduire

95:09

ça pu

95:10

[Musique]

95:13

réduire bon oker comme ça donc pareil

95:18

avec un Prom template on peut avoir un

95:19

Prom qui est beaucoup plus long mon

95:21

template euh du coup je peux enfin je

95:24

peux avoir un template qui est beaucoup

95:26

plus beaucoup plus composé donc on lui

95:29

dis de répondre à une question sur la

95:31

base d'un contexte qu'on va lui donner

95:33

euh si il ne connaît pas la réponse on

95:35

lui spécifie de de dire je ne connais

95:37

pas plutôt que d'inventer ça c'est pour

95:39

limiter euh ce que Microsoft s'appelle

95:42

fabrication qui est l'hallucination pour

95:44

éviter qu'il ne qu' ne qui n'ille qui

95:46

n'aille dans le décor le contexte on lui

95:48

donne un texte mais on pourrait très

95:50

bien c'est ce que je vais vous montrer

95:52

par la suite lui spécifier ce contexte

95:54

un peu de manière dynamique en lu en lui

95:56

spécifiant ça en donnée d'entrée et puis

96:00

la variable qu'on va spécifier donc la

96:02

requête de de l'utilisateur donc ça

96:05

c'est notre chaîne de caraè de base

96:07

ensuite on utilise un Prom template pour

96:10

englober tout ça et spécifier quelle est

96:12

la variable d'entrée donc si on met ça

96:15

bout à bout et quand on affiche tout le

96:17

prompt on a tout ça avec la question que

96:19

je viens de formuler donc on a spécifier

96:21

à la fois ce qu'on voulait le contexte

96:23

euh avec le format qu'on attendait et

96:28

pareil j'utilise toujours mon 3.5

96:30

classique je l'intègre dans une chaîne

96:33

simple et je complète finalement je

96:36

passe ça c'est ma variable d'entrée ça

96:38

c'est ce que je passe en entrée donc

96:39

j'appelle mon Prom mon mon ma chaîne en

96:43

lui spécifiant finalement la question

96:44

avec mon prompt qui est déjà encapsulé

96:47

donc ça c'est pour vous montrer que

96:48

quand vous quand on crée des

96:49

applications euh le le prompt

96:52

engineering reste au centre donc il va

96:54

quand même falloir guider le modèle sur

96:57

qu'est-ce qu'on veut faire et de quel

96:59

sur quel format on s'y attend donc le

97:02

les techniques de Prom engineering vont

97:03

être au cœur finalement de toutes les

97:04

applications qui va utiliser l' et on va

97:07

donc dans le code finalement de votre

97:09

application vous allez avoir des Prom

97:11

qui sont figés qui sont qui sont qui

97:14

doivent être bien construit pour pouvoir

97:15

adresser des situations bien spécifiques

97:17

et vous et l'utilisateur il va juste via

97:21

barre de recherche un truc comme un truc

97:22

similaire entrere ça ça requête c'est

97:24

tout ce que l'utilisateur va avoir le

97:25

droit de faire et en tâche de fond c'est

97:27

langchainîn qui va prendre le relais

97:29

pour compléter le prompt et déclencher

97:32

la chaîne qu'il faut déclencher pour

97:34

pouvoir répondre à la question donc on

97:37

passe le modèle on spécifie le prompt on

97:41

on remplace la question donc je voulais

97:43

lister

97:44

euh les modèles et les providers de

97:47

modèles au format macdown et donc du

97:50

coup il me il me donne la la réponse

97:52

avec le format que j'attends donc vous

97:55

voyez que bon il a c'est pas juste ceci

97:58

euh vous avez hugging face qui est une

97:59

plateforme sur laquelle vous pouvez

98:00

trouver des modèles vous avez bien sûr

98:02

open vous avez bien sûr Gini de Google

98:05

et vous avez un qui est pas souvent

98:07

connu qui est cooher aussi qui est un

98:09

provider de modèle il y en a il y en a

98:11

pas mal il y a nistral il y a euh il y

98:14

en

98:16

a pour vous montrer comment rapidement

98:19

on peut faire du f shot F shot prompt

98:21

c'est dans mon prompt j'inclus des

98:25

exemples pour que le modèle puisse s'en

98:27

inspirer

98:28

pour pouvoir aller pour pouvoir répondre

98:31

donc il a une chaîne il a un Prom

98:33

template spécifique pour le fot Prom

98:35

template comme comme comme il l'a je

98:38

définis mes exemples donc question

98:41

réponse question réponse pour lui

98:42

montrer un peu comment doit faire euh je

98:47

commence à créer ma chaîne de caractère

98:48

je l'inclus vous voyez dans un Prom

98:51

templ de base au

98:52

début euh donc je je crée plusieurs

98:56

plusieurs composants donc là euh c'est

98:59

un premier composant donc je vais créer

99:01

euh un promp exemple euh avec les

99:05

exemples ici

99:08

dessus je spécifie juste un préfixe qui

99:12

va venir au tout début et un suffixe qui

99:14

va venir à la fin de mon prompt donc en

99:16

fait là je suis en train de de créer mon

99:18

prompt par morceau plutôt que d'avoir un

99:20

prompt qui est long et qui fait la

99:22

taille d'une page euh je définis des

99:25

briques que je vais rassembler de coup

99:28

dans mon F shot from template là je lui

99:31

spécifie les exemples je lui spécifie

99:35

euh l'exemple de prompt les les les la

99:39

le format entre guillemet de de mes

99:41

exemples pour qu'il puisse lire mes

99:43

exemples et les décrypter je spécifie ce

99:45

qui va mettre en début de prompt et ce

99:47

qui va mettre en fin de prompt et je

99:49

spécifie ma ma mes ma variable ou mes

99:51

variables d'entrée avec mes séparateurs

99:53

et donc quand on met tout ça bout à bout

99:55

ça donne un promt comme ça et donc vous

99:57

voyez on n'est pas obligé d'écrire tout

99:59

ça euh parce que si vous travaillez avec

100:02

l'API d'Open tout simplement vous allez

100:04

écrire tout ça en prompt vous allez

100:06

beaucoup itérer beaucoup réfléchir sur

100:08

comment bien formuler le prompt avec les

100:10

bons trucs et cetera ici j'ai juste

100:13

défini mes mon mon prompt par par

100:16

morceau entre guillemets et puis je l'ai

100:17

je l'ai réuni du coup dans le FUS shot

100:19

pour qu'il me crée finalement mon prompt

100:22

euh

100:23

global à quoi ça peut servir de faire

100:26

tout ça on peut très bien imaginer que

100:28

vous travailleer à plusieurs et vous

100:31

voulez utiliser par exemple le même

100:33

préfixe dans plusieurs euh dans

100:36

plusieurs dans plusieurs codes et donc

100:39

là ça devient beaucoup plus flexible

100:40

parce que vous allez avoir par exemple

100:42

un code qui va utiliser ce préfixe là et

100:44

un autre qui COD qui va utiliser un

100:45

autre préfixe donc vous pouvez avoir une

100:47

bibliothèque entre guillemets de de

100:49

morceaux de prompt que vous combinez que

100:51

vous réajustez un petit peu comme vous

100:53

le souhaitez pour répondre à différents

100:56

besoins donc ça c'est le

100:58

promt

101:00

global qui permet de faire du f du fot

101:03

donc làdessus je peux créer maintenant

101:05

ma chaîne et fait exactement comme

101:08

précédemment

101:09

ou je pour aller un peu plus loin ça

101:13

c'est un peu plus technique c'était

101:14

juste pour vous montrer que c'est

101:15

possible

101:16

de donner de manière dynamique des

101:19

exemples par exemple

101:21

là j'ai une suite d'exemple et ce que je

101:23

veux faire c'est que je veux pas lui

101:24

donner tout ça je veux lui donner par

101:26

exemple les TR premiers

101:28

ou premiers et pas tous les exemples

101:32

vous pouvez avoir une base de question

101:34

réponse d'exemple de ce que vous voulez

101:37

vous voulez pas lui donner tout vous

101:38

voulez lui donner juste un fragment et

101:41

donc ils ont pensé à ça ils ont créé à

101:44

du coup l bas example selector donc il

101:47

va sélectionner des exemples sur la base

101:49

longueur et l'objectif ici c'est que on

101:53

va lui donner notre base du coup

101:57

d'exemple on va lui donner l'exemple

101:59

prompt qui va qui va lui permettre de

102:01

décrypter comment est-ce que les

102:03

exemples sont doivent être interprétés

102:05

et on va on va lui spécifier euh la

102:08

longueur maximale que doit avoir nos

102:11

exemples donc quand il va atteindre du

102:13

coup quand il va quand il

102:15

va calculer la longueur et qu'il va

102:17

atteindre 50 il va s'arrêter il va il va

102:19

s'arrêter il va plus prendre les autres

102:21

exemp donc ça permet de dynamiquement

102:24

ajuster en fait c'est-à-dire euh euh ne

102:28

pas avoir à la main à revenir faire du

102:30

copier-collé de rajouter des exemples à

102:32

chaque fois d'avoir une seule base et

102:34

puis de dynamiquement choisir un petit

102:35

peu le nombre d'exemple qu on passe au

102:38

au modèle et donc on a un f shot

102:42

template c'est le même que précédemment

102:43

et on va spécifier le exemple selector

102:46

qu'on a fait

102:48

précédemment donc c'est exactement la la

102:50

même chose c'est juste que

102:52

euh euh on va

102:55

dynamiquement en en avec le la longueur

102:58

qu'on lui a fourni il va faire en sorte

103:00

que quand il va créer tout le prompt la

103:03

longueur maximale finalement il va

103:05

l'ajuster il va il va sélectionner les

103:08

il va sélectionner un ou plusieurs

103:10

exemples de telle manière que le prompte

103:11

final est la longueur qu'on lui a

103:14

spécifié euh

103:17

ok

103:18

euh alors je juste vérifier hop si vous

103:23

êtes toujours avec moi je pense que

103:25

vouses vous êtes toujours avec moi alors

103:27

rapidement

103:28

euh juste rapidement c'est également

103:30

possible de de de spécifier euh euh le

103:34

format de sortie donc je vous disais

103:36

précédemment quand on crée un système

103:38

euh le ce que le LLM donne en sortie

103:41

c'est généralement une chaîne de

103:42

caractère al c'est pas intéressant d'un

103:44

point de vue programmation parce que

103:45

peut-être qu'on veut avoir un

103:46

dictionnaire pour pouvoir le passer dans

103:48

une autre base de données peut-être pour

103:49

l'insérer directement dans une base de

103:51

données donc je sais pas euh je m'étais

103:53

amusé à vous pouvez créer par exemple un

103:56

un simple chatbot qui prend une commande

103:59

et euh pour pouvoir déclencher le

104:02

système finalement de préparation et de

104:04

de et de livraison et cetera le système

104:06

l'autre l'autre partie du système va

104:08

attendre juste un JSON par exemple ou un

104:11

dictionnaire avec les clés valeurs le

104:13

nom du client le montant laadresse et

104:14

cetera et récupérer pour pouvoir

104:16

déclencher notre traitement donc on va

104:18

avoir besoin pour ça de de de faire en

104:21

sorte que la sortie de notre LLM a un

104:23

format bien spécifique donc langchain

104:26

pareil ils ont des fonctions pour

104:27

structurer la sortie de notre LLM donc

104:30

c'est un peu plus complexe mais ça se

104:32

fait très bien on va spécifier

104:34

finalement là c'est le le cas de figure

104:36

où on veut que la sortie soit sous

104:37

format de dictionnaire on va spécifier

104:39

des clés de dictionnaire avec les

104:41

descriptions de chacune des clés on va

104:45

les combiner on va on va les rassembler

104:48

dans un outil euh qui va un peu

104:51

permettre de mettre en forme la sortie

104:54

du

104:55

LLM et on va l'utiliser euh dans euh

104:59

alors je vais juste descendre

105:01

là donc je crée mon Prom

105:04

template et puis euh je lui spécifie le

105:08

format avec les fonctions qui sont

105:10

précéd qui sont mis précédemment donc ça

105:13

veut dire quoi ça veut dire que quand je

105:14

vais incorporer ce template euh dans une

105:19

dans dans une chaîne que je je vais

105:20

l'utiliser avec un LLM il va me générer

105:24

euh le for plutôt que de me générer une

105:26

chaîne de caractèes il va me générer

105:28

exactement le format que je que

105:31

j'attends non ça c'est un peu plus

105:34

technique mais euh c'était juste pour

105:36

vous montrer que c'est que c'est

105:38

possible donc vous avez déjà vous avez

105:41

vu maintenant un peu euh les

105:43

fonctionnalités de base donc on utilise

105:45

un modèle on a plusieurs types de

105:46

chaînes on peut les combiner un peu

105:48

comme on veut les agents sont faciles à

105:50

créer

105:51

la modularité de du framework long chain

105:54

permet d'avoir quelque chose vraiment de

105:55

d'assez d'ASS d'assz facile à mettre en

105:58

place alors on aura peut-être pas le

106:01

temps de que je vous montre un peu les

106:02

chaînes et puis comment est-ce qu'on

106:03

peut raisonner sur des documents mais ce

106:06

que je voulais vous montrer c'était

106:08

imaginons maintenant qu'on veut créer

106:12

euh une application

106:15

simple

106:17

l'application quand on veut application

106:20

test là par exemple c'est je vais créer

106:23

une application qui va me générer des

106:24

scripts de vidéo je sais pas je suis

106:26

peut-être youtubeur je dis n'importe

106:28

quoi et j'ai envie d'avoir de générer

106:31

des scripts des scripts de vidéos

106:33

courtes qu'estce qui passe bien sous

106:35

YouTube donc ça c'est mon c'est ce que

106:38

c'est ce que j'attends donc ce que je

106:41

vais créer ou ce que j'ai j'ai envie de

106:43

créer par exemple c'est assez simplement

106:45

juste un prototype avec stream lead

106:48

euh streaml va avoir voir du coup deux

106:50

champs un un un champ dans lequel

106:52

l'utilisateur va mettre un mot- clé et

106:55

un autre champ qui va apparaître qui va

106:57

avoir le scripte vidéo YouTube que je

107:00

veux que je pourrais utiliser ou que je

107:02

pourraisajuster si besoin et donc pour

107:04

ça je vais utiliser l'anin les LLM donc

107:08

open ai pour pouvoir le faire donc

107:12

premier élément avec le mot clé que je

107:16

que que je mets dans la barre de

107:18

recherche euh je vaux utiliser pour je

107:21

vais utiliser open ai je vais utiliser

107:23

GPT 3.5 pour être précis euh pour

107:27

générer le un titre accrocheur sur la

107:30

base du mot-cé que j'ai mis donc je vais

107:33

créer une chaîne donc une chaîne qui

107:35

prend en entrée des mots- clé et qui

107:37

avec un prompt template que j'ai défini

107:39

va me générer un titre accrocheur et

107:42

bien entendu je vais utiliser la mémoire

107:44

pour pouvoir essayer de garder

107:46

l'historique de ce que je suis en train

107:47

de faire une fois que j'ai mon titre

107:51

euh ce que je veux ce que je veux passer

107:54

la

107:54

sortie de cette chaîne à une autre

107:57

chaîne qui elle va prendre le titre va

108:00

prendre euh une recherche internet sur

108:04

les mots

108:05

clés va également prendre alors j'ai

108:07

oublié de le mettre euh mais c'est pas

108:10

grave je le dire à l'oral et va

108:11

également

108:13

prendre va également aller sur Wikipédia

108:15

récupérer euh ce qui est trouvé à propos

108:19

de ces mots clés là et c'est ce prompt

108:22

là c'est ce avec c'est via ce prompt que

108:24

je vais

108:26

euh générer mon script mon script vidéo

108:30

potentiellement idéal donc dans mes

108:33

outils python bien entendu parce que ça

108:36

reste du python long chain parce que

108:38

c'est c'est c'est un peu la plate la la

108:41

la la plateforme entre guillemets

108:42

centrale qui va permettre d'intégrer

108:44

tout ça euh bien sûr doc Go euh

108:47

Wikipédia que j'ai pas cité pour pouvoir

108:49

récupérer euh les l'informations sur

108:51

Wikipédia et l'informations sur sur

108:53

internet alors pourquoi j'ai combiné les

108:56

deux parce que on peut très bien voir

108:58

euh une information sur Wikipédia qui

109:00

est pas tout à fait correcte par rapport

109:02

au mot clés qu'on a mis et avoir une

109:04

recherche internet qui va venir avec

109:06

vraiment la vraie avec l'information que

109:07

l'on cherche et donc le fait de combiner

109:09

les deux ça va aider un peu le modèle à

109:10

savoir comment il doit se réajuster pour

109:13

euh pour essayer de construire un script

109:16

qui qui qui envoie la peine donc je

109:18

voulais deux sources d'information pour

109:20

le pour le donner en contexte au modèle

109:22

pour qu'il arrive à faire des choses

109:24

plus ou

109:25

moins euh

109:28

donc je vais vous montrer également que

109:31

on peut utiliser LM assez assez

109:33

simplement donc LMI c'est la plateforme

109:35

de monitoring qui a été développé par

109:37

les créateurs de longchain donc c'est

109:39

une plateforme indépendante vous pouvez

109:41

créer votre compte sur longmi vous allez

109:43

récupérer une apiik exactement comme sur

109:46

pas mal de services et en fait vous

109:49

allez l'incorporer dans votre dans votre

109:51

dans vos la la P qui dans vos variaable

109:53

d'environnement et chaque fois que l'cha

109:55

va être déclenché il va enregistrer la

109:58

trace sur l et c'est assez simple

110:00

d'utilisation euh vous allez voir et

110:03

enfin euh je vais travailler avec docker

110:06

parce que je veux pour vous montrer que

110:07

voilà on peut encapsuler tout ça avec

110:09

docker je vais travailler du coup avec

110:12

docker donc là j'ai mis un peu les

110:14

commandes mais je vais vous montrer

110:16

maintenant les les fichiers docker enfin

110:19

déjà on commence par le

110:21

requirement donc dans mes requirements

110:23

vous voyez j'ai beaucoup moins que

110:24

précédemment j'ai mon streaml parce que

110:25

je vais l'utiliser j'ai open ai j'ai

110:28

long chain alors le longchain core il

110:30

est nécessaire pour l sm d'après la doc

110:33

euh et j'ai inclus également wikipéia

110:36

YouTube search et puis même si on va pas

110:38

l'utiliser ça sera ça sera peut-être

110:40

pour pouvoir étendre un petit peu euh

110:42

mon application plus tard euh et avec

110:44

Doc doc Go search donc très simple j'ai

110:47

un requirement assez assez simple et

110:49

basique

110:50

maintenant je vous montre le code qui

110:53

est pas non plus très compliqué c'est un

110:55

seul code j'importe toutes mes

110:57

librairies mes promes template mes

110:59

mémoires toutes mes mes interfaces qu'il

111:02

me

111:03

faut je dis je

111:06

je en terme de de paramètres d'entrée je

111:09

veux permettre à l'utilisateur de de

111:11

jouer un petit peu avec la créativité du

111:13

modèle donc c'est le paramètres de

111:14

température des modèles donc je donne la

111:17

possibilité à l'utilisateur de d'être

111:19

plus ou moins créatif donc à zéro c'est

111:22

c'est le moins créatif possible et et le

111:24

et le et le et le zéro et le 1 c'est

111:28

c'est euh c'est c'est très créatif mais

111:31

il y a des risques finalement que qu'il

111:33

qu'il hallucine un petit peu alors

111:35

l'hallucination n'est pas forcément une

111:37

mauvaise chose c'est très bien lement

111:39

dans pour des cas de cas de figures

111:41

comme celle-ci où on a besoin d'être

111:42

créatif on a besoin de quelque chose

111:43

d'un peu d'innovant et un peu de

111:45

novateur donc là on peut monter un peu

111:47

la la température donc la créativité euh

111:50

à 1 par exemple à0 on peut la à à 1 par

111:53

exemple oui à et maintenant si quand on

111:55

va plutôt travailler avec de la

111:57

recherche documentaire où on veut que le

111:59

modèle raisonne uniquement sur la base

112:01

des données qu'on lui a fourni on va

112:04

plutôt partir sur une créativité qui est

112:06

très très faible pour du coup lui

112:08

permettre de se focaliser sur les sur

112:11

les sur les sur les

112:13

données donc j'ai défini mon modèle

112:16

comme comme comme avant sans souci mais

112:18

vous pouvez j'ai utilisé AZ chat open ai

112:20

mais vous pouvez utiliser open ai

112:22

classique avec euh laapik ça il a

112:24

absolument euh au c'est exactement la

112:26

même chose euh et là du coup je commence

112:30

donc ma première chaîne ma première

112:33

chaîne euh c'est celle qui va me générer

112:35

mon titre accrocheur donc euh je créé

112:39

mon premier pr template en disant give

112:41

me YouTube videoé title about this mais

112:43

ça c'est très simple mais j'aurais pu

112:45

euh lui dire je veux un titre avec euh

112:48

assez accrochur pour tel type de tel

112:51

type de cible euh sur Youtube par

112:53

exemple donc on peut très bien

112:55

personnaliser un petit peu tout ça et je

112:58

spécifie ma variable d'entrée donc on va

113:00

juste rentrer des mots clés et on va

113:02

avoir un

113:03

titre je définir ma mémoire et je

113:08

rassemble tout dans un dans une chaîne

113:11

donc ma mémoire mon template

113:14

oups hop donc ma m oui ça ma mémoire mon

113:18

template euh euh ma variable et puis

113:22

tout ça je vais les mettre dans une

113:23

chaîne ça c'est ma première chaîne qui

113:25

va me générer mon titre accrochat deuxè

113:28

chaîne je je veux générer mon mon mon

113:33

mon script vidéo donc mon template c'est

113:36

que je veux une un script d'une vidéo

113:39

attractive du coup qui va euh utiliser

113:44

le titre qui a été généré précédemment

113:47

et qui va utiliser en même temps

113:50

Wikipédia et une recherche internet donc

113:55

ça donc en entrée de ce de cette chaîne

113:57

de ce de cette chaîne-ci je devrais

113:59

avoir mon titre une recherche de

114:02

Wikipédia et une recherche d'Internet et

114:06

pareil je je crée mon modèle non modèle

114:09

ma mémoire

114:11

euh ma chaîne dans laquelle je rassemble

114:14

tout par la suite euh bon pour aller

114:17

très vite là-dessus même si euh juste

114:20

pour vous expliquer c'est juste j'ai

114:21

défini des fonctions pour pouvoir

114:22

éventuellement euh réexécuter euh euh

114:27

typiquement la recherche Wikipédia ou

114:29

Internet si jamais il y a un problème

114:31

pour pouvoir définir une sorte de

114:33

logique de retry euh donc j'ai défin un

114:36

décorateur bon c'est un peu plus

114:37

technique mais euh vous on peut faire

114:41

carrément

114:42

ça j'ai juste définis ça un peu pour

114:45

m'assurer que à chaque fois le LLM va

114:47

recevoir en fait quelque chose ou alors

114:49

d'être averti si jamais il y a un

114:50

problème avec ces deux outilslà et de

114:54

manière indépendante ça c'est encore

114:55

c'est des c'est des petits Typs de

114:57

software engéering c'est que j'ai défini

114:59

deux fonctionsépendantes donc une qui va

115:01

faire appel du coup à à à la à à l'API

115:04

qui est incorporé dans langchain pour

115:06

pouvoir faire appel à à à Wikipédia et

115:08

celle une une autre fonction qui va

115:11

faire appel à l'API du coup de doc Doo

115:13

comme ça de

115:14

manière ind dépendante je peux euh

115:17

modifier ces deux fonctions un peu et et

115:19

leur associer des des comportements des

115:22

modes d'opération un peu

115:24

différents donc c'est pour ça que j'ai

115:26

défini F Wikipédia fetch Wikipédia data

115:29

et FCH

115:30

websarch et

115:32

donc j'ai défini une fonction qui va

115:34

être exécutée un peu en asynchrone parce

115:36

que quand vous travaillez avec

115:38

streaml streamlit de base prend le

115:41

processus d'exécution par défaut et pour

115:46

spécifier pour pour spécifier du coup à

115:49

l'environnement dans lequel streaml est

115:51

en train de tourner qui il faut qu'il

115:52

exécute quelque chose en background en

115:54

tâche de fond on définit des fonctions

115:55

asynchrones donc qui va qui vont faire

115:57

appel du coup à toute ma logique que

115:59

j'essaie de définir donc premièrléement

116:02

je je vais prendre le titre qui a été

116:04

généré en déclenchant ma chaîne sur la

116:06

base du mot-cé je vais cherche je vais

116:08

faire ma recherche internet je vais

116:10

faire ma recherche Web et après je vais

116:13

déclencher ma deuxè chaîne en lui

116:15

passant le titre la recherche et la

116:19

recherche internet et et et il va me

116:22

sortir en fait en fait mon script avec

116:24

toutes les avec toutes les les données

116:26

qui ont été générées euh dans cette

116:27

fonction asynchrone

116:29

euh donc là ça c'est juste la fonction

116:31

pour pouvoir l'exécuter en mode

116:33

asynchrone en même temps que streamlate

116:35

mais on peut aussi faire 100

116:38

euh et puis après vous voyez là

116:40

finalement le code de mon streamlit il

116:42

est assez simple je définis mon titre je

116:44

mets ma barre ma barre d'entrée dans

116:46

laquelle l'utilisateur va rentrer en les

116:48

mots clés et puis après je fais appel à

116:51

ma fonction asynchrone comme ça mon

116:53

stream l tourne et en asynchrone en

116:55

masqué j'ai une autre fonction qui va

116:56

tourner et va me retourner un résultat

116:58

et puis après j'affiche mon script et le

117:03

titre choisi et puis après

117:06

optionnellement je peux afficher la

117:07

recherche internet qui a eu lieu et la

117:10

recherche internet qui a eu lieu donc

117:12

voilà vous voyez c'est très simple en

117:13

soi

117:15

euh ça prend voais quelques minutes et

117:18

puis vous avez une logique un peu assez

117:20

complexe qui est faite j'ai un modèle

117:23

j'ai deux chaînes qui vont se qui vont

117:25

s'exécuter les unes à la suite des

117:27

autres et derrière je vais faire appel

117:28

du coup à mon modèle finalement qui

117:30

tourne chez Azure euh euh le DOCA file

117:36

très simple aussi pour ceux qui

117:38

connaissent hop pour pouvoir encapsuler

117:40

tout ça parce que je voulais faire

117:41

tourner du coup mon application dans un

117:42

environnement isolé donc très simplement

117:45

je travaille avec Python 3.8 j'installe

117:48

mes librairies qui se trouve dans mon

117:50

requirement et puis après je lance mon

117:52

application euh derrière j'ai juste créé

117:55

mon le doc compose pour pouvoir le

117:57

lancer euh simplement sans avoir à

118:01

exécuter les commandes que j'ai mis ici

118:03

qui peuvent alors qui se fond parce

118:06

qu'il faut d'abord construire l'image et

118:08

ensuite euh exécuter l'image euh donc

118:11

moi généralement par simplicité ce que

118:13

je veux c'est exécuter une commande et

118:15

d'avoir tout ce qui fonctionne donc

118:16

c'est pour ça que j'ai créé le dek

118:17

compose qui me fait les deux

118:21

direct ok donc maintenant je vais vous

118:23

montrer ce que ça

118:26

donne ce que ça donne directement en

118:30

exécutant

118:32

et il est sur mon deuxè écran et je vais

118:35

le

118:38

[Musique]

118:44

partagerreen

118:47

code ok donc là c'est le RMI que je vous

118:51

montré précédemment et

118:55

là c'est mon application que

119:00

j'avais

119:02

h donc là j'ai déjà j'ai déjà pris

119:05

exécuter un petit peu les choses c'est

119:06

juste pour vous montrer que c'est bon

119:10

donc h je vais construire absolument

119:14

toute mon architecture avec

119:18

le

119:21

donc mon image elle est déjà créée donc

119:22

ça va aller plutôt assez vite et

119:26

normalement je devrais avoir alors

119:28

j'aurais dû partager plutôt l'écran ce

119:31

que je vais faire que je partager tout

119:33

l'écran comme ça vous

119:39

aur

119:43

hop local

119:48

host

119:54

allez et je

120:00

partage

120:05

screen

120:06

voilà donc voilà l'application une fois

120:09

que ça donne donc vous avez j'ai la

120:10

barre de créativité là sur le sur la

120:12

gauche et ici je peux rentrer finalement

120:15

euh n'importe quoi donc je vais rentrer

120:17

long chain

120:20

pour montrer assez simplement ah non

120:23

j'ai mal écrit mais bon tant pis on va

120:25

voir un peu ce que ça ce qui se

120:27

passe

120:29

bon entendu il faut avoir la puissance

120:32

de calcul derrière mais normalement je

120:34

pense que ça

120:36

devrait le faire donc il va faire deux

120:39

choses première recherche sur internet

120:43

et deè recherche wikipéia bon là je me

120:45

suis trompé donc effectivement c'est

120:46

complètement à côté de la

120:48

plaque voilà mais j'ai le titre

120:51

accrocheur j'ai le script vidéo donc

120:54

vous voyez il me donne les voix off avec

120:58

les séquences exactement pour pouvoir

121:00

par exemple coller ça tout ça à une

121:02

vidéo et puis je peux avoir ce qu'il a

121:06

trouvé comme recherche comme sur

121:08

Wikipédia et ce qu'il a trouvé comme

121:11

recherche sur internet donc en recherche

121:13

sur internet il a quand même trouvé

121:14

langchain malgré le fait que je lui ai

121:16

donné un truc un peu en ambié il a quand

121:19

même trouvé long et on on regarde

121:23

alors est la

121:31

plaqueokme trouvé ça

121:34

pourraitélioréé un peu à

121:36

comment comment faire le truc mais par

121:38

la recherche quand

121:48

Mme

122:02

allez

122:06

ok donc exploring the power of longch

122:09

the futurecentr langage learning ça

122:11

paraî plutôt plutôt pas

122:15

mal donc il vous il donne même en fait

122:17

comment est-ce qu'on doit on peut on

122:19

peut construire euh la vidéo YouTube en

122:22

disant un peu les plans qu'on doit faire

122:24

les voix off donc euh challenge après

122:27

bon je vous avoue c'est largement

122:29

améliorable parce que quand on lit un

122:32

petit peu ça reste quand même un petit

122:34

peu général et donc c'est là où vous

122:37

voyez maintenant où va où va entrer en

122:39

ligne de commande le prompt engineering

122:41

typiquement dans mon prompt peut-être

122:43

que j'ai pas été assez je sais pas je

122:45

l'ai pas bien orienté donc euh même s'il

122:48

a même si en terme de format je trouve

122:50

que ça

122:51

va mais en terme de pertinence par

122:54

rapport au ce que je veux lu je lui

122:56

donner soit je lui donne plusieurs mots

122:59

clés soit du coup je dois modifier un

123:02

peu mon prompt pour qu'il puisse pour

123:04

qu'il puisse un peu qu' puisse un

123:08

peu

123:12

donc ok donc c'est une bonne

123:15

introduction un framework qui Fa

123:17

simplifier la création d'application

123:19

ok ça offre une suite d'outil de

123:21

composant et d'interfac donc qui font en

123:23

sorte que l'interaction soit

123:27

facilité

123:29

donc il fait le focus sur la partie

123:39

modèle de la

123:42

plaque ok

123:44

véfier bon il vous donne pas mal

123:47

d'outils et donc onit il a dans

123:49

Wikipédia il a bien trouvé longchain

123:53

summary on peut voir un peu euh les

123:56

information qu'il a et puis en terme de

123:58

recherche Internet on voit qu'il a bien

124:00

trouvé Longchen et puis du coup il est

124:02

capable de l'utiliser donc bien entendu

124:05

le système il est largement largement

124:07

améliorable mais c'était pour vous

124:09

montrer que euh si voilà en en quelques

124:12

minutes vous pouvez avoir quelque chose

124:13

comme ça et donc la barre de créativité

124:15

pareil c'est que je peux modifier lui

124:18

demander de être euh plus ou moins

124:21

créatif donc je vous rappelle je me

124:24

rapprocher vers la gauche mois je vais

124:26

être créatif et plus ver la droite plus

124:28

je vais être créatif c'est pour ça que

124:29

plutôt que de parler de température euh

124:32

j'ai mis

124:34

créativité

124:35

euh donc là est-ce que

124:39

chain ok

124:41

framework c'est bon

124:47

ok

124:49

ok bon pourquoi

124:52

pas bon il là il repart sur son truc bon

124:55

je pense que là il a il essaie de coller

124:57

beaucoup plus aux données qui lui sont

124:59

fournies et donc de de faire des choses

125:03

au moins voilà en terme de prototype ça

125:05

montre juste que voilà vous voyez c'est

125:08

c'est en soi pas très compliqué d'avoir

125:12

quelque chose d'assez similaire alors

125:14

donc du coup sur cette base moi donc moi

125:15

je l'ai fait

125:16

avec avec Wikipédia et Go bien entendu

125:21

il là existe d'autres outils

125:22

d'intégration vous pouvez les combiner

125:24

avec des bases de données

125:26

euh vous pouvez les combiner avec des

125:29

des rapports des CSV et cetera et avoir

125:33

une analyse de CSV qui est fait un petit

125:35

peu comme c'est fait avec l'outil data

125:37

analyse de chat GPT vous pouvez euh vous

125:42

créez vous-même quelque chose un peu

125:44

custom pour faire des analyses avec vos

125:47

données à vous et et de manière plus ou

125:49

moins sécurité sécurisé bien entendu si

125:52

vous avez bien entendu tout bien isolé

125:54

et si vous utilisez typiquement un

125:57

modèle que vous hébergez dans votre

125:59

entreprise donc là j'utilise avec Azure

126:02

open mais vous pouvez l'utiliser avec

126:04

avec Mistral avec une avec des versions

126:06

Open Source

126:08

euh vous pouvez également l'utiliser

126:10

avec un outil open source qui s'appelle

126:11

olama qui permet d'avoir de de faire

126:13

tourner des LLM en local en CPU donc

126:17

sans avoir besoin de s des calculs

126:19

énormes alors les résultats devont

126:22

dépendre de la tâche spécifique sur

126:24

laquelle vous travaillez mais c'est

126:27

possible alors est-ce qu'il y a d'autres

126:30

questions je regarde

126:34

euh analyse alors pour faire une analyse

126:36

d'une entreprise donnée à partir du coup

126:38

d'un Data frame de commentaire client

126:40

par exemple extrait des points faibles

126:42

et des points positifs quel modèle on

126:46

préponise alors toujours en terme de

126:49

d'utilisation des LLM et de prompt

126:50

engineering il faut toujours aller

126:52

simplement de toute façon quand vous

126:53

regardez les les la la méthodologie

126:55

projet de création d'applications qui

126:57

utilisent les LLM euh on arrive enfin

127:01

l'option de F tuner un modèle elle est

127:03

toujours à la toute toute fin parce

127:04

qu'elle va demander beaucoup plus de

127:05

moyens et généralement quand on va

127:07

vouloir F tuner ça veut dire qu'on on

127:09

veut quelque chose d'assez spécifique et

127:11

ce cette spécificité là c'est ce qui

127:13

dégage notre valeur on va généralement

127:16

commencer par euh sélectionner un modèle

127:19

c'est-à-dire euh est-ce qu'on on va

127:21

utiliser un Open Source un petit modèle

127:23

ou on va utiliser un un modèle type gpt4

127:27

pour ça donc va sélectionner le modèle

127:29

qu'on veut utiliser ensuite on va

127:30

toujours commencer par faire du prompt

127:32

engineering pour voir si juste en

127:33

faisant du prompt on peut avoir des

127:35

choses qui sont assez acceptables

127:37

euh une fois que si jamais le prompt

127:40

engineering on on voit que ça commence à

127:42

avoir du potentiel on va encsuler toute

127:44

cette logique avec

127:46

l'antien donc du coup vous allez

127:47

typiquement écrire un prompt qui dit un

127:49

truc similaire à

127:51

euh je sais pas je vais te fournir une

127:53

base de de de documents et euh analyse

127:56

ces documents et fais-moi des

127:57

recommandations sur la base des

127:58

documents que tu vas lire et cetera donc

128:00

l'chain va avoir des fonctions qui vont

128:03

permettre de charger en mémoire

128:05

typiquement des CSV des fichiers Excel

128:07

des PDF et cetera et avoir utiliser le

128:10

le la chaîne comme je vous ai montré

128:13

pour analyser euh pour analyser les

128:16

choses d'ailleurs je peux vous montrer

128:17

alors c'est vrai que ça fait déjà 2h euh

128:20

peut-être qu'il faudra que j'accélère un

128:21

peu euh je vais peut-être vous montrer

128:24

vite fait euh si ceux que ça intéresse

128:27

et cell que ça

128:28

intéresse c'est dans mon ripo que j'ai

128:33

mis

128:35

ça il est là mon ripo et je vais aller

128:40

dans dans dans euh q& of a

128:46

document alors du coup j'aborde pas mal

128:49

de notions ici sur lesquel je passe très

128:51

vite je vous ai parlé de l'embedding sa

128:53

nécessité et

128:54

cetera donc on va généralement quand on

128:56

va vouloir faire de la recherche sur un

128:58

document on va passer par de l'embeding

129:00

et donc on va utiliser un modèle

129:02

d'embedding jusqu'à présent j'utilisis

129:05

un modèle de chat donc qui permet une

129:07

interaction le modèle d'embedding lui je

129:10

peux aussi l'avoir chezure open mais

129:13

vous avez également la même chose bien

129:15

entendu chez les autres donc c'est

129:18

modèle bien spécifique que je vais

129:20

utiliser typiquement céit pour vous

129:22

montrer l'exemple que quand je je

129:23

définis ici mon modèle et quand je lui

129:26

passe une chaîne de caractères il me

129:28

renvoie un vecteur donc c'est une

129:30

représentation vectorielle de cette

129:32

chaîne de caractères et la spécificité

129:34

comme je vous disais c'est que cette

129:35

représentation vectorielle conserve la

129:37

sémantique euh de ce qui est dit dans

129:41

dans ce dans ce

129:43

texte donc ici j'importe un document 1

129:46

csv1 dataframe classique où j'ai nom et

129:48

puis

129:49

description lchain propose une fonction

129:53

CSV loader qui permet de charger un

129:55

fichier

129:56

CSV donc je charge mon fichier CSV et du

130:00

coup je peux naviguer via cette fonction

130:02

dans ce document

130:04

là derrière je vais me définir un un

130:08

objet de mémoire mais qui va se

130:11

s'inspirer qui va se baser sur un

130:14

document donc il va se baser sur mon mon

130:17

le document que j'ai préchargeur mémoire

130:19

donc je définis c'est un objet de

130:21

mémoire un peu particulier il il en

130:22

existe d'autres hein mais celui-là va

130:25

l'utiliser donc vous voyez je lui

130:27

spécifie le document les documents qui

130:30

sont préchargés ici et je lui spécifie

130:33

également le modèle d'embedding parce

130:35

que du coup il va retranscrire tout le

130:38

document finalement en équivalent

130:39

numérique et il va le faire en mémoire

130:41

ça c'est on pourrait très bien ici

130:44

utiliser un une Vect un vector store

130:47

c'est-à-dire une base donné qui va

130:49

stocker des vecteurs d'eding donc

130:51

ilaliste plein vous pouvez l'utiliser

130:53

vous pouvez stocker des vecteurs d'eding

130:55

dans du relationnel vous pouvez

130:56

également le stocker dans du non

130:58

relationnel ça va dépendre de ce que

131:00

enfin de la base de données à laquelle

131:02

vous avez accès il y a des bases de

131:03

données comme P code qui sont assez

131:05

connus pour ça qui sont qui nativement

131:07

ont des outils pour ça vous pouvez

131:09

également utiliser redis qui est aussi

131:11

un cas d'utilisation donc voilà donc ici

131:14

je le charge en mémoire donc en mémoire

131:16

RAM pour pouvoir euh travailler

131:19

directement avec ça donc typiquement

131:20

c'est le cas d'utilisation c'est je ne

131:22

veux pas utiliser une base de données et

131:24

j'ai une base documentaire qui est assez

131:26

petite donc plutôt que de la charger

131:28

dans une base de données je préfère à

131:29

chaque fois la mettre en mémoire pour

131:31

pouvoir

131:32

l'utiliser donc j'ai défini un peu donc

131:35

ça ça va me servir un peu de base

131:36

documentaire et donc là je vais définir

131:38

un retriever donc un objet qui va se qui

131:41

va permettre d'aller euh comparer les

131:43

embedding pour choisir les

131:45

représentations numériques qui sont les

131:47

plus pertinentes avec ma la question et

131:49

choisir les documents associés pour

131:51

pouvoir les les passer au LLM c'est le

131:53

but du retriever je crée une chaîne donc

131:56

vous voyez j'ai une chaîne retrieval q&

131:59

toute simple euh elle est faite pour

132:02

prendre un LLM et prendre un retriever

132:04

donc un objet qui encsule des documents

132:06

et des embedding et je peux lui poser

132:09

des questions directement donc vous

132:11

voyez je lui demande de lister euh tous

132:13

les shirts du coup qui ont de la

132:15

protection solaire dessus et je lui

132:17

spécifie le format et je passe ça

132:20

directement à ma chaîne donc ma chaîne

132:22

qu'est-ce qu'elle va faire elle va aller

132:24

trouver les documents associé via le

132:27

Retriever et elle va elle va le passer

132:30

cedocument à mon l à mon LLM et mon LLM

132:33

va me répondre finalement en terme de

132:35

synthèse donc quand j'exécute ma chaîne

132:38

euh pareil vous avez ça parce que j'ai

132:40

mis verbos = true donc c'est pour voir

132:42

ce qui se passe et donc là j'ai le le

132:46

résultat il me dit quand c'est quand il

132:47

est entré dans la chaîne et quand il a

132:49

fini avec le résultat et donc derrière

132:51

je peux le mettre en forme avec la

132:54

fonction macdown euh qui me fait qui me

132:56

donne du coup le récapitulatif un peu de

133:00

euh de de ce qu'il a vu dans les données

133:03

avec un

133:04

résumé et derrière vous pouvez avoir

133:07

accès euh directement euh sans avoir à

133:10

utiliser un LLM vous pouvez également

133:13

avoir accès au document en luiê au

133:15

fragment du document en lui-même donc

133:17

vous voyez a exécuté dessus un la la

133:19

méthode similarity search euh avec une

133:22

chaîne de caractère sans avoir avoir

133:24

appelé un un LM et cet objet là cet

133:27

objet qui contient à la fois les

133:29

invembeding et les fragments de

133:30

documents est capable par en en

133:32

calculant les distances entre les

133:34

vecteurs d'identifier euh les fragments

133:37

qui sont les plus pertinents par rapport

133:38

à ma réponse donc c'est ce qui est fait

133:40

automatiquement par euh cette

133:43

chaîne-ci par la par la RAL qn c'est ce

133:46

qui est fait automatiquement derrière

133:47

mais c'était pour montrer que quand on

133:50

va utiliser des documents on va pas

133:52

utiliser le LLM pour pouvoir faire des

133:54

synthèses mais on peut également faire

133:56

de la simple euh recherche de similarité

133:58

donc des des mots des fragments

134:00

similaires à une recherche pour avoir

134:02

les résultats

134:04

associ donc c'est un peu simplement vous

134:07

pouvez faire un truc comme ça qui euh

134:09

euh qui vous donne euh qui permet de

134:11

d'interagir ou de raisonner avec un

134:13

document à l'intérieur du coup euh

134:16

typiquement là je suis dans un jpitre

134:18

mais j'aurais pu créer également une

134:19

application Stream qui va permettre à un

134:21

utilisateur de charger le CSV et sur la

134:24

base du CSV qu'il est chargé de lui

134:26

poser des questions donc c'est recréer

134:29

tout simplement un petit peu ce qui est

134:32

fait dans dans l'objet dans le l'outil

134:36

data analyse

134:39

ok donc com le temps commence à passer

134:42

donc je

134:44

vais regarder s'il y a d'autres

134:46

questions

134:49

et je vais repartager juste mes slides

134:51

pour pouvoir conclure tout ça

134:59

tranquillement

135:03

donc

135:05

conclusion simple du coup lchain c'est

135:09

un outil c'est un

135:11

framework utiliser en Python ou en

135:14

d'autres langues pour pouvoir simplifier

135:16

un peu le développement l'application

135:18

euh donc ça il va offrir du coup une

135:20

interface euh standardisée pour pouvoir

135:23

réaliser des intégrations avec des

135:25

outils externes assez simplement et avec

135:27

des outils qui vont permettre le

135:28

débugage pour pouvoir voir un peu ce qui

135:30

se passe

135:31

euh

135:33

donc donc bien qu'il donc bien qu'il

135:36

faut prendre en compte du coup les du

135:37

coup les exigences en termees de

135:38

ressources parce que ça utilise les LLM

135:40

derrière et que souvent euh pour les les

135:43

processus qui sont notamment un peu

135:45

complexes vous avez besoin de de

135:46

puissance de calculs

135:48

[Musique]

135:50

euh la la l'utilisation de longchain va

135:52

permettre finalement de simplifier un

135:54

petit peu l'interaction qui peut y avoir

135:56

entre tout ça al c'est un peu le

135:58

vraiment le but euh de but de l'ch et

136:02

euh normalement si j'y arrive

136:05

hop je vais vous mettre dans le chat euh

136:09

du coup j'ai trouvé c c cheat cheat qui

136:12

est super bien faite et qui est et qui

136:15

est et qui est accessible

136:18

hop voilà euh qui vous donne un peu pas

136:22

mal de de fonctions et d'outils euh qui

136:25

sont dans l'écosystème longchain donc si

136:28

vous voulez avoir vraiment une sorte de

136:29

vision un peu globale de tout ce dont

136:31

j'ai parlé aujourd'hui avec plus

136:32

d'outils bien entendu parce qu'il y a

136:34

pas mal de choses à l'intérieur vous

136:35

avez les principaux donc vous avez la

136:37

gestion de mémoire vous avez les chaînes

136:40

quelques chaînes principales euh vous

136:42

avez les promp template qui permettent

136:44

un peu de faire les prompt euh vous avez

136:46

les les les documents de load ur qui

136:48

permet de charger des documents vous

136:49

pouvez voir que vous avez vous pouvez

136:51

charger des CSV des PDF et tout un tas

136:54

de formats assez divers et puis vous

136:56

avez des la possibilité de vous

136:58

connecter à des bases de données euh

137:00

comme vextor Store pour pouvoir

137:02

enregistrer des des des vecteurs tout

137:05

simplement d' bedding pour pouvoir faire

137:06

de la ce qu'on app le rag donc la

137:08

retrieval ament generation euh assez

137:11

assez simplement et puis euh euh bien

137:14

entendu donc sur le sur le sur le sur

137:18

l'image que vous vous devez enfin je

137:19

vous ai mis le lien donc vous l'aurez en

137:21

cran euh chez vous euh vous voyez que

137:24

pour pouvoir euh la partie quantization

137:26

euh c'est typique et la partie fine

137:28

tuning vous voyez ce n'est pas ce n'est

137:31

pas l'ch qui est utilisé mais c'est les

137:33

fonctions de hugging face donc les

137:35

fonctions de hugging face pour pouvoir

137:37

euh la qutisation va permettre de

137:40

réduire la taille des modèles donc

137:41

typiquement euh euh quand généralement

137:44

quand vous finissez d'entraîner un

137:45

modèle il peut avoir un certain une

137:46

certaine taille et donc donc vous allez

137:48

un peu la contation va permettre de de

137:50

réduire un peu la taille du modèle sans

137:52

perdre beaucoup en terme de performance

137:55

et vous avez les fonctions de F tuning

137:56

vous avez tout ça qui sont sont proposés

137:59

du coup par la librie huging face qui

138:01

permet de de F tuner et de réduire la

138:03

taille des modèles de manière assez

138:05

simple donc voilà donc c'est pour ça que

138:07

voilà généralement vous allez travailler

138:09

avec Open hing face et long ch un petit

138:12

peu en parallèle pour pouvoir développer

138:15

des choses

138:18

ok donc

138:19

voilà c'est un peu ce dont je voulais

138:21

vous parler alors je pense que j'ai

138:22

débordé j'ai un peu abusé mais peut-être

138:25

si vous avez des questions là comme ça

138:27

je peux en prendre avant de se séparer

138:30

alors quelle est la différence entre

138:32

longchain et Lama

138:36

index alors j'ai pas encore approfondi

138:39

vraiment Lama index donc je Seris pas en

138:41

mesure de vous dire exactement mais

138:43

juste si je pars juste sur le nom j'ai

138:46

plutôt l'impression que euh Lama index

138:50

généralement quand vous voyez index dans

138:52

le nom euh ça fait juste typiquement

138:55

l'anchîn a également des index c'est

138:56

tout simplement des objets qui vont

138:57

permettre de se connecter euh à des

139:00

outils euh typiquement à des bases de

139:02

données et pouvoir récupérer le truc

139:04

mais attendez je vais creuser hein euh

139:07

j'ai pas encore vraiment creusé la main

139:09

index

139:12

et alors je vois que c'est un ok

139:15

framework qui Connect euh à des sources

139:18

de données qui permett de connecter des

139:20

LLM à des sources de données euh avec

139:22

pour différents use case donc je pense

139:24

que la main index a des à des euh à des

139:27

points de de similitude avec longchain

139:30

euh mais à mon avis longchin a peut-être

139:34

beaucoup plus d'outils euh parce que

139:35

longchain commence à avoir une

139:37

communauté assez assez assez énorme et

139:40

il y a déjà de pas mal de plateformes

139:43

qui utilisent longchainîn pour pouvoir

139:45

créer leurs propres service donc je

139:47

pense que c'est un terme de de de

139:49

complémentarité des outils il y en a pas

139:51

mal

139:54

ok alors normalement je pense que

139:56

j'avais répondu à toutes les questions

140:00

euh donc pour le notebook euh je vais le

140:04

le cleaner un petit peu euh ne mettre

140:07

que typiquement je vais vous mettre

140:08

l'application que j'ai faite avec par

140:10

exemple les notebook et enlever un petit

140:11

peu tous les le le des ordres qui s'y

140:15

trouvent euh comme ça vous pouvez avoir

140:16

quelque chose de propre et euh je

140:19

mettrai aussi à disposition le lien des

140:21

slides pour que vous puissiez

140:22

éventuellement si ça vous intéresse bien

140:24

entendu euh y avoir accès et donc euh

140:29

donc merci à vous pour ceux qui ont sont

140:31

restés après 2h 200 de je m'attendais

140:34

pas à faire autant de temps je suis

140:35

désolé si jamais j'ai un petit peu

140:36

débordé en tout cas c'est tellement

140:38

passionnant que voilà on peut dire pas

140:39

mal beaucoup de choses là-dessus et

140:41

j'espère que vous avez appris des choses

140:43

et que bah du coup je vous dis à bientôt

140:45

lors peut-être d'une autre formation

140:47

tion et euh voilà continuer de d'être

140:50

curieux voilà c'est le mot de la

140:52

fin merci à vous et puis euh et puis

140:56

bonne

141:10

soirée ok je laisse le dans le je laisse

141:13

le notebook je laisse les notebooks

141:15

comme ça vous les avez et euh et vous

141:18

pouvez euh et vous pouvez

141:20

creuser c'est vrai que je vous ai même

141:23

pas montré l'Ance sm mais ce sera une

141:24

prochaine fois sera une

141:46

prochaine

141:49

ok ok bon merci à tous et à une

141:57

prochaine

UNLOCK MORE

Sign up free to access premium features

INTERACTIVE VIEWER

Watch the video with synced subtitles, adjustable overlay, and full playback control.

SIGN UP FREE TO UNLOCK

AI SUMMARY

Get an instant AI-generated summary of the video content, key points, and takeaways.

SIGN UP FREE TO UNLOCK

TRANSLATE

Translate the transcript to 100+ languages with one click. Download in any format.

SIGN UP FREE TO UNLOCK

MIND MAP

Visualize the transcript as an interactive mind map. Understand structure at a glance.

SIGN UP FREE TO UNLOCK

CHAT WITH TRANSCRIPT

Ask questions about the video content. Get answers powered by AI directly from the transcript.

SIGN UP FREE TO UNLOCK

GET MORE FROM YOUR TRANSCRIPTS

Sign up for free and unlock interactive viewer, AI summaries, translations, mind maps, and more. No credit card required.