提交 2b8e60df 编写于 作者: W weixin_44463441

Thu Jan 11 18:37:00 CST 2024 inscode

上级 c2223113
......@@ -4,8 +4,35 @@
<div class="p-4">
<span>添加内容</span>
<textarea class="block my-2 w-full" :value="newContent"></textarea>
<textarea class="block my-2 w-full" v-model="newContent"></textarea>
<button class="bg-gray-300 py-2 px-4 rounded hover:bg-gray-400" @click="add"> add</button>
<button class="bg-gray-300 py-2 px-4 rounded hover:bg-gray-400 ml-2" @click="search"> search</button>
<div class="w-full mt-4">
<table class="table-auto w-full bg-gray-200 text-left">
<thead>
<tr class="h-10 *:border-b *:border-slate-300 *:pl-2 *:bold">
<th >ID</th>
<th >内容</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr v-for="item in list" class="*:h-12 *:border-b *:border-slate-300 *:pl-2 *:hover:bg-gray-300">
<td >{{ item._id }}</td>
<td>{{ item.content }}</td>
<td class="*:py-1 *:px-4 *:rounded-md *:mr-2 *:text-gray-100">
<button @click="deleteItem(item)" class="bg-orange-400 hover:bg-orange-500"> 删除</button>
<button @click="updateItem(item)" class="bg-blue-400 hover:bg-blue-500"> 更新</button>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
......@@ -13,6 +40,8 @@
<script>
import Config from '../../js/config'
import RepEs from '../../js/repEs'
import { MessagePlugin } from 'tdesign-vue-next';
const esClient = new RepEs(Config.getData().data.ext)
export default {
......@@ -21,13 +50,34 @@ export default {
},
data() {
return {
newContent: '测试内容'
newContent: '测试内容',
list: []
}
},
methods: {
add () {
debugger
esClient.add(this.newContent)
}
},
search () {
esClient.query(this.newContent).then(res => {
console.info('query')
console.info(res)
this.list = res
})
},
updateItem (item) {
esClient.update(item._id, item.content).then(res => {
MessagePlugin.success({ content: '更新成功', placement: 'center' })
})
},
deleteItem (item) {
esClient.delete(item._id).then(res => {
MessagePlugin.success({ content: '删除成功', placement: 'center' })
})
},
}
}
</script>
\ No newline at end of file
// 提示词模板。在这里,你可以把一些背景信息告诉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}
请根据以上相关信息,回答用户问题。
......
......@@ -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, ' ');
......
......@@ -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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册