IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Construisez un chatbot sur vos propres données en 1 heure avec Azure SQL, Langchain et Chainlit
Par Davide Mauri

Le , par Jade Emy

105PARTAGES

9  0 
Construisez un chatbot sur vos propres données grâce à des bibliothèques comme LangChain, ChainLit et Azure SQL. Davide Mauri présente une méthode pour construire un chatbot entièrement fonctionnel en seulement 1 heure avec une architecture finale simple et élégante.

Les chatbots sont à la mode ces derniers temps, et vous pouvez désormais les créer facilement en téléchargeant des solutions comme OpenWebUI, en les connectant à Ollama ou à n'importe quelle API compatible avec OpenAI, en choisissant votre modèle de langage favori, puis en les exécutant. Cela ne prend que quelques minutes et c'est fait.

Mais construire des chatbots n'est pas suffisant, vous voulez très probablement construire un chatbot sur vos propres données. L'écosystème logiciel autour de l'IA et du chatbot se développe chaque jour et permet de créer un chatbot qui offre à vos utilisateurs de discuter avec des données stockées dans votre base de données.

Grâce à des bibliothèques comme LangChain, ChainLit et, bien sûr, Azure SQL, Davide Mauri, Principal Product Manager d'Azure SQL, présente comment construire un chatbot sur vos propres données.

Pour commencer, ces trois éléments sont la seule chose dont vous avez besoin :

  • Langchain : un cadre pour le développement d'applications basées sur de grands modèles de langage (LLM).
  • Chainlit : un framework Python asynchrone open-source qui permet aux développeurs de construire des applications évolutives d'IA conversationnelle ou agentique.
  • Azure SQL : ajoute la prise en charge des vecteurs en tant que fonctionnalité principale du moteur.


Vous pouvez éventuellement utiliser Azure Functions pour que les données ajoutées ou mises à jour dans la base de données soient automatiquement traitées pour être utilisées avec des modèles d'IA, si vous aimez une approche de type "change-feed". L'architecture finale, simple et élégante, ressemblera à ce qui suit :


Partir de la base de données

Il suffirait de moins d'une heure pour commencer à avoir un chatbot entièrement fonctionnel sur vos propres données. Pour l'aspect des données, commencer par la fonctionnalité qui rend cette capacité possible : le type vector nouvellement introduit et la fonction vector_distance associée :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
declare @qv vector(1536)
exec web.get_embedding 'RAG on your own data', @qv output
 
select top(5)
    se.id as session_id, 
    vector_distance('cosine', se.[embeddings], @qv) as distance
from 
    web.sessions se
order by
    distance
Comme vous pouvez le voir, le code est simple. Il transforme le texte fourni en un embedding en appelant le point de terminaison OpenAI, via la procédure stockée get_embedding, puis utilise le vecteur retourné pour trouver tous les vecteurs similaires dans le tableau d'échantillons. Dans ce cas, c'est un tableau contenant des données relatives aux sessions de conférences.

Intégration avec LangChain

L'étape suivante consiste à trouver comment intégrer ce code dans LangChain, qui orchestre le modèle RAG. Grâce au LCEL (Langchain Expression Language), il est assez facile de définir l'invite et de l'envoyer au LLM avec des informations contextuelles supplémentaires extraites de la base de données :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
prompt = ChatPromptTemplate.from_messages([
(
    "ai", 
    """ 
    You are a system assistant who helps users find the right session to watch from the conference, 
    based off the sessions that are provided to you. Sessions will be provided in an assistant message 
    in the format of `title|abstract|speakers|start-time|end-time`. You can use only the provided session 
    list to help you answer the user's question. If the user ask a question that is not related to the 
    provided sessions, you can respond with a message that you can't help with that question. 
    Your aswer must have the session title, a very short summary of the abstract, the speakers, 
    the start time, and the end time. 
    """
), 
( 
    "human", 
    """ 
    The sessions available at the conference are the following: 
    {sessions} 
    """ 
), 
( 
    "human", 
    "{question}" 
) 
])
 
# Use an agent retriever to get similar sessions
retriever = RunnableLambda(get_similar_sessions, name="GetSimilarSessions").bind() 
 
runnable = {"sessions": retriever, "question": RunnablePassthrough()} | prompt | openai | StrOutputParser()
La ligne où runnable est défini est l'endroit où vous pouvez voir LCEL en action. Il s'assure que les espaces réservés comme {sessions} sont remplacés par des données réelles avant d'être envoyés au LLM (OpenAI dans l'exemple). Des données réelles qui sont récupérées en utilisant le retriever défini, qui à son tour appelle la fonction get_similar_session qui n'est rien d'autre qu'une enveloppe autour du code SQL décrit précédemment.

En quelques lignes de code, l'invite a été défini, ainsi que l'outil utilisé par LangChain pour fournir des données contextuelles supplémentaires au LLM et la manière d'injecter dans l'invite ces données contextuelles supplémentaires. Pour le code de get_similar_session, il a utilisé une procédure stockée au lieu d'un SQL ad-hoc car cela rend la solution plus propre, plus sûre et plus facile à maintenir.

Ajouter ChainLit

La dernière pièce manquante est l'intégration du travail effectué avec Chainlit, qui a un support natif pour LangChain, via la fonction LangchainCallbackHandler. En gros, l'intégration se résume à deux points :

  • Initialiser la chaîne Langchain et la rendre utilisable avant le début du chat
  • Lorsque les utilisateurs envoient des messages, récupérer leur contenu et le transmettre à la chaîne Langchain pour traitement, et renvoyer le résultat.


Cela signifie que l'intégration se fait dans deux méthodes seulement : on_chat_start et on_message. C'est simple et direct.

Une fois que c'est fait, le projet est terminé ! Exécutez le script Python et vous serez prêt à partir ! Bien sûr, ce n'est qu'un point de départ. Vous voudrez sûrement construire une chaîne LCEL plus complète et plus complexe pour gérer les demandes et les situations les plus diverses, et la limite n'est plus que votre imagination !



Source : Davide Mauri, Principal Product Manager, Microsoft

Et vous ?

Pensez-vous que cette présentation est crédible ou pertinente ?
Quel est votre avis sur le sujet ?

Voir aussi :

Cloud Azure, Office 365, cybersécurité, partenariats, support, certifications, formations, bootcamps, comment Microsoft annonce l'intelligence artificielle à toutes les sauces

OpenAI publie un outil de réglage fin pour personnaliser GPT-4o avec des ensembles de données personnalisés, afin d'obtenir des performances plus élevées à moindre coût pour les cas d'utilisation spécifiques

Hugging Face lance un fabricant d'assistants IA open source pour rivaliser avec les GPT personnalisés d'OpenAI. L'outil est gratuit et permet de choisir parmi plusieurs LLM open source

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Pierre Louis Chevalier
Expert éminent sénior https://www.developpez.com
Le 03/10/2024 à 12:21
Oui si ta machine est adaptée tu peux télécharger et installer un LLM open source léger (voir la rubrique IA ) et donc héberger ta propre IA sans être dépendant d'un service cloud. Beaucoup de chercheurs font ça.

6 Ways For Running A Local LLM

2  0 
Avatar de Jules34
Membre émérite https://www.developpez.com
Le 02/10/2024 à 11:39
Un grand merci !!!

Je vais enfin pouvoir faire mon chatbot dopé aux archives google books. Un chatbot philosophe qui n'aurait jamais connu Descartes, mais qui serait boosté aux philosophes humanistes Italiens et Français qui haïssait le rationnalisme, mais que l'histoire à oublié. Un rêve de gosse qui se réalise !!

Bon il va déjà falloir dans un premier temps maitriser le framework LangChain, ça à l'air simple comme ça mais mon petit doigt me dit que ça va pas se faire en un dimanche ?

Est-il possible de faire tout ça avec les comptes gratuit Oracle ?
0  0 
Avatar de cd090580
Membre averti https://www.developpez.com
Le 02/10/2024 à 19:08
Vu que c'est pour faire un chatbot avec ses propres données,
existe-t-il un moyen de se passer du cloud Azure et d'héberger soi-même la database histoire de bien garder les données chez soi et ne pas toujours être dépendant de services cloud ?????
0  0 
Avatar de drcd
Membre averti https://www.developpez.com
Le 05/10/2024 à 22:50
Pour le coup, travaillant tous les jours sur azure et aws, je déconseille d'utiliser azure pour faire ça. C'est plus cher qu'aws et pas intuitif du tout.
0  0