From 2b8e60df26c90f1135d08d90d97eb4127c07a3b3 Mon Sep 17 00:00:00 2001 From: weixin_44463441 Date: Thu, 11 Jan 2024 18:37:00 +0800 Subject: [PATCH] Thu Jan 11 18:37:00 CST 2024 inscode --- src/components/content/index.vue | 56 ++++++++++++++++- src/js/config.js | 24 ++----- src/js/prompt.js | 2 +- src/js/repEs.js | 103 ++++++++++++++++++++++--------- 4 files changed, 133 insertions(+), 52 deletions(-) diff --git a/src/components/content/index.vue b/src/components/content/index.vue index 8371a53..a7fcf74 100644 --- a/src/components/content/index.vue +++ b/src/components/content/index.vue @@ -4,8 +4,35 @@
添加内容 - + + + + + +
+ + + + + + + + + + + + + + + +
ID内容操作
{{ item._id }}{{ item.content }} + + +
+
+ +
@@ -13,6 +40,8 @@ \ No newline at end of file diff --git a/src/js/config.js b/src/js/config.js index a29f739..a8558e8 100644 --- a/src/js/config.js +++ b/src/js/config.js @@ -1,25 +1,11 @@ // 提示词模板。在这里,你可以把一些背景信息告诉AI,也可以给AI提供一些问题的案例,方便AI更好的回答问题 const prompt_template = ` -你现在扮演InsCode产品的负责人,负责回答用户的问题,后面当谈论到产品、IDE时,默认指的就是InsCode。 -我给你提供一些产品信息,你需要结合以下信息来回答用户问题。 +你现在扮演一个知识库助手,你需要遵守以下约定来回答用户的问题: +1. 回答问题时,需要参考用户提供的相关信息; +2. 回答问题内容尽量内容简洁、思路清晰易理解; +3. 回答问题文字格式尽量美观; -产品介绍: -InsCode 是一个一站式的软件开发服务平台,从开发-部署-运维-运营,都可以在 InsCode 轻松完成。 -InsCode 的 Ins 是 Inspiration,意思是创作、寻找有灵感的代码。 - -开发团队介绍: -是由CSDN的开发云团队负责开发的,产品负责人是梁灏。 - -InsCode主要功能包括: - 云端开发环境,免费提供的 2 核/4 GB 开发环境; - 丰富的模板,如 Python、Java、HTML/CSS/JS、PHP、Go等语言模板的支持: - 内置AI辅助编程,可以实现添加注释、解释代码、完成代码、寻找错误、优化代码、添加测试、代码提问等 AI 功能。 - 社区,开发的项目,可以发布到社区,每个发布的作品都是开源的,所以 InsCode 也是一个很好的学习平台。 - 快速部署,可以一键部署开发的应用,或者直接部署 GitHub 应用。部署后提供独立的域名访问,并永久在线。 - -使用场景介绍:随时随地写代码,快速启动项目​,实时调试网页​,一键部署​,GPU 云容器​。 - -除了以上产品介绍外,以下为用户后续问题相关的内容: +以下为用户后续问题相关的内容: {context} 请根据以上相关信息,回答用户问题。 diff --git a/src/js/prompt.js b/src/js/prompt.js index 552d0c4..73a5b76 100644 --- a/src/js/prompt.js +++ b/src/js/prompt.js @@ -6,7 +6,7 @@ const getContextContent = (context, max_token=default_max_token) => { let len = context.length let contextContent = '' while(contextContent.length < max_token && id < len) { - let tempContext = context[id].page_content + let tempContext = context[id].content if (tempContext) { const regex = /(<([^>]+)>)/ig; tempContext = tempContext.replace(regex, ' '); diff --git a/src/js/repEs.js b/src/js/repEs.js index 2d1ba4f..92b4975 100644 --- a/src/js/repEs.js +++ b/src/js/repEs.js @@ -12,26 +12,45 @@ class RepEs { query (keyword) { - const url = this.index_url + '?user_token=' + this.token + '&index_name=' + this.index_name - return new Promise(function(resolve,rejcet){ - axios.get(url,{ - params: { - keyword: encodeURI(keyword), + const token = this.token + const url = this.index_url + '/' + this.index_name + '/_search' + + const data = { + "query": { + "bool": { + "must": [ + { + "term": { + "user_token": token + } + } + ] + } + } + } + + if (keyword) { + data.query.bool.must.push({ + "match": { + "content": keyword } - }).then(res => { + }) + } + + return new Promise(function(resolve,rejcet){ + axios.post(url, data).then(res => { - if (res?.status === 200 && res?.data?.code === 200) { - const result = [] - res?.data?.data?.hits.forEach(element => { + const result = [] + const total = res?.data?.hits?.total?.value??0 + if (res?.status === 200 && total > 0) { + res?.data?.hits?.hits.forEach(element => { result.push({ - page_content: element?._source?.content + ...element, ... element?._source }) }); - resolve(result) - } - console.info(res) + resolve(result) }).catch((err) => { console.error(err) @@ -42,28 +61,15 @@ class RepEs { } add (content) { - const name = '/' + this.index_name - const url = this.index_url + '/' + this.index_name + const url = this.index_url + '/' + this.index_name + '/_doc' const token = this.token - - const instance = axios.create({ - baseURL: this.index_url, - timeout: 5000, - withCredentials: true, // 允许跨域请求 - }); - return new Promise(function(resolve,rejcet){ - instance.put(name, + axios.post(url, { user_token: token, content: content, - }, - { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { + }).then(res => { if (res?.status === 200 && res?.data?.code === 200) { const result = [] @@ -86,6 +92,45 @@ class RepEs { } + delete (id) { + const url = this.index_url + '/' + this.index_name + '/_doc/' + id + + const token = this.token + + return new Promise(function(resolve,rejcet){ + axios.delete(url).then(res => { + + console.info(res) + resolve(result) + + }).catch((err) => { + console.error(err) + rejcet() + }) + }) + + } + + update (id, content) { + const url = this.index_url + '/' + this.index_name + '/_doc/' + id + + const token = this.token + + return new Promise(function(resolve,rejcet){ + axios.put(url, {content: content}).then(res => { + + console.info(res) + resolve(result) + + }).catch((err) => { + console.error(err) + rejcet() + }) + }) + + } + + } export default RepEs \ No newline at end of file -- GitLab