diff --git a/docs/user-guide/README.md b/docs/user-guide/README.md new file mode 100644 index 0000000000000000000000000000000000000000..9609216e3493e5869e7049e8ffb18d852f331226 --- /dev/null +++ b/docs/user-guide/README.md @@ -0,0 +1,34 @@ +# openEuler Copilot System + +## 功能描述 + +openEuler Copilot System 智能问答平台目前支持 Web 和智能 Shell 两个入口。 + +- Web 入口:操作简单,可咨询操作系统相关基础知识,openEuler 动态数据、openEuler 运维问题解决方案、openEuler 项目介绍与使用指导等等。 +- 智能 Shell 入口:自然语言和 openEuler 交互,启发式的运维。 + +## 应用场景 + +- 面向 openEuler 普通用户:深入了解 openEuler 相关知识和动态数据,比如咨询如何迁移到 openEuler。 +- 面向 openEuler 开发者:熟悉 openEuler 开发贡献流程、关键特性、相关项目的开发等知识。 +- 面向 openEuler 运维人员:熟悉 openEuler 常见或疑难问题的解决思路和方案、openEuler 系统管理知识和相关命令。 + +## 用户手册目录 + +### 部署手册 + +- [部署指南](./部署指南/网络环境下部署指南.md) + - [离线部署指南](./部署指南/无网络环境下部署指南.md) +- [本地资产库构建指南](./部署指南/本地资产库构建指南.md) + +### 使用手册 + +- [Web 端 (Gitee AI) 使用手册](./使用指南/线上服务/前言.md) + - [注册与登录](./使用指南/线上服务/注册与登录.md) + - [智能问答](./使用指南/线上服务/智能问答使用指南.md) + - [智能插件](./使用指南/线上服务/智能插件简介.md) +- [智能 Shell 使用手册](./使用指南/命令行客户端/命令行助手使用指南.md) + - [准备工作:获取 API Key](./使用指南/命令行客户端/获取%20API%20Key.md) + - [智能插件](./使用指南/命令行客户端/命令行助手使用指南.md#智能插件) + - [智能调优](./使用指南/命令行客户端/智能调优.md) + - [智能诊断](./使用指南/命令行客户端/智能诊断.md) diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-ask.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-ask.png" new file mode 100644 index 0000000000000000000000000000000000000000..00d5cf5ecf894dd62366ec086bf96eae532f0b5d Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-ask.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-continue-result.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-continue-result.png" new file mode 100644 index 0000000000000000000000000000000000000000..f30f9fe7a015e775742bc184b8ac75790dc482fa Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-continue-result.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-continue.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-continue.png" new file mode 100644 index 0000000000000000000000000000000000000000..7e4801504fd53fab989574416e6220c4fa3f1d38 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-continue.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-exit.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-exit.png" new file mode 100644 index 0000000000000000000000000000000000000000..0bb81190a3039f6c5a311b365376ec230c1ad4b5 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-chat-exit.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-edit-result.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-edit-result.png" new file mode 100644 index 0000000000000000000000000000000000000000..c5e6f8245e7d66cdbe5370f18d15a791a33a517a Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-edit-result.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-edit.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-edit.png" new file mode 100644 index 0000000000000000000000000000000000000000..bb6209373a6d2a1881728bee352e7c3b46cc91d7 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-edit.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-exec-multi-select.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-exec-multi-select.png" new file mode 100644 index 0000000000000000000000000000000000000000..2dda108a39af54fc15a4ff8c0dca107de38b9cf0 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-exec-multi-select.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-exec-result.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-exec-result.png" new file mode 100644 index 0000000000000000000000000000000000000000..f4fff6a62b8b4220b52fdf55b133f2ba37850569 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-exec-result.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-explain-result.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-explain-result.png" new file mode 100644 index 0000000000000000000000000000000000000000..707dd36aa7c7eadae4f29254cf5fc18ce877f597 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-explain-result.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-explain-select.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-explain-select.png" new file mode 100644 index 0000000000000000000000000000000000000000..bf58b69e241ea11a6945f21e3fc69d22a401be2e Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-explain-select.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-interact.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-interact.png" new file mode 100644 index 0000000000000000000000000000000000000000..00bb3a288fbd2fb962b08f34fbe90c733afe0343 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd-interact.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd.png" new file mode 100644 index 0000000000000000000000000000000000000000..619172c8ed60a7b536364944a306fbf76fcbfb1f Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-cmd.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-help.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-help.png" new file mode 100644 index 0000000000000000000000000000000000000000..97d0dedd3f7b1c749bc5fded471744923d766b8b Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-help.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-init.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-init.png" new file mode 100644 index 0000000000000000000000000000000000000000..bbb2257eb1ff2bfec36110409fc6c55a26386c9e Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-init.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-detail.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-detail.png" new file mode 100644 index 0000000000000000000000000000000000000000..7bd624e025eaae4b77c603d88bf1b9ad5e235fe7 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-detail.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-detect.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-detect.png" new file mode 100644 index 0000000000000000000000000000000000000000..2b38259ff0c1c7045dbff9abf64f36a109a3377b Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-detect.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-profiling.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-profiling.png" new file mode 100644 index 0000000000000000000000000000000000000000..0e63c01f35dbc291f805b56de749eac09e0a079d Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-profiling.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-report.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-report.png" new file mode 100644 index 0000000000000000000000000000000000000000..c16f0184a2ad3d2468466b33d0e861d2a31bc4e2 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-report.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-switch-mode.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-switch-mode.png" new file mode 100644 index 0000000000000000000000000000000000000000..165c6c453353b70c3e1e2cb07d7f43d5ee3525e3 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-diagnose-switch-mode.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-result.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-result.png" new file mode 100644 index 0000000000000000000000000000000000000000..3e3f45a974a0700d209f7d30af89eb2050a392d6 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-result.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-select.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-select.png" new file mode 100644 index 0000000000000000000000000000000000000000..13959203c77eaa9f41051897cf9e847ff3642a8a Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-select.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-metrics-collect.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-metrics-collect.png" new file mode 100644 index 0000000000000000000000000000000000000000..4d5678b7f77b05d48552fcb9656f4a4372dbbe61 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-metrics-collect.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-report.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-report.png" new file mode 100644 index 0000000000000000000000000000000000000000..01daaa9a84c13158a95afddffeb8a7e3303f1e76 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-report.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-script-exec.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-script-exec.png" new file mode 100644 index 0000000000000000000000000000000000000000..0b694c3fba6918ef39cca977b2072b2913d12b95 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-script-exec.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-script-gen.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-script-gen.png" new file mode 100644 index 0000000000000000000000000000000000000000..6e95551767e213f59669d03fd4cceba05801a983 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-script-gen.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-script-view.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-script-view.png" new file mode 100644 index 0000000000000000000000000000000000000000..c82c77bf6f4e4e19f400395aaadc9f99dc8d373c Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-script-view.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-switch-mode.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-switch-mode.png" new file mode 100644 index 0000000000000000000000000000000000000000..0f06c803ea3621a0f4fb83bbbe731e2bb4bba788 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin-tuning-switch-mode.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin.png" new file mode 100644 index 0000000000000000000000000000000000000000..4c1afd306a6aee029f5bda38aa7b1fce57227e31 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/pictures/shell-plugin.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\345\221\275\344\273\244\350\241\214\345\212\251\346\211\213\344\275\277\347\224\250\346\214\207\345\215\227.md" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\345\221\275\344\273\244\350\241\214\345\212\251\346\211\213\344\275\277\347\224\250\346\214\207\345\215\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..e1d056639ab4e36e078c6957400c5e808d6b48ea --- /dev/null +++ "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\345\221\275\344\273\244\350\241\214\345\212\251\346\211\213\344\275\277\347\224\250\346\214\207\345\215\227.md" @@ -0,0 +1,169 @@ +# 命令行助手使用指南 + +## 简介 + +openEuler Copilot System 命令行助手是一个命令行(Shell)AI 助手,您可以通过它来快速生成 Shell 命令并执行,从而提高您的工作效率。除此之外,基于 Gitee AI 在线服务的标准版本还内置了 openEuler 的相关知识,可以助力您学习与使用 openEuler 操作系统。 + +## 环境要求 + +- 操作系统:openEuler 22.03 LTS SP3,或者 openEuler 24.03 LTS 及以上版本 +- 命令行软件: + - Linux 桌面环境:支持 GNOME、KDE、DDE 等桌面环境的内置终端 + - 远程 SSH 链接:支持兼容 xterm-256 与 UTF-8 字符集的终端 + +## 安装 + +openEuler Copilot System 命令行助手支持通过 OEPKGS 仓库进行安装。 + +### 配置 OEPKGS 仓库 + +```bash +sudo dnf config-manager --add-repo https://repo.oepkgs.net/openeuler/rpm/`sed 's/release //;s/ /-/g' /etc/openEuler-release`/extras/`uname -m`/ +``` + +```bash +sudo dnf clean all +``` + +```bash +sudo dnf makecache +``` + +### 安装命令行助手 + +```bash +sudo dnf install eulercopilot-cli +``` + +若遇到 `Error: GPG check FAILED` 错误,使用 `--nogpgcheck` 跳过检查。 + +```bash +sudo dnf install --nogpgcheck eulercopilot-cli +``` + +## 初始化 + +```bash +copilot --init +``` + +然后根据提示输入 API Key 完成配置。 + +![shell-init](./pictures/shell-init.png) + +初次使用前请先退出终端或重新连接 SSH 会话使配置生效。 + +- **查看助手帮助页面** + + ```bash + copilot --help + ``` + + ![shell-help](./pictures/shell-help.png) + +## 使用 + +在终端中输入问题,按下 `Ctrl + O` 提问。 + +### 快捷键 + +- 输入自然语言问题后,按下 `Ctrl + O` 可以直接向 AI 提问。 +- 直接按下 `Ctrl + O` 可以自动填充命令前缀 `copilot`,输入参数后按下 `Enter` 即可执行。 + +### 智能问答 + +命令行助手初始化完成后,默认处于智能问答模式。 +命令提示符**左上角**会显示当前模式。 +若当前模式不是“智能问答”,执行 `copilot -c` (`copilot --chat`) 切换到智能问答模式。 + +![chat-ask](./pictures/shell-chat-ask.png) + +AI 回答完毕后,会根据历史问答生成推荐问题,您可以复制、粘贴到命令行中进行追问。输入追问的问题后,按下 `Enter` 提问。 + +![chat-next](./pictures/shell-chat-continue.png) + +![chat-next-result](./pictures/shell-chat-continue-result.png) + +智能问答模式下支持连续追问,每次追问最多可以关联3条历史问答的上下文。 + +输入 `exit` 可以退出智能问答模式,回到 Linux 命令行。 + +![chat-exit](./pictures/shell-chat-exit.png) + +- 若问答过程中遇到程序错误,可以按下 `Ctrl + C` 立即退出当前问答,再尝试重新提问。 + +### Shell 命令 + +AI 会根据您的问题返回 Shell 命令,openEuler Copilot System 命令行助手可以解释、编辑或执行这些命令,并显示命令执行结果。 + +![shell-cmd](./pictures/shell-cmd.png) + +命令行助手会自动提取 AI 回答中的命令,并显示相关操作。您可以通过键盘上下键选择操作,按下 `Enter` 确认。 + +![shell-cmd-interact](./pictures/shell-cmd-interact.png) + +#### 解释 + +如果 AI 仅返回了一条命令,选择解释后会直接请求 AI 解释命令,并显示回答。 +若 AI 回答了多条命令,选择后会显示命令列表,您每次可以选择**一条**请求 AI 解释。 + +![shell-cmd-explain-select](./pictures/shell-cmd-explain-select.png) + +完成解释后,您可以继续选择其他操作。 + +![shell-cmd-explain-result](./pictures/shell-cmd-explain-result.png) + +#### 编辑 + +![shell-cmd-edit](./pictures/shell-cmd-edit.png) + +选择一条命令进行编辑,编辑完成后按下 `Enter` 确认。 + +![shell-cmd-edit-result](./pictures/shell-cmd-edit-result.png) + +完成编辑后,您可以继续编辑其他命令或选择其他操作。 + +#### 执行 + +如果 AI 仅返回了一条命令,选择执行后会直接执行命令,并显示执行结果。 +若 AI 回答了多条命令,选择后会显示命令列表,您每次可以选择**多条**命令来执行。 + +您可以通过键盘上下键移动光标,按下 `空格键` 选择命令,按下 `Enter` 执行所选命令。 +被选中的命令会显示**蓝色高亮**,如图所示。 + +![shell-cmd-exec-multi-select](./pictures/shell-cmd-exec-multi-select.png) + +若不选择任何命令,直接按下 `Enter`,则会跳过执行命令,直接进入下一轮问答。 + +按下 `Enter` 后,被选中的命令会从上到下依次执行。 + +![shell-cmd-exec-result](./pictures/shell-cmd-exec-result.png) + +若执行过程中遇到错误,命令行助手会显示错误信息,并**终止执行命令**,进入下一轮问答。 +您可以在下一轮问答中提示 AI 更正命令,或要求 AI 重新生成命令。 + +### 智能插件 + +在 Linux 命令行中执行 `copilot -p` (`copilot --plugin`) 切换到智能插件模式。 + +![shell-plugin](./pictures/shell-plugin.png) + +输入问题并按下 `Ctrl + O` 提问后,从列表中选择插件,按下 `Enter` 调用插件回答问题。 + +![shell-plugin-select](./pictures/shell-plugin-select.png) + +![shell-plugin-result](./pictures/shell-plugin-result.png) + +## 卸载 + +```bash +sudo dnf remove eulercopilot-cli +``` + +然后使用以下命令删除配置文件。 + +```bash +rm ~/.config/eulercopilot/config.json +``` + +卸载完成后请重启终端或重新连接 SSH 会话使配置还原。 diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\346\231\272\350\203\275\350\257\212\346\226\255.md" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\346\231\272\350\203\275\350\257\212\346\226\255.md" new file mode 100644 index 0000000000000000000000000000000000000000..c19401dc95b262535bad81d3eb614d984468cee5 --- /dev/null +++ "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\346\231\272\350\203\275\350\257\212\346\226\255.md" @@ -0,0 +1,50 @@ +# 智能插件:智能诊断 + +部署智能诊断工具后,可以通过 openEuler Copilot System 智能体框架实现对本机进行诊断。 +在智能诊断模式提问,智能体框架服务可以调用本机的诊断工具诊断异常状况、分析并生成报告。 + +## 操作步骤 + +**步骤1** 切换到“智能插件”模式 + +```bash +copilot -p +``` + +![切换到智能插件模式](./pictures/shell-plugin-diagnose-switch-mode.png) + +**步骤2** 异常事件检测 + +```bash +帮我进行异常事件检测 +``` + +按下 `Ctrl + O` 键提问,然后在插件列表中选择“智能诊断”。 + +![异常事件检测](./pictures/shell-plugin-diagnose-detect.png) + +**步骤3** 查看异常事件详情 + +```bash +查看 XXX 容器的异常事件详情 +``` + +![查看异常事件详情](./pictures/shell-plugin-diagnose-detail.png) + +**步骤4** 执行异常事件分析 + +```bash +请对 XXX 容器的 XXX 指标执行 profiling 分析 +``` + +![异常事件分析](./pictures/shell-plugin-diagnose-profiling.png) + +**步骤5** 查看异常事件分析报告 + +等待 5 至 10 分钟,然后查看分析报告。 + +```bash +查看 对应的的 profiling 报告 +``` + +![执行优化脚本](./pictures/shell-plugin-diagnose-report.png) diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\346\231\272\350\203\275\350\260\203\344\274\230.md" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\346\231\272\350\203\275\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..b5c40581668ae4f6074043e62a93b2c4b240e5b3 --- /dev/null +++ "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\346\231\272\350\203\275\350\260\203\344\274\230.md" @@ -0,0 +1,53 @@ +# 智能插件:智能调优 + +部署智能调优工具后,可以通过 openEuler Copilot System 智能体框架实现对本机进行调优。 +在智能调优模式提问,智能体框架服务可以调用本机的调优工具采集性能指标,并生成性能分析报告和性能优化建议。 + +## 操作步骤 + +**步骤1** 切换到“智能调优”模式 + +```bash +copilot -t +``` + +![切换到智能调优模式](./pictures/shell-plugin-tuning-switch-mode.png) + +**步骤2** 采集性能指标 + +```bash +帮我进行性能指标采集 +``` + +![性能指标采集](./pictures/shell-plugin-tuning-metrics-collect.png) + +**步骤3** 生成性能分析报告 + +```bash +帮我生成性能分析报告 +``` + +![性能分析报告](./pictures/shell-plugin-tuning-report.png) + +**步骤4** 生成性能优化建议 + +```bash +请生成性能优化脚本 +``` + +![性能优化脚本](./pictures/shell-plugin-tuning-script-gen.png) + +**步骤5** 选择“执行命令”,运行优化脚本 + +![执行优化脚本](./pictures/shell-plugin-tuning-script-exec.png) + +- 脚本内容如图: + ![优化脚本内容](./pictures/shell-plugin-tuning-script-view.png) + +## 远程调优 + +如果需要对其他机器进行远程调优,请在上文示例的问题前面加上对应机器的 IP 地址。 + +例如:`请对 192.168.1.100 这台机器进行性能指标采集。` + +进行远程调优前请确保目标机器已部署智能调优工具,同时请确保 openEuler Copilot System 智能体框架能够访问目标机器。 diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\350\216\267\345\217\226 API Key.md" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\350\216\267\345\217\226 API Key.md" new file mode 100644 index 0000000000000000000000000000000000000000..6c6c2ac56bdcfa2e0bbe6a880e420b17394e2306 --- /dev/null +++ "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\345\221\275\344\273\244\350\241\214\345\256\242\346\210\267\347\253\257/\350\216\267\345\217\226 API Key.md" @@ -0,0 +1,28 @@ +# 获取 API Key + +## 前言 + +openEuler Copilot System 命令行助手使用 API Key 来验证用户身份,并获取 API 访问权限。 +因此,开始使用前,您需要先获取 API Key。 + +## 注意事项 + +- 请妥善保管您的 API Key,不要泄露给他人。 +- API Key 仅用于命令行助手与 DevStation 桌面端,不用于其他用途。 +- 每位用户仅可拥有一个 API Key,重复创建 API Key 将导致旧密钥失效。 +- API Key 仅在创建时显示一次,请务必及时保存。若密钥丢失,您需要重新创建。 +- 若您在使用过程中遇到“请求过于频繁”的错误,您的 API Key 可能已被他人使用,请及时前往官网刷新或撤销 API Key。 + +## 获取方法 + +1. 登录 [openEuler Copilot System (Gitee AI) 官网](https://eulercopilot.gitee.com)。 +2. 点击右上角头像,选择“API KEY”。 +3. 点击“新建”按钮。 +4. **请立即保存 API Key,它仅在创建时显示一次,请勿泄露给他人。** + +## 管理 API Key + +1. 登录 [openEuler Copilot System (Gitee AI) 官网](https://eulercopilot.gitee.com)。 +2. 点击右上角头像,选择“API KEY”。 +3. 点击“刷新”按钮,刷新 API Key;点击“撤销”按钮,撤销 API Key。 + - 刷新 API Key 后,旧密钥失效,请立即保存新生成的 API Key。 diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/bulk-delete-confirmation.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/bulk-delete-confirmation.png" new file mode 100644 index 0000000000000000000000000000000000000000..33230200fbe9f1e0fa72c27f51b8786192aa14f2 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/bulk-delete-confirmation.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/bulk-delete-multi-select.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/bulk-delete-multi-select.png" new file mode 100644 index 0000000000000000000000000000000000000000..96d8201681c4a7772c815a2b9183a0efca9179c2 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/bulk-delete-multi-select.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/bulk-delete.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/bulk-delete.png" new file mode 100644 index 0000000000000000000000000000000000000000..929230cd06cc792b633ab183155225926d2c300d Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/bulk-delete.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/chat-area.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/chat-area.png" new file mode 100644 index 0000000000000000000000000000000000000000..752f18ad4bd85aaa1132c50cc4c7b7dc159aec91 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/chat-area.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/context-support.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/context-support.png" new file mode 100644 index 0000000000000000000000000000000000000000..0bd5f091d0eff34d9b5f36eec6df63b191656daa Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/context-support.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/delete-session-confirmation.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/delete-session-confirmation.png" new file mode 100644 index 0000000000000000000000000000000000000000..efd07828e97de46c9660c162ef553362765d5577 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/delete-session-confirmation.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/delete-session.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/delete-session.png" new file mode 100644 index 0000000000000000000000000000000000000000..596af33f7be41d456a57e6a297820530f8485f34 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/delete-session.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/feedback-illegal.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/feedback-illegal.png" new file mode 100644 index 0000000000000000000000000000000000000000..b6e84ba45977d911db960da97bdff714624ba18c Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/feedback-illegal.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/feedback-misinfo.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/feedback-misinfo.png" new file mode 100644 index 0000000000000000000000000000000000000000..cc5505226add1e6fbde7b93ff09877038e8cfdce Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/feedback-misinfo.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/feedback.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/feedback.png" new file mode 100644 index 0000000000000000000000000000000000000000..9fe1c27acb57d4d24a26c8dde61ee4272f954e46 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/feedback.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/gitee-login-click2signup.jpg" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/gitee-login-click2signup.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..dde8fbe201a44c116e58c3d435737f1a6a3f6f34 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/gitee-login-click2signup.jpg" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/gitee-login.jpg" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/gitee-login.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..ac922094fd513e3f8642f885351f541200e6450b Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/gitee-login.jpg" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/gitee-signup.jpg" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/gitee-signup.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..57e473466cba423be0d6f76814b5a0656804a884 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/gitee-signup.jpg" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-arrow-next.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-arrow-next.png" new file mode 100644 index 0000000000000000000000000000000000000000..1a36c84e0965f9dbf1f90e9a3daadcd1a2560951 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-arrow-next.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-arrow-prev.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-arrow-prev.png" new file mode 100644 index 0000000000000000000000000000000000000000..eb667e93cc6d51aa191a0ac7607e72d4d6923cbc Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-arrow-prev.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-cancel.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-cancel.png" new file mode 100644 index 0000000000000000000000000000000000000000..34d4454b6f92ee12db6841dafe0e94a12c3b9584 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-cancel.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-confirm.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-confirm.png" new file mode 100644 index 0000000000000000000000000000000000000000..1d650f8192e04fae8f7b7c08cd527227c91b833a Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-confirm.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-edit.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-edit.png" new file mode 100644 index 0000000000000000000000000000000000000000..f7b28aa605b5e899855a261d641d27a2674703eb Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-edit.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-search.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-search.png" new file mode 100644 index 0000000000000000000000000000000000000000..7902923196c3394ae8eafaf5a2b6fdf7f19b1f40 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-search.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-thumb-down.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-thumb-down.png" new file mode 100644 index 0000000000000000000000000000000000000000..cda14d196d92898da920ed64ad37fa9dd124c775 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-thumb-down.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-thumb-up.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-thumb-up.png" new file mode 100644 index 0000000000000000000000000000000000000000..c75ce44bff456e24bc19040c18e4e644bbb77bd1 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-thumb-up.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-user.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-user.png" new file mode 100644 index 0000000000000000000000000000000000000000..e6b06878b76d9e6d268d74070539b388129fa8c4 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/icon-user.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/login-popup.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/login-popup.png" new file mode 100644 index 0000000000000000000000000000000000000000..4ac4116f72aa56c81affdb31b806325966331aa9 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/login-popup.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/logout.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/logout.png" new file mode 100644 index 0000000000000000000000000000000000000000..e2288c35d89d598f3bb8d939bdf6a9d125bcae83 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/logout.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/main-page-sections.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/main-page-sections.png" new file mode 100644 index 0000000000000000000000000000000000000000..155b68928177de0785f4705d2df14c0233b24743 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/main-page-sections.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/new-chat.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/new-chat.png" new file mode 100644 index 0000000000000000000000000000000000000000..176bb3e1e932caa758a56540345218c57ee2ff20 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/new-chat.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-list.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-list.png" new file mode 100644 index 0000000000000000000000000000000000000000..2745f7d82a21cd9eba139898f5ea0c5ab979037f Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-list.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-result.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-result.png" new file mode 100644 index 0000000000000000000000000000000000000000..7056aebeecba8760e0ca2773348cce0a0b8167f1 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-result.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-selected.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-selected.png" new file mode 100644 index 0000000000000000000000000000000000000000..9182ffa57db9da349cb36186a7b3cb035b51b8aa Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-selected.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-suggestion.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-suggestion.png" new file mode 100644 index 0000000000000000000000000000000000000000..bb416881550349000f61b0c1bd3dd540878bd6ad Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/plugin-suggestion.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/privacy-policy-entry.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/privacy-policy-entry.png" new file mode 100644 index 0000000000000000000000000000000000000000..d7efce3e6e8d477ef47a1bc8a9bba0d087cf8058 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/privacy-policy-entry.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/privacy-policy.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/privacy-policy.png" new file mode 100644 index 0000000000000000000000000000000000000000..dc22c50de7f9d2dc3e0bf523175e7915c91c630f Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/privacy-policy.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/recommend-questions.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/recommend-questions.png" new file mode 100644 index 0000000000000000000000000000000000000000..076ec7092af7fe7987e5dc7c864a6b9f8b2b1160 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/recommend-questions.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/regenerate.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/regenerate.png" new file mode 100644 index 0000000000000000000000000000000000000000..655c9d5002df4a17aaf84e8780fff4a0118c6c01 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/regenerate.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/rename-session-confirmation.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/rename-session-confirmation.png" new file mode 100644 index 0000000000000000000000000000000000000000..d64708bd57d53deafdc5ddbb70d9deaeaca0d132 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/rename-session-confirmation.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/rename-session.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/rename-session.png" new file mode 100644 index 0000000000000000000000000000000000000000..73e7e19c5ac8e8035df0e4b553a9b78ff5c9a051 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/rename-session.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/report-options.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/report-options.png" new file mode 100644 index 0000000000000000000000000000000000000000..8a54fd2598d51fc40b57052f404dd830cf621f4d Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/report-options.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/report.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/report.png" new file mode 100644 index 0000000000000000000000000000000000000000..471bcbe8614fc8bab4dcc1805fa1bf4574990fc8 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/report.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/search-history.png" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/search-history.png" new file mode 100644 index 0000000000000000000000000000000000000000..2239d14a7aa8bc13a7b8d3ec71ba9ed71b95e850 Binary files /dev/null and "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/pictures/search-history.png" differ diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\345\211\215\350\250\200.md" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\345\211\215\350\250\200.md" new file mode 100644 index 0000000000000000000000000000000000000000..1846ed6e24c0ade123d9ecb3ed9e4ee66ebaeb93 --- /dev/null +++ "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\345\211\215\350\250\200.md" @@ -0,0 +1,67 @@ +# 前言 + +## 概述 + +本文档介绍了 openEuler Copilot System 的使用方法,对 openEuler Copilot System 线上服务的 Web 界面的各项功能做了详细介绍,同时提供了常见的问题解答,详细请参考对应手册。 + +## 读者对象 + +本文档主要适用于 openEuler Copilot System 的使用人员。使用人员必须具备以下经验和技能: + +- 熟悉 openEuler 操作系统相关情况。 +- 有 AI 对话使用经验。 + +## 修改记录 + +| 文档版本 | 发布日期 | 修改说明 | +|--------|------------|----------------| +| 03 | 2024-09-19 | 更新新版界面。 | +| 02 | 2024-05-13 | 优化智能对话操作指引。 | +| 01 | 2024-01-28 | 第一次正式发布。 | + +## 介绍 + +### 免责声明 + +- 使用过程中涉及的非工具本身验证功能所用的用户名和密码,不作他用,且不会被保存在系统环境中。 +- 在您进行对话或操作前应当确认您为应用程序的所有者或已获得所有者的充足授权同意。 +- 对话结果中可能包含您所分析应用的内部信息和相关数据,请妥善管理。 +- 除非法律法规或双方合同另有规定,华为公司对分析结果不做任何明示或暗示的声明和保证,不对分析结果的适销性、满意度、非侵权性或特定用途适用性等作出任何保证或者承诺。 +- 您根据分析记录所采取的任何行为均应符合法律法规的要求,并由您自行承担风险。 +- 未经所有者授权,任何个人或组织均不得使用应用程序及相关分析记录从事任何活动。华为公司不对由此造成的一切后果负责,亦不承担任何法律责任。必要时,将追究其法律责任。 + +### openEuler Copilot System 简介 + +openEuler Copilot System 是一个基于 openEuler 操作系统的人工智能助手,可以帮助用户解决各种技术问题,提供技术支持和咨询服务。它使用了最先进的自然语言处理技术和机器学习算法,能够理解用户的问题并提供相应的解决方案。 + +### 场景内容 + +1. OS 领域通用知识:openEuler Copilot System 可以咨询 Linux 常规知识、上游信息和工具链介绍和指导。 +2. openEuler 专业知识:openEuler Copilot System 可以咨询 openEuler 社区信息、技术原理和使用指导。 +3. openEuler 扩展知识:openEuler Copilot System 可以咨询 openEuler 周边硬件特性知识和ISV、OSV相关信息。 +4. openEuler 应用案例:openEuler Copilot System 可以提供 openEuler 技术案例、行业应用案例。 +5. shell 命令生成:openEuler Copilot System 可以帮助用户生成单条 shell 命令或者复杂命令。 + +总之,openEuler Copilot System 可以应用于各种场景,帮助用户提高工作效率和了解 Linux、openEuler 等的相关知识。 + +### 访问和使用 + +openEuler Copilot System 通过网址访问 Web 网页进行使用。账号注册与登录请参考[注册与登录](./注册与登录.md)。使用方法请参考[智能问答使用指南](./智能问答使用指南.md)。 + +### 界面说明 + +#### 界面分区 + +openEuler Copilot System 界面主要由如图 1 所示的区域组成,各个区域的作用如表 1 所示。 + +- 图 1 openEuler Copilot System 界面 +![Copilot 界面](./pictures/main-page-sections.png) + +- 表 1 openEuler Copilot System 首页界面分区说明 + +| 区域 | 名称 | 说明 | +|-----|------------|----------------------------------------------------------------| +| 1 | 设置管理区 | 提供账号登录和退出操作入口和明亮/黑暗模式切换功能 | +| 2 | 对话管理区 | 用于用户新建对话、对话历史记录管理和对话历史记录批量删除操作 | +| 3 | 对话区 | 用于用户和 openEuler Copilot System 的对话聊天 | +| 4 | 服务协议和隐私政策区 | 提供查看服务协议和隐私政策入口 | diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\346\231\272\350\203\275\346\217\222\344\273\266\347\256\200\344\273\213.md" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\346\231\272\350\203\275\346\217\222\344\273\266\347\256\200\344\273\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..3a37dc9384dcc2080ceb7a687e94e9700e4513eb --- /dev/null +++ "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\346\231\272\350\203\275\346\217\222\344\273\266\347\256\200\344\273\213.md" @@ -0,0 +1,19 @@ +# 智能插件 + +## 使用方法 + +1. 如图所示,在输入框左上角可以选择插件,点击显示插件列表。 + + ![智能插件](./pictures/plugin-list.png) + +2. 勾选一个插件,然后提问。 + + ![智能插件](./pictures/plugin-selected.png) + +3. 等待服务响应,查看返回结果。 + + 智能插件模式下,推荐问题将置顶推荐的工作流,蓝色文字为对应插件名称,点击后可快捷追问。 + + ![智能插件](./pictures/plugin-suggestion.png) + + ![智能插件](./pictures/plugin-result.png) diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\346\231\272\350\203\275\351\227\256\347\255\224\344\275\277\347\224\250\346\214\207\345\215\227.md" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\346\231\272\350\203\275\351\227\256\347\255\224\344\275\277\347\224\250\346\214\207\345\215\227.md" new file mode 100644 index 0000000000000000000000000000000000000000..a4d0c0e270b9931d6aa1a72d0397655ac4d9c1ca --- /dev/null +++ "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\346\231\272\350\203\275\351\227\256\347\255\224\344\275\277\347\224\250\346\214\207\345\215\227.md" @@ -0,0 +1,134 @@ +# 智能问答使用指南 + +## 开始对话 + +在对话区下侧输入框即可输入对话想要提问的内容,输入 `Shift + Enter` 可进行换行,输入 `Enter` 即可发送对话提问内容,或者单击“发送”也可发送对话提问内容。 + +> **说明** +> 对话区位于页面的主体部分,如图 1 所示。 + +- 图 1 对话区 + ![对话区](./pictures/chat-area.png) + +### 多轮连续对话 + +openEuler Copilot System 智能问答支持多轮连续对话。只需要在同一个对话中继续追问即可使用,如图 2 所示。 + +- 图 2 多轮对话 + ![多轮对话](./pictures/context-support.png) + +### 重新生成 + +如遇到 AI 生成的内容有误或不完整的特殊情况,可以要求 AI 重新回答问题。单击对话回答左下侧的“重新生成”文字,可让 openEuler Copilot System 重新回答用户问题,重新回答后,在对话回答右下侧,会出现回答翻页的图标![向前翻页](./pictures/icon-arrow-prev.png)和![向后翻页](./pictures/icon-arrow-next.png),单击![向前翻页](./pictures/icon-arrow-prev.png)或![向后翻页](./pictures/icon-arrow-next.png)可查看不同的回答,如图 3 所示。 + +- 图 3 重新生成 + ![重新生成](./pictures/regenerate.png) + +### 推荐问题 + +在 AI 回答的下方,会展示一些推荐的问题,单击即可进行提问,如图 4 所示。 + +- 图 4 推荐问题 + ![推荐问题](./pictures/recommend-questions.png) + +## 管理对话 + +> **须知** +> +> 对话管理区页面左侧。 + +### 新建对话 + +单击“新建对话”按钮即可新建对话,如图 5 所示。 + +- 图 5 新建对话 + ![新建对话](./pictures/new-chat.png) + +### 对话历史记录搜索 + +在页面左侧历史记录搜索输入框输入关键词,然后单击![icon-search](./pictures/icon-search.png)即可进行对话历史记录搜索如图 6 所示。 + +- 图 6 对话历史记录搜索 + ![对话历史记录搜索](./pictures/search-history.png) + +### 对话历史记录单条管理 + +历史记录的列表位于历史记录搜索栏的下方,在每条对话历史记录的右侧,单击![编辑](./pictures/icon-edit.png)即可编辑对话历史记录的名字,如图 7 所示。 + +- 图 7 重命名历史记录 + ![重命名历史记录](./pictures/rename-session.png) + +在对话历史记录名字重新书写完成后,单击右侧![确认](./pictures/icon-confirm.png)即可完成重命名,或者单击右侧![取消](./pictures/icon-cancel.png)放弃本次重命名,如图 8 所示。 + +- 图 8 完成/取消重命名历史记录 + ![完成/取消重命名历史记录](./pictures/rename-session-confirmation.png) + +另外,单击对话历史记录右侧的删除图标,如图 9 所示,即可对删除单条对话历史记录进行二次确认,在二次确认弹出框,如图 10 所示,单击“确认”,可确认删除单条对话历史记录,或者单击“取消”,取消本次删除。 + +- 图 9 删除单条历史记录 + ![删除单条历史记录](./pictures/delete-session.png) + +- 图 10 删除单条历史记录二次确认 + ![删除单条历史记录二次确认](./pictures/delete-session-confirmation.png) + +### 对话历史记录批量删除 + +首先单击“批量删除”,如图 11 所示。 + +- 图 11 批量删除 + ![批量删除](./pictures/bulk-delete.png) + +然后可对历史记录进行选择删除,如图 12 所示。单击“全选”,即对所有历史记录选中,单击单条历史记录或历史记录左侧的选择框,可对单条历史记录进行选中。 + +- 图 12 批量删除历史记录选择 + ![批量删除历史记录选择](./pictures/bulk-delete-multi-select.png) + +最后需要对批量删除历史记录进行二次确认,如图 13 所示,单击“确认”,即删除,单击“取消”,即取消本次删除。 + +- 图 13 批量删除二次确认 + ![批量删除二次确认](./pictures/bulk-delete-confirmation.png) + +## 反馈与举报 + +在对话记录区,对话回答的右下侧,可进行对话回答反馈,如图 14 所示,单击![满意](./pictures/icon-thumb-up.png),可给对话回答点赞;单击![不满意](./pictures/icon-thumb-down.png),可以给对话回答反馈不满意的原因。 + +- 图 14 点赞和不满意反馈 + ![点赞和不满意反馈](./pictures/feedback.png) + +对于反馈不满意原因,如图 15 所示,在单击![不满意](./pictures/icon-thumb-down.png)之后,对话机器人会展示反馈内容填写的对话框,可选择相关的不满意原因的选项。 + +- 图 15 回答不满意反馈 + ![回答不满意反馈](./pictures/feedback-illegal.png) + +其中单击选择“存在错误信息”,需要填写参考答案链接和描述,如图 16 所示。 + +- 图 16 回答不满意反馈——存在错误信息 + ![回答不满意反馈——存在错误信息](./pictures/feedback-misinfo.png) + +### 举报 + +如果发现 AI 返回的内容中有违规信息,可以点击右下角按钮举报,如图 17 所示。点击举报后选择举报类型并提交,若没有合适的选项,请选择“其他”并输入原因,如图 18 所示。 + +- 图 17 举报按钮 + ![举报1](./pictures/report.png) + +- 图 18 选择举报类型 + ![举报2](./pictures/report-options.png) + +## 查看服务协议和隐私政策 + +单击文字“服务协议”,即可查看服务协议,单击文字“隐私政策”,即可查看隐私政策,如图 19、图 20 所示。 + +- 图 19 服务协议和隐私政策入口 + ![服务协议和隐私政策入口](./pictures/privacy-policy-entry.png) + +- 图 20 服务协议和隐私政策 + ![服务协议和隐私政策](./pictures/privacy-policy.png) + +## 附录 + +### 用户信息导出说明 + +#### 具体说明 + +openEuler Copilot System 后台存在用户信息导出功能,如用户需要,需主动通过 邮箱联系我们,运维会将导出的用户信息通过邮箱回送给用户。 diff --git "a/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\346\263\250\345\206\214\344\270\216\347\231\273\345\275\225.md" "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\346\263\250\345\206\214\344\270\216\347\231\273\345\275\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..9fda980c7756f599db97a97f70f79e213c4136ef --- /dev/null +++ "b/docs/user-guide/\344\275\277\347\224\250\346\214\207\345\215\227/\347\272\277\344\270\212\346\234\215\345\212\241/\346\263\250\345\206\214\344\270\216\347\231\273\345\275\225.md" @@ -0,0 +1,68 @@ +# 登录 openEuler Copilot System + +本章节以 Windows 10 操作系统安装的 Chrome 121 浏览器为例介绍登录 openEuler Copilot System 界面的操作步骤。 + +## 浏览器要求 + +浏览器要求如表 1 所示。 + +- 表 1 浏览器要求 + +| 浏览器类型 | 最低版本 | 推荐版本 | +| ----- | ----- | ----- | +| Google Chrome | 72 | 121 或更高版本 | +| Mozilla Firefox | 89 | 122 或更高版本 | +| Apple Safari | 11.0 | 16.3 或更高版本 | + +## 申请访问权限 + +访问 openEuler Copilot System 在线环境,需要依照[【GITEE AI】openEuler Copilot System 在线环境体验申请教程](https://gitee.com/openeuler/euler-copilot-framework/issues/IARUWT?from=project-issue)申请访问权限 + +## 操作步骤 + +> **须知** +> openEuler Copilot System 线上服务 (Gitee AI) 账号和 Gitee 官网账号是通用的。 + +**步骤1** 打开本地 PC 机的浏览器,在地址栏输入 [https://ai.gitee.com/apps/zhengw99/openEulerCopilotSystem](https://ai.gitee.com/apps/zhengw99/openEulerCopilotSystem),按 `Enter`。在未登录状态,进入 openEuler Copilot System,会出现登录提示弹出框,如图 1 所示。 + +- 图 1 未登录 +![未登录](./pictures/login-popup.png) + +**步骤2** 登录 openEuler Copilot System(已注册账号)。 + +打开登录界面,如图 2 所示。 + +- 图 2 登录 openEuler Copilot System +![登录 openEuler Copilot System](./pictures/gitee-login.jpg) + +## 注册 openEuler Copilot System 账号 + +> **前提条件** +> 未注册 Gitee 账号。 + +**步骤1** 进入登录页,单击“点此注册”,如图 3 所示。 + +- 图 3 点此注册 +![点此注册](./pictures/gitee-login-click2signup.jpg) + +**步骤2** 进入账号注册页,根据页面提示填写相关内容,如图 4 所示。 + +- 图 4 账号注册 +![账号注册](./pictures/gitee-signup.jpg) + +**步骤3** 按页面要求填写账号信息后,单击“立即注册”,即可注册成功。注册后即可返回登录。 + +## 退出登录 + +> **前提条件** +> 已登录 openEuler Copilot System + +**步骤1** 单击![退出登录](./pictures/icon-user.png)后,会出现“退出登录”下拉框,如图 5 所示。 + +> **说明** +> 账号管理区位于页面的右上角部分,如图 5 所示。 + +- 图 5 账号管理区 +![账号管理区](./pictures/logout.png) + +**步骤2** 单击“退出登录”即可退出登录,如图 5 所示。 diff --git "a/docs/pictures/EulerCopilot\347\225\214\351\235\242.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/WEB\347\225\214\351\235\242.png" similarity index 100% rename from "docs/pictures/EulerCopilot\347\225\214\351\235\242.png" rename to "docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/WEB\347\225\214\351\235\242.png" diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/k8s\351\233\206\347\276\244\344\270\255postgres\346\234\215\345\212\241\347\232\204\345\220\215\347\247\260.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/k8s\351\233\206\347\276\244\344\270\255postgres\346\234\215\345\212\241\347\232\204\345\220\215\347\247\260.png" new file mode 100644 index 0000000000000000000000000000000000000000..473a0006c9710c92375e226a760c3a79989312f9 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/k8s\351\233\206\347\276\244\344\270\255postgres\346\234\215\345\212\241\347\232\204\345\220\215\347\247\260.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/postgres\346\234\215\345\212\241\347\253\257\345\217\243.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/postgres\346\234\215\345\212\241\347\253\257\345\217\243.png" new file mode 100644 index 0000000000000000000000000000000000000000..cfee6d88da56bc939886caece540f7de8cf77bbc Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/postgres\346\234\215\345\212\241\347\253\257\345\217\243.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/rag_port.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/rag_port.png" new file mode 100644 index 0000000000000000000000000000000000000000..b1d93f9c9d7587aa88a27d7e0bf185586583d438 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/rag_port.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/rag\351\205\215\347\275\256\344\277\241\346\201\257\346\210\220\345\212\237.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/rag\351\205\215\347\275\256\344\277\241\346\201\257\346\210\220\345\212\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..fec3cdaa2b260e50f5523477da3e58a9e14e2130 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/rag\351\205\215\347\275\256\344\277\241\346\201\257\346\210\220\345\212\237.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\233\345\273\272\350\265\204\344\272\247\345\272\223\345\244\261\350\264\245\347\224\261\344\272\216\347\273\237\344\270\200\350\265\204\344\272\247\344\270\213\345\255\230\345\234\250\345\220\214\345\220\215\350\265\204\344\272\247\345\272\223.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\233\345\273\272\350\265\204\344\272\247\345\272\223\345\244\261\350\264\245\347\224\261\344\272\216\347\273\237\344\270\200\350\265\204\344\272\247\344\270\213\345\255\230\345\234\250\345\220\214\345\220\215\350\265\204\344\272\247\345\272\223.png" new file mode 100644 index 0000000000000000000000000000000000000000..624459821de4542b635eeffa115eeba780929a4e Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\233\345\273\272\350\265\204\344\272\247\345\272\223\345\244\261\350\264\245\347\224\261\344\272\216\347\273\237\344\270\200\350\265\204\344\272\247\344\270\213\345\255\230\345\234\250\345\220\214\345\220\215\350\265\204\344\272\247\345\272\223.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\233\345\273\272\350\265\204\344\272\247\346\210\220\345\212\237.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\233\345\273\272\350\265\204\344\272\247\346\210\220\345\212\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..3104717bfa8f6615ad6726577a24938bc29884b2 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\233\345\273\272\350\265\204\344\272\247\346\210\220\345\212\237.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\344\270\215\345\255\230\345\234\250\347\232\204\350\265\204\344\272\247\345\244\261\350\264\245.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\344\270\215\345\255\230\345\234\250\347\232\204\350\265\204\344\272\247\345\244\261\350\264\245.png" new file mode 100644 index 0000000000000000000000000000000000000000..454b9fdfa4b7f209dc370f78677a2f4e71ea49be Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\344\270\215\345\255\230\345\234\250\347\232\204\350\265\204\344\272\247\345\244\261\350\264\245.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\350\257\255\346\226\231.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\350\257\255\346\226\231.png" new file mode 100644 index 0000000000000000000000000000000000000000..d52d25d4778f6db2d2ec076d65018c40cd1da4d3 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\350\257\255\346\226\231.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\350\265\204\344\272\247\345\272\223\345\244\261\350\264\245\357\274\214\350\265\204\344\272\247\344\270\213\344\270\215\345\255\230\345\234\250\345\257\271\345\272\224\350\265\204\344\272\247\345\272\223.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\350\265\204\344\272\247\345\272\223\345\244\261\350\264\245\357\274\214\350\265\204\344\272\247\344\270\213\344\270\215\345\255\230\345\234\250\345\257\271\345\272\224\350\265\204\344\272\247\345\272\223.png" new file mode 100644 index 0000000000000000000000000000000000000000..82ed79c0154bd8e406621440c4e4a7caaab7e06e Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\350\265\204\344\272\247\345\272\223\345\244\261\350\264\245\357\274\214\350\265\204\344\272\247\344\270\213\344\270\215\345\255\230\345\234\250\345\257\271\345\272\224\350\265\204\344\272\247\345\272\223.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\350\265\204\344\272\247\346\210\220\345\212\237.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\350\265\204\344\272\247\346\210\220\345\212\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..7dd2dea945f39ada1d7dd053d150a995b160f203 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\210\240\351\231\244\350\265\204\344\272\247\346\210\220\345\212\237.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\273\272\347\253\213\350\265\204\344\272\247\345\272\223.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\273\272\347\253\213\350\265\204\344\272\247\345\272\223.png" new file mode 100644 index 0000000000000000000000000000000000000000..84737b4185ce781d7b32ab42d39b8d2452138dad Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\345\273\272\347\253\213\350\265\204\344\272\247\345\272\223.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\214\207\345\256\232\344\270\215\345\255\230\345\234\250\347\232\204\350\265\204\344\272\247\345\210\233\345\273\272\350\265\204\344\272\247\345\272\223\345\244\261\350\264\245.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\214\207\345\256\232\344\270\215\345\255\230\345\234\250\347\232\204\350\265\204\344\272\247\345\210\233\345\273\272\350\265\204\344\272\247\345\272\223\345\244\261\350\264\245.png" new file mode 100644 index 0000000000000000000000000000000000000000..be89bdfde2518bba3941eee5d475f52ad9124343 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\214\207\345\256\232\344\270\215\345\255\230\345\234\250\347\232\204\350\265\204\344\272\247\345\210\233\345\273\272\350\265\204\344\272\247\345\272\223\345\244\261\350\264\245.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\225\260\346\215\256\345\272\223\345\210\235\345\247\213\345\214\226.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\225\260\346\215\256\345\272\223\345\210\235\345\247\213\345\214\226.png" new file mode 100644 index 0000000000000000000000000000000000000000..27530840aaa5382a226e1ed8baea883895d9d75e Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\225\260\346\215\256\345\272\223\345\210\235\345\247\213\345\214\226.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\225\260\346\215\256\345\272\223\351\205\215\347\275\256\344\277\241\346\201\257\346\210\220\345\212\237.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\225\260\346\215\256\345\272\223\351\205\215\347\275\256\344\277\241\346\201\257\346\210\220\345\212\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..aa04e6f7f0648adfca1240c750ca5b79b88da5f9 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\225\260\346\215\256\345\272\223\351\205\215\347\275\256\344\277\241\346\201\257\346\210\220\345\212\237.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\227\240\350\265\204\344\272\247\346\227\266\346\237\245\350\257\242\350\265\204\344\272\247.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\227\240\350\265\204\344\272\247\346\227\266\346\237\245\350\257\242\350\265\204\344\272\247.png" new file mode 100644 index 0000000000000000000000000000000000000000..74905172c0c0a0acc4c4d0e35efd2493dc421c4e Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\227\240\350\265\204\344\272\247\346\227\266\346\237\245\350\257\242\350\265\204\344\272\247.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\237\245\347\234\213\346\226\207\346\241\243\344\272\247\347\224\237\347\211\207\346\256\265\346\200\273\346\225\260\345\222\214\344\270\212\344\274\240\346\210\220\345\212\237\346\200\273\346\225\260.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\237\245\347\234\213\346\226\207\346\241\243\344\272\247\347\224\237\347\211\207\346\256\265\346\200\273\346\225\260\345\222\214\344\270\212\344\274\240\346\210\220\345\212\237\346\200\273\346\225\260.png" new file mode 100644 index 0000000000000000000000000000000000000000..432fbfcd02f6d2220e7d2a8512aee893d67be24d Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\237\245\347\234\213\346\226\207\346\241\243\344\272\247\347\224\237\347\211\207\346\256\265\346\200\273\346\225\260\345\222\214\344\270\212\344\274\240\346\210\220\345\212\237\346\200\273\346\225\260.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\237\245\350\257\242\345\205\250\351\203\250\350\257\255\346\226\231.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\237\245\350\257\242\345\205\250\351\203\250\350\257\255\346\226\231.png" new file mode 100644 index 0000000000000000000000000000000000000000..a4f4ea8a3999a9ab659ccd9ea39b80b21ff46e84 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\237\245\350\257\242\345\205\250\351\203\250\350\257\255\346\226\231.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\237\245\350\257\242\350\265\204\344\272\247.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\237\245\350\257\242\350\265\204\344\272\247.png" new file mode 100644 index 0000000000000000000000000000000000000000..675b40297363664007f96948fb21b1cb90d6beea Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\346\237\245\350\257\242\350\265\204\344\272\247.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\216\267\345\217\226\346\225\260\346\215\256\345\272\223pod\345\220\215\347\247\260.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\216\267\345\217\226\346\225\260\346\215\256\345\272\223pod\345\220\215\347\247\260.png" new file mode 100644 index 0000000000000000000000000000000000000000..8fc0c988e8b3830c550c6be6e42b88ac13448d1a Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\216\267\345\217\226\346\225\260\346\215\256\345\272\223pod\345\220\215\347\247\260.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\257\255\346\226\231\344\270\212\344\274\240\346\210\220\345\212\237.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\257\255\346\226\231\344\270\212\344\274\240\346\210\220\345\212\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..5c897e9883e868bf5160d92cb106ea4e4e9bc356 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\257\255\346\226\231\344\270\212\344\274\240\346\210\220\345\212\237.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\257\255\346\226\231\345\210\240\351\231\244\345\244\261\350\264\245\357\274\214\346\234\252\346\237\245\350\257\242\345\210\260\347\233\270\345\205\263\350\257\255\346\226\231.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\257\255\346\226\231\345\210\240\351\231\244\345\244\261\350\264\245\357\274\214\346\234\252\346\237\245\350\257\242\345\210\260\347\233\270\345\205\263\350\257\255\346\226\231.png" new file mode 100644 index 0000000000000000000000000000000000000000..407e49b929b7ff4cf14703046a4ba0bfe1bb441e Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\257\255\346\226\231\345\210\240\351\231\244\345\244\261\350\264\245\357\274\214\346\234\252\346\237\245\350\257\242\345\210\260\347\233\270\345\205\263\350\257\255\346\226\231.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\257\255\346\226\231\346\237\245\350\257\242\346\210\220\345\212\237.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\257\255\346\226\231\346\237\245\350\257\242\346\210\220\345\212\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..a4f4ea8a3999a9ab659ccd9ea39b80b21ff46e84 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\257\255\346\226\231\346\237\245\350\257\242\346\210\220\345\212\237.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\344\270\213\346\234\252\346\237\245\350\257\242\345\210\260\350\265\204\344\272\247\345\272\223.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\344\270\213\346\234\252\346\237\245\350\257\242\345\210\260\350\265\204\344\272\247\345\272\223.png" new file mode 100644 index 0000000000000000000000000000000000000000..45ab521ec5f5afbd81ad54f023aae3b7a867dbf2 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\344\270\213\346\234\252\346\237\245\350\257\242\345\210\260\350\265\204\344\272\247\345\272\223.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\344\270\213\346\237\245\350\257\242\350\265\204\344\272\247\345\272\223\346\210\220\345\212\237.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\344\270\213\346\237\245\350\257\242\350\265\204\344\272\247\345\272\223\346\210\220\345\212\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..90ed5624ae93ff9784a750514c53293df4e961f0 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\344\270\213\346\237\245\350\257\242\350\265\204\344\272\247\345\272\223\346\210\220\345\212\237.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\345\210\233\345\273\272\346\210\220\345\212\237.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\345\210\233\345\273\272\346\210\220\345\212\237.png" new file mode 100644 index 0000000000000000000000000000000000000000..7b2cc38a931c9c236517c14c86fa93e3eb2b6dcd Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\345\210\233\345\273\272\346\210\220\345\212\237.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\345\210\240\351\231\244\345\244\261\350\264\245\357\274\214\344\270\215\345\255\230\345\234\250\350\265\204\344\272\247.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\345\210\240\351\231\244\345\244\261\350\264\245\357\274\214\344\270\215\345\255\230\345\234\250\350\265\204\344\272\247.png" new file mode 100644 index 0000000000000000000000000000000000000000..1365a8d69467dec250d3451ac63e2615a2194c18 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\345\210\240\351\231\244\345\244\261\350\264\245\357\274\214\344\270\215\345\255\230\345\234\250\350\265\204\344\272\247.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\345\210\240\351\231\244\346\210\220\345\212\237png.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\345\210\240\351\231\244\346\210\220\345\212\237png.png" new file mode 100644 index 0000000000000000000000000000000000000000..1bd944264baa9369e6f8fbfd04cabcd12730c0e9 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\345\210\240\351\231\244\346\210\220\345\212\237png.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\346\237\245\350\257\242\345\244\261\350\264\245\357\274\214\344\270\215\345\255\230\345\234\250\350\265\204\344\272\247.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\346\237\245\350\257\242\345\244\261\350\264\245\357\274\214\344\270\215\345\255\230\345\234\250\350\265\204\344\272\247.png" new file mode 100644 index 0000000000000000000000000000000000000000..58bcd320e145dd29d9e5d49cb6d86964ebb83b51 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\350\265\204\344\272\247\345\272\223\346\237\245\350\257\242\345\244\261\350\264\245\357\274\214\344\270\215\345\255\230\345\234\250\350\265\204\344\272\247.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\205\215\347\275\256\346\230\240\345\260\204\344\270\255\351\227\264\345\261\202.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\205\215\347\275\256\346\230\240\345\260\204\344\270\255\351\227\264\345\261\202.png" new file mode 100644 index 0000000000000000000000000000000000000000..809b785b999b6663d9e9bd41fed953925093d6bd Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\205\215\347\275\256\346\230\240\345\260\204\344\270\255\351\227\264\345\261\202.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\205\215\347\275\256\346\230\240\345\260\204\346\272\220\347\233\256\345\275\225.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\205\215\347\275\256\346\230\240\345\260\204\346\272\220\347\233\256\345\275\225.png" new file mode 100644 index 0000000000000000000000000000000000000000..62ba5f6615f18deb3d5a71fd68ee8c929638d814 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\205\215\347\275\256\346\230\240\345\260\204\346\272\220\347\233\256\345\275\225.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\205\215\347\275\256\346\230\240\345\260\204\347\233\256\346\240\207\347\233\256\345\275\225.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\205\215\347\275\256\346\230\240\345\260\204\347\233\256\346\240\207\347\233\256\345\275\225.png" new file mode 100644 index 0000000000000000000000000000000000000000..d32c672fafcb0ef665bda0bcfdce19d2df44db01 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\205\215\347\275\256\346\230\240\345\260\204\347\233\256\346\240\207\347\233\256\345\275\225.png" differ diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\207\215\345\244\215\345\210\233\345\273\272\350\265\204\344\272\247\345\244\261\350\264\245.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\207\215\345\244\215\345\210\233\345\273\272\350\265\204\344\272\247\345\244\261\350\264\245.png" new file mode 100644 index 0000000000000000000000000000000000000000..a5ecd6b65abc97320e7467f00d82ff1fd9bf0e44 Binary files /dev/null and "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272/\351\207\215\345\244\215\345\210\233\345\273\272\350\265\204\344\272\247\345\244\261\350\264\245.png" differ diff --git "a/docs/pictures/EulerCopilot\351\203\250\347\275\262\350\247\206\345\233\276.png" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\351\203\250\347\275\262\350\247\206\345\233\276.png" similarity index 100% rename from "docs/pictures/EulerCopilot\351\203\250\347\275\262\350\247\206\345\233\276.png" rename to "docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/pictures/\351\203\250\347\275\262\350\247\206\345\233\276.png" diff --git "a/docs/EulerCopilot\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" similarity index 48% rename from "docs/EulerCopilot\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" rename to "docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" index e95d5e6aebc85a4638068ca99677b75cc2ab9979..b76c4cec59b4ddaf15453e0154b4300f23e5ee92 100644 --- "a/docs/EulerCopilot\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" +++ "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" @@ -1,6 +1,8 @@ -# EulerCopilot离线部署指南 -## EulerCopilot介绍 -EulerCopilot是一款智能问答工具,使用EulerCopilot可以解决操作系统知识获取的便捷性,并且为OS领域模型赋能开发者及运维人员。作为获取操作系统知识,使能操作系统生产力工具(如A-ops/Atune/X2openEuler/EulerMaker/EulerDevops/stratovirt/iSulad等),颠覆传统命令交付方式,由传统命令交付方式向自然语义进化,并结合智能体任务规划能力,降低开发、使用操作系统特性的门槛。 +# 离线部署指南 + +## 介绍 + +openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot System 可以解决操作系统知识获取的便捷性,并且为OS领域模型赋能开发者及运维人员。作为获取操作系统知识,使能操作系统生产力工具 (如 A-Ops / A-Tune / x2openEuler / EulerMaker / EulerDevOps / StratoVirt / iSulad 等),颠覆传统命令交付方式,由传统命令交付方式向自然语义进化,并结合智能体任务规划能力,降低开发、使用操作系统特性的门槛。 ### 组件介绍 @@ -16,57 +18,70 @@ EulerCopilot是一款智能问答工具,使用EulerCopilot可以解决操作 | secret_inject | 无 | 配置文件安全复制工具 | ## 环境要求 + ### 软件要求 | 类型 | 版本要求 | 说明 | |------------| -------------------------------------|--------------------------------------| -| 操作系统 | openEuler 22.03 LTS及以上版本 | 无 | -| K3s | >= v1.30.2,带有Traefik Ingress工具 | K3s提供轻量级的 Kubernetes集群,易于部署和管理 | -| Helm | >= v3.15.3 | Helm是一个 Kubernetes的包管理工具,其目的是快速安装、升级、卸载Eulercopilot服务 | -| python | >=3.9.9 | python3.9.9以上版本为模型的下载和安装提供运行环境 | - +| 操作系统 | openEuler 22.03 LTS 及以上版本 | 无 | +| K3s | >= v1.30.2,带有 Traefik Ingress 工具 | K3s 提供轻量级的 Kubernetes 集群,易于部署和管理 | +| Helm | >= v3.15.3 | Helm 是一个 Kubernetes 的包管理工具,其目的是快速安装、升级、卸载 openEuler Copilot System 服务 | +| python | >=3.9.9 | python3.9.9 以上版本为模型的下载和安装提供运行环境 | ### 硬件要求 -| 类型 | 硬件要求 | -|----------------| ----------------------------| -| 服务器 | 1台 | +| 类型 | 硬件要求 | +|----------------| -----------------------------| +| 服务器 | 1台 | | CPU | 鲲鹏或x86_64,>= 32 cores | | RAM | >= 64GB | | 存储 | >= 500 GB | | GPU | Tesla V100 16GB,4张 | -| NPU | 910B | +| NPU | 910ProB、910B | + +注意: -注意: -1. 若无GPU或NPU资源,建议通过调用第三方openai接口的方式来实现功能。(接口样例:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions) 参考链接[API-KEY的获取与配置](https://help.aliyun.com/zh/dashscope/developer-reference/acquisition-and-configuration-of-api-key?spm=a2c4g.11186623.0.0.30e7694eaaxxGa)) -2. 调用第三方openai接口的方式不需要安装python (>=3.9.9) -3. 英伟达GPU对Docker的支持必需要新版本Docker(>= v25.4.0) +1. 若无 GPU 或 NPU 资源,建议通过调用 OpenAI 接口的方式来实现功能。(接口样例:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions) +2. 调用第三方 OpenAI 接口的方式不需要安装高版本的 python (>=3.9.9) +3. 英伟达 GPU 对 Docker 的支持必需要新版本 Docker (>= v25.4.0) ### 部署视图 -![EulerCopilot部署图](./pictures/EulerCopilot部署视图.png) -## 获取EulerCopilot -- 从EulerCopilot的官方Git仓库[euler-copilot-framework](https://gitee.com/openeuler/euler-copilot-framework)下载最新的部署仓库 -- 如果您正在使用Kubernetes,则不需要安装k3s工具。 -```bash -# 下载目录以home为例 -cd /home -git clone https://gitee.com/openeuler/euler-copilot-framework -``` +![部署图](./pictures/部署视图.png) + +## 获取 openEuler Copilot System + +- 从 openEuler Copilot System 的官方Git仓库 [euler-copilot-framework](https://gitee.com/openeuler/euler-copilot-framework) 下载最新的部署仓库 +- 如果您正在使用 Kubernetes,则不需要安装 k3s 工具。 + + ```bash + # 下载目录以 home 为例 + cd /home + ``` + + ```bash + git clone https://gitee.com/openeuler/euler-copilot-framework.git + ``` ## 环境准备 + 如果您的服务器、硬件、驱动等全部就绪,即可启动环境初始化流程,以下部署步骤在无公网环境执行。 ### 1. 环境检查 -环境检查主要是对服务器的主机名、DNS、防火墙设置、磁盘剩余空间大小、网络、检查SELinux的设置。 + +环境检查主要是对服务器的主机名、DNS、防火墙设置、磁盘剩余空间大小、网络、检查 SELinux 的设置。 + - 主机名设置 -在Shell中运行如下命令: + 在Shell中运行如下命令: + ```bash cat /etc/hostname echo "主机名" > /etc/hostname ``` + - 系统DNS设置:需要给当前主机设置有效的DNS - 防火墙设置 + ```bash # 查看防火墙状态 systemctl status firewalld @@ -76,7 +91,9 @@ git clone https://gitee.com/openeuler/euler-copilot-framework systemctl stop firewalld systemctl disable firewalld ``` + - SELinux设置 + ```bash # 需要关闭selinux,可以临时关闭或永久关闭 # 永久关闭SELinux @@ -84,8 +101,11 @@ git clone https://gitee.com/openeuler/euler-copilot-framework # 临时关闭 setenforce 0 ``` + ### 2. 文件下载 -- 模型文件bge-reranker-large、bge-mixed-model下载 [模型文件下载链接](https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/) + +- 模型文件 bge-reranker-large、bge-mixed-model 下载 [模型文件下载链接](https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/) + ```bash mkdir -p /home/EulerCopilot/models cd /home/EulerCopilot/models @@ -93,27 +113,36 @@ git clone https://gitee.com/openeuler/euler-copilot-framework wget https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/bge-mixed-model.tar.gz wget https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/bge-reranker-large.tar.gz ``` -- 下载分词工具text2vec-base-chinese-paraphrase [分词工具下载链接](https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/) + +- 下载分词工具 text2vec-base-chinese-paraphrase [分词工具下载链接](https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/) + ```bash mkdir -p /home/EulerCopilot/text2vec cd /home/EulerCopilot/text2vec wget https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/text2vec-base-chinese-paraphrase.tar.gz ``` + - 镜像包下载 - x86或arm架构的EulerCopilot服务的各组件镜像单独提供 ### 3. 安装部署工具 -#### 3.1 安装docker -英伟达GPU环境对Docker的支持必需要新版本Docker(>= v25.4.0),需要检查docker版本是否满足,如不满足,请升级docker版本,其余环境不需要升级docker版本。 -#### 3.2 安装K3s并导入镜像 -- 安装SELinux配置文件 +#### 3.1 安装 Docker + +如需要基于 GPU/NPU 部署大模型,需要检查 Docker 版本是否满足>= v25.4.0 ,如不满足,请升级 Docker 版本 + +#### 3.2 安装 K3s 并导入镜像 + +- 安装 SELinux 配置文件 + ```bash yum install -y container-selinux selinux-policy-base # packages里有k3s-selinux-0.1.1-rc1.el7.noarch.rpm的离线包 rpm -i https://rpm.rancher.io/k3s-selinux-0.1.1-rc1.el7.noarch.rpm ``` -- x86架构安装k3s + +- x86 架构安装 k3s + ```bash # 在有网络的环境上获取k3s相关包,以v1.30.3+k3s1示例 wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s @@ -127,7 +156,9 @@ git clone https://gitee.com/openeuler/euler-copilot-framework INSTALL_K3S_SKIP_DOWNLOAD=true ./k3s-install.sh export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` -- arm架构安装k3s + +- arm 架构安装 k3s + ```bash # 在有网络的环境上获取k3s相关包,以v1.30.3+k3s1示例 wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-arm64 @@ -141,89 +172,158 @@ git clone https://gitee.com/openeuler/euler-copilot-framework INSTALL_K3S_SKIP_DOWNLOAD=true ./k3s-install.sh export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` + - 导入镜像 + ```bash # 导入已下载的镜像文件 k3s ctr image import $(镜像文件) ``` -#### 3.3 安装Helm工具 -- x86_64架构 +#### 3.3 安装 Helm 工具 + +- x86_64 架构 + ```bash wget https://get.helm.sh/helm-v3.15.0-linux-amd64.tar.gz tar -xzf helm-v3.15.0-linux-amd64.tar.gz mv linux-amd64/helm /usr/sbin rm -rf linux-amd64 ``` -- arm64架构 + +- arm64 架构 + ```bash wget https://get.helm.sh/helm-v3.15.0-linux-arm64.tar.gz tar -xzf helm-v3.15.0-linux-arm64.tar.gz mv linux-arm64/helm /usr/sbin rm -rf linux-arm64 ``` + #### 3.4 大模型准备 + 提供第三方openai接口或基于硬件本都部署大模型,本地部署大模型可参考附录部分。 -## EulerCopilot安装 +## 安装 + +您的环境现已就绪,接下来即可启动 openEuler Copilot System 的安装流程。 + +### 1. 编辑配置文件 -您的环境现已就绪,接下来即可启动EulerCopilot的安装流程。 +```bash +# 下载目录以home为例,进入 openEuler Copilot System 仓库的Helm配置文件目录 +cd /home/euler-copilot-framework +``` -### 1. 编辑配置文件 ```bash -# 下载目录以home为例,进入euler-copilot-framework仓库的Helm配置文件目录 -root@openeuler:~# cd /home/euler-copilot-framework -root@openeuler:/home/euler-copilot-framework# ll +ll +``` + +``` total 28 drwxr-xr-x 3 root root 4096 Aug 28 17:45 docs/ drwxr-xr-x 5 root root 4096 Aug 28 17:45 euler-copilot-helm/ -root@openeuler:/home/euler-copilot-framework# cd euler-copilot-helm/chart -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart# ll +``` + +```bash +# 进入Helm配置文件目录 +cd euler-copilot-helm/chart +``` + +```bash +ll +``` + +``` total 28 -rw-r--r-- 1 root root 135 Aug 28 17:45 Chart.yaml drwxr-xr-x 10 root root 4096 Aug 28 17:55 templates/ -rw-r--r-- 1 root root 6572 Aug 30 12:05 values.yaml +``` + +编辑 values.yaml 配置文件,请结合 YAML 中的注释部分进行修改 + +```bash +vim values.yaml +``` + +注意事项: + +- 修改 domain 为服务器的实际 IP 地址。 +- 更新 OpenAI 的 URL、Key、Model 和 Max Token 为部署所需的值。 +- 根据实际部署情况,更新 vectorize、rag、framework 中的 BGE 模型路径、文档向量化和分词工具路径。 + +如需在内网环境中修改 Traefik 配置以转发端口,请继续下一步。 + +```bash +# 进入SSL配置目录,准备修改Traefik配置 +cd chart_ssl/ +``` + +```bash +ll +``` -# 编辑values.yaml配置文件, 请结合注释部分进行修改 -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart# vim values.yaml -# 注意事项: -# - 修改domain为服务器的实际IP地址。 -# - 更新OpenAI的URL、Key、Model和Max Token为部署所需的值。 -# - 根据实际部署情况,更新vectorize、rag、framework中的BGE模型路径、文档向量化和分词工具路径。 -# - 如需在内网环境中修改Traefik配置以转发端口,请继续下一步。 -# 1. 进入SSL配置目录 -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm# cd chart_ssl/ -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart_ssl# ll +``` total 20 -rw-r--r-- 1 root root 250 Aug 28 17:45 traefik-config.yml -rw-r--r-- 1 root root 212 Aug 28 17:45 traefik-secret.yaml -rw-r--r-- 1 root root 175 Aug 28 17:45 traefik-tlsstore.yaml -# 2. 修改traefik-config.yml以转发HTTPS端口(如果需要) -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart_ssl/# vim traefik-config.yml -# 修改部分示例: -# websecure: -# exposedPort: 8080 # 将此处的端口号修改为期望转发的HTTPS端口 +``` + +修改 traefik-config.yml 以转发HTTPS端口(如果需要) + +```bash +vim traefik-config.yml +``` + +修改部分示例: + +``` +websecure: + exposedPort: 8080 # 将此处的端口号修改为期望转发的HTTPS端口 +``` + +应用修改后的 Traefik 配置 + +```bash +kubectl apply -f traefik-config.yml +``` + +### 2. 安装 openEuler Copilot System + +创建 namespace + +```bash +cd /home/euler-copilot-framework/euler-copilot-helm/chart +``` + +```bash +kubectl create namespace euler-copilot +``` + +设置环境变量 -# 3. 应用修改后的Traefik配置 -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart_ssl/# kubectl apply -f traefik-config.yml +```bash +export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` -### 2. 安装EulerCopilot +安装 openEuler Copilot System + ```bash -# 创建namespace -root@openeuler:~# cd /home/euler-copilot-framework/euler-copilot-helm/chart -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart# kubectl create namespace euler-copilot -# 设置环境变量 -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart# export KUBECONFIG=/etc/rancher/k3s/k3s.yaml -# 安装EulerCopilot -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart# helm install -n euler-copilot service . +helm install -n euler-copilot service . ``` -### 3. 查看pod状态 +### 3. 查看 Pod 状态 + +镜像拉取过程可能需要大约一分钟的时间,请耐心等待。 +部署成功后,所有 Pod 的状态应显示为 Running。 + ```bash -# 镜像拉取过程可能需要大约一分钟的时间,请耐心等待。 -# 部署成功后,所有Pod的状态应显示为Running。 -root@openeuler:~# kubectl -n euler-copilot get pods +kubectl -n euler-copilot get pods +``` + +``` NAME READY STATUS RESTARTS AGE framework-deploy-service-bb5b58678-jxzqr 2/2 Running 0 16d mysql-deploy-service-c7857c7c9-wz9gn 1/1 Running 0 17d @@ -232,10 +332,19 @@ rag-deploy-service-5b7887644c-sm58z 2/2 Running 0 110m redis-deploy-service-f8866b56-kj9jz 1/1 Running 0 17d vectorize-deploy-service-57f5f94ccf-sbhzp 2/2 Running 0 17d web-deploy-service-74fbf7999f-r46rg 1/1 Running 0 2d +``` + +进入到 postgres 数据库,执行扩展命令 + +```bash +kubectl -n euler-copilot exec -it pgsql-deploy-service-86b4dc4899-ppltc -- bash +``` -# 进入到postgres数据库,执行扩展命令 -root@openeuler:~# kubectl -n euler-copilot exec -it pgsql-deploy-service-86b4dc4899-ppltc -- bash -root@pgsql-deploy-b4cc79794-qn8zd:/tmp# psql -U postgres -d postgres +```bash +psql -U postgres -d postgres +``` + +``` psql (16.2 (Debian 16.2-1.pgdg120+2)) 输入 "help" 来获取帮助信息. postgres=# CREATE EXTENSION zhparser; @@ -243,26 +352,52 @@ postgres=# CREATE EXTENSION vector; postgres=# CREATE TEXT SEARCH CONFIGURATION zhparser (PARSER = zhparser); postgres=# ALTER TEXT SEARCH CONFIGURATION zhparser ADD MAPPING FOR n,v,a,i,e,l WITH simple; postgres=# exit -root@pgsql-deploy-b4cc79794-qn8zd:/tmp# exit -exit +``` + +退出容器 -# 注意:如果Pod状态出现失败,建议按照以下步骤进行排查 -# 1.查看Kubernetes集群的事件(Events),以获取更多关于Pod失败的上下文信息 -root@openeuler:~# kubectl -n euler-copilot get events -# 2.查看镜像拉取是否成功 -root@openeuler:~# k3s crictl images -# 3.检查EulerCopilot的 rag的Pod日志,以确定是否有错误信息或异常行为。 -root@openeuler:~# kubectl logs rag-deploy-service-5b7887644c-sm58z -n euler-copilot -# 4.验证Kubernetes集群的资源状态,确保没有资源限制或配额问题导致Pod无法正常运行。 -root@openeuler:~# df -h -# 5.如果未拉取成且镜像大小为0,请检查是否是k3s版本未满足要求,低于v1.30.2 -root@openeuler:~# k3s -v +```bash +exit ``` + +注意:如果 Pod 状态出现失败,建议按照以下步骤进行排查 + +1. 查看 Kubernetes 集群的事件 (Events),以获取更多关于 Pod 失败的上下文信息 + + ```bash + kubectl -n euler-copilot get events + ``` + +2. 查看镜像拉取是否成功 + + ```bash + k3s crictl images + ``` + +3. 检查 RAG 的 Pod 日志,以确定是否有错误信息或异常行为。 + + ```bash + kubectl logs rag-deploy-service-5b7887644c-sm58z -n euler-copilot + ``` + +4. 验证 Kubernetes 集群的资源状态,确保没有资源限制或配额问题导致 Pod 无法正常运行。 + + ```bash + df -h + ``` + +5. 如果未拉取成且镜像大小为0,请检查是否是 k3s 版本未满足要求,低于 v1.30.2 + + ```bash + k3s -v + ``` + ## 验证安装 -访问EulerCopilot的Web界面,请在浏览器中输入https://$(host_ip):8080(其中port默认值为8080,若更改则需相应调整)。 +访问 openEuler Copilot System 网页,请在浏览器中输入 https://$(host_ip):8080 (其中port默认值为8080,若更改则需相应调整)。 ### 1. 创建登录账号密码 + ``` bash # 首次登录触发mysql数据库生成user表 # 1.生成加密后的账号密码 @@ -276,105 +411,190 @@ Type "help", "copyright", "credits" or "license" for more information. # 2.插入账号密码到mysql数据库 root@openeuler:~# kubectl -n euler-copilot exec -it mysql-deploy-service-c7857c7c9-wz9gn -- bash bash-5.1# mysql -uroot -p8ZMTsY4@dgWZqoM6 -# mysql的登录密码可在euler-copilot-framework/euler-copilot-helm/chart/values.yaml的mysql章节查看 +# 密码在euler-copilot-frameworkeuler-copilot-helm/chart/values.yaml的mysql章节查看 mysql> use euler_copilot; mysql> insert into user(user_sub, passwd) values ("[用户名]", "[加密后的密码]"); mysql> exit; ``` + ### 2. 问答验证 -恭喜您,EulerCopilot的部署已完成!现在,您可以开启智能问答的非凡体验之旅了。 +恭喜您,openEuler Copilot System 的部署已完成!现在,您可以开启智能问答的非凡体验之旅了。 -![EulerCopilot界面.png](./pictures/EulerCopilot界面.png) +![Web 界面](./pictures/WEB界面.png) ## 构建专有领域智能问答 -### 1. 构建openEuler专业知识领域的智能问答 - 1. 修改values.yaml的pg的镜像仓为`pg-data` - 2. 修改values.yaml的rag部分的字段`knowledgebaseID: openEuler_2bb3029f` - 3. 将`vim euler-copilot-framework/euler-copilot-helm/chart/templates/pgsql/pgsql-deployment.yaml`的volume相关字段注释 - 4. 进入`cd euler-copilot-framework/euler-copilot-helm/chart`,执行更新服务`helm upgrade -n euler-copilot server .` - 5. 进入网页端进行openEuler专业知识领域的问答 + +### 1. 构建 openEuler 专业知识领域的智能问答 + + 1. 修改 values.yaml 的 pg 的镜像仓为 `pg-data` + 2. 修改 values.yaml 的 rag 部分的字段 `knowledgebaseID: openEuler_2bb3029f` + 3. 将 `vim euler-copilot-frameworkeuler-copilot-helm/chart/templates/pgsql/pgsql-deployment.yaml` 的 volume 相关字段注释 + 4. 进入 `cd euler-copilot-frameworkeuler-copilot-helm/chart`,执行更新服务 `helm upgrade -n euler-copilot service .` + 5. 进入网页端进行 openEuler 专业知识领域的问答 + ### 2. 构建项目专属知识领域智能问答 -详细信息请参考文档 [EulerCopilot本地语料上传指南](https://gitee.com/openeuler/euler-copilot-framework/blob/master/docs/EulerCopilot%E6%9C%AC%E5%9C%B0%E8%AF%AD%E6%96%99%E4%B8%8A%E4%BC%A0%E6%8C%87%E5%8D%97.md) + +详细信息请参考文档 [本地资产库构建指南](https://gitee.com/openeuler/euler-copilot-framework/blob/master/docs/部署指南/本地资产库构建指南.md) ## 附录 + ### 大模型准备 -#### GPU环境 + +#### GPU 环境 + 参考以下方式进行部署 -```bash -# 1.下载模型文件: -huggingface-cli download --resume-download Qwen/Qwen1.5-14B-Chat --local-dir Qwen1.5-14B-Chat -# 2.创建终端contol -screen -S contol -python3 -m fastchat.serve.controller -# 按ctrl A+D置于后台 -# 3. 创建新终端 api -screen -S api -python3 -m fastchat.serve.openai_api_server --host 0.0.0.0 --port 30000 --api-keys sk-123456 -# 按ctrl A+D置于后台 -# 如果当前环境的python版本是3.12或者3.9可以创建python3.10的conda虚拟环境 -mkdir -p /root/py310 -conda create --prefix=/root/py310 python==3.10.14 -conda activate /root/py310 -# 4. 创建新终端worker -screen -S worker -screen -r worker -# 安装fastchat和vllm -pip install fschat vllm -# 安装依赖: -pip install fschat[model_worker] -python3 -m fastchat.serve.vllm_worker --model-path /root/models/Qwen1.5-14B-Chat/ --model-name qwen1.5 --num-gpus 8 --gpu-memory-utilization=0.7 --dtype=half -# 按ctrl A+D置于后台 -# 5. 按照如下方式配置文件,并更新服务。 -vim euler-copilot-helm/chart/values.yaml -修改如下部分 -llm: - # 开源大模型,OpenAI兼容接口 - openai: - url: "http://$(IP):30000" - key: "sk-123456" - model: qwen1.5 - max_tokens: 8192 -``` -#### NPU环境 -NPU环境部署可参考链接[MindIE安装指南](https://www.hiascend.com/document/detail/zh/mindie/10RC2/whatismindie/mindie_what_0001.html) + +1. 下载模型文件: + + ```bash + huggingface-cli download --resume-download Qwen/Qwen1.5-14B-Chat --local-dir Qwen1.5-14B-Chat + ``` + +2. 创建终端 contol + + ```bash + screen -S contol + ``` + + ```bash + python3 -m fastchat.serve.controller + ``` + + - 按 Ctrl A+D 置于后台 + +3. 创建新终端 api + + ```bash + screen -S api + ``` + + ```bash + python3 -m fastchat.serve.openai_api_server --host 0.0.0.0 --port 30000 --api-keys sk-123456 + ``` + + - 按 Ctrl A+D 置于后台 + - 如果当前环境的 Python 版本是 3.12 或者 3.9 可以创建 python3.10 的 conda 虚拟环境 + + ```bash + mkdir -p /root/py310 + ``` + + ```bash + conda create --prefix=/root/py310 python==3.10.14 + ``` + + ```bash + conda activate /root/py310 + ``` + +4. 创建新终端worker + + ```bash + screen -S worker + ``` + + ```bash + screen -r worker + ``` + + 安装 fastchat 和 vllm + + ```bash + pip install fschat vllm + ``` + + 安装依赖: + + ```bash + pip install fschat[model_worker] + ``` + + ```bash + python3 -m fastchat.serve.vllm_worker --model-path /root/models/Qwen1.5-14B-Chat/ --model-name qwen1.5 --num-gpus 8 --gpu-memory-utilization=0.7 --dtype=half + ``` + + - 按 Ctrl A+D 置于后台 + +5. 按照如下方式配置文件,并更新服务。 + + ```bash + vim euler-copilot-helm/chart/values.yaml + ``` + + 修改如下部分 + + ``` + llm: + # 开源大模型,OpenAI兼容接口 + openai: + url: "http://$(IP):30000" + key: "sk-123456" + model: qwen1.5 + max_tokens: 8192 + ``` + +#### NPU 环境 + +NPU 环境部署可参考链接 [MindIE安装指南](https://www.hiascend.com/document/detail/zh/mindie/10RC2/whatismindie/mindie_what_0001.html) ## FAQ -### 1. huggingface使用报错? -```bash + +### 1. huggingface 使用报错? + +``` File "/usr/lib/python3.9/site-packages/urllib3/connection.py", line 186, in _new_conn raise NewConnectionError( urllib3.exceptions.eanconectionError: : Failed to establish a new conmection: [Errno 101] Network is unreachable ``` + - 解决办法 + ```bash pip3 install -U huggingface_hub +``` + +```bash export HF_ENDPOINT=https://hf-mirror.com ``` -### 2. 如何在rag容器中调用获取问答结果的接口? + +### 2. 如何在 RAG 容器中调用获取问答结果的接口? + +- 请先进入到 RAG 对应 Pod + ```bash -# 请先进入到RAG pod -curl -k -X POST "http://localhost:8005/kb/get_answer" -H "Content-Type: application/json" -d '{ - "question": "", - "kb_sn": "default_test", +curl -k -X POST "http://localhost:8005/kb/get_answer" -H "Content-Type: application/json" -d '{ \ + "question": "", \ + "kb_sn": "default_test", \ "fetch_source": true }' ``` -### 3. 执行helm upgrade报错 -```bash + +### 3. 执行 `helm upgrade` 报错 + +``` Error: INSTALLATI0N FAILED: Kuberetes cluster unreachable: Get "http:/localhost:880/version": dial tcp [:1:8089: conect: conection refused ``` + - 解决办法 + ```bash export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` -### 4. 无法查看pod的log? -```bash + +### 4. 无法查看 Pod 日志? + +``` [root@localhost euler-copilot]# kubectl logs rag-deployservice65c75c48d8-44vcp-n euler-copilotDefaulted container "rag" out of: rag.rag-copy secret (init)Error from server: Get "https://172.21.31.11:10250/containerlogs/euler copilot/rag deploy"service 65c75c48d8-44vcp/rag": Forbidden ``` + - 解决办法 + 如果设置了代理,需要将本机的网络 IP 从代理中剔除 + ```bash -# 如果设置了代理,需要将本机的网络IP从代理中剔除 -[root@localhost agent]# cat /etc/systemd/system/k3s.service.env +cat /etc/systemd/system/k3s.service.env +``` + +``` http_proxy="http://172.21.60.51:3128" https_proxy="http://172.21.60.51:3128" no_proxy=172.21.31.10 # 代理中剔除本机IP diff --git "a/docs/EulerCopilot\346\234\254\345\234\260\350\257\255\346\226\231\344\270\212\344\274\240\346\214\207\345\215\227.md" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272\346\214\207\345\215\227.md" similarity index 31% rename from "docs/EulerCopilot\346\234\254\345\234\260\350\257\255\346\226\231\344\270\212\344\274\240\346\214\207\345\215\227.md" rename to "docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272\346\214\207\345\215\227.md" index a617e1614bab7c949be325d334aa4af502f96ae5..acc9692564b84ea9e6db8d6e66bb55450b7cfec9 100644 --- "a/docs/EulerCopilot\346\234\254\345\234\260\350\257\255\346\226\231\344\270\212\344\274\240\346\214\207\345\215\227.md" +++ "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272\346\214\207\345\215\227.md" @@ -1,44 +1,72 @@ -# 本地语料上传指南 -- RAG是一个检索增强的模块,该指南主要是为rag提供命令行的方式进行资产管理、资产库管理和语料资产管理; +# 本地资产库构建指南 + +- RAG 是一个检索增强的模块,该指南主要是为rag提供命令行的方式进行数据库管理、资产管理、资产库管理和语料资产管理; + 对于数据库管理提供了清空数据库、初始化数据库等功能; 对于资产管理提供了资产创建、资产查询和资产删除等功能; 对于资产库管理提供了资产库创建、资产库查询和资产库删除等功能; - 对于语料资产管理提供了语料上传、语料查询和语料删除等功能,且语料资产管理的语料上传部分依赖语料预处理功能; - 对于语料预处理功能提供了文档内容解析、文档格式转换和文档切功能。 + 对于语料资产管理提供了语料上传、语料查询和语料删除等功能。 +- 当前指南面向管理员进行编写,对于管理员而言,可以拥有多个资产,一个资产包含多个资产库(不同资产库的使用的向量化模型可以不同),一个资产库对应一个语料资产。 +- 本地语料上传指南是用户构建项目专属语料的指导,当前支持 docx、pdf、markdown、txt 和 xlsx 文件上传,推荐使用 docx 格式上传。 -- rag当前仅面向管理员进行资产管理,对于管理员而言,可以拥有多个资产,一个资产包含多个资产库(不同资产库的使用的向量化模型可能不同),一个资产库对应一个语料资产。 +## 准备工作 -- 本地语料上传指南是用户构建项目专属语料的指导,当前支持docx、pdf、markdown和txt文件上传,推荐使用docx上传。 +- RAG 中关于语料上传目录挂载的配置: + +将本地语料保存到服务器的目录,例如 /home/docs 目录,且将 /home/data 目录权限设置为755 -## 准备工作 -1. 将本地语料保存到服务器的待向量化目录(例如将所有文档放至默认路径`/home/data/corpus`) -2. 更新EulerCopilot服务: -```bash -root@openeuler:/home/EulerCopilot/euler-copilot-helm/chart# helm upgrade -n euler-copilot service . -# 请注意:service是服务名,可根据实际修改 -``` -3. 进入到rag容器: -```bash -root@openeuler:~# kubectl -n euler-copilot get pods -NAME READY STATUS RESTARTS AGE -framework-deploy-service-bb5b58678-jxzqr 2/2 Running 0 16d -mysql-deploy-service-c7857c7c9-wz9gn 1/1 Running 0 17d -pgsql-deploy-service-86b4dc4899-ppltc 1/1 Running 0 17d -rag-deploy-service-5b7887644c-sm58z 2/2 Running 0 110m -redis-deploy-service-f8866b56-kj9jz 1/1 Running 0 17d -vectorize-deploy-service-57f5f94ccf-sbhzp 2/2 Running 0 17d -web-deploy-service-74fbf7999f-r46rg 1/1 Running 0 2d -# 进入rag pod -root@openeuler:~# kubectl -n euler-copilot exec -it rag-deploy-service-5b7887644c-sm58z -- bash -``` -4. 设置PYTHONPATH ```bash -# 设置PYTHONPATH -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ export PYTHONPATH=$(pwd) +# 设置本地存放文档目录权限为755 +chmod -R 755 /home/docs ``` + +将文件存放的源目录映射至 RAG 容器目标目录,源目录的配置在 https://gitee.com/openeuler/euler-copilot-framework/blob/master/euler-copilot-helm/chart/values.yaml 中,下面是文件中具体配置映射源目录的的配置方法: + +![配置映射源目录](./pictures/本地资产库构建/配置映射源目录.png) + +中间层的配置(链接源目录和目标目录的配置)在 https://gitee.com/openeuler/euler-copilot-framework/blob/master/euler-copilot-helm/chart/templates/rag/rag-deployment.yaml 中,下面是文件中具体映射中间层的的配置方法: + +![配置映射中间层](./pictures/本地资产库构建/配置映射中间层.png) + +目标目录的配置在 https://gitee.com/openeuler/euler-copilot-framework/blob/master/euler-copilot-helm/chart/templates/rag/rag-deployment.yaml 中,下面是文件中具体映射目标目录的的配置方法: + +![配置映射目标目录](./pictures/本地资产库构建/配置映射目标目录.png) + +- 更新 Copilot 服务: + + ```bash + root@openeuler:/home/EulerCopilot/euler-copilot-helm/chart# helm upgrade -n euler-copilot service . + # 请注意:service是服务名,可根据实际修改 + ``` + +- 进入到 RAG 容器: + + ```bash + root@openeuler:~# kubectl -n euler-copilot get pods + NAME READY STATUS RESTARTS AGE + framework-deploy-service-bb5b58678-jxzqr 2/2 Running 0 16d + mysql-deploy-service-c7857c7c9-wz9gn 1/1 Running 0 17d + pgsql-deploy-service-86b4dc4899-ppltc 1/1 Running 0 17d + rag-deploy-service-5b7887644c-sm58z 2/2 Running 0 110m + redis-deploy-service-f8866b56-kj9jz 1/1 Running 0 17d + vectorize-deploy-service-57f5f94ccf-sbhzp 2/2 Running 0 17d + web-deploy-service-74fbf7999f-r46rg 1/1 Running 0 2d + # 进入rag pod + root@openeuler:~# kubectl -n euler-copilot exec -it rag-deploy-service-5b7887644c-sm58z -- bash + ``` + +- 设置 PYTHONPATH + + ```bash + # 设置PYTHONPATH + export PYTHONPATH=$(pwd) + ``` + ## 上传语料 -### 2. 查看脚本帮助信息 + +### 查看脚本帮助信息 + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --help +python3 scripts/rag_kb_manager.pyc --help usage: rag_kb_manager.pyc [-h] --method {init_database_info,init_rag_info,init_database,clear_database,create_kb,del_kb,query_kb,create_kb_asset,del_kb_asset,query_kb_asset,up_corpus,del_corpus,query_corpus,stop_corpus_uploading_job} [--database_url DATABASE_URL] [--vector_agent_name VECTOR_AGENT_NAME] [--parser_agent_name PARSER_AGENT_NAME] @@ -79,109 +107,300 @@ optional arguments: 语料处理使用核数 ``` -### 3. 具体操作: -#### 步骤1:配置数据库和rag信息 -- 配置数据库信息 +### 具体操作 + +以下出现的命令中带**初始化**字段需要在进行资产管理前按指南中出现的相对顺序进行执行,命令中带**可重复**执字段的在后续过程中可以反复执行,命令中带**注意**字段的需谨慎执行。 + +### 步骤1:配置数据库和 RAG 信息 + +- #### 配置数据库信息(初始化) + +```bash +python3 scripts/rag_kb_manager.pyc --method init_database_info --database_url postgresql+psycopg2://postgres:123456@{dabase_url}:{databse_port}/postgres +``` + +**注意:** + +**{dabase_url}**为 k8s 集群内访问 postgres 服务的 url,请根据具体情况修改,一般为 **{postgres_servive_name}-{{ .Release.Name }}.\.svc.cluster.local** 格式,其中 **{postgres_servive_name}** 可以从 https://gitee.com/openeuler/euler-copilot-framework/blob/master/euler-copilot-helm/chart/templates/pgsql/pgsql-service.yaml 找到: + +![k8s集群中postgres服务的名称](./pictures/本地资产库构建/k8s集群中postgres服务的名称.png) + +**{{ .Release.Name }}**和**\** 为部署服务时helm安装应用时指定的 **my-release-name** 以及 **my-namespace**,一条 helm 安装应用的命令如下所示: + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method init_database_info --database_url postgresql+psycopg2://postgres:123456@pgsql-db-service:5432/postgres -# 注意: -# service为默认服务名,可根据实际修改; -# 如若需要更换数据库操作,请修改database_url,该URL是基于SQLAlchemy框架用于数据库连接的标识符。 +helm install my-release-name --namespace my-namespace path/to/chart +``` + +**database_port** 的信息可以在 https://gitee.com/openeuler/euler-copilot-framework/blob/master/euler-copilot-helm/chart/templates/pgsql/pgsql-service.yaml 中查看,以下为字段所在位置(一般为5432): + +![postgres服务端口](./pictures/本地资产库构建/postgres服务端口.png) + +数据库信息配置命令执行命令完成之后会在 scripts/config 下出现 database_info.json 文件,文件内容如下: + +```bash +{"database_url": "postgresql+psycopg2://postgres:123456@{dabase_url}:{databse_port}/postgres"} +``` + +下面是命令执行成功的截图: + +![数据库配置信息成功](./pictures/本地资产库构建/数据库配置信息成功.png) + +- #### 配置rag信息(初始化) + +```bash +python3 scripts/rag_kb_manager.pyc --method init_rag_info --rag_url http://{rag_url}:{rag_port} ``` -- 配置rag信息 + +**{rag_url}** 为 0.0.0.0,**{rag_port}** 可以从 https://gitee.com/openeuler/euler-copilot-framework/blob/master/euler-copilot-helm/chart/templates/rag/rag-service.yaml 中获取(一般为8005): + +![rag_port](./pictures/本地资产库构建/rag_port.png) + +数据库信息配置命令执行命令完成之后会在 scripts/config 下出现 rag_info.json 文件,文件内容如下: + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method init_rag_info --rag_url http://0.0.0.0:8005 -# 该命令可直接执行,8005是rag pod的默认端口 +{"rag_url": "http://{rag_url}:{rag_port}"} ``` -#### 步骤2:初始化数据库 -- 初始化数据库信息 +下面是命令执行成功的截图: + +![rag配置信息成功](./pictures/本地资产库构建/rag配置信息成功.png) + +### 步骤2:初始化数据库 + +- #### 初始化数据库表格 + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method init_database +python3 scripts/rag_kb_manager.pyc --method init_database # 注意: -# 如果有更换数据库的操作可指定参数'--vector_agent_name VECTOR_AGENT_NAME'和 '--parser_agent_name PARSER_AGENT_NAME';其中VECTOR_AGENT_NAME默认为vector, PARSER_AGENT_NAME默认为zhparser +# 对于特殊关系型数据库可指定插件参数'--vector_agent_name VECTOR_AGENT_NAME'和 '--parser_agent_name PARSER_AGENT_NAME';其中VECTOR_AGENT_NAME默认为vector, PARSER_AGENT_NAME默认为zhparser +``` + +命令执行完成之后可以进入数据库容器查看表格是否创建成功,首先获取命名空间中的所有节点名称: + +```bash +# 获取命名空间中的所有pod节点 +kubectl get pods -n euler-copilot +``` + +结果如下: + +![获取数据库pod名称](./pictures/本地资产库构建/获取数据库pod名称.png) + +使用下面命令进入数据库: + +```bash +kubectl exec -it pgsql-deploy-b4cc79794-qn8zd -n euler-copilot -- bash ``` -- 清空数据库 + +进入容器后使用下面命令进入数据库: + +```bash +root@pgsql-deploy-b4cc79794-qn8zd:/tmp# psql -U postgres +``` + +再使用\dt查看数据库初始化情况,出现下面内容表示数据库初始化成功: + +![数据库初始化](./pictures/本地资产库构建/数据库初始化.png) + +- ##### 清空数据库(注意) + + 假设您想清空 RAG 产生的所有数据库数据,可以使用下面命令(**此命令会清空整个数据库,需谨慎操作!**)。 + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method clear_database +python3 scripts/rag_kb_manager.pyc --method clear_database # 清空数据库请谨慎操作 ``` -#### 步骤3:创建资产 -- 创建资产 +### 步骤3:创建资产 + + 下列指令若不指定 kb_name,则默认资产名为 default_test(ps:Copilot 不允许存在两个同名的资产): + +- ##### 创建资产(可重复) + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method create_kb --kb_name default_test -# 默认资产名为default_test,如需修改,需要同步修改values.yaml中rag章节中的下面字段,并进行helm更新操作: -# RAG内知识库名 -# knowledgebaseID: default_test +python3 scripts/rag_kb_manager.pyc --method create_kb --kb_name default_test ``` -- 删除资产 +创建资产成功会有以下提示: + +![创建资产成功](./pictures/本地资产库构建/创建资产成功.png) + +创建同名资产会有以下提示: + +![重复创建资产失败](./pictures/本地资产库构建/重复创建资产失败.png) + +- ##### 删除资产(可重复) + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method del_kb --kb_name default_test +python3 scripts/rag_kb_manager.pyc --method del_kb --kb_name default_test ``` -- 查询资产 + +删除资产成功会出现以下提示(会将资产下的所有资产库和语料资产全部删除): + +![删除资产成功](./pictures/本地资产库构建/删除资产成功.png) + +对于不存在的资产进行删除,会出现以下提示: + +![删除不存在的资产失败](./pictures/本地资产库构建/删除不存在的资产失败.png) + +- ##### 查询资产(可重复) + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method query_kb +python3 scripts/rag_kb_manager.pyc --method query_kb ``` -#### 步骤4:创建资产库 -- 创建资产库 + +查询资产成功会出现下面内容: + +![查询资产](./pictures/本地资产库构建/查询资产.png) + +对于无资产的情况下查询资产会出现以下内容: + +![无资产时查询资产](./pictures/本地资产库构建/无资产时查询资产.png) + +### 步骤4:创建资产库 + +下列指令若不指定资产名(kb_name)和资产库名(kb_asset_name),则默认资产名为 default_test 和资产库名 default_test_asset(ps:Copilot 同一个资产下不允许存在两个同名的资产库): + +- #### 创建资产库(可重复) + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method create_kb_asset --kb_name default_test --kb_asset_name default_test_asset +python3 scripts/rag_kb_manager.pyc --method create_kb_asset --kb_name default_test --kb_asset_name default_test_asset # 创建属于default_test的资产库 ``` -- 删除资产库 + +对于创建资产库成功会出现以下内容: + +![资产库创建成功](./pictures/本地资产库构建/资产库创建成功.png) + +对于指定不存在的自查库创建资产会出现以下内容: + +![指定不存在的资产创建资产库失败](./pictures/本地资产库构建/指定不存在的资产创建资产库失败.png) + +对于同一个资产下重复创建同名资产库会出现以下内容: + +![创建资产库失败由于统一资产下存在同名资产库](./pictures/本地资产库构建/创建资产库失败由于统一资产下存在同名资产库.png) + +- #### 删除资产库(可重复) + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method del_kb_asset --kb_name default_test --kb_asset_name default_test_asset +python3 scripts/rag_kb_manager.pyc --method del_kb_asset --kb_name default_test --kb_asset_name default_test_asset ``` -- 查询资产库 +对于删除资产库成功会出现以下内容: + +![资产库删除成功](./pictures/本地资产库构建/资产库删除成功png.png) + +对于删除不存在的资产库失败会出现以下内容: + +![资产下不存在对应资产库](./pictures/本地资产库构建/删除资产库失败,资产下不存在对应资产库.png) + +对于删除不存在的资产下的资产库会出现以下内容: + +![不存在资产](./pictures/本地资产库构建/资产库删除失败,不存在资产.png) + +- #### 查询资产库(可重复) + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method query_kb_asset --kb_name default_test +python3 scripts/rag_kb_manager.pyc --method query_kb_asset --kb_name default_test # 注意:资产是最上层的,资产库属于资产,且不能重名 ``` -#### 步骤5:上传语料 +对于查询资产库成功会出现以下内容: + +![资产下查询资产库成功](./pictures/本地资产库构建/资产下查询资产库成功.png) + +对于资产内无资产库的情况下查询资产库会出现以下内容: + +![资产下未查询到资产库](./pictures/本地资产库构建/资产下未查询到资产库.png) + +对于查询不存在的资产下的资产库会出现以下内容: + +![不存在资产](./pictures/本地资产库构建/资产库查询失败,不存在资产.png) + +### 步骤5:上传语料 + +下列指令若不指定资产名(kb_name)和资产库名(kb_asset_name),则默认资产名为 default_test 和资产库名 default_test_asset,对于删除语料命令需要指定完整的语料名称(语料统一为 docx 格式保存在数据库中,可以通过查询语料命令查看已上传的文档名称);对于查询语料命令可以不指定语料名称(corpus_name),此时默认查询所有语料,可以指定部分或者完整的语料名,此时通过模糊搜索匹配数据库内相关的语料名称。 + - 上传语料 + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method up_corpus --corpus_dir ./scripts/docs/ --kb_name default_test --kb_asset_name default_test_asset +python3 scripts/rag_kb_manager.pyc --method up_corpus --corpus_dir ./scripts/docs/ --kb_name default_test --kb_asset_name default_test_asset # 注意: # 1. RAG容器用于存储用户语料的目录路径是'./scripts/docs/'。在执行相关命令前,请确保该目录下已有本地上传的语料。 # 2. 若语料已上传但查询未果,请检查宿主机上的待向量化语料目录(位于/home/euler-copilot/docs)的权限设置。 # 为确保无权限问题影响,您可以通过运行chmod 755 /home/euler-copilot/docs命令来赋予该目录最大访问权限。 ``` +对于语料上传成功会出现以下内容: + +![语料上传成功](./pictures/本地资产库构建/语料上传成功.png) + +对于语料具体的分割和上传情况可以在 logs/app.log 下查看,内容如下: + +![查看文档产生片段总数和上传成功总数](./pictures/本地资产库构建/查看文档产生片段总数和上传成功总数.png) + - 删除语料 + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method del_corpus --corpus_name abc.docx --kb_name default_test --kb_asset_name default_test_asset +python3 scripts/rag_kb_manager.pyc --method del_corpus --corpus_name abc.docx --kb_name default_test --kb_asset_name default_test_asset # 上传的文件统一转换为docx ``` +对于语料删除成功会出现以下内容: + +![删除语料](./pictures/本地资产库构建/删除语料.png) + +对于删除不存在的语料会出现以下内容: + +![语料删除失败](./pictures/本地资产库构建/语料删除失败,未查询到相关语料.png) + - 查询语料 + ```bash # 查询指定名称的语料: -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method query_corpus --corpus_name 语料名.docx - +python3 scripts/rag_kb_manager.pyc --method query_corpus --corpus_name 语料名.docx # 查询所有语料: -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$ python3 scripts/rag_kb_manager.pyc --method query_corpus +python3 scripts/rag_kb_manager.pyc --method query_corpus ``` + +对于查询所有语料会出现以下内容: + +![查询全部语料](./pictures/本地资产库构建/查询全部语料.png) + - 停止上传任务 + ```bash -[eulercopilot@rag-deploy-service-7cb85d58c7-phpng rag-service]$python3 scripts/rag_kb_manager.pyc --method stop_corpus_uploading_job -# 语料上传失败时,可执行该操作停止上传任务 +python3 scripts/rag_kb_manager.pyc --method stop_corpus_uploading_job ``` +对于某些极端条件下(例如内存受限),上传语料失败,需要执行上面shell命令用于清除语料上传失败的缓存。 + ## 网页端查看语料上传进度 -您可以灵活设置端口转发规则,通过执行如下命令将容器端口映射到主机上的指定端口,并在任何设备上通过访问http://<主机IP>:<映射端口>(例如http://192.168.16.178:3000/)来查看语料上传的详细情况。 +您可以灵活设置端口转发规则,通过执行如下命令将容器端口映射到主机上的指定端口,并在任何设备上通过访问 http://<主机IP>:<映射端口>(例如 http://192.168.16.178:3000/ )来查看语料上传的详细情况。 + ```bash -root@openeuler:~# kubectl port-forward rag-deploy-service-5b7887644c-sm58z 3000:8005 -n euler-copilot --address=0.0.0.0 +kubectl port-forward rag-deploy-service-5b7887644c-sm58z 3000:8005 -n euler-copilot --address=0.0.0.0 # 注意: 3000是主机上的端口,8005是rag的容器端口,可修改映射到主机上的端口 ``` + ## 验证上传后效果 -您可以查看RAG的日志或直接在语料文档中提取问答对,随后通过EulerCopilot网页端发起提问,对比问题答案与文档语料中的信息,确保两者高度一致。一旦测试结果显示出高匹配度,该语料即被验证为有效并生效 +上传语料成功之后你可以通过以下命令直接与 RAG 交互,来观察语料是否上传成功。 + ```bash -root@openeuler:~# kubectl -n euler-copilot get pods -root@openeuler:~# kubectl logs rag-deploy-service-5b7887644c-sm58z -n euler-copilot -``` \ No newline at end of file +curl -k -X POST "http://{rag_url}:{rag_port}/kb/get_answer" -H "Content-Type: application/json" -d '{ \ + "question": "question", \ + "kb_sn": "kb_name", \ + "fetch_source": true, \ + "top_k": 3 \ +}' +``` + +- `question`:问题 + +- `kb_sn`:资产库名称 + +- `fetch_source`:是否返回关联片段以及片段来源,`false` 代表不返回,`true` 代表返回 + +- `top_k`:关联语料片段个数,需要大于等于3 diff --git "a/docs/EulerCopilot\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" similarity index 41% rename from "docs/EulerCopilot\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" rename to "docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" index eae3650029e5f9db5fa34dc79db9bdc8a18b4e86..0595ccb30cb6cbbeda2cbc0cf93bf0546bcdd6af 100644 --- "a/docs/EulerCopilot\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" +++ "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" @@ -1,6 +1,8 @@ -# EulerCopilot部署指南 -## EulerCopilot介绍 -EulerCopilot是一款智能问答工具,使用EulerCopilot可以解决操作系统知识获取的便捷性,并且为OS领域模型赋能开发者及运维人员。作为获取操作系统知识,使能操作系统生产力工具(如A-ops/Atune/X2openEuler/EulerMaker/EulerDevops/stratovirt/iSulad等),颠覆传统命令交付方式,由传统命令交付方式向自然语义进化,并结合智能体任务规划能力,降低开发、使用操作系统特性的门槛。 +# 部署指南 + +## 介绍 + +openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot System 可以解决操作系统知识获取的便捷性,并且为OS领域模型赋能开发者及运维人员。作为获取操作系统知识,使能操作系统生产力工具 (如 A-Ops / A-Tune / x2openEuler / EulerMaker / EulerDevOps / StratoVirt / iSulad 等),颠覆传统命令交付方式,由传统命令交付方式向自然语义进化,并结合智能体任务规划能力,降低开发、使用操作系统特性的门槛。 ### 组件介绍 @@ -16,17 +18,19 @@ EulerCopilot是一款智能问答工具,使用EulerCopilot可以解决操作 | secret_inject | 无 | 配置文件安全复制工具 | ## 环境要求 + ### 软件要求 | 类型 | 版本要求 | 说明 | |------------| -------------------------------------|--------------------------------------| -| 操作系统 | openEuler 22.03 LTS及以上版本 | 无 | -| K3s | >= v1.30.2,带有Traefik Ingress工具 | K3s提供轻量级的 Kubernetes集群,易于部署和管理 | -| Helm | >= v3.15.3 | Helm是一个 Kubernetes的包管理工具,其目的是快速安装、升级、卸载Eulercopilot服务 | -| python | >=3.9.9 | python3.9.9以上版本为模型的下载和安装提供运行环境 | - +| 操作系统 | openEuler 22.03 LTS 及以上版本 | 无 | +| K3s | >= v1.30.2,带有 Traefik Ingress 工具 | K3s 提供轻量级的 Kubernetes 集群,易于部署和管理 | +| Helm | >= v3.15.3 | Helm 是一个 Kubernetes 的包管理工具,其目的是快速安装、升级、卸载 openEuler Copilot System 服务 | +| python | >=3.9.9 | python3.9.9 以上版本为模型的下载和安装提供运行环境 | + ### 硬件要求 -| 类型 | 硬件要求 | + +| 类型 | 硬件要求 | |----------------| -----------------------------| | 服务器 | 1台 | | CPU | 鲲鹏或x86_64,>= 32 cores | @@ -35,91 +39,168 @@ EulerCopilot是一款智能问答工具,使用EulerCopilot可以解决操作 | GPU | Tesla V100 16GB,4张 | | NPU | 910ProB、910B | -注意: -1. 若无GPU或NPU资源,建议通过调用第三方openai接口的方式来实现功能。(接口样例:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions) 参考链接[API-KEY的获取与配置](https://help.aliyun.com/zh/dashscope/developer-reference/acquisition-and-configuration-of-api-key?spm=a2c4g.11186623.0.0.30e7694eaaxxGa)) -2. 调用第三方openai接口的方式不需要安装python (>=3.9.9) -3. 英伟达GPU对Docker的支持必需要新版本Docker(>= v25.4.0) +注意: + +1. 若无 GPU 或 NPU 资源,建议通过调用 OpenAI 接口的方式来实现功能。(接口样例:https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions 参考链接:[API-KEY的获取与配置](https://help.aliyun.com/zh/dashscope/developer-reference/acquisition-and-configuration-of-api-key?spm=a2c4g.11186623.0.0.30e7694eaaxxGa)) +2. 调用第三方 OpenAI 接口的方式不需要安装高版本的 python (>=3.9.9) +3. 英伟达 GPU 对 Docker 的支持必需要新版本 Docker (>= v25.4.0) ### 部署视图 -![EulerCopilot部署图](./pictures/EulerCopilot部署视图.png) -## 获取EulerCopilot -- 从EulerCopilot的官方Git仓库[euler-copilot-framework](https://gitee.com/openeuler/euler-copilot-framework)下载最新的部署仓库 -- 如果您正在使用Kubernetes,则不需要安装k3s工具。 +![部署图](./pictures/部署视图.png) + +## 获取 openEuler Copilot System + +- 从 openEuler Copilot System 的官方Git仓库 [euler-copilot-framework](https://gitee.com/openeuler/euler-copilot-framework) 下载最新的部署仓库 +- 如果您正在使用 Kubernetes,则不需要安装 k3s 工具。 + ```bash -# 下载目录以home为例 +# 下载目录以 home 为例 cd /home -git clone https://gitee.com/openeuler/euler-copilot-framework ``` + +```bash +git clone https://gitee.com/openeuler/euler-copilot-framework.git +``` + ## 环境准备 -设备需联网并符合EulerCopilot的最低软硬件要求。确认服务器、硬件、驱动等准备就绪后,即可开始环境准备工作。为了顺利进行后续操作,请按照指引,先进入脚本部署目录`/home/euler-copilot-framework/euler-copilot-helm/scripts`,并且按照提供的操作步骤和脚本路径依次执行,以确保初始化成功。 + +设备需联网并符合 openEuler Copilot System 的最低软硬件要求。确认服务器、硬件、驱动等准备就绪后,即可开始环境准备工作。为了顺利进行后续操作,请按照指引,先进入我 +们的脚本部署目录,并且按照提供的操作步骤和脚本路径依次执行,以确保初始化成功。 + +```bash +# 进入部署脚本目录 +cd /home/euler-copilot-framework/euler-copilot-helm/scripts +``` | 序号 | 步骤内容 | 相关指令 | 说明 | |-------------- |----------|---------------------------------------------|------------------------------------------ | |1| 环境检查 | `bash check_env.sh` | 主要对服务器的主机名、DNS、防火墙设置、磁盘剩余空间大小、网络、检查SELinux的设置 | |2| 文件下载 | `bash download_file.sh` | 模型bge-reranker-large、bge-mixed-mode 和分词工具text2vec-base-chinese-paraphrase的下载 | |3| 安装部署工具 | `bash install_tools.sh v1.30.2+k3s1 v3.15.3 cn` | 安装helm、k3s工具。注意:cn的使用是使用镜像站,可以去掉不用 | -|4| 大模型准备 | 提供第三方openai接口或基于硬件本都部署大模型 | 本地部署大模型可参考附录部分 | +|4| 大模型准备 | 提供第三方 OpenAI 接口或基于硬件本都部署大模型 | 本地部署大模型可参考附录部分 | -## EulerCopilot安装 +## 安装 -您的环境现已就绪,接下来即可启动EulerCopilot的安装流程。 +您的环境现已就绪,接下来即可启动 openEuler Copilot System 的安装流程。 + +### 1. 编辑配置文件 -### 1. 编辑配置文件 ```bash -# 下载目录以home为例,进入euler-copilot-framework仓库的Helm配置文件目录 -root@openeuler:~# cd /home/euler-copilot-framework -root@openeuler:/home/euler-copilot-framework# ll +# 下载目录以home为例,进入 openEuler Copilot System 仓库的Helm配置文件目录 +cd /home/euler-copilot-framework +``` + +```bash +ll +``` + +``` total 28 drwxr-xr-x 3 root root 4096 Aug 28 17:45 docs/ drwxr-xr-x 5 root root 4096 Aug 28 17:45 euler-copilot-helm/ -root@openeuler:/home/euler-copilot-framework# cd euler-copilot-helm/chart -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart# ll +``` + +```bash +# 进入Helm配置文件目录 +cd euler-copilot-helm/chart +``` + +```bash +ll +``` + +``` total 28 -rw-r--r-- 1 root root 135 Aug 28 17:45 Chart.yaml drwxr-xr-x 10 root root 4096 Aug 28 17:55 templates/ -rw-r--r-- 1 root root 6572 Aug 30 12:05 values.yaml +``` + +编辑 values.yaml 配置文件,请结合 YAML 中的注释部分进行修改 + +```bash +vim values.yaml +``` + +注意事项: + +- 修改 domain 为服务器的实际 IP 地址。 +- 更新 OpenAI 的 URL、Key、Model 和 Max Token 为部署所需的值。 +- 根据实际部署情况,更新 vectorize、rag、framework 中的 BGE 模型路径、文档向量化和分词工具路径。 + +如需在内网环境中修改 Traefik 配置以转发端口,请继续下一步。 + +```bash +# 进入SSL配置目录,准备修改Traefik配置 +cd chart_ssl/ +``` + +```bash +ll +``` -# 编辑values.yaml配置文件, 请结合YAML中的注释部分进行修改 -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart# vim values.yaml -# 注意事项: -# - 修改domain为服务器的实际IP地址。 -# - 更新OpenAI的URL、Key、Model和Max Token为部署所需的值。 -# - 根据实际部署情况,更新vectorize、rag、framework中的BGE模型路径、文档向量化和分词工具路径。 -# - 如需在内网环境中修改Traefik配置以转发端口,请继续下一步。 -# 1. 进入SSL配置目录 -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm# cd chart_ssl/ -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart_ssl# ll +``` total 20 -rw-r--r-- 1 root root 250 Aug 28 17:45 traefik-config.yml -rw-r--r-- 1 root root 212 Aug 28 17:45 traefik-secret.yaml -rw-r--r-- 1 root root 175 Aug 28 17:45 traefik-tlsstore.yaml -# 2. 修改traefik-config.yml以转发HTTPS端口(如果需要) -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart_ssl/# vim traefik-config.yml -# 修改部分示例: -# websecure: -# exposedPort: 8080 # 将此处的端口号修改为期望转发的HTTPS端口 +``` + +修改 traefik-config.yml 以转发HTTPS端口(如果需要) + +```bash +vim traefik-config.yml +``` + +修改部分示例: -# 3. 应用修改后的Traefik配置 -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart_ssl/# kubectl apply -f traefik-config.yml ``` +websecure: + exposedPort: 8080 # 将此处的端口号修改为期望转发的HTTPS端口 +``` + +应用修改后的 Traefik 配置 -### 2. 安装EulerCopilot ```bash -# 创建namespace -root@openeuler:~# cd /home/euler-copilot-framework/euler-copilot-helm/chart -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart# kubectl create namespace euler-copilot -# 设置环境变量 -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart# export KUBECONFIG=/etc/rancher/k3s/k3s.yaml -# 安装EulerCopilot -root@openeuler:/home/euler-copilot-framework/euler-copilot-helm/chart# helm install -n euler-copilot service . +kubectl apply -f traefik-config.yml ``` -### 3. 查看pod状态 +### 2. 安装 openEuler Copilot System + +创建 namespace + +```bash +cd /home/euler-copilot-framework/euler-copilot-helm/chart +``` + +```bash +kubectl create namespace euler-copilot +``` + +设置环境变量 + ```bash -# 镜像拉取过程可能需要大约一分钟的时间,请耐心等待。 -# 部署成功后,所有Pod的状态应显示为Running。 -root@openeuler:~# kubectl -n euler-copilot get pods +export KUBECONFIG=/etc/rancher/k3s/k3s.yaml +``` + +安装 openEuler Copilot System + +```bash +helm install -n euler-copilot service . +``` + +### 3. 查看 Pod 状态 + +镜像拉取过程可能需要大约一分钟的时间,请耐心等待。 + +部署成功后,所有 Pod 的状态应显示为 Running。 + +```bash +kubectl -n euler-copilot get pods +``` + +``` NAME READY STATUS RESTARTS AGE framework-deploy-service-bb5b58678-jxzqr 2/2 Running 0 16d mysql-deploy-service-c7857c7c9-wz9gn 1/1 Running 0 17d @@ -128,37 +209,72 @@ rag-deploy-service-5b7887644c-sm58z 2/2 Running 0 110m redis-deploy-service-f8866b56-kj9jz 1/1 Running 0 17d vectorize-deploy-service-57f5f94ccf-sbhzp 2/2 Running 0 17d web-deploy-service-74fbf7999f-r46rg 1/1 Running 0 2d -# 进入到pg数据库,执行扩展命令 -root@openeuler:~# kubectl -n euler-copilot exec -it pgsql-deploy-service-86b4dc4899-ppltc -- bash -root@pgsql-deploy-b4cc79794-qn8zd:/tmp# psql -U postgres -d postgres +``` + +进入到 postgres 数据库,执行扩展命令 + +```bash +kubectl -n euler-copilot exec -it pgsql-deploy-service-86b4dc4899-ppltc -- bash +``` + +```bash +psql -U postgres -d postgres +``` + +``` psql (16.2 (Debian 16.2-1.pgdg120+2)) 输入 "help" 来获取帮助信息. postgres=# CREATE EXTENSION zhparser; -CREATE EXTENSION postgres=# CREATE EXTENSION vector; postgres=# CREATE TEXT SEARCH CONFIGURATION zhparser (PARSER = zhparser); postgres=# ALTER TEXT SEARCH CONFIGURATION zhparser ADD MAPPING FOR n,v,a,i,e,l WITH simple; postgres=# exit -root@pgsql-deploy-b4cc79794-qn8zd:/tmp# exit -exit +``` + +退出容器 -# 注意:如果Pod状态出现失败,建议按照以下步骤进行排查 -# 1.查看Kubernetes集群的事件(Events),以获取更多关于Pod失败的上下文信息 -root@openeuler:~# kubectl -n euler-copilot get events -# 2.查看镜像拉取是否成功 -root@openeuler:~# k3s crictl images -# 3.检查EulerCopilot的 rag的Pod日志,以确定是否有错误信息或异常行为。 -root@openeuler:~# kubectl logs rag-deploy-service-5b7887644c-sm58z -n euler-copilot -# 4.验证Kubernetes集群的资源状态,确保没有资源限制或配额问题导致Pod无法正常运行。 -root@openeuler:~# df -h -# 5.如果未拉取成且镜像大小为0,请检查是否是k3s版本未满足要求,低于v1.30.2 -root@openeuler:~# k3s -v +```bash +exit ``` + +注意:如果 Pod 状态出现失败,建议按照以下步骤进行排查 + +1. 查看 Kubernetes 集群的事件 (Events),以获取更多关于 Pod 失败的上下文信息 + + ```bash + kubectl -n euler-copilot get events + ``` + +2. 查看镜像拉取是否成功 + + ```bash + k3s crictl images + ``` + +3. 检查 RAG 的 Pod 日志,以确定是否有错误信息或异常行为。 + + ```bash + kubectl logs rag-deploy-service-5b7887644c-sm58z -n euler-copilot + ``` + +4. 验证 Kubernetes 集群的资源状态,确保没有资源限制或配额问题导致 Pod 无法正常运行。 + + ```bash + df -h + ``` + +5. 如果未拉取成且镜像大小为0,请检查是否是 k3s 版本未满足要求,低于 v1.30.2 + + ```bash + k3s -v + ``` + ## 验证安装 -访问EulerCopilot的Web界面,请在浏览器中输入https://$(host_ip):8080(其中port默认值为8080,若更改则需相应调整)。 +访问 openEuler Copilot System 网页,请在浏览器中输入 https://$(host_ip):8080 (其中port默认值为8080,若更改则需相应调整)。 ### 1. 创建登录账号密码 + ``` bash # 首次登录触发mysql数据库生成user表 # 1.生成加密后的账号密码 @@ -172,58 +288,120 @@ Type "help", "copyright", "credits" or "license" for more information. # 2.插入账号密码到mysql数据库 root@openeuler:~# kubectl -n euler-copilot exec -it mysql-deploy-service-c7857c7c9-wz9gn -- bash bash-5.1# mysql -uroot -p8ZMTsY4@dgWZqoM6 -# mysql的登录密码可在euler-copilot-framework/euler-copilot-helm/chart/values.yaml的mysql章节查看 +# 密码在euler-copilot-frameworkeuler-copilot-helm/chart/values.yaml的mysql章节查看 mysql> use euler_copilot; mysql> insert into user(user_sub, passwd) values ("[用户名]", "[加密后的密码]"); mysql> exit; ``` + ### 2. 问答验证 -恭喜您,EulerCopilot的部署已完成!现在,您可以开启智能问答的非凡体验之旅了。 +恭喜您,openEuler Copilot System 的部署已完成!现在,您可以开启智能问答的非凡体验之旅了。 -![EulerCopilot界面.png](./pictures/EulerCopilot界面.png) +![Web 界面](./pictures/WEB界面.png) ## 构建专有领域智能问答 -### 1. 构建openEuler专业知识领域的智能问答 - 1. 修改values.yaml的pg的镜像仓为`pg-data` - 2. 修改values.yaml的rag部分的字段`knowledgebaseID: openEuler_2bb3029f` - 3. 将`vim euler-copilot-framework/euler-copilot-helm/chart/templates/pgsql/pgsql-deployment.yaml`的volume相关字段注释 - 4. 进入`cd euler-copilot-framework/euler-copilot-helm/chart`,执行更新服务`helm upgrade -n euler-copilot server .` - 5. 进入网页端进行openEuler专业知识领域的问答 + +### 1. 构建 openEuler 专业知识领域的智能问答 + + 1. 修改 values.yaml 的 pg 的镜像仓为 `pg-data` + 2. 修改 values.yaml 的 rag 部分的字段 `knowledgebaseID: openEuler_2bb3029f` + 3. 将 `vim euler-copilot-frameworkeuler-copilot-helm/chart/templates/pgsql/pgsql-deployment.yaml` 的 volume 相关字段注释 + 4. 进入 `cd euler-copilot-frameworkeuler-copilot-helm/chart`,执行更新服务 `helm upgrade -n euler-copilot service .` + 5. 进入网页端进行 openEuler 专业知识领域的问答 + ### 2. 构建项目专属知识领域智能问答 -详细信息请参考文档 [EulerCopilot本地语料上传指南](https://gitee.com/openeuler/euler-copilot-framework/blob/master/docs/EulerCopilot%E6%9C%AC%E5%9C%B0%E8%AF%AD%E6%96%99%E4%B8%8A%E4%BC%A0%E6%8C%87%E5%8D%97.md) + +详细信息请参考文档 [本地资产库构建指南](https://gitee.com/openeuler/euler-copilot-framework/blob/master/docs/部署指南/本地资产库构建指南.md) ## 附录 + ### 大模型准备 -#### GPU环境 + +#### GPU 环境 + 参考以下方式进行部署 + +1. 下载模型文件: + + ```bash + huggingface-cli download --resume-download Qwen/Qwen1.5-14B-Chat --local-dir Qwen1.5-14B-Chat + ``` + +2. 创建终端 contol + + ```bash + screen -S contol + ``` + + ```bash + python3 -m fastchat.serve.controller + ``` + + - 按 Ctrl A+D 置于后台 + +3. 创建新终端 api + + ```bash + screen -S api + ``` + + ```bash + python3 -m fastchat.serve.openai_api_server --host 0.0.0.0 --port 30000 --api-keys sk-123456 + ``` + + - 按 Ctrl A+D 置于后台 + - 如果当前环境的 Python 版本是 3.12 或者 3.9 可以创建 python3.10 的 conda 虚拟环境 + + ```bash + mkdir -p /root/py310 + ``` + + ```bash + conda create --prefix=/root/py310 python==3.10.14 + ``` + + ```bash + conda activate /root/py310 + ``` + +4. 创建新终端worker + + ```bash + screen -S worker + ``` + + ```bash + screen -r worker + ``` + + 安装 fastchat 和 vllm + + ```bash + pip install fschat vllm + ``` + + 安装依赖: + + ```bash + pip install fschat[model_worker] + ``` + + ```bash + python3 -m fastchat.serve.vllm_worker --model-path /root/models/Qwen1.5-14B-Chat/ --model-name qwen1.5 --num-gpus 8 --gpu-memory-utilization=0.7 --dtype=half + ``` + + - 按 Ctrl A+D 置于后台 + +5. 按照如下方式配置文件,并更新服务。 + ```bash -# 1.下载模型文件: -huggingface-cli download --resume-download Qwen/Qwen1.5-14B-Chat --local-dir Qwen1.5-14B-Chat -# 2.创建终端contol -screen -S contol -python3 -m fastchat.serve.controller -# 按ctrl A+D置于后台 -# 3. 创建新终端 api -screen -S api -python3 -m fastchat.serve.openai_api_server --host 0.0.0.0 --port 30000 --api-keys sk-123456 -# 按ctrl A+D置于后台 -# 如果当前环境的python版本是3.12或者3.9可以创建python3.10的conda虚拟环境 -mkdir -p /root/py310 -conda create --prefix=/root/py310 python==3.10.14 -conda activate /root/py310 -# 4. 创建新终端worker -screen -S worker -screen -r worker -# 安装fastchat和vllm -pip install fschat vllm -# 安装依赖: -pip install fschat[model_worker] -python3 -m fastchat.serve.vllm_worker --model-path /root/models/Qwen1.5-14B-Chat/ --model-name qwen1.5 --num-gpus 8 --gpu-memory-utilization=0.7 --dtype=half -# 按ctrl A+D置于后台 -# 5. 按照如下方式配置文件,并更新服务。 vim euler-copilot-helm/chart/values.yaml +``` + 修改如下部分 + +``` llm: # 开源大模型,OpenAI兼容接口 openai: @@ -232,45 +410,68 @@ llm: model: qwen1.5 max_tokens: 8192 ``` -#### NPU环境 -NPU环境部署可参考链接[MindIE安装指南](https://www.hiascend.com/document/detail/zh/mindie/10RC2/whatismindie/mindie_what_0001.html) + +#### NPU 环境 + +NPU 环境部署可参考链接 [MindIE安装指南](https://www.hiascend.com/document/detail/zh/mindie/10RC2/whatismindie/mindie_what_0001.html) ## FAQ -### 1. huggingface使用报错? -```bash + +### 1. huggingface 使用报错? + +``` File "/usr/lib/python3.9/site-packages/urllib3/connection.py", line 186, in _new_conn raise NewConnectionError( urllib3.exceptions.eanconectionError: : Failed to establish a new conmection: [Errno 101] Network is unreachable ``` + - 解决办法 + ```bash pip3 install -U huggingface_hub +``` + +```bash export HF_ENDPOINT=https://hf-mirror.com ``` -### 2. 如何在rag容器中调用获取问答结果的接口? + +### 2. 如何在 RAG 容器中调用获取问答结果的接口? + +- 请先进入到 RAG 对应 Pod + ```bash -# 请先进入到RAG pod -curl -k -X POST "http://localhost:8005/kb/get_answer" -H "Content-Type: application/json" -d '{ - "question": "", - "kb_sn": "default_test", +curl -k -X POST "http://localhost:8005/kb/get_answer" -H "Content-Type: application/json" -d '{ \ + "question": "", \ + "kb_sn": "default_test", \ "fetch_source": true }' ``` -### 3. 执行helm upgrade报错 -```bash + +### 3. 执行 `helm upgrade` 报错 + +``` Error: INSTALLATI0N FAILED: Kuberetes cluster unreachable: Get "http:/localhost:880/version": dial tcp [:1:8089: conect: conection refused ``` + - 解决办法 + ```bash export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` -### 4. 无法查看pod的log? -```bash + +### 4. 无法查看 Pod 日志? + +``` [root@localhost euler-copilot]# kubectl logs rag-deployservice65c75c48d8-44vcp-n euler-copilotDefaulted container "rag" out of: rag.rag-copy secret (init)Error from server: Get "https://172.21.31.11:10250/containerlogs/euler copilot/rag deploy"service 65c75c48d8-44vcp/rag": Forbidden ``` + - 解决办法 + 如果设置了代理,需要将本机的网络 IP 从代理中剔除 + ```bash -# 如果设置了代理,需要将本机的网络IP从代理中剔除 -[root@localhost agent]# cat /etc/systemd/system/k3s.service.env +cat /etc/systemd/system/k3s.service.env +``` + +``` http_proxy="http://172.21.60.51:3128" https_proxy="http://172.21.60.51:3128" no_proxy=172.21.31.10 # 代理中剔除本机IP