Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
冯丙见
AI智能客服
提交
f3d749d5
A
AI智能客服
项目概览
冯丙见
/
AI智能客服
与 Fork 源项目一致
Fork自
冯丙见 / AI私人知识库
通知
1
Star
21
Fork
36
代码
文件
提交
分支
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看板
提交
f3d749d5
编写于
1月 18, 2024
作者:
W
weixin_44463441
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Auto Commit
上级
23aee77e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
27 addition
and
20 deletion
+27
-20
README.md
README.md
+3
-3
src/components/content/index.vue
src/components/content/index.vue
+8
-5
src/js/config.js
src/js/config.js
+16
-12
未找到文件。
README.md
浏览文件 @
f3d749d5
# 自定义智能客服
如果你想自定义知识库,你可以按以下步骤:
1.
修改src/config.js文件内容
1.
修改src/
js/
config.js文件内容
1.
修改app、name为你自己的产品
2.
修改pro
mpt_template
的产品基础信息
2.
修改pro
duct_description
的产品基础信息
3.
修改welcome_text
2.
使用“知识库”页面添加你产品相关的QA数据
# 项目原理
项目参考langchain模式
1.
从知识库相关数据,目前是ES
2.
讲搜索到的内容,替换src/config.js
{context}内容后传递给gpt
2.
将搜索到的内容,替换src/config.js
{context}内容后传递给gpt
# 项目设置
```
sh
...
...
src/components/content/index.vue
浏览文件 @
f3d749d5
...
...
@@ -6,7 +6,7 @@
<div
class=
"flex items-center gap-4"
>
<textarea
class=
"block w-full rounded text-sm text-gray-600 h-10 bg-slate-100"
v-model=
"newContent"
maxLength=
"512"
placeholder=
"输入需要搜索或保存的内容"
></textarea>
<button
class=
"bg-gradient-to-r from-indigo-500 to-purple-500 hover:from-indigo-600 hover:to-purple-600 px-4 h-10 rounded-lg hover:bg-gray-600 text-gray-50 shadow-xl "
@
click=
"search"
>
search
</button>
<button
class=
"bg-blue-500 px-4 h-10 rounded-lg hover:bg-blue-600 text-gray-200 shadow-xl"
@
click=
"add"
>
+add
</button>
<button
class=
"bg-blue-500 px-4 h-10 rounded-lg hover:bg-blue-600 text-gray-200 shadow-xl"
@
click=
"add"
v-if=
"!readOnly"
>
+add
</button>
</div>
<!--
<span>
添加内容
</span>
<textarea
class=
"block my-2 w-full rounded"
v-model=
"newContent"
maxLength=
"512"
></textarea>
...
...
@@ -20,8 +20,9 @@
共
{{
data
?.
total
}}
条数据
</span>
<div>
<button
class=
"text-sm px-2 bg-slate-400 text-slate-100 rounded-lg hover:bg-slate-500 h-6"
@
click=
"showImportDataDialog"
>
导入数据
</button>
<button
class=
"text-sm px-2 bg-slate-400 text-slate-100 rounded-lg hover:bg-slate-500 h-6 ml-2"
@
click=
"exportData"
>
导出数据
</button>
<span
v-if=
"readOnly"
class=
"text-sm text-gray-500"
>
当前为只读模式,fork为自己项目并按照Readme修改参数才能编辑
</span>
<button
class=
"text-sm px-2 bg-slate-400 text-slate-100 rounded-lg hover:bg-slate-500 h-6 ml-2"
@
click=
"showImportDataDialog"
v-if=
"!readOnly"
>
导入数据
</button>
<button
class=
"text-sm px-2 bg-slate-400 text-slate-100 rounded-lg hover:bg-slate-500 h-6 ml-2"
@
click=
"exportData"
v-if=
"!readOnly"
>
导出数据
</button>
<button
v-if=
"data?.total === 0"
class=
"bg-green-600 px-2 text-sm hover:bg-green-700 rounded-lg text-gray-100 h-6 ml-2"
@
click=
"showLoadDataDialog=true"
>
添加样例数据
</button>
</div>
...
...
@@ -32,7 +33,7 @@
<tr
class=
"h-10 *:border-b *:border-slate-300 *:pl-2 *:bold"
>
<th
>
#
</th>
<th
>
内容
</th>
<th>
操作
</th>
<th
v-if=
"!readOnly"
>
操作
</th>
</tr>
</thead>
<tbody>
...
...
@@ -41,7 +42,7 @@
<td>
<textarea
class=
"my-2 w-full bg-gray-100 h-24 border-gray-300 text-slate-600 text-sm"
v-model=
"item.content"
maxLength=
"512"
></textarea>
</td>
<td
class=
"w-16 md:w-24 lg:w-64"
>
<td
class=
"w-16 md:w-24 lg:w-64"
v-if=
"!readOnly"
>
<div
class=
"flex gap-2 flex-col md:flex-row justify-center items-center *:rounded "
>
<button
@
click=
"deleteItem(item)"
class=
"text-gray-100 bg-orange-800 hover:bg-orange-900 w-14 md:w-16"
>
删除
</button>
<button
@
click=
"updateItem(item)"
class=
"text-gray-100 bg-slate-700 hover:bg-slate-800 w-14 md:w-16"
>
更新
</button>
...
...
@@ -78,6 +79,7 @@ import { MessagePlugin } from 'tdesign-vue-next';
import
ragDefaultData
from
'
../../js/ragDefaultContent
'
const
appName
=
Config
.
getData
().
data
.
app
const
esClient
=
new
RepEs
(
Config
.
getData
().
data
.
ext
)
export
default
{
...
...
@@ -86,6 +88,7 @@ export default {
},
data
()
{
return
{
readOnly
:
appName
===
'
inscode-qa
'
,
showLoadDataDialog
:
false
,
// 导入样例数据对话框
showDataDialog
:
false
,
// 导入、导出数据对话框
dataDialogMode
:
''
,
//
...
...
src/js/config.js
浏览文件 @
f3d749d5
// 提示词模板。在这里,你可以把一些背景信息告诉AI,也可以给AI提供一些问题的案例,方便AI更好的回答问题
const
prompt_template
=
`
你现在扮演一个AI客服助手,你需要遵守以下约定来回答用户的问题:
1. 回答问题时,需要参考产品介绍及用户提供的相关信息;
2. 回答问题内容尽量内容简洁、思路清晰易理解;
3. 回答问题文字格式尽量美观;
4. 系统内置了markdown引擎,你可以返回markdown格式内容,如果需要显示图片,可以使用markdown实现
5. 回答问题时,尽量分要点罗列,方便理解。比如:1. xxx 2. xxx 3. xxx
产品介绍:
const
product_description
=
`
产品介绍:
InsCode 是一个一站式的软件开发服务平台,从开发-部署-运维-运营,都可以在 InsCode 轻松完成。
InsCode 的 Ins 是 Inspiration,意思是创作、寻找有灵感的代码。
官网地址:https://inscode.csdn.net/
...
...
@@ -23,14 +16,25 @@ InsCode主要功能包括:
使用场景介绍:
随时随地写代码,快速启动项目,实时调试网页,一键部署,GPU 云容器。
`
const
prompt_template
=
`
你现在扮演一个AI客服助手,你需要遵守以下约定来回答用户的问题:
1. 回答问题时,需要参考产品介绍及用户提供的相关信息;
2. 回答问题内容尽量内容简洁、思路清晰易理解;
3. 回答问题文字格式尽量美观;
4. 系统内置了markdown引擎,你可以返回markdown格式内容,如果需要显示图片,可以使用markdown实现
5. 回答问题时,尽量分要点罗列,方便理解。比如:1. xxx 2. xxx 3. xxx
${
product_description
}
以下为用户后续问题相关的内容:
{context}
`
// 欢迎语,用户打开时自动发送给用户
const
welcome_text
=
`欢迎使用InsCode智能客服
。
"知识库"页面用来管理内容,你可以导入样例数据快速体验,也可以添加自己的数据。
const
welcome_text
=
`欢迎使用InsCode智能客服
你也可以按照Readme说明,在几分钟内构建自己的专属智能客服
**注意:结果由AI生成,可能存在不符合实际的联想内容,请注意甄别!**
`
...
...
@@ -47,9 +51,9 @@ export default {
"
code
"
:
200
,
"
data
"
:
{
"
id
"
:
128897
,
"
name
"
:
"
AI智能客服
"
,
"
create_time
"
:
1684920670901
,
"
app
"
:
"
inscode-qa
"
,
"
name
"
:
"
InsCode AI智能客服
"
,
"
create_time
"
:
1684920670901
,
"
resource_type
"
:
"
app
"
,
"
ext
"
:
{
"
mode
"
:
"
chat
"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录