SlideShare une entreprise Scribd logo
1  sur  99
Télécharger pour lire hors ligne
From Clicks to
Conversations:
designing LLM-
powered apps
HELLO
Marie-Alice Blete
Software Architect
& Data engineer at Labs
Steve Jobs pose avec l’ordinateur Lisa en 1983.
Ted Thai—Time & Life Pictures / Getty Images
Les LLM sont la deuxième révolution dans l’interaction
homme/machine
La souris vs Large Language Models
Mon chat
mange dort joue … vole explose
LLM
Mon chat dort
dans sur toute … vite loin
LLM
Mon chat dort dans
le la mon … dans sur
LLM
Principe sous jacent LLM:
génération du prochain mot probable
Les LLM ne sont pas déterministes
5 concepts pour commencer :
Modèles
disponibles via une API
à déployer soi-même
Plusieurs modèles avec des
capacités et des prix différents
gpt-4
gpt3.5-turbo
…
5 concepts pour commencer :
Modèles
Prompt & completion
Contexte
prompt completion
OpenAI API
prompt completion
OpenAI API
- Hello World - Hello, how can I
help you ?
prompt completion
OpenAI API
- Qu’est-ce que Devoxx France? - Devoxx France est […]
prompt completion
OpenAI API
- Où se déroule cet évènement?
prompt completion
OpenAI API
- Qu’est-ce que Devoxx France?
- Devoxx France est[…]
- Où se déroule cet évènement?
-Devoxx France a lieu […]
prompt completion
OpenAI API
- Qu’est-ce que Devoxx France?
- Devoxx France est[…]
- Où se déroule cet évènement?
-Devoxx France a lieu […]
contexte
5 concepts pour commencer :
Modèles
Prompt & completion
Contexte
Tokens
Worldline is a great company to work for.
World line is a great company to work for .
Coût avec GPT-3.5 Turbo ($0.0010 / 1K tokens) = 0,000010 $
import openai
# Call the openai ChatCompletion endpoint
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": "Hello World!"}],
)
print(response)
{
"id": "chatcmpl-7r5iev6S80YgkS1rjOegTVf7HP4qU",
"object": "chat.completion",
"created": 1692887724,
"model": "gpt-35-turbo",
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": "Hello! How can I assist you today?"
}
}
],
"usage": {
"completion_tokens": 27,
"prompt_tokens": 177,
"total_tokens": 204
}
}
Énoncé du problème
vehicle registration system
register a new vehicle
update a registration
delete a registration
vehicle registration system
de clics …
vehicle registration system
model
year
owner
confirm
de clics …
vehicle registration system
assistant: Hello, how can I help you?
you:
… à une conversation
Première solution
Deuxième solution
Troisième solution
Première solution
Deuxième solution
Troisième solution
Décrire l’ensemble de
l’application dans un seul
prompt
1. Donner le contexte, définition du
comportement global
2. Définir le format de sortie
3. Donner des instructions précises
4. Prompt de départ
1. Donner le contexte, définition du
comportement global
You are an assistant for a system that manages
vehicle registrations.
2. Définir le format de sortie
Différencier 2 types de sortie :
pour l’utilisateur:
“Hello, I am an assistant […]”
“Give me more information […]”
pour l’application:
“execute register_vehicle([…])”
user input
LLM
ai output
output
function
{
"OUTPUT": "an output",
"FUNCTION": "a function to call",
"ARGS": "the arguments for the function call"
}
All your answers must be a json with three fields,
OUTPUT, FUNCTION and ARGS. Example:
{
"OUTPUT": "an output",
"FUNCTION": "a function to call",
"ARGS": "the arguments for the function call"
}
Outputs will be outputted to the user.
Possible functions are CREATE_REGISTRATION,
UPDATE_REGISTRATION, DELETE_REGISTRATION
ARGS can be model, owner_name, year, registration_number
3. Donner des instructions précises
The user can ask for a new registration, update
information on an existing registration, delete an
registration.
To create a new registration, the user must provide a
model, the year it was created, and the owner's name.
To update an registration, the user must provide the
registration number, and the new information.
[…]
4. Prompt de départ
Do not answer anything else than a json with the
two fields. The output must be parsable by
json.loads
Your first output will be OUTPUT: a welcoming
question
{"role": "user", "content": "You are an assistant …"}
{"role": "assistant", "content": "{OUTPUT: Hello, …}"}
{"role": "user", "content": "Hi, I need to …"}
{"role": "assistant", "content": "{OUTPUT: Sure, …} "}
{"role": "user", "content": "…"}
{"role": "assistant",
"content": "{FUNCTION: CREATE_REGISTRATION, ARGS: … }
DEMO !
Première solution
Deuxième solution
Troisième solution
xPas scalable
xConfiance ?
xMaintenance difficile
?
besoin de plus de contrôle
discussion exécuter
action
DEPART
instructions
discussion execute
action
instructions
DEPART
Idée :
une approche de type machine à états
États : une étape dans le processus
Fonction de transition : un appel au LLM avec une prompt
spécifique à l’état
δ é𝑡𝑎𝑡, 𝑝𝑟𝑜𝑚𝑝𝑡, 𝑖𝑛𝑝𝑢𝑡 𝑢𝑡𝑖𝑙𝑖𝑠𝑎𝑡𝑒𝑢𝑟 → é𝑡𝑎𝑡, 𝑜𝑢𝑡𝑝𝑢𝑡 𝐿𝐿𝑀
DEPART
création confirmation
exécuter
action
modification
suppression
confirmation
exécuter
action
confirmation
exécuter
action
Prompt de départ
You are an assistant for a system that manages
vehicle registrations.
All your answers must be a json with two fields,
STATE and OUTPUT. Example:
{"STATE" : "a state", "OUTPUT" : "an output"}
…
Prompts de transitions
"NEW_REGISTRATION": "If you have the brand of the
car, the year it was made, and the owners name answer
STATE: VALID_NEW_REGISTRATION, OUTPUT: ask for
confirmation with all the users input. Else, answer
STATE: NEW_REGISTRATION, OUTPUT: ask for the missing
information."
DEMO !
Avantages de cette approche
1. Introduire un flux plus complexe avec des règles de validation
Le LLM utilisé pour ce qu’il fait de mieux : l’interface
homme/ordinateur
L’intelligence : par code
exécuter
règle
Avantages de cette approche
2. Fonctionne avec des modèles moins puissants
Avantages de cette approche
3. Plus facile à valider
« unit tests » au lieu d’un scénario complet
Première solution
Deuxième solution
Troisième solution
?
xPeut devenir très
complexe très
rapidement
xN’utilise pas la
toute la puissance
des LLMs
agents
Agent ?
objectifs
capacités
actions
environment
observations
LangChain is a framework for developing applications
powered by language models. It enables applications
that are:
• Data-aware: connect a language model to other
sources of data
• Agentic: allow a language model to interact with its
environment
LangChain is a framework for developing applications
powered by language models. It enables applications
that are:
• Data-aware: connect a language model to other
sources of data
• Agentic: allow a language model to interact with its
environment
Capacités
Objectifs
Discuter avec l’humain
Accès à certains outils liés à
l’immatriculation des
véhicules
Être assistant d’un système de
gestion des immatriculations de
véhicules.
Avoir une conversation avec un
humain, en répondant du mieux
possible
Tool.from_function(
func=create_registration_tool,
name="CREATE_REGISTRATION",
description="""Use to create a registration.
Required arguments: model, year, owner_name. Before use,
output all arguments to the user and ask for confirmation.
All arguments are mandatory. Outputs a registration
number. The output needs to be used to answer the
question.""",
)
DEMO !
Résultats de ces
expériences?
« une seule prompt» « machine à états» « agents»
simple à mettre en
place
peut avoir besoin d’un
modèle puissant
maintenance difficile
pour use cases simples
fonctionne avec des
modèles moins
puissants
meilleur contrôle
peut devenir complexe
pour petits modèles
utilise des agents : très
polyvalent et puissant
s’appuie sur un
framework
a besoin d’un modèle
puissant
pour les cas
d’utilisation complexes
avec un gros budget
https://github.com/malywut/clicks2conversations
problèmes quand on
passe d’un POC à un
projet réel
5 5
1
problème n°
Prompts
1
problème n°
Managez vos prompts
Mesurez, evaluez
blog.worldline.tech/2024/01/12/metric-driven-rag-development.html
1
problème n°
2
problème n°
… alors qu’elle comprend une composante non déterministe ?
Comment puis-je prouver que ma
solution fonctionne à 100 % ?
2
problème n°
Ajouter de tests et gestion
des prompts
Ajouter des garde-fous
Ajouter des boucles de
contrôle
La preuve que « ça devrait
marcher »
(la plupart du temps)
Boucles de contrôle
Assistant Verifier
You are an assistant, your task is… You are an inspector, your task is…
“Chain of verification”
SequentialChain
python.langchain.com/docs/modules/chains/foundational/sequential_chains
2
problème n°
Gérez les erreurs avec
élégance
Ajouter un « retry »
Ajouter une alternative
Mais si ce n’est pas le
cas, il existe une
solution de repli
microsoft.com/en-us/research/project/guidelines-for-human-ai-interaction/
2
problème n°
# Try 5 times max to generate an output with the model that is correct
json
for i in range(5):
ai_output = utils.generate(ai_current_conversation)
if validateJSON(ai_output):
break
Retry
2
issue n°
Tracez, monitorez, évaluez
Recueillez le feedback utilisateurs
Amélioration continue
github.com/openai/evals
langfuse.com
2
problème n°
3
problème n°
Prompt injection
3
problème n°
3
problème n°
gandalf.lakera.ai
3
problème n°
Universal and Transferable Adversarial Attacks
on Aligned Language Models
Andy Zou et al. Jul 2023
https://arxiv.org/pdf/2307.15043.pdf
3
problème n°
Prompt injection
risques
révéler les
composants internes
changer le
comportement
3
problème n°
user input
LLM
ai output
output
function
checks
3
problème n°
Valider le format/la longueur
Analyser l’intention
Surveiller et auditer
https://platform.openai.com/docs/guides/moderation
https://github.com/guardrails-ai/guardrails
https://github.com/NVIDIA/NeMo-Guardrails
3
problème n°
4
problème n°
Et le coût ?
Limitez la taille de la conversation
Résumez la conversation
Utilisez un cache
4
problème n°
Et le coût ?
équilibre
4
problème n°
5
problème n°
l’envoi de données personnelles à OpenAI
Nous aurions dû commencer par ...
5
problème n°
Conclusion
Effet « Wahou » facile, mais difficile d’avoir un projet
prêt pour la prod
Un paysage en évolution rapide
Toujours en phase bac à sable
…
Vers une revolution dans nos applications ?
clics et conversations, souris et LLM :
deux outils
à nous d’en faire quelque chose d’intelligent !
DEVOXX FRANCE 2024
THANKS
FOR WATCHING
Don’t be a stranger!
Follow & get in touch
blog.worldline.tech
@WorldlineTech
Follow our tech team:
linkedin.com/in/mblete
Follow me:
@mariealice_b
mariealiceblete.com
appswithgpt.com
github.com/malywut

Contenu connexe

Similaire à Du Clic à la Conversation : remplaçons boutons et formulaires par un LLM !

Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
Marc Bojoly
 
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Publicis Sapient Engineering
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1
DIALLO Boubacar
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
cyrilgandon
 
Agile Tour Clermont Ferrand - Michel Lejeune - La contractualisation agile
Agile Tour Clermont Ferrand - Michel Lejeune - La contractualisation agileAgile Tour Clermont Ferrand - Michel Lejeune - La contractualisation agile
Agile Tour Clermont Ferrand - Michel Lejeune - La contractualisation agile
Pig Acube
 

Similaire à Du Clic à la Conversation : remplaçons boutons et formulaires par un LLM ! (20)

Perf university
Perf universityPerf university
Perf university
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
Mesure & Analyse: Mesurer les Exigences
Mesure & Analyse: Mesurer les ExigencesMesure & Analyse: Mesurer les Exigences
Mesure & Analyse: Mesurer les Exigences
 
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
Scrum Day 2014 - Êtes-vous prêts pour le modèle Spotify ?
 
Radical Quality From Toyota to Tech - Devoxx France.pptx
Radical Quality From Toyota to Tech - Devoxx France.pptxRadical Quality From Toyota to Tech - Devoxx France.pptx
Radical Quality From Toyota to Tech - Devoxx France.pptx
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1
 
Method XP
Method XP Method XP
Method XP
 
Comment Challenger les ApexDebugLog et comment améliorer leur analyse
Comment Challenger les ApexDebugLog et comment améliorer leur analyseComment Challenger les ApexDebugLog et comment améliorer leur analyse
Comment Challenger les ApexDebugLog et comment améliorer leur analyse
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En Java
 
Definitiondesbesoinsuml
DefinitiondesbesoinsumlDefinitiondesbesoinsuml
Definitiondesbesoinsuml
 
Qualité logicielle
Qualité logicielleQualité logicielle
Qualité logicielle
 
Drools et les moteurs de règles
Drools et les moteurs de règlesDrools et les moteurs de règles
Drools et les moteurs de règles
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
L’informatique efficience
L’informatique efficienceL’informatique efficience
L’informatique efficience
 
Paris Chaos Engineering Meetup #6
Paris Chaos Engineering Meetup #6Paris Chaos Engineering Meetup #6
Paris Chaos Engineering Meetup #6
 
Gestion d"une société de transit avec openerp
Gestion d"une société de transit avec openerpGestion d"une société de transit avec openerp
Gestion d"une société de transit avec openerp
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
Agile Tour Clermont Ferrand - Michel Lejeune - La contractualisation agile
Agile Tour Clermont Ferrand - Michel Lejeune - La contractualisation agileAgile Tour Clermont Ferrand - Michel Lejeune - La contractualisation agile
Agile Tour Clermont Ferrand - Michel Lejeune - La contractualisation agile
 
Complexité et systèmes opérables - Fred Hébert
Complexité et systèmes opérables - Fred HébertComplexité et systèmes opérables - Fred Hébert
Complexité et systèmes opérables - Fred Hébert
 

Du Clic à la Conversation : remplaçons boutons et formulaires par un LLM !