0

0

使用 LlamaChat 和 Excel 构建一个简单的聊天机器人]

霞舞

霞舞

发布时间:2024-11-28 15:23:13

|

581人浏览过

|

来源于dev.to

转载

在这篇文章中,我将解释如何使用 llama2 模型构建一个聊天机器人来智能查询 excel 数据。

使用 LlamaChat 和 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 步:将数据分块并存储在向量数据库中

大型文本数据被分割成更小的、重叠的块,以进行有效的嵌入和查询。这些块存储在 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 步:构建响应链

响应链集成:

Voiceflow
Voiceflow

Voiceflow 是一个AI驱动的聊天机器人构建平台,可以帮您设计、开发和发布聊天机器人。

下载
  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 文件交互的人工智能对话式工具

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

769

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

661

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

764

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

639

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1325

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

549

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

709

2023.08.11

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 7.6万人学习

Django 教程
Django 教程

共28课时 | 3.3万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号