Skip to content

domonic18/smart-finance-bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f6293a9 · Sep 13, 2024
Aug 31, 2024
Sep 13, 2024
Sep 7, 2024
Sep 7, 2024
Sep 12, 2024
Sep 9, 2024
Sep 9, 2024
Sep 12, 2024
Sep 8, 2024
Sep 7, 2024
Sep 7, 2024
Sep 1, 2024
Sep 12, 2024
Sep 7, 2024
Sep 9, 2024
Sep 9, 2024

Repository files navigation

光环结业项目

介绍

金融千问机器人是一个 基于 LLM + Agent + RAG 的智能问答系统,该项目源于阿里天池的挑战赛。

项目架构

根据之前参赛项目的经验,该项目预计的项目架构图如下: 项目架构

目录说明

smart-finance-bot \
    |- dataset \  # 该目录用于保存PDF以及SQLite数据
    |- doc \  # 该目录用于保存文档类文件,例如:需求文档、说明文档、数据文档
    |- app \   # 该目录用于服务端代码
        |- agent \ # 该目录用于保存agent相关代码
        |- rag \   # 该目录用于保存rag相关代码
        |- test \   # 该目录用于保存测试类驱动相关代码
        |- conf \  # 该目录用于保存配置文件
            |- .qwen # 该文件保存QWen的配置文件(请自行添加对应的API KEY)
            |- .ernie # 该文件保存百度千帆的配置文件(请自行添加对应的API KEY)
    |- chatweb \   # 该目录用于保存前端页面代码
    |- scripts \   # 该目录用于保存脚本文件,例如:启动脚本、导入向量数据库脚本等
    |- test_result \   # 该目录用于保存测试结果
    |- docker \
        |- backend \ # 该目录对应后端python服务的Dockerfile
        |- frontend \ # 该目录对应前端python服务的Dockerfile

使用说明

1、拉取代码

git clone --recurse-submodules https://gitee.com/deadwalk/smart-finance-bot.git

Git客户端gitee使用教程

2、安装依赖

cd smart-finance-bot,进入工程根目录后,运行如下命令安装依赖

# 安装依赖前,强烈建议使用conda虚拟环境,例如:
# conda create --name langchain python=3.10
# conda activate langchain

pip install -r requirements.txt

注意:经过实际测试Python 3.11版本会存在依赖冲突问题,所以请将Python版本切换为3.10。

3、配置大模型的APIKey

打开配置文件 app/conf的配置文件,配置自己的API Key即可。

备注:

  • .qwen 文件中对应QWen的API Key
  • .ernie 文件中对应百度千帆的API Key
  • .zhipu 文件中对应智谱的API Key

如果想测试API-KEY是否生效,可以参照 附录关于如何配置智谱大模型 的章节内容。

4、准备向量数据库

  1. 访问网盘下载链接 下载地址:https://share.weiyun.com/wa3QocyY
  2. 下载 chroma_db_bge_0911
  3. chroma_db_bge_0911移动至smart-finance-bot目录下,并重命名为chroma_db
smart-finance-bot\
    |-chroma_db     # ←放在这个位置
    |-app

5、启动Chroma数据库

Linux/Mac用户:

# 切换/保持当前目录为 smart-finance-bot
cd smart-finance-bot

# 启动Chroma数据库
./scripts/start_chroma.sh

Windows用户:

scripts\start_chroma.bat

6、开展工作

注意:此处后续的工作因为需求不尽相同,所以请根据需求选择对应的内容阅读。

  • 如果你是要执行自动化测试,请查看 6.1 批量化执行问题提问测试方法
  • 如果你是想启动后端和前端查看Demo效果,请查看 6.2 启动后端和前端查看Demo效果
  • 如果你是想进行代码调试,请查看 6.3 代码调试方法

6.1 批量化执行问题提问测试方法

SQLite数据库批量建立索引方法

第一步:执行命令给SQLite数据库建立索引

# 切换/保持当前目录为 smart-finance-bot
cd smart-finance-bot

# 运行添加索引脚本
./scripts/run_addindexs.sh

注意:该项工作仅运行一次即可。

配置自动化测试的start和end用例序号

第二步:配置自动化测试的start和end用例序号

