Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
47e1cd9c
authored
Mar 09, 2025
by
YunaiV
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【功能新增】AI:聊天角色,新增 knowledge 的引用绑定
parent
d4a90b7d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
30 additions
and
2 deletions
+30
-2
src/api/ai/knowledge/knowledge/index.ts
+5
-0
src/api/ai/model/chatRole/index.ts
+1
-0
src/views/ai/model/chatRole/ChatRoleForm.vue
+18
-2
src/views/ai/model/chatRole/index.vue
+6
-0
No files found.
src/api/ai/knowledge/knowledge/index.ts
View file @
47e1cd9c
...
@@ -35,5 +35,10 @@ export const KnowledgeApi = {
...
@@ -35,5 +35,10 @@ export const KnowledgeApi = {
// 删除知识库
// 删除知识库
deleteKnowledge
:
async
(
id
:
number
)
=>
{
deleteKnowledge
:
async
(
id
:
number
)
=>
{
return
await
request
.
delete
({
url
:
`/ai/knowledge/delete?id=`
+
id
})
return
await
request
.
delete
({
url
:
`/ai/knowledge/delete?id=`
+
id
})
},
// 获取知识库简单列表
getSimpleKnowledgeList
:
async
()
=>
{
return
await
request
.
get
({
url
:
`/ai/knowledge/simple-list`
})
}
}
}
}
src/api/ai/model/chatRole/index.ts
View file @
47e1cd9c
...
@@ -13,6 +13,7 @@ export interface ChatRoleVO {
...
@@ -13,6 +13,7 @@ export interface ChatRoleVO {
welcomeMessage
:
string
// 角色设定
welcomeMessage
:
string
// 角色设定
publicStatus
:
boolean
// 是否公开
publicStatus
:
boolean
// 是否公开
status
:
number
// 状态
status
:
number
// 状态
knowledgeIds
?:
number
[]
// 引用的知识库ID列表
}
}
// AI 聊天角色 分页请求 vo
// AI 聊天角色 分页请求 vo
...
...
src/views/ai/model/chatRole/ChatRoleForm.vue
View file @
47e1cd9c
...
@@ -32,6 +32,16 @@
...
@@ -32,6 +32,16 @@
<el-form-item
label=
"角色设定"
prop=
"systemMessage"
>
<el-form-item
label=
"角色设定"
prop=
"systemMessage"
>
<el-input
type=
"textarea"
v-model=
"formData.systemMessage"
placeholder=
"请输入角色设定"
/>
<el-input
type=
"textarea"
v-model=
"formData.systemMessage"
placeholder=
"请输入角色设定"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"引用知识库"
prop=
"knowledgeIds"
>
<el-select
v-model=
"formData.knowledgeIds"
placeholder=
"请选择知识库"
clearable
multiple
>
<el-option
v-for=
"item in knowledgeList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
<el-form-item
label=
"是否公开"
prop=
"publicStatus"
v-if=
"!isUser"
>
<el-form-item
label=
"是否公开"
prop=
"publicStatus"
v-if=
"!isUser"
>
<el-radio-group
v-model=
"formData.publicStatus"
>
<el-radio-group
v-model=
"formData.publicStatus"
>
<el-radio
<el-radio
...
@@ -71,6 +81,7 @@ import { CommonStatusEnum } from '@/utils/constants'
...
@@ -71,6 +81,7 @@ import { CommonStatusEnum } from '@/utils/constants'
import
{
ModelApi
,
ModelVO
}
from
'@/api/ai/model/model'
import
{
ModelApi
,
ModelVO
}
from
'@/api/ai/model/model'
import
{
FormRules
}
from
'element-plus'
import
{
FormRules
}
from
'element-plus'
import
{
AiModelTypeEnum
}
from
'@/views/ai/utils/constants'
import
{
AiModelTypeEnum
}
from
'@/views/ai/utils/constants'
import
{
KnowledgeApi
,
KnowledgeVO
}
from
'@/api/ai/knowledge/knowledge'
/** AI 聊天角色 表单 */
/** AI 聊天角色 表单 */
defineOptions
({
name
:
'ChatRoleForm'
})
defineOptions
({
name
:
'ChatRoleForm'
})
...
@@ -92,10 +103,12 @@ const formData = ref({
...
@@ -92,10 +103,12 @@ const formData = ref({
description
:
undefined
,
description
:
undefined
,
systemMessage
:
undefined
,
systemMessage
:
undefined
,
publicStatus
:
true
,
publicStatus
:
true
,
status
:
CommonStatusEnum
.
ENABLE
status
:
CommonStatusEnum
.
ENABLE
,
knowledgeIds
:
[]
as
number
[]
})
})
const
formRef
=
ref
()
// 表单 Ref
const
formRef
=
ref
()
// 表单 Ref
const
models
=
ref
([]
as
ModelVO
[])
// 聊天模型列表
const
models
=
ref
([]
as
ModelVO
[])
// 聊天模型列表
const
knowledgeList
=
ref
([]
as
KnowledgeVO
[])
// 知识库列表
/** 是否【我】自己创建,私有角色 */
/** 是否【我】自己创建,私有角色 */
const
isUser
=
computed
(()
=>
{
const
isUser
=
computed
(()
=>
{
...
@@ -130,6 +143,8 @@ const open = async (type: string, id?: number, title?: string) => {
...
@@ -130,6 +143,8 @@ const open = async (type: string, id?: number, title?: string) => {
}
}
// 获得下拉数据
// 获得下拉数据
models
.
value
=
await
ModelApi
.
getModelSimpleList
(
AiModelTypeEnum
.
CHAT
)
models
.
value
=
await
ModelApi
.
getModelSimpleList
(
AiModelTypeEnum
.
CHAT
)
// 获取知识库列表
knowledgeList
.
value
=
await
KnowledgeApi
.
getSimpleKnowledgeList
()
}
}
defineExpose
({
open
})
// 提供 open 方法,用于打开弹窗
defineExpose
({
open
})
// 提供 open 方法,用于打开弹窗
...
@@ -177,7 +192,8 @@ const resetForm = () => {
...
@@ -177,7 +192,8 @@ const resetForm = () => {
description
:
undefined
,
description
:
undefined
,
systemMessage
:
undefined
,
systemMessage
:
undefined
,
publicStatus
:
true
,
publicStatus
:
true
,
status
:
CommonStatusEnum
.
ENABLE
status
:
CommonStatusEnum
.
ENABLE
,
knowledgeIds
:
[]
}
}
formRef
.
value
?.
resetFields
()
formRef
.
value
?.
resetFields
()
}
}
...
...
src/views/ai/model/chatRole/index.vue
View file @
47e1cd9c
...
@@ -69,6 +69,12 @@
...
@@ -69,6 +69,12 @@
<el-table-column
label=
"角色类别"
align=
"center"
prop=
"category"
/>
<el-table-column
label=
"角色类别"
align=
"center"
prop=
"category"
/>
<el-table-column
label=
"角色描述"
align=
"center"
prop=
"description"
/>
<el-table-column
label=
"角色描述"
align=
"center"
prop=
"description"
/>
<el-table-column
label=
"角色设定"
align=
"center"
prop=
"systemMessage"
/>
<el-table-column
label=
"角色设定"
align=
"center"
prop=
"systemMessage"
/>
<el-table-column
label=
"知识库"
align=
"center"
prop=
"knowledgeIds"
>
<
template
#
default=
"scope"
>
<span
v-if=
"!scope.row.knowledgeIds || scope.row.knowledgeIds.length === 0"
>
-
</span>
<span
v-else
>
引用
{{
scope
.
row
.
knowledgeIds
.
length
}}
个
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"是否公开"
align=
"center"
prop=
"publicStatus"
>
<el-table-column
label=
"是否公开"
align=
"center"
prop=
"publicStatus"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
:value=
"scope.row.publicStatus"
/>
<dict-tag
:type=
"DICT_TYPE.INFRA_BOOLEAN_STRING"
:value=
"scope.row.publicStatus"
/>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment