Maison >développement back-end >Tutoriel Python >Construire un chatbot simple avec LlamaChat avec Excel]

Construire un chatbot simple avec LlamaChat avec Excel]

Linda Hamilton
Linda Hamiltonoriginal
2024-11-29 20:31:14419parcourir

Dans cet article, j'expliquerai comment j'ai construit un chatbot en utilisant le modèle Llama2 pour interroger intelligemment les données Excel.

Building a Simple Chatbot with LlamaChat with Excel]

Ce que nous construisons

  1. Charge un fichier Excel.
  2. Divise les données en morceaux gérables.
  3. Stocke les données dans une base de données vectorielle pour une récupération rapide.
  4. Utilisez un modèle Llama2 local pour répondre aux questions basées sur le contenu du fichier Excel.

Prérequis :

Python (≥ 3.8)
Bibliothèques : langchain, pandas, non structurées, Chroma

Étape 1 : Installer les dépendances

%pip install -q unstructured langchain
%pip install -q "unstructured[all-docs]"

Étape 2 : Chargez le fichier Excel

import pandas as pd

excel_path = "Book2.xlsx"
if excel_path:
    df = pd.read_excel(excel_path)
    data = df.to_string(index=False)
else:
    print("Upload an Excel file")

Étape 3 : divisez les données et stockez-les dans une base de données vectorielles

Les données texte volumineuses sont divisées en morceaux plus petits et se chevauchant pour une intégration et une interrogation efficaces. Ces morceaux sont stockés dans une base de données vectorielles Chroma.

from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma

text_splitter = RecursiveCharacterTextSplitter(chunk_size=7500, chunk_overlap=100)
chunks = text_splitter.split_text(data)

embedding_model = OllamaEmbeddings(model="nomic-embed-text", show_progress=False)
vector_db = Chroma.from_texts(
    texts=chunks, 
    embedding=embedding_model,
    collection_name="local-rag"
)

Étape 4 : initialiser le modèle Llama2

Nous utilisons ChatOllama pour charger le modèle Llama2 localement.

from langchain_community.chat_models import ChatOllama

local_model = "llama2"
llm = ChatOllama(model=local_model)

Étape 5 : Créer une invite de requête

Le chatbot répondra en fonction des noms de colonnes spécifiques du fichier Excel. Nous créons un modèle d'invite pour guider le modèle

from langchain.prompts import PromptTemplate

QUERY_PROMPT = PromptTemplate(
    input_variables=["question"],
    template="""You are an AI assistant. Answer the user's questions based on the column names: 
    Id, order_id, name, sales, refund, and status. Original question: {question}"""
)

Étape 6 : configurer le Retriever

Nous configurons un récupérateur pour récupérer les morceaux pertinents de la base de données vectorielles, qui seront utilisés par le modèle Llama2 pour répondre aux questions.

from langchain.retrievers.multi_query import MultiQueryRetriever

retriever = MultiQueryRetriever.from_llm(
    vector_db.as_retriever(), 
    llm,
    prompt=QUERY_PROMPT
)

Étape 7 : Construire la chaîne de réponse

La chaîne de réponse intègre :

  1. Un récupérateur pour récupérer le contexte.
  2. Une invite pour formater la question et le contexte.
  3. Le modèle Llama2 pour générer des réponses.
  4. Un analyseur de sortie pour formater la réponse.
from langchain.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser

template = """Answer the question based ONLY on the following context:
{context}
Question: {question}
"""

prompt = ChatPromptTemplate.from_template(template)

chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt
    | llm
    | StrOutputParser()
)

Étape 8 : Posez une question

Nous sommes maintenant prêts à poser une question ! Voici comment nous invoquons la chaîne pour obtenir une réponse :

raw_result = chain.invoke("How many rows are there?")
final_result = f"{raw_result}\n\nIf you have more questions, feel free to ask!"
print(final_result)

Exemple de sortie

Lorsque j'ai exécuté le code ci-dessus sur un exemple de fichier Excel, voici ce que j'ai obtenu :

Based on the provided context, there are 10 rows in the table.
If you have more questions, feel free to ask!

Conclusion:

Cette approche exploite la puissance des intégrations et du modèle Llama2 pour créer un chatbot intelligent et interactif pour les données Excel. Avec quelques ajustements, vous pouvez étendre cela pour fonctionner avec d'autres types de documents ou l'intégrer dans une application à part entière !

Vérifiez l'exemple de travail avec l'interface utilisateur sur mon LinkedIn :

Présentation de BChat Excel : un outil conversationnel basé sur l'IA pour les interactions avec des fichiers Excel

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn