Rumah >pembangunan bahagian belakang >Tutorial Python >Membina Chatbot Mudah dengan LlamaChat dengan Excel]
Dalam siaran ini, saya akan menerangkan cara saya membina chatbot menggunakan model Llama2 untuk menanyakan data Excel secara bijak.
Python (≥ 3.8)
Perpustakaan: langchain, panda, tidak berstruktur, 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")
Data teks yang besar dibahagikan kepada bahagian yang lebih kecil dan bertindih untuk pembenaman dan pertanyaan yang berkesan. Potongan ini disimpan dalam pangkalan data vektor 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" )
Kami menggunakan ChatOllama untuk memuatkan model Llama2 secara tempatan.
from langchain_community.chat_models import ChatOllama local_model = "llama2" llm = ChatOllama(model=local_model)
Bot sembang akan bertindak balas berdasarkan nama lajur tertentu daripada fail Excel. Kami mencipta templat segera untuk membimbing model
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}""" )
Kami mengkonfigurasi retriever untuk mengambil bahagian yang berkaitan daripada pangkalan data vektor, yang akan digunakan oleh model Llama2 untuk menjawab soalan.
from langchain.retrievers.multi_query import MultiQueryRetriever retriever = MultiQueryRetriever.from_llm( vector_db.as_retriever(), llm, prompt=QUERY_PROMPT )
Rantai tindak balas menyepadukan:
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() )
Sekarang kami bersedia untuk bertanya soalan! Begini cara kami menggunakan rantaian untuk mendapatkan respons:
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)
Apabila saya menjalankan kod di atas pada sampel fail Excel, inilah yang saya dapat:
Based on the provided context, there are 10 rows in the table. If you have more questions, feel free to ask!
Pendekatan ini memanfaatkan kuasa benam dan model Llama2 untuk mencipta chatbot pintar dan interaktif untuk data Excel. Dengan beberapa tweak, anda boleh melanjutkan ini untuk berfungsi dengan jenis dokumen lain atau menyepadukannya ke dalam apl lengkap!
Memperkenalkan BChat Excel: Alat Dikuasakan AI Perbualan untuk Interaksi Fail Excel
Atas ialah kandungan terperinci Membina Chatbot Mudah dengan LlamaChat dengan Excel]. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!