Linux/Mac用户:

  1. 编辑scripts/run_test_cases.sh 文件
  2. 修改 --start--end 参数(下面是一个执行 0~100 的例子)。
python "$PYTHON_SCRIPT" --job test_question --start 0 --end 100

Windows用户:

  1. 编辑scripts\run_test_cases.bat 文件
  2. 修改 --start--end 参数(下面是一个执行 0~100 的例子)。
python "%PYTHON_SCRIPT%" --job test_question --start 0 --end 100
执行自动化脚本

第三步:运行测试脚本

# 切换/保持当前目录为 smart-finance-bot
cd smart-finance-bot

# 运行测试脚本(Linux/Mac用户)
./scripts/run_test_cases.sh

# 运行测试脚本(Windows用户)
scripts\run_test_cases.bat

说明:

  1. Window用户注意运行对应的 bat 文件。
  2. 测试结果会保存在 test_result 目录中,其中 .json 是问题运行的结果,.log 是运行日志。
  3. 如果执行过程中出现异常中断,请重新执行上述脚本,脚本会提示是否断点续跑,选择Y即可。

6.2 启动后端和前端查看Demo效果

以下是启动后端和前端查看效果的方法:

启动后端服务
# 切换/保持当前目录为 smart-finance-bot
cd smart-finance-bot

# 启动服务
python app/server.py
启动前端服务

第一步:安装Node.js

第二步:安装依赖包(首次运行一次即可)

# 进入chatweb目录
cd chatweb

# 安装依赖包
npm install

第三步:启动前端服务

# 启动服务
npm run dev

启动完毕后,按照提示访问 http://localhost:5173/ 即可查看效果。

6.3 代码调试方法

  • 如果你使用的开发工具是 VsCode,可以参考如下步骤:

    • 使用vscode打开smart-finance-bot工程根目录。
    • 在app目录下找到test_framework.py文件
    • 启用vscode的调试模式即可。
  • 如果你使用的开发工具是 pycharm,可以参考如下步骤:

    • 使用pycharm打开app目录。(特别注意:pycharm需要将app目录设置为项目根目录)
    • 找到test_framework.py文件
    • 启用调试模式即可。

附录

关于批量导入PDF到向量库的方法

!!注意:执行导入脚本前,请确保没有使用命令行启动 Chroma 向量数据库。

Linux/Mac用户:

# 切换/保持当前目录为 smart-finance-bot
cd smart-finance-bot

# 给shell脚本赋予运行权限
chmod +x ./scripts/import_pdf.sh

# 启动批量导入脚本
./scripts/import_pdf.sh

Windows用户:

scripts\import_pdf.bat

关于如何配置智谱大模型地方法

  1. 访问智谱开放平台https://bigmodel.cn/
  2. 注册账号并且登录
  3. API密钥 中创建自己的API Key
  4. conf/.zhipu 文件中配置好第3步创建好的密钥
  5. app/settings.py 中修改全局配置CHAT的赋值,即: CHAT = get_zhipu_models(model="glm-4-plus")
  6. 至此,大模型修改完毕,你可以使用 test_framework.py 中的 test_llm_api() 进行测试。

关于使用Docker部署后端和前端服务的方法

1、准备Docker运行环境

安装Docker,具体方法不再赘述,可以查看10分钟学会Docker的安装和使用

2、下载Docker-Compose文件

命令行下运行

curl -L https://github.com/docker/compose/releases/tag/v2.28.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

3、启动服务

docker-compose -f docker-compose-base.yaml up -d
  • docker-compose-base.yaml 对应是只启动基础的服务,包括python后端、nodejs前端、Chroma数据库服务。
  • docker-compose-es.yaml 对应是只启动ElasticSearch服务的配置
  • docker-compose-all.yaml 对应是启动所有服务的配置,包括Python后端服务、前端nodejs、ElasticSearch服务等。

关于启动ElasticSearch(简称ES)服务的方法

第一步:vim 编辑 /etc/sysctl.conf,增加 vm.max_map_count

vm.max_map_count=262144

编辑之后,运行以下命令以应用更改:

sudo sysctl -p

第二步:检查 docker/elasticsearch 目录下是否有读写权限。

第三步:运行如下命令启动ES服务

docker-compose -f docker-compose-es.yaml up -d