English | 中文
SmartChat是一款基於Langchain框架開發的Agent與RAG應用。主要利用大語言模型來理解對話內容的語義,並根據對話上下文的需求自動調用相關工具執行各種任務,包括查詢台灣天氣、網頁問答、圖片問答、圖片生成、檔案處理、搜索引擎問答、查找Arxiv論文和維基百科查詢等功能。透過這些工具的自動化整合,SmartChat能夠為用戶提供精確的回應,滿足用戶從資訊獲取到內容生成的多樣化需求,從而智能且高效地解決各類問題。具體的實現技術請參考技術棧。
項目使用的主要技術如下:
- 前端:HTML、JavaScript、TailwindCSS
- 後端:Flask
- 資料庫:MongoDB
- 向量資料庫:Milvus
- 緩存:Redis
- 部署:Docker
- LLM開發框架:Langchain
- LLM API:OpenAI、Google AI、Groq、Siliconflow
類別 | 功能 |
---|---|
對話功能 | - 台灣天氣查詢 - 檔案問答 - 檔案總結 - 圖片對話 - 生成圖片 - 網頁問答 - 搜索引擎對話 - Arxiv論文對話 - 維基百科對話 |
基礎功能 | - 切換LLM模型 - 用戶管理(登錄丶註冊丶重置密碼丶登出) - 聊天框管理(新增丶刪除丶改名丶切換) - 文件及圖片上傳 |
_SmartChat.mp4
-
下載倉庫:
git clone https://github.com/HSIAOKUOWEI/SmartChat.git cd SmartChat
-
創建並激活虛擬環境:
conda create -n SmartChat python=3.10 conda activate SmartChat
-
安裝依賴:
pip install -r requirements.txt
-
配置環境變量:
mv .env.example .env
-
運行項目:
python app.py
-
下載倉庫:
git clone https://github.com/HSIAOKUOWEI/SmartChat.git cd SmartChat
-
配置環境變量:
mv .env.example .env
-
運行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 依賴包
字段名 | 類型 | 描述 |
---|---|---|
_id | ObjectId | MongoDB自動生成的唯一標識符 |
account | String | 用戶賬號 |
password | String | 用戶密碼 |
last_login | ISODate | 用戶最後登錄時間 |
password_last_modified | ISODate | 密碼更改時間 |
字段名 | 類型 | 描述 |
---|---|---|
_id | ObjectId | 對話框的唯一標識符 |
user_id | ObjectId | 用戶標識符 |
title | String | 對話框標題 |
created_at | ISODate | 對話框的創建時間 |
updated_at | ISODate | 對話框的最後更新時間 |
字段名 | 類型 | 描述 |
---|---|---|
_id | ObjectId | 消息的唯一標識符 |
user_id | ObjectId | 用戶標識符 |
dialogue_id | ObjectId | 對話框的標識符 |
messages | Array | 消息內容的數組 |
updated_at | ISODate | 消息的最後更新時間 |
字段名 | 類型 | 描述 |
---|---|---|
_id | ObjectId | 消息的唯一標識符 |
user_id | ObjectId | 用戶標識符 |
file_name | Array | 文件名 |
file_type | Array | 文件類型(例如 application/pdf) |
file_size | Array | 文件大小,以字節為單位 |
gridfs_id | Array | 關聯到 GridFS 中存儲的文件的唯一標識符 |
created_at | ISODate | 文件上傳時間 |
字段名 | 類型 | 描述 |
---|---|---|
_id | ObjectId | 消息的唯一標識符 |
user_id | ObjectId | 用戶標識符 |
image_name | Array | 圖片名稱 |
image_type | Array | 圖片類型(例如 image/png) |
image_size | Array | 圖片大小 |
gridfs_id | Array | 關聯到 GridFS 中存儲的圖片的唯一標識符 |
created_at | ISODate | 圖片上傳時間 |