Skip to content

SmartChat是一款基於Langchain框架開發的Agent與RAG應用

License

Notifications You must be signed in to change notification settings

HSIAOKUOWEI/SmartChat

Repository files navigation

SmartChat Logo

English | 中文

SmartChat是一款基於Langchain框架開發的Agent與RAG應用。主要利用大語言模型來理解對話內容的語義,並根據對話上下文的需求自動調用相關工具執行各種任務,包括查詢台灣天氣、網頁問答、圖片問答、圖片生成、檔案處理、搜索引擎問答、查找Arxiv論文和維基百科查詢等功能。透過這些工具的自動化整合,SmartChat能夠為用戶提供精確的回應,滿足用戶從資訊獲取到內容生成的多樣化需求,從而智能且高效地解決各類問題。具體的實現技術請參考技術棧


目錄

技術棧

項目使用的主要技術如下:

功能簡介

類別 功能
對話功能 - 台灣天氣查詢
- 檔案問答
- 檔案總結
- 圖片對話
- 生成圖片
- 網頁問答
- 搜索引擎對話
- Arxiv論文對話
- 維基百科對話
基礎功能 - 切換LLM模型
- 用戶管理(登錄丶註冊丶重置密碼丶登出)
- 聊天框管理(新增丶刪除丶改名丶切換)
- 文件及圖片上傳

功能展示

_SmartChat.mp4

部署

本地部署

  1. 下載倉庫:

    git clone https://github.com/HSIAOKUOWEI/SmartChat.git
    cd SmartChat
  2. 創建並激活虛擬環境:

    conda create -n SmartChat python=3.10
    conda activate SmartChat
  3. 安裝依賴:

    pip install -r requirements.txt
  4. 配置環境變量:

    mv .env.example .env
  5. 運行項目:

    python app.py

Docker部署

  1. 下載倉庫:

    git clone https://github.com/HSIAOKUOWEI/SmartChat.git
    cd SmartChat
  2. 配置環境變量:

    mv .env.example .env
  3. 運行Docker:

    docker-compose up -d

代碼目錄結構

SmartChat/
├── __pycache__/           # Python 缓存文件夹
├── controllers/           # 控制器層(api)
├── logs/                  # 記錄文件
├── models/                # 模型層(處理邏輯)
│   ├── database/          # 資料庫連接和操作
│   └── untils/            # 辅助功能函數
├── routes/                # 子路由文件夹
├── static/                # 靜態文件
├── templates/             # 模板文件(前端頁面)
├── .env.example           # API KEY環境變量配置
├── .gitignore             # Git 忽略文件
├── Dockerfile             # Docker 構建文件
├── LICENSE                # 授權文件
├── README.md              # 項目說明文件
├── __init__.py            
├── app.py                 # 應用主文件
├── docker-compose.yml     # Docker Compose 配置文件
├── milvus-standalone-docker-compose.yml # Milvus 官方配置文件
└── requirements.txt       # Python 依賴包

MongoDB表的設計

用戶表(users)

字段名 類型 描述
_id ObjectId MongoDB自動生成的唯一標識符
account String 用戶賬號
password String 用戶密碼
last_login ISODate 用戶最後登錄時間
password_last_modified ISODate 密碼更改時間

對話框表(dialogues)

字段名 類型 描述
_id ObjectId 對話框的唯一標識符
user_id ObjectId 用戶標識符
title String 對話框標題
created_at ISODate 對話框的創建時間
updated_at ISODate 對話框的最後更新時間

消息表(messages)

字段名 類型 描述
_id ObjectId 消息的唯一標識符
user_id ObjectId 用戶標識符
dialogue_id ObjectId 對話框的標識符
messages Array 消息內容的數組
updated_at ISODate 消息的最後更新時間

儲存文件表(user_file)

字段名 類型 描述
_id ObjectId 消息的唯一標識符
user_id ObjectId 用戶標識符
file_name Array 文件名
file_type Array 文件類型(例如 application/pdf)
file_size Array 文件大小,以字節為單位
gridfs_id Array 關聯到 GridFS 中存儲的文件的唯一標識符
created_at ISODate 文件上傳時間

儲存圖片表(user_image)

字段名 類型 描述
_id ObjectId 消息的唯一標識符
user_id ObjectId 用戶標識符
image_name Array 圖片名稱
image_type Array 圖片類型(例如 image/png)
image_size Array 圖片大小
gridfs_id Array 關聯到 GridFS 中存儲的圖片的唯一標識符
created_at ISODate 圖片上傳時間