Rumah >pembangunan bahagian belakang >Tutorial Python >Membina Chatbot Mudah dengan LlamaChat dengan Excel]

Membina Chatbot Mudah dengan LlamaChat dengan Excel]

Linda Hamilton
Linda Hamiltonasal
2024-11-29 20:31:14420semak imbas

Dalam siaran ini, saya akan menerangkan cara saya membina chatbot menggunakan model Llama2 untuk menanyakan data Excel secara bijak.

Building a Simple Chatbot with LlamaChat with Excel]

Apa yang Kami Bina

  1. Memuatkan fail Excel.
  2. Membahagikan data kepada bahagian yang boleh diurus.
  3. Menyimpan data dalam pangkalan data vektor untuk mendapatkan semula pantas.
  4. Gunakan model Llama2 tempatan untuk menjawab soalan berdasarkan kandungan fail Excel.

Prasyarat:

Python (≥ 3.8)
Perpustakaan: langchain, panda, tidak berstruktur, Chroma

Langkah 1: Pasang Ketergantungan

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

Langkah 2: Muatkan Fail 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")

Langkah 3: Potong Data dan Simpan dalam Pangkalan Data Vektor

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

Langkah 4: Mulakan Model Llama2

Kami menggunakan ChatOllama untuk memuatkan model Llama2 secara tempatan.

from langchain_community.chat_models import ChatOllama

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

Langkah 5: Buat Prompt Pertanyaan

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

Langkah 6: Sediakan Retriever

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
)

Langkah 7: Bina Rantaian Tindak Balas

Rantai tindak balas menyepadukan:

  1. Retriever untuk mengambil konteks.
  2. Gesaan untuk memformat soalan dan konteks.
  3. Model Llama2 untuk menjana jawapan.
  4. Penghurai output untuk memformatkan respons.
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()
)

Langkah 8: Tanya Soalan

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)

Contoh Output

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!

Kesimpulan:

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!

Semak contoh kerja dengan UI di LinkedIn saya:

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn