Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
冯丙见
AI私人知识库
提交
2b8e60df
A
AI私人知识库
项目概览
冯丙见
/
AI私人知识库
与 Fork 源项目一致
Fork自
冯丙见 / AI绘图
通知
1
Star
128
Fork
114
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
AI私人知识库
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
2b8e60df
编写于
1月 11, 2024
作者:
W
weixin_44463441
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Thu Jan 11 18:37:00 CST 2024 inscode
上级
c2223113
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
133 addition
and
52 deletion
+133
-52
src/components/content/index.vue
src/components/content/index.vue
+53
-3
src/js/config.js
src/js/config.js
+5
-19
src/js/prompt.js
src/js/prompt.js
+1
-1
src/js/repEs.js
src/js/repEs.js
+74
-29
未找到文件。
src/components/content/index.vue
浏览文件 @
2b8e60df
...
...
@@ -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
src/js/config.js
浏览文件 @
2b8e60df
// 提示词模板。在这里,你可以把一些背景信息告诉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}
请根据以上相关信息,回答用户问题。
...
...
src/js/prompt.js
浏览文件 @
2b8e60df
...
...
@@ -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
,
'
'
);
...
...
src/js/repEs.js
浏览文件 @
2b8e60df
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录