ホームページ >バックエンド開発 >Python チュートリアル >Excel を使用した LlamaChat を使用したシンプルなチャットボットの構築]

Excel を使用した LlamaChat を使用したシンプルなチャットボットの構築]

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-29 20:31:14420ブラウズ

この投稿では、Llama2 モデルを使用して Excel データをインテリジェントにクエリするチャットボットを構築する方法を説明します。

Building a Simple Chatbot with LlamaChat with Excel]

私たちが構築しているもの

  1. Excel ファイルをロードします。
  2. データを管理可能なチャンクに分割します。
  3. 高速検索のためにデータをベクトル データベースに保存します。
  4. ローカルの Llama2 モデルを使用して、 Excel ファイルの内容。

前提条件:

Python (≥ 3.8)
ライブラリ: langchain、pandas、非構造化、Chroma

ステップ 1: 依存関係をインストールする

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

ステップ 2: 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")

ステップ 3: データをチャンクして Vector データベースに保存する

大きなテキスト データは、効果的な埋め込みとクエリのために、重複する小さなチャンクに分割されます。これらのチャンクは 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"
)

ステップ 4: Llama2 モデルを初期化する

ChatOllama を使用して Llama2 モデルをローカルにロードします。

from langchain_community.chat_models import ChatOllama

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

ステップ 5: クエリ プロンプトを作成する

チャットボットは Excel ファイルの特定の列名に基づいて応答します。モデルをガイドするプロンプト テンプレートを作成します

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

ステップ 6: レトリバーをセットアップする

ベクター データベースから関連するチャンクを取得するように取得プログラムを構成します。これは、質問に答えるために Llama2 モデルによって使用されます。

from langchain.retrievers.multi_query import MultiQueryRetriever

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

ステップ 7: 応答チェーンを構築する

応答チェーンには以下が統合されます:

  1. コンテキストを取得する取得者。
  2. 質問とコンテキストをフォーマットするためのプロンプト。
  3. 回答を生成する Llama2 モデル。
  4. 応答をフォーマットするための出力パーサー。
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()
)

ステップ 8: 質問する

さあ、質問する準備ができました。チェーンを呼び出して応答を取得する方法は次のとおりです:

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)

サンプル出力

サンプル Excel ファイルで上記のコードを実行すると、次の結果が得られました:

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

結論:

このアプローチでは、埋め込みと Llama2 モデルの力を利用して、Excel データ用のスマートで対話型のチャットボットを作成します。いくつかの調整を行うことで、これを拡張して他のタイプのドキュメントを操作したり、本格的なアプリに統合したりできます!

LinkedIn で UI を使用した動作例を確認してください。

BChat Excel のご紹介: Excel ファイル対話用の会話型 AI 搭載ツール

以上がExcel を使用した LlamaChat を使用したシンプルなチャットボットの構築]の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。