From 25fd1baa4c5afdce69f1dc3db10953597bb4a7f3 Mon Sep 17 00:00:00 2001
From: 622aa39c1f9b166ab1a38c05 <622aa39c1f9b166ab1a38c05@devide>
Date: Thu, 13 Jul 2023 17:17:00 +0800
Subject: [PATCH] Thu Jul 13 17:17:00 CST 2023 inscode
---
src/App.vue | 33 ++++++++++++++++++++-------------
src/js/config.js | 17 ++++++++++-------
src/js/repEs.js | 46 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 76 insertions(+), 20 deletions(-)
create mode 100644 src/js/repEs.js
diff --git a/src/App.vue b/src/App.vue
index 57a3e97..1adb12e 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -22,7 +22,7 @@
-
+
{{ item.label }}
@@ -157,6 +157,7 @@ import Config from './js/config.js'
import SDApi from './js/sd.js'
import StorageApi from './js/storage.js'
import PodsApi from './js/pod.js'
+import RepEs from './js/repEs.js'
// import MarkdownItVue from 'markdown-it-vue'
// import 'markdown-it-vue/dist/markdown-it-vue.css'
@@ -175,7 +176,7 @@ export default {
name: '加载中...',
userAvatarList: [],
robotAvatarList: [],
- mode: 'draw',
+ mode: 'chat',
modeImage: 'image', // image chat chart-bubble
message: [
// {"user": "User", "message": "创建一个用户表,要求分区"},
@@ -286,7 +287,14 @@ export default {
if (this.mode === 'draw') {
this.draw()
} else {
- this.getAnswer()
+
+ if (this.indexClient) {
+ this.indexClient.query(this.prompt).then(res => {
+ this.getAnswer(res)
+ }).catch((err) => {
+ this.getAnswer()
+ })
+ }
}
// if (this.indexClient) {
// this.indexClient.query(this.prompt).then(res => {
@@ -483,13 +491,12 @@ export default {
if (type === 'common') {
debugger
- this.sdServerUrl = this.config.common_sd_api
+ this.sdServerUrl = this.config.common_gpt_api
}
this.saveConfig()
},
recoverConfig () {
- debugger
- const config = localStorage.getItem('ai-config')
+ const config = localStorage.getItem('ai-docs-config')
if (config) {
const configJSON = JSON.parse(config)
this.config = configJSON
@@ -503,14 +510,14 @@ export default {
if (data.ext && data.ext.common_sd_api) {
- this.config.common_sd_api = data.ext.common_sd_api
- this.sdServerUrl = data.ext.common_sd_api
+ this.config.common_gpt_url = data.ext.common_gpt_url
+ this.sdServerUrl = data.ext.common_gpt_url
}
} else {
this.getAppInfo()
- this.sdServerUrl = this.config.common_sd_api
+ this.sdServerUrl = this.config.common_gpt_url
this.sdServerType = 'common'
}
@@ -521,7 +528,7 @@ export default {
config.sdServerType = this.sdServerType
config.sdServerUrl = this.sdServerUrl
config.sdServerType = this.sdServerType
- localStorage.setItem('ai-config', JSON.stringify(config))
+ localStorage.setItem('ai-docs-config', JSON.stringify(config))
},
getPods () {
@@ -538,10 +545,10 @@ export default {
})
this.recoverConfig()
// this.getAvatar()
- if (this.mode === 'draw') {
- this.prompt = this.default_prompt
+ if (this.mode === 'chat') {
+ this.initAIClient()
+ this.initIndexClient()
}
- this.getPods()
}
};
diff --git a/src/js/config.js b/src/js/config.js
index 8861da8..8947e11 100644
--- a/src/js/config.js
+++ b/src/js/config.js
@@ -4,23 +4,26 @@ export default {
"code": 200,
"data": {
"id": 128897,
- "name": "AI绘图",
+ "name": "AI知识库",
"create_time": 1684920670901,
"app": "llm_rep",
"resource_type": "app",
"ext": {
"mode":"chat",
- "model":"vicuna-7b-all-v1.1",
- "api_url":"",
+ "model":"chatgl2-6b",
+ "common_gpt_url":"https://api.quickapi.cloud/temporary/gpt/",
"api_type":"openai",
"robot_img":null,
- "api_max_token":"1024",
- "default_prompt":"cat",
+ "api_max_token":"2048",
+ "default_prompt":"介绍下inscode",
"max_request_len":"10000",
- "prompt_template":"",
+ "prompt_template":"你现在扮演产品InsCode的负责人。需要结合以下信息中回答用户问题。\\n\\n产品介绍:\\nInsCode 是一个一站式的软件开发服务平台,从开发-部署-运维-运营,都可以在 InsCode 轻松完成。\\nInsCode 的 Ins 是 Inspiration,意思是创作、寻找有灵感的代码。\\n\\n开发团队介绍:\\n是由CSDN的开发云团队负责开发的,产品负责人是梁灏。\\nInsCode主要功能介绍:\\n1. 云端开发环境 & Cloud IDE\\nInsCode 为每位开发者提供了免费的 2 核/4 GB 云端开发环境。\\nInsCode 的 Cloud IDE 是运行于浏览器的集成开发环境(IDE),开发者只需要浏览器,有网络环境,就可以随时随地写代码,不用下载安装,不受硬件、环境的影响。\\nInsCode 的 Cloud IDE 底层基于 VSCode 开发,使用体验与桌面版 VS Code 几乎一致,提供了高效的文件搜索、Git 版本控制、Debug 调试、数据库、终端、在线预览等功能\\n2. 丰富的模板\\nInsCode 提供了数十种常见的编程语言,如 Python、Java、HTML/CSS/JS、PHP、Go 等:\\n3. AI 编程助手\\nInsCode 内置了 AI 辅助编程,可以实现添加注释、解释代码、完成代码、寻找错误、优化代码、添加测试、代码提问等 AI 功能。\\n4. 社区\\n在 InsCode 开发的项目,可以发布到社区,每个发布的作品都是开源的,所以 InsCode 也是一个很好的学习平台。\\n5. 快速部署\\nInsCode 可以一键部署开发的应用,或者直接部署 GitHub 应用。部署后提供独立的域名访问,并永久在线。\\n本文档就是直接在 InsCode 进行开发,并部署的。\\n6. AI绘画\\nInsCode 也提供了在线的 Stable Diffusion 模型,可以一键启动 WebUI 进行 AI 绘画,简单好用:\\n\\n使用场景介绍:\\nInsCode 主要适用于以下场景\\n1. 随时随地写代码\\nInsCode 只要有浏览器、网络环境,就可以随时随地写代码,不用下载安装,不受硬件、环境的影响。\\n2. 快速启动项目\\nInsCode 内置了多种常用编程环境,如 Java、Python、Node.js 等,以及常见的模板,如 Vue.js、React、Next.js 等,您无需进行繁琐的环境配置,就可以快速启动一个适合您项目的工作空间。\\n3. 实时调试网页\\nInsCode 内置的在线预览,可以实时显示网页应用,并支持热更新技术自动检测代码变化刷新网页。同时,对 html 文件也可以直接内置预览,无需安装任何服务,方便运行一些小游戏、H5 应用。\\n内置的 DevTools 也可以方便调试预览的页面。\\n4. 一键部署\\nInsCode 支持快速部署项目,包括来自 GitHub 的项目,使其永久在线,并提供免费的二级域名。\\n5. GPU 云容器\\nInsCode 提供了 GPU 云容器,有多种显卡型号可以选择,并内置了 Stable Diffusion 等环境,一键启动。\\n\\n除了以下产品介绍外,以下为何用户后续问题相关的内容:\\n{context}\\n\\n请根据产品介绍、问题相关信息,回答用户问题。",
"api_prompt_prefix":"",
"show_profile_setting":false,
- "common_sd_api": "https://api.quickapi.cloud/temporary/sd/",
+ "index_url":"https://api.quickapi.cloud/api/b/v1/es-api",
+ "index_name":"inscode",
+ "index_type":"es",
+ "welcome_text":"你好,欢迎使用InsCode,InsCode是一个一站式的软件开发服务平台,从开发-部署-运维-运营,都可以在 InsCode 轻松完成。 InsCode 的 Ins 是 Inspiration,意思是创作、寻找有灵感的代码。",
},
diff --git a/src/js/repEs.js b/src/js/repEs.js
new file mode 100644
index 0000000..3762dc8
--- /dev/null
+++ b/src/js/repEs.js
@@ -0,0 +1,46 @@
+import axios from "axios";
+
+
+class RepEs {
+
+ constructor(config) {
+ this.config = config
+ this.index_url = config.index_url
+ this.index_name = config.index_name
+ this.url = this.index_url + '?index_name=' + this.index_name
+ }
+
+ query (keyword) {
+
+ const url = this.url
+ return new Promise(function(resolve,rejcet){
+ axios.get(url,{
+ params: {
+ keyword: encodeURI(keyword),
+ }
+ }).then(res => {
+
+ if (res?.status === 200 && res?.data?.code === 200) {
+ const result = []
+ res?.data?.data?.hits.forEach(element => {
+ result.push({
+ page_content: element?._source?.content
+ })
+ });
+ resolve(result)
+
+ }
+ console.info(res)
+
+
+ }).catch((err) => {
+ console.error(err)
+ rejcet()
+ })
+ })
+
+ }
+
+}
+
+export default RepEs
\ No newline at end of file
--
GitLab