In diesem Beitrag erkläre ich, wie ich mithilfe des Llama2-Modells einen Chatbot erstellt habe, um Excel-Daten intelligent abzufragen.
Python (≥ 3.8)
Bibliotheken: Langchain, Pandas, unstrukturiert, Chroma
%pip install -q unstructured langchain %pip install -q "unstructured[all-docs]"
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")
Große Textdaten werden zur effektiven Einbettung und Abfrage in kleinere, überlappende Blöcke aufgeteilt. Diese Chunks werden in einer Chroma-Vektordatenbank gespeichert.
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" )
Wir verwenden ChatOllama, um das Llama2-Modell lokal zu laden.
from langchain_community.chat_models import ChatOllama local_model = "llama2" llm = ChatOllama(model=local_model)
Der Chatbot antwortet basierend auf bestimmten Spaltennamen aus der Excel-Datei. Wir erstellen eine Eingabeaufforderungsvorlage als Orientierung für das Modell
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}""" )
Wir konfigurieren einen Retriever, um relevante Blöcke aus der Vektordatenbank abzurufen, die vom Llama2-Modell zur Beantwortung von Fragen verwendet werden.
from langchain.retrievers.multi_query import MultiQueryRetriever retriever = MultiQueryRetriever.from_llm( vector_db.as_retriever(), llm, prompt=QUERY_PROMPT )
Die Reaktionskette umfasst:
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() )
Jetzt sind wir bereit, eine Frage zu stellen! So rufen wir die Kette auf, um eine Antwort zu erhalten:
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)
Als ich den obigen Code in einer Excel-Beispieldatei ausgeführt habe, habe ich Folgendes erhalten:
Based on the provided context, there are 10 rows in the table. If you have more questions, feel free to ask!
Dieser Ansatz nutzt die Leistungsfähigkeit von Einbettungen und dem Llama2-Modell, um einen intelligenten, interaktiven Chatbot für Excel-Daten zu erstellen. Mit einigen Optimierungen können Sie dies auf die Arbeit mit anderen Dokumenttypen erweitern oder es in eine vollwertige App integrieren!
Wir stellen vor: BChat Excel: Ein konversationsbasiertes KI-gestütztes Tool für Excel-Dateiinteraktionen
Das obige ist der detaillierte Inhalt vonErstellen eines einfachen Chatbots mit LlamaChat mit Excel]. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!