From 5c5581e2719ee107469c46bdf709d98c70755097 Mon Sep 17 00:00:00 2001 From: alban Date: Thu, 4 Jan 2024 22:17:51 +0100 Subject: [PATCH] feat: make a build examples db script --- rag_build_db_examples.py | 48 ++++++++++++++++++++++++++++++++++++++++ rag_use_db.py | 34 ---------------------------- 2 files changed, 48 insertions(+), 34 deletions(-) create mode 100644 rag_build_db_examples.py diff --git a/rag_build_db_examples.py b/rag_build_db_examples.py new file mode 100644 index 0000000..248e7c8 --- /dev/null +++ b/rag_build_db_examples.py @@ -0,0 +1,48 @@ +# Set env var OPENAI_API_KEY or load from a .env file +from langchain.embeddings import OpenAIEmbeddings +from langchain.vectorstores.chroma import Chroma + +__import__('pysqlite3') +import sys + +sys.modules['sqlite3'] = sys.modules.pop('pysqlite3') +import dotenv + +dotenv.load_dotenv() + +# Load documents + +# from langchain.document_loaders import WebBaseLoader +# loader = WebBaseLoader("https://lilianweng.github.io/posts/2023-06-23-agent/") +import os + +examples = [ + { + "input": "Donne moi une information.", + "output": "Désolé je n'ai pas assez d'information pour vous aider. Merci de fournir le type de contrat et de travail que vous occupez.", + }, + { + "input": "Mon patron est méchant avec moi.", + "output": "Désolé je n'ai pas assez d'information pour vous aider. Merci de fournir le type de contrat et de travail que vous occupez.", + }, + { + "input": "Quelle est la couleur du cheval blanc d'Henry IV ?", + "output": "Désolé mon rôle est de fournir des informations sur le droit du travail et votre question ne semble pas être sur ce sujet.", + }, + { + "input": "Est-ce que Mon patron a le droit de m'interdire de me syndiquer", + "output": "Non, votre patron n'a pas le droit de vous interdire de vous syndiquer. L'article L2141-7 du Livre Ier, Chapitre Ier, Titre IV du Code du travail stipule qu'il est interdit à l'employeur d'employer un moyen quelconque de pression en faveur ou à l'encontre d'une organisation syndicale.", + }, + { + "input": "A combien de jours de formation ai-je droit dans l'année ?", + "output": "Les informations fournies ne sont pas suffisantes pour répondre, car les droits à la formation peuvent différer selon les catégories de travailleurs." + }, +] +to_vectorize = [" ".join(example.values()) for example in examples] +embeddings = OpenAIEmbeddings() +examples_vectorstore = Chroma.from_texts( + to_vectorize, + embeddings, + metadatas=examples, + persist_directory="./chroma_db_examples.1.0",) + diff --git a/rag_use_db.py b/rag_use_db.py index 0ec7a46..c77f620 100644 --- a/rag_use_db.py +++ b/rag_use_db.py @@ -39,41 +39,7 @@ Answer: ] ) -from langchain.prompts import ( - ChatPromptTemplate, - FewShotChatMessagePromptTemplate, -) - -# -examples = [ - { - "input": "Donne moi une information.", - "output": "Désolé je n'ai pas assez d'information pour vous aider. Merci de fournir le type de contrat et de travail que vous occupez.", - }, - { - "input": "Mon patron est méchant avec moi.", - "output": "Désolé je n'ai pas assez d'information pour vous aider. Merci de fournir le type de contrat et de travail que vous occupez.", - }, - { - "input": "Quelle est la couleur du cheval blanc d'Henry IV ?", - "output": "Désolé mon rôle est de fournir des informations sur le droit du travail et votre question ne semble pas être sur ce sujet.", - }, - { - "input": "Est-ce que Mon patron a le droit de m'interdire de me syndiquer", - "output": "Non, votre patron n'a pas le droit de vous interdire de vous syndiquer. L'article L2141-7 du Livre Ier, Chapitre Ier, Titre IV du Code du travail stipule qu'il est interdit à l'employeur d'employer un moyen quelconque de pression en faveur ou à l'encontre d'une organisation syndicale.", - }, - { - "input": "A combien de jours de formation ai-je droit dans l'année ?", - "output": "Les informations fournies ne sont pas suffisantes pour répondre, car les droits à la formation peuvent différer selon les catégories de travailleurs." - }, -] -to_vectorize = [" ".join(example.values()) for example in examples] embeddings = OpenAIEmbeddings() -# examples_vectorstore = Chroma.from_texts( -# to_vectorize, -# embeddings, -# metadatas=examples, -# persist_directory="./chroma_db_examples.1.0",) examples_vectorstore = Chroma(persist_directory="./chroma_db_examples.1.0", embedding_function=OpenAIEmbeddings())