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
Libérer: 2024-11-29 20:31:14
original
425 Les gens l'ont consulté

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]"
Copier après la connexion

É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")

Copier après la connexion

É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"
)

Copier après la connexion

É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)

Copier après la connexion

É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}"""
)
Copier après la connexion

É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
)

Copier après la connexion

É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()
)

Copier après la connexion

É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)

Copier après la connexion

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!

Copier après la connexion

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!

source:dev.to
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal