littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于Python的FAQ聊天机器人系统

项目简介

本项目是基于Python构建的FAQ聊天机器人系统。使用Elasticsearch作为底层数据库来存储和检索知识库,借助PyTorch库和预训练模型进行文本向量化,通过FastAPI框架构建提供FAQ搜索功能的API服务。

项目的主要特性和功能

  • 采用Elasticsearch存储和检索FAQ数据。
  • 利用PyTorch库和预训练模型实现文本向量化。
  • 通过FastAPI框架构建API服务,支持基于文本输入的搜索功能。
  • 支持基于Docker的容器化部署,便于项目快速部署与扩展。

安装使用步骤

安装依赖

安装项目所需的Python库,如elasticsearchpytorchfastapiuvicorn等。

配置Elasticsearch

根据项目需求,配置Elasticsearch的地址、索引名称等参数。

写入数据

设置环境变量:export PYTHONPATH=$(pwd),然后运行python vectorstore/es_index.py创建索引并写入样例数据。若使用自己的数据集,需修改es_config.py中的变量DATA_PATH

启动服务

运行server.py脚本,启动基于FastAPI的服务器应用,监听指定端口。

测试服务

  • 终端测试:执行curl -X 'POST' 'http://127.0.0.1:8008/faq/search' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"text": "我最近长胖了,这让我有些尴尬,是否可以改善这一状况?"}'
  • 脚本测试:运行pytest test_server.py -k test_faq_search -v -s

并发测试

使用test_server_concurrency.py脚本测试服务器的并发处理能力。

Docker部署

  1. 安装Docker,参考链接:Docker教程
  2. 构建Docker镜像:在项目根目录下执行docker build -t faq-chatbot:0.1 .
  3. 运行Docker容器:docker run -itd -v $(pwd):/code -p 8008:7000 --name faq --net elastic faq-chatbot:0.1
  4. 进入容器:docker exec -it faq /bin/bash,退出容器使用exit
  5. 注意修改es_basic.py中的ES_URL地址为elasticsearch容器的IP地址,可通过docker network inspect elastic查看。
  6. 使用Docker Compose部署:docker-compose up
  7. 再次测试服务,分别对应三个端口 7001、7002、7003:
    • curl -X 'POST' 'http://127.0.0.1:7001/faq/search' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"text": "我最近长胖了,这让我有些尴尬,是否可以改善这一状况?"}'
    • curl -X 'POST' 'http://127.0.0.1:7002/faq/search' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"text": "我最近长胖了,这让我有些尴尬,是否可以改善这一状况?"}'
    • curl -X 'POST' 'http://127.0.0.1:7003/faq/search' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"text": "我最近长胖了,这让我有些尴尬,是否可以改善这一状况?"}'

注意事项

  • 根据项目需求调整Elasticsearch的配置和索引结构。
  • 确保环境变量和路径设置正确。
  • 在生产环境中,保证服务器的安全性和稳定性,如设置防火墙、限制访问权限等。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】