ホームページ >バックエンド開発 >Python チュートリアル >Excel を使用した LlamaChat を使用したシンプルなチャットボットの構築]
この投稿では、Llama2 モデルを使用して Excel データをインテリジェントにクエリするチャットボットを構築する方法を説明します。
Python (≥ 3.8)
ライブラリ: langchain、pandas、非構造化、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")
大きなテキスト データは、効果的な埋め込みとクエリのために、重複する小さなチャンクに分割されます。これらのチャンクは 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" )
ChatOllama を使用して Llama2 モデルをローカルにロードします。
from langchain_community.chat_models import ChatOllama local_model = "llama2" llm = ChatOllama(model=local_model)
チャットボットは 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}""" )
ベクター データベースから関連するチャンクを取得するように取得プログラムを構成します。これは、質問に答えるために Llama2 モデルによって使用されます。
from langchain.retrievers.multi_query import MultiQueryRetriever retriever = MultiQueryRetriever.from_llm( vector_db.as_retriever(), llm, prompt=QUERY_PROMPT )
応答チェーンには以下が統合されます:
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() )
さあ、質問する準備ができました。チェーンを呼び出して応答を取得する方法は次のとおりです:
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 データ用のスマートで対話型のチャットボットを作成します。いくつかの調整を行うことで、これを拡張して他のタイプのドキュメントを操作したり、本格的なアプリに統合したりできます!
BChat Excel のご紹介: Excel ファイル対話用の会話型 AI 搭載ツール
以上がExcel を使用した LlamaChat を使用したシンプルなチャットボットの構築]の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。