Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
lmp_web
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yujian
lmp_web
Commits
80200a17
Commit
80200a17
authored
Dec 15, 2023
by
mhw
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
版本跟新
parent
56d379cc
Changes
21
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
589 additions
and
130 deletions
+589
-130
package-lock.json
package-lock.json
+170
-3
package.json
package.json
+4
-1
TemplateController.js
src/api/GptController/TemplateController.js
+3
-0
base.scss
src/assets/style/base.scss
+18
-8
main.js
src/main.js
+9
-1
index.vue
src/views/gptTraining/modelFineTuning/sft/index.vue
+5
-1
index.vue
...ews/gptTraining/modelFineTuning/sft/particulars/index.vue
+1
-1
particulars.vue
...g/sft/particulars/taskList/dialog/operate/particulars.vue
+1
-1
index.vue
...aining/modelFineTuning/sft/particulars/taskList/index.vue
+1
-1
assessmentReport.vue
...ement/modelEvaluation/dialog/operate/assessmentReport.vue
+1
-1
modelResultAnalysis.vue
...nt/modelEvaluation/dialog/operate/modelResultAnalysis.vue
+1
-1
particulars.vue
...Management/modelEvaluation/dialog/operate/particulars.vue
+3
-3
particulars.vue
...ng/modelManagement/modelEvaluation/dialog/particulars.vue
+8
-1
index.vue
...odelManagement/modelSquare/particulars/taskList/index.vue
+30
-6
index.vue
...ng/modelManagement/myModel/particulars/taskList/index.vue
+16
-7
index.vue
.../modelService/testOnline/components/contentView/index.vue
+54
-0
index.vue
...ning/modelService/testOnline/components/leftBox/index.vue
+83
-18
index.vue
...ervice/testOnline/components/promptWordTemplate/index.vue
+81
-0
index.vue
...ing/modelService/testOnline/components/rightBox/index.vue
+97
-74
index.vue
src/views/gptTraining/modelService/testOnline/index.vue
+1
-0
index.vue
src/views/login/index.vue
+2
-2
No files found.
package-lock.json
View file @
80200a17
This diff is collapsed.
Click to expand it.
package.json
View file @
80200a17
...
@@ -20,13 +20,15 @@
...
@@ -20,13 +20,15 @@
"
echarts
"
:
"
^4.2.1
"
,
"
echarts
"
:
"
^4.2.1
"
,
"
ejs
"
:
"
^3.1.8
"
,
"
ejs
"
:
"
^3.1.8
"
,
"
element-ui
"
:
"
^2.13.0
"
,
"
element-ui
"
:
"
^2.13.0
"
,
"
highlight.js
"
:
"
^10.5.0
"
,
"
github-markdown-css
"
:
"
^5.5.0
"
,
"
highlight.js
"
:
"
^10.7.3
"
,
"
jquery
"
:
"
^3.1.1
"
,
"
jquery
"
:
"
^3.1.1
"
,
"
js-cookie
"
:
"
^2.2.1
"
,
"
js-cookie
"
:
"
^2.2.1
"
,
"
jsencrypt
"
:
"
^3.0.0-rc.1
"
,
"
jsencrypt
"
:
"
^3.0.0-rc.1
"
,
"
json-bigint
"
:
"
^0.3.0
"
,
"
json-bigint
"
:
"
^0.3.0
"
,
"
layui-layer
"
:
"
^1.0.9
"
,
"
layui-layer
"
:
"
^1.0.9
"
,
"
lodash
"
:
"
^4.17.5
"
,
"
lodash
"
:
"
^4.17.5
"
,
"
marked
"
:
"
^11.1.0
"
,
"
min-dash
"
:
"
^3.5.2
"
,
"
min-dash
"
:
"
^3.5.2
"
,
"
prismjs
"
:
"
^1.29.0
"
,
"
prismjs
"
:
"
^1.29.0
"
,
"
register-service-worker
"
:
"
^1.6.2
"
,
"
register-service-worker
"
:
"
^1.6.2
"
,
...
@@ -35,6 +37,7 @@
...
@@ -35,6 +37,7 @@
"
vue
"
:
"
^2.6.11
"
,
"
vue
"
:
"
^2.6.11
"
,
"
vue-clipboard2
"
:
"
^0.3.3
"
,
"
vue-clipboard2
"
:
"
^0.3.3
"
,
"
vue-json-viewer
"
:
"
^2.2.18
"
,
"
vue-json-viewer
"
:
"
^2.2.18
"
,
"
vue-markdown
"
:
"
^2.2.4
"
,
"
vue-router
"
:
"
^3.1.5
"
,
"
vue-router
"
:
"
^3.1.5
"
,
"
vuedraggable
"
:
"
^2.24.3
"
,
"
vuedraggable
"
:
"
^2.24.3
"
,
"
vuex
"
:
"
^3.1.2
"
,
"
vuex
"
:
"
^3.1.2
"
,
...
...
src/api/GptController/TemplateController.js
View file @
80200a17
...
@@ -40,4 +40,7 @@ export default class PresetTemplateController {
...
@@ -40,4 +40,7 @@ export default class PresetTemplateController {
static
deleteCollect
(
sender
,
params
,
axiosOption
,
httpOption
)
{
static
deleteCollect
(
sender
,
params
,
axiosOption
,
httpOption
)
{
return
sender
.
doUrl
(
'/admin/app/promptTemplate/deleteCollect'
,
'post'
,
params
,
axiosOption
,
httpOption
);
return
sender
.
doUrl
(
'/admin/app/promptTemplate/deleteCollect'
,
'post'
,
params
,
axiosOption
,
httpOption
);
}
}
static
listForTree
(
sender
,
params
,
axiosOption
,
httpOption
)
{
return
sender
.
doUrl
(
'/admin/app/promptTemplate/listForTree'
,
'post'
,
params
,
axiosOption
,
httpOption
);
}
}
}
src/assets/style/base.scss
View file @
80200a17
...
@@ -122,14 +122,24 @@ body .fullscreen-dialog .layui-layer-content {
...
@@ -122,14 +122,24 @@ body .fullscreen-dialog .layui-layer-content {
}
}
.orange-project
{
.orange-project
{
.el-button--primary
{
.el-button--primary
{
background-color
:
$--color-primary
!
important
;
background-color
:
$--color-primary
;
border-color
:
$--color-primary
!
important
;
border-color
:
$--color-primary
;
}
}
.el-button.is-plain
:hover
,
.el-button.is-plain
:focus
{
.el-button--primary.is-plain
{
background
:
#FFFFFF
;
color
:
#0092FF
;
border-color
:
$--color-primary
;
background
:
#e6f4ff
;
color
:
$--color-primary
;
border-color
:
#99d3ff
;
}
}
.el-button--primary.is-plain
:hover
,
.el-button--primary.is-plain
:focus
{
background
:
#0092FF
;
border-color
:
#0092FF
;
color
:
#FFFFFF
;
}
// .el-button.is-plain:hover, .el-button.is-plain:focus{
// background: #FFFFFF;
// border-color: $--color-primary;
// color: $--color-primary;
// }
.el-button--danger.is-plain
:hover
,
.el-button--danger.is-plain
:focus
{
.el-button--danger.is-plain
:hover
,
.el-button--danger.is-plain
:focus
{
background
:
#F56C6C
;
background
:
#F56C6C
;
border-color
:
#F56C6C
;
border-color
:
#F56C6C
;
...
...
src/main.js
View file @
80200a17
...
@@ -34,6 +34,7 @@ import OnlineBaseCard from '@/online/components/OnlineBaseCard.vue';
...
@@ -34,6 +34,7 @@ import OnlineBaseCard from '@/online/components/OnlineBaseCard.vue';
import
OnlineCustomTabs
from
'@/online/components/OnlineCustomTabs.vue'
;
import
OnlineCustomTabs
from
'@/online/components/OnlineCustomTabs.vue'
;
import
OnlineCustomTableContainer
from
'@/online/components/OnlineTableContainer/index.vue'
;
import
OnlineCustomTableContainer
from
'@/online/components/OnlineTableContainer/index.vue'
;
import
VueClipboard
from
'vue-clipboard2'
import
VueClipboard
from
'vue-clipboard2'
Vue
.
prototype
.
$SocketService
=
SocketService
Vue
.
prototype
.
$SocketService
=
SocketService
Vue
.
use
(
VueClipboard
)
Vue
.
use
(
VueClipboard
)
Vue
.
component
(
'OnlineCustomBlock'
,
OnlineCustomBlock
);
Vue
.
component
(
'OnlineCustomBlock'
,
OnlineCustomBlock
);
...
@@ -54,7 +55,14 @@ Vue.component('user-select', UserSelect);
...
@@ -54,7 +55,14 @@ Vue.component('user-select', UserSelect);
Vue
.
component
(
'dept-select'
,
DeptSelect
);
Vue
.
component
(
'dept-select'
,
DeptSelect
);
Vue
.
component
(
'table-box'
,
TableBox
);
Vue
.
component
(
'table-box'
,
TableBox
);
Vue
.
component
(
'right-add-btn'
,
RightAddBtn
);
Vue
.
component
(
'right-add-btn'
,
RightAddBtn
);
var
EventBus
=
new
Vue
();
Object
.
defineProperties
(
Vue
.
prototype
,
{
$bus
:
{
get
:
function
()
{
return
EventBus
}
}
})
Vue
.
use
(
ElementUI
);
Vue
.
use
(
ElementUI
);
Vue
.
use
(
VCharts
);
Vue
.
use
(
VCharts
);
...
...
src/views/gptTraining/modelFineTuning/sft/index.vue
View file @
80200a17
...
@@ -49,7 +49,11 @@
...
@@ -49,7 +49,11 @@
</vxe-column>
</vxe-column>
<vxe-column
field=
"runCount"
title=
"运行数量"
></vxe-column>
<vxe-column
field=
"runCount"
title=
"运行数量"
></vxe-column>
<vxe-column
field=
"taskDescribe"
title=
"任务描述"
></vxe-column>
<vxe-column
field=
"taskDescribe"
title=
"任务描述"
></vxe-column>
<vxe-column
field=
"createUserId"
title=
"创建人"
></vxe-column>
<vxe-column
field=
"createUserId"
title=
"创建人"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
createUserIdDictMap
.
name
}}
</
template
>
</vxe-column>
<vxe-column
field=
"createTime"
title=
"创建时间"
></vxe-column>
<vxe-column
field=
"createTime"
title=
"创建时间"
></vxe-column>
<vxe-column
field=
"operation"
title=
"操作"
>
<vxe-column
field=
"operation"
title=
"操作"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
...
...
src/views/gptTraining/modelFineTuning/sft/particulars/index.vue
View file @
80200a17
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<el-descriptions
title=
"基本信息"
style=
"width: 100%;line-height: 30px;"
>
<el-descriptions
title=
"基本信息"
style=
"width: 100%;line-height: 30px;"
>
<el-descriptions-item
label=
"任务名称:"
>
{{
tableItem
.
taskName
}}
</el-descriptions-item>
<el-descriptions-item
label=
"任务名称:"
>
{{
tableItem
.
taskName
}}
</el-descriptions-item>
<el-descriptions-item
label=
"任务ID:"
>
{{
tableItem
.
taskId
}}
</el-descriptions-item>
<el-descriptions-item
label=
"任务ID:"
>
{{
tableItem
.
taskId
}}
</el-descriptions-item>
<el-descriptions-item
label=
"创建人:"
>
{{
tableItem
.
updateUserId
}}
</el-descriptions-item>
<el-descriptions-item
label=
"创建人:"
>
{{
tableItem
.
createUserIdDictMap
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"创建时间:"
>
{{
tableItem
.
createTime
}}
</el-descriptions-item>
<el-descriptions-item
label=
"创建时间:"
>
{{
tableItem
.
createTime
}}
</el-descriptions-item>
<el-descriptions-item
label=
"任务描述:"
>
{{
tableItem
.
taskDescribe
}}
</el-descriptions-item>
<el-descriptions-item
label=
"任务描述:"
>
{{
tableItem
.
taskDescribe
}}
</el-descriptions-item>
<el-descriptions-item
label=
"任务类型:"
>
{{
ModelType
.
getValue
(
tableItem
.
taskType
)
}}
</el-descriptions-item>
<el-descriptions-item
label=
"任务类型:"
>
{{
ModelType
.
getValue
(
tableItem
.
taskType
)
}}
</el-descriptions-item>
...
...
src/views/gptTraining/modelFineTuning/sft/particulars/taskList/dialog/operate/particulars.vue
View file @
80200a17
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
<el-descriptions
title=
"基本信息"
>
<el-descriptions
title=
"基本信息"
>
<el-descriptions-item
label=
"运行名称:"
>
{{
item
.
runName
}}
</el-descriptions-item>
<el-descriptions-item
label=
"运行名称:"
>
{{
item
.
runName
}}
</el-descriptions-item>
<el-descriptions-item
label=
"运行ID:"
>
{{
item
.
runId
}}
</el-descriptions-item>
<el-descriptions-item
label=
"运行ID:"
>
{{
item
.
runId
}}
</el-descriptions-item>
<el-descriptions-item
label=
"创建人:"
>
{{
item
.
createUserId
}}
</el-descriptions-item>
<el-descriptions-item
label=
"创建人:"
>
{{
item
.
createUserId
DictMap
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"创建时间:"
>
{{
item
.
createTime
}}
</el-descriptions-item>
<el-descriptions-item
label=
"创建时间:"
>
{{
item
.
createTime
}}
</el-descriptions-item>
</el-descriptions>
</el-descriptions>
</el-card>
</el-card>
...
...
src/views/gptTraining/modelFineTuning/sft/particulars/taskList/index.vue
View file @
80200a17
...
@@ -171,7 +171,7 @@ export default {
...
@@ -171,7 +171,7 @@ export default {
particulars
(
item
)
{
particulars
(
item
)
{
this
.
$dialog
.
show
(
'任务详情'
,
taskOperate
,
{
this
.
$dialog
.
show
(
'任务详情'
,
taskOperate
,
{
area
:
[
'100%'
,
'100%'
]
area
:
[
'100%'
,
'100%'
]
},
{
page
:
'particulars'
,
item
:
item
}).
then
(
res
=>
{
},
{
page
:
'particulars'
,
item
:
{...
item
,
createUserIdDictMap
:
this
.
tableItem
.
createUserIdDictMap
}
}).
then
(
res
=>
{
this
.
refresh
();
this
.
refresh
();
}).
catch
(
e
=>
{
}).
catch
(
e
=>
{
this
.
refresh
();
this
.
refresh
();
...
...
src/views/gptTraining/modelManagement/modelEvaluation/dialog/operate/assessmentReport.vue
View file @
80200a17
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
<el-table
:data=
"tableData"
>
<el-table
:data=
"tableData"
>
<el-table-column
prop=
"label"
label=
"自动规则打分指标"
>
<el-table-column
prop=
"label"
label=
"自动规则打分指标"
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"value"
:label=
"item.model
Task.versionN
ame"
>
<el-table-column
prop=
"value"
:label=
"item.model
VersionIdDictMap.n
ame"
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
...
...
src/views/gptTraining/modelManagement/modelEvaluation/dialog/operate/modelResultAnalysis.vue
View file @
80200a17
...
@@ -6,7 +6,7 @@
...
@@ -6,7 +6,7 @@
:data="myDataSetPage.tableData.impl.dataList" min-height="96">
:data="myDataSetPage.tableData.impl.dataList" min-height="96">
<vxe-column
title=
"模型名称"
>
<vxe-column
title=
"模型名称"
>
<template
>
<template
>
{{
item
.
model
Task
.
versionN
ame
}}
{{
item
.
model
VersionIdDictMap
.
n
ame
}}
</
template
>
</
template
>
</vxe-column>
</vxe-column>
<vxe-column
field=
"input"
title=
"Prompt问题"
></vxe-column>
<vxe-column
field=
"input"
title=
"Prompt问题"
></vxe-column>
...
...
src/views/gptTraining/modelManagement/modelEvaluation/dialog/operate/particulars.vue
View file @
80200a17
...
@@ -13,8 +13,8 @@
...
@@ -13,8 +13,8 @@
</el-card>
</el-card>
<el-card
class=
"box-card"
>
<el-card
class=
"box-card"
>
<el-descriptions
title=
"数据配置"
>
<el-descriptions
title=
"数据配置"
>
<el-descriptions-item
label=
"数据集:"
>
{{
item
.
datasetVersionId
}}
</el-descriptions-item>
<el-descriptions-item
label=
"数据集:"
>
{{
item
.
datasetVersionId
DictMap
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label=
"数据模型:"
>
{{
item
.
model
Task
.
versionN
ame
}}
</el-descriptions-item>
<el-descriptions-item
label=
"数据模型:"
>
{{
item
.
model
VersionIdDictMap
.
n
ame
}}
</el-descriptions-item>
</el-descriptions>
</el-descriptions>
</el-card>
</el-card>
...
@@ -46,7 +46,7 @@ export default {
...
@@ -46,7 +46,7 @@ export default {
},
},
mounted
()
{
mounted
()
{
console
.
log
(
this
.
item
);
},
},
methods
:
{
methods
:
{
...
...
src/views/gptTraining/modelManagement/modelEvaluation/dialog/particulars.vue
View file @
80200a17
...
@@ -46,7 +46,14 @@ export default {
...
@@ -46,7 +46,14 @@ export default {
timeImg
:
null
timeImg
:
null
};
};
},
},
props
:
[
'page'
,
'item'
],
props
:
{
page
:
{
default
:
'particulars'
},
item
:
{
default
:
{}
}
},
components
:
{
particulars
,
assessmentReport
,
trainingLog
},
components
:
{
particulars
,
assessmentReport
,
trainingLog
},
computed
:
{},
computed
:
{},
...
...
src/views/gptTraining/modelManagement/modelSquare/particulars/taskList/index.vue
View file @
80200a17
...
@@ -49,6 +49,7 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
...
@@ -49,6 +49,7 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
import
{
ModelTask
}
from
'@/api/gptController.js'
;
import
{
ModelTask
}
from
'@/api/gptController.js'
;
// import editOrAdd from './dialog/editOrAdd';
// import editOrAdd from './dialog/editOrAdd';
import
particulars
from
'@/views/gptTraining/modelManagement/modelEvaluation/dialog/particulars.vue'
;
import
particulars
from
'@/views/gptTraining/modelManagement/modelEvaluation/dialog/particulars.vue'
;
import
modelCompressionParticulars
from
'@/views/gptTraining/modelManagement/modelCompression/dialog/particulars.vue'
;
export
default
{
export
default
{
data
()
{
data
()
{
...
@@ -136,12 +137,35 @@ export default {
...
@@ -136,12 +137,35 @@ export default {
})
})
},
},
particulars
(
item
)
{
particulars
(
item
)
{
console
.
log
(
item
);
// {
this
.
$dialog
.
show
(
'详情'
,
particulars
,
{
// id: 0,
area
:
[
'100%'
,
'100%'
]
// name: '新建版本',
},
{
item
:
item
}).
then
(
res
=>
{
// symbol: 'NewVersion'
this
.
refresh
();
// },
}).
catch
(
e
=>
{
});
// {
// id: 1,
// name: '模型评估',
// symbol: 'modelEvaluation'
// },
// {
// id: 2,
// name: '模型压缩',
// symbol: 'ModelCompression'
// }
console
.
log
(
item
,
item
.
taskStatus
);
if
(
item
.
taskStatus
===
2
)
{
// 模型压缩
this
.
$dialog
.
show
(
'详情'
,
modelCompressionParticulars
,
{
area
:
[
'100%'
,
'100%'
]
},
{
item
:
item
}).
then
(
res
=>
{
this
.
refresh
();
}).
catch
(
e
=>
{
});
}
else
{
this
.
$dialog
.
show
(
'详情'
,
particulars
,
{
area
:
[
'100%'
,
'100%'
]
},
{
item
:
item
}).
then
(
res
=>
{
this
.
refresh
();
}).
catch
(
e
=>
{
});
}
},
},
refresh
(
reloadData
=
false
)
{
refresh
(
reloadData
=
false
)
{
if
(
reloadData
)
{
if
(
reloadData
)
{
...
...
src/views/gptTraining/modelManagement/myModel/particulars/taskList/index.vue
View file @
80200a17
...
@@ -11,6 +11,7 @@
...
@@ -11,6 +11,7 @@
<vxe-column
field=
"taskType"
title=
"任务类型"
>
<vxe-column
field=
"taskType"
title=
"任务类型"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
TaskType
.
getValue
(
scope
.
row
.
taskType
)
}}
{{
TaskType
.
getValue
(
scope
.
row
.
taskType
)
}}
</
template
>
</
template
>
</vxe-column>
</vxe-column>
<vxe-column
field=
"taskStatus"
title=
"任务状态"
>
<vxe-column
field=
"taskStatus"
title=
"任务状态"
>
...
@@ -49,7 +50,7 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
...
@@ -49,7 +50,7 @@ import { DropdownWidget, TableWidget, UploadWidget, ChartWidget } from '@/utils/
import
{
ModelTask
}
from
'@/api/gptController.js'
;
import
{
ModelTask
}
from
'@/api/gptController.js'
;
// import editOrAdd from './dialog/editOrAdd';
// import editOrAdd from './dialog/editOrAdd';
import
particulars
from
'@/views/gptTraining/modelManagement/modelEvaluation/dialog/particulars.vue'
;
import
particulars
from
'@/views/gptTraining/modelManagement/modelEvaluation/dialog/particulars.vue'
;
import
modelCompressionParticulars
from
'@/views/gptTraining/modelManagement/modelCompression/dialog/particulars.vue'
;
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
...
@@ -136,12 +137,20 @@ export default {
...
@@ -136,12 +137,20 @@ export default {
})
})
},
},
particulars
(
item
)
{
particulars
(
item
)
{
console
.
log
(
item
);
console
.
log
(
item
,
item
.
taskType
);
this
.
$dialog
.
show
(
'详情'
,
particulars
,
{
if
(
item
.
taskType
===
2
)
{
// 模型压缩
area
:
[
'100%'
,
'100%'
]
this
.
$dialog
.
show
(
'模型压缩详情'
,
modelCompressionParticulars
,
{
},
{
item
:
item
}).
then
(
res
=>
{
area
:
[
'100%'
,
'100%'
]
this
.
refresh
();
},
{
item
:
item
.
modelCompress
}).
then
(
res
=>
{
}).
catch
(
e
=>
{
});
this
.
refresh
();
}).
catch
(
e
=>
{
});
}
else
{
this
.
$dialog
.
show
(
'模型评估详情'
,
particulars
,
{
area
:
[
'100%'
,
'100%'
]
},
{
item
:
item
.
modelEstimate
}).
then
(
res
=>
{
this
.
refresh
();
}).
catch
(
e
=>
{
});
}
},
},
refresh
(
reloadData
=
false
)
{
refresh
(
reloadData
=
false
)
{
if
(
reloadData
)
{
if
(
reloadData
)
{
...
...
src/views/gptTraining/modelService/testOnline/components/contentView/index.vue
0 → 100644
View file @
80200a17
<!-- 答案内容预览 -->
<
template
>
<vue-markdown
:source=
"content"
v-highlight
class=
"markdown-body"
>
</vue-markdown>
</
template
>
<
script
>
import
hljs
from
'highlight.js'
// 代码块高亮
// import 'highlight.js/styles/github.css' // 代码块高亮样式
import
'github-markdown-css'
// 整体 markdown 样式
import
VueMarkdown
from
'vue-markdown'
export
default
{
data
()
{
return
{
result
:
undefined
};
},
props
:
[
'content'
],
components
:
{
VueMarkdown
},
computed
:
{},
directives
:
{
highlight
:
{
// 指令的定义
inserted
:
function
(
el
)
{
let
blocks
=
el
.
querySelectorAll
(
'pre code'
);
blocks
.
forEach
((
block
,
index
)
=>
{
/** 代码高亮 */
hljs
.
highlightBlock
(
block
);
/** 手动添加一个hljs类名,防止不支持的语言背景变空白 */
block
.
classList
.
add
(
'hljs'
);
})
}
}
},
mounted
()
{
},
methods
:
{}
}
</
script
>
<
style
scoped
>
.markdown-body
{
background
:
none
!important
;
font-size
:
14px
!important
;
}
.markdown-body
pre
{
background-color
:
#3b3d3f
;
}
</
style
>
src/views/gptTraining/modelService/testOnline/components/leftBox/index.vue
View file @
80200a17
<!--左侧操作界面 -->
<!--左侧操作界面 -->
<
template
>
<
template
>
<el-form
label-position=
"left"
ref=
"form"
label-width=
"120px"
:model=
"form"
:size=
"defaultFormItemSize"
style=
"padding:20px"
>
<el-form
label-position=
"left"
ref=
"form"
label-width=
"120px"
:model=
"form"
:size=
"defaultFormItemSize"
style=
"padding:20px;width:400px"
>
<el-form-item
label=
"请选择对话模式:"
>
<el-form-item
label=
"请选择对话模式:"
>
<el-select
v-model=
"form.pattern"
placeholder=
"请选择"
>
<el-select
v-model=
"form.pattern"
placeholder=
"请选择"
>
<el-option
v-for=
"item in ModeOfSpeaking.getList()"
:key=
"item.id"
:label=
"item.name"
:value=
"item.name"
>
<el-option
v-for=
"item in ModeOfSpeaking.getList()"
:key=
"item.id"
:label=
"item.name"
:value=
"item.name"
>
...
@@ -12,45 +13,66 @@
...
@@ -12,45 +13,66 @@
:props=
'
{ label: "name", value: "name", emitPath: false }' @change="changeModel">
</el-cascader>
:props=
'
{ label: "name", value: "name", emitPath: false }' @change="changeModel">
</el-cascader>
</el-form-item>
</el-form-item>
<el-form-item
label=
"Temperature:"
>
<el-form-item
label=
"Temperature:"
>
<el-slider
v-model=
"temperature"
:format-tooltip=
"formatTooltip"
@
change=
"form.temperature=temperature / 100"
></el-slider>
<el-slider
v-model=
"temperature"
:format-tooltip=
"formatTooltip"
@
change=
"form.temperature = temperature / 100"
></el-slider>
</el-form-item>
</el-form-item>
<el-form-item
label=
"历史对话轮数:"
>
<el-form-item
label=
"历史对话轮数:"
>
<el-input-number
v-model=
"form.heistoryRotate"
:min=
"0"
:max=
"10"
></el-input-number>
<el-input-number
v-model=
"form.heistoryRotate"
:min=
"0"
:max=
"10"
></el-input-number>
</el-form-item>
<el-form-item
label=
"提示词:"
>
<el-select
v-model=
"promptTemplate"
filterable
placeholder=
"请选择提示词"
value-key=
"templateId"
@
change=
"templateControllerChange"
clearable
>
<el-option
v-for=
"item in templateControllerList"
:key=
"item.value"
:label=
"item.label"
:value=
"item"
>
</el-option>
</el-select>
<el-switch
@
change=
"changePromptTemplate"
style=
"margin-left: 10px;"
v-model=
"isPromptTemplate"
active-color=
"#13ce66"
inactive-color=
"#ff4949"
>
</el-switch>
</el-form-item>
<el-form-item
label-width=
"0px"
v-if=
"form.prompt_template"
>
<div
style=
"background-color: #f3f3f3;
padding: 10px;
border-radius: 10px;"
>
{{
form
.
prompt_template
}}
</div>
</el-form-item>
</el-form-item>
<el-form-item
label-width=
"0px"
v-if=
"form.pattern
==
'知识库问答'"
>
<el-form-item
label-width=
"0px"
v-if=
"form.pattern
==
'知识库问答'"
>
<el-collapse
value=
"1"
>
<el-collapse
value=
"1"
>
<el-collapse-item
name=
"1"
>
<el-collapse-item
name=
"1"
>
<template
slot=
"title"
>
知识库配置
</
template
>
<template
slot=
"title"
>
知识库配置
</
template
>
<el-form-item
label=
"请选择知识库:"
style=
"margin-bottom:30px"
>
<el-form-item
label=
"请选择知识库:"
style=
"margin-bottom:30px"
>
<el-select
ref=
"knowledgeSelect"
v-model=
"form.knowledgeConfige.knowledge_base_name"
placeholder=
"请选择"
@
change=
"changeKnowledge"
>
<el-select
ref=
"knowledgeSelect"
v-model=
"form.knowledgeConfige.knowledge_base_name"
placeholder=
"请选择"
<el-option
v-for=
"item in knowledgeList"
:key=
"item.knowledgeId"
:label=
"item.knowledgeName"
:value=
"item.knowledgeName"
>
@
change=
"changeKnowledge"
>
<el-option
v-for=
"item in knowledgeList"
:key=
"item.knowledgeId"
:label=
"item.knowledgeName"
:value=
"item.knowledgeName"
>
</el-option>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"匹配知识条数:"
style=
"margin-bottom:30px"
>
<el-form-item
label=
"匹配知识条数:"
style=
"margin-bottom:30px"
>
<el-input-number
v-model=
"form.knowledgeConfige.top_k"
:min=
"1"
:max=
"20"
></el-input-number>
<el-input-number
v-model=
"form.knowledgeConfige.top_k"
:min=
"1"
:max=
"20"
></el-input-number>
</el-form-item>
</el-form-item>
<el-form-item
label=
"知识匹配分数阈值:"
>
<el-form-item
label=
"知识匹配分数阈值:"
>
<el-slider
v-model=
"form.knowledgeConfige.score_threshold"
:format-tooltip=
"formatTooltip"
@
change=
"form.knowledgeConfige.score_threshold=knowledgeScoreThreshold / 100"
></el-slider>
<el-slider
v-model=
"knowledgeScoreThreshold"
:format-tooltip=
"formatTooltip"
@
change=
"form.knowledgeConfige.score_threshold = knowledgeScoreThreshold / 100"
></el-slider>
</el-form-item>
</el-form-item>
</el-collapse-item>
</el-collapse-item>
</el-collapse>
</el-collapse>
</el-form-item>
</el-form-item>
<el-form-item
label-width=
"0px"
v-if=
"form.pattern == '搜索引擎问答'"
>
<el-form-item
label-width=
"0px"
v-if=
"form.pattern=='搜索引擎问答'"
>
<el-collapse
value=
"1"
>
<el-collapse
value=
"1"
>
<el-collapse-item
name=
"1"
>
<el-collapse-item
name=
"1"
>
<
template
slot=
"title"
>
搜索引擎配置
</
template
>
<
template
slot=
"title"
>
搜索引擎配置
</
template
>
<el-form-item
label=
"选择搜索引擎:"
style=
"margin-bottom:30px"
>
<el-form-item
label=
"选择搜索引擎:"
style=
"margin-bottom:30px"
>
<el-select
ref=
"searchSelect"
v-model=
"form.searchConfige.search_engine_name"
placeholder=
"请选择"
@
change=
"changeSe"
>
<el-select
ref=
"searchSelect"
v-model=
"form.searchConfige.search_engine_name"
placeholder=
"请选择"
<el-option
v-for=
"item in [{label:'bing',value:'bing'},{label:'duckduckgo',value:'duckduckgo'}]"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
@
change=
"changeSe"
>
<el-option
v-for=
"item in [{ label: 'bing', value: 'bing' }, { label: 'duckduckgo', value: 'duckduckgo' }]"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"匹配搜索结果条数:"
>
<el-form-item
label=
"匹配搜索结果条数:"
>
<el-input-number
v-model=
"form.searchConfige.top_k"
:min=
"1"
:max=
"20"
></el-input-number>
<el-input-number
v-model=
"form.searchConfige.top_k"
:min=
"1"
:max=
"20"
></el-input-number>
</el-form-item>
</el-form-item>
</el-collapse-item>
</el-collapse-item>
</el-collapse>
</el-collapse>
...
@@ -60,10 +82,14 @@
...
@@ -60,10 +82,14 @@
</template>
</template>
<
script
>
<
script
>
import
{
KnowledgeManage
,
MyModel
,
ModelVersion
}
from
'@/api/gptController.js'
;
import
{
KnowledgeManage
,
MyModel
,
ModelVersion
,
TemplateController
}
from
'@/api/gptController.js'
;
import
promptWordTemplate
from
'../promptWordTemplate'
;
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
isPromptTemplate
:
true
,
promptTemplate
:
''
,
templateControllerList
:
[],
modelList
:
[],
modelList
:
[],
activeModelList
:
[],
activeModelList
:
[],
loading
:
undefined
,
loading
:
undefined
,
...
@@ -75,6 +101,7 @@ export default {
...
@@ -75,6 +101,7 @@ export default {
pattern
:
'LLM 对话'
,
// 对话模式
pattern
:
'LLM 对话'
,
// 对话模式
model_name
:
undefined
,
// 模型名称
model_name
:
undefined
,
// 模型名称
temperature
:
0.7
,
temperature
:
0.7
,
prompt_template
:
''
,
heistoryRotate
:
10
,
// 历史对话轮数
heistoryRotate
:
10
,
// 历史对话轮数
knowledgeConfige
:
{
// 知识库配置
knowledgeConfige
:
{
// 知识库配置
knowledge_base_name
:
''
,
knowledge_base_name
:
''
,
...
@@ -107,9 +134,24 @@ export default {
...
@@ -107,9 +134,24 @@ export default {
mounted
()
{
mounted
()
{
this
.
getKnowledgeList
()
this
.
getKnowledgeList
()
this
.
getModelList
()
this
.
getModelList
()
this
.
getTemplateControllerList
()
},
},
methods
:
{
methods
:
{
getTemplateControllerList
()
{
TemplateController
.
listForTree
(
this
,
{}).
then
(
res
=>
{
this
.
templateControllerList
=
res
.
data
.
map
((
item
)
=>
{
return
{
templateId
:
item
.
templateId
,
label
:
item
.
templateName
,
value
:
item
.
templateContent
,
parameterFormat
:
item
.
parameterFormat
}
})
}).
catch
(
e
=>
{
console
.
log
(
e
);
});
},
getModelList
()
{
getModelList
()
{
MyModel
.
listForTree
(
this
,
{}).
then
(
res
=>
{
MyModel
.
listForTree
(
this
,
{}).
then
(
res
=>
{
this
.
modelList
=
res
.
data
.
map
((
item
)
=>
{
this
.
modelList
=
res
.
data
.
map
((
item
)
=>
{
...
@@ -159,7 +201,7 @@ export default {
...
@@ -159,7 +201,7 @@ export default {
},
},
switchModel
(
versionId
)
{
// 切换模型
switchModel
(
versionId
)
{
// 切换模型
this
.
openLoading
(
'LLM模型加载中'
)
this
.
openLoading
(
'LLM模型加载中'
)
ModelVersion
.
change
(
this
,
{
versionId
:
versionId
}).
then
(
res
=>
{
ModelVersion
.
change
(
this
,
{
versionId
:
versionId
}).
then
(
res
=>
{
console
.
log
(
res
);
console
.
log
(
res
);
this
.
loading
.
close
();
this
.
loading
.
close
();
}).
catch
(
e
=>
{
}).
catch
(
e
=>
{
...
@@ -179,13 +221,36 @@ export default {
...
@@ -179,13 +221,36 @@ export default {
changeSe
(
dtat
)
{
// 修改模型引擎
changeSe
(
dtat
)
{
// 修改模型引擎
// this.openLoading('模型引擎加载中')
// this.openLoading('模型引擎加载中')
// console.log(this.$refs.searchSelect);
// console.log(this.$refs.searchSelect);
},
templateControllerChange
(
data
)
{
if
(
!
data
)
{
this
.
form
.
prompt_template
=
''
return
}
this
.
$dialog
.
show
(
data
.
label
,
promptWordTemplate
,
{
area
:
[
'50%'
,
'40%'
]
},
{
data
:
data
}).
then
(
res
=>
{
this
.
form
.
prompt_template
=
res
}).
catch
(
e
=>
{
this
.
promptTemplate
=
undefined
});
},
changePromptTemplate
()
{
console
.
log
(
1
,
this
.
$bus
);
this
.
$bus
.
$emit
(
'isPromptTemplate'
,
this
.
isPromptTemplate
);
}
}
}
}
}
}
</
script
>
</
script
>
<
style
>
<
style
>
.myLoading
.el-loading-spinner
i
{
.myLoading
.el-loading-spinner
i
{
font-size
:
24px
!important
;
font-size
:
24px
!important
;
}
}
.el-form-item__content
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
}
</
style
>
</
style
>
src/views/gptTraining/modelService/testOnline/components/promptWordTemplate/index.vue
0 → 100644
View file @
80200a17
<!-- 提示词模板 -->
<
template
>
<div>
<div
class=
"promptWordTemplate"
>
<span
v-for=
"(item,index) in content"
:key=
"index"
>
<template
v-if=
"item.text"
>
{{
item
.
text
}}
</
template
>
<
template
v-else-if=
"item.placeholder"
>
<el-input
v-model=
"item.value"
style=
"display:inline-block;width: 100px;margin-left: 10px;"
size=
"small"
:placeholder=
"item.placeholder"
></el-input>
</
template
>
</span>
<el-row
type=
"flex"
justify=
"end"
class=
"dialog-btn-layer mt20"
>
<el-button
:size=
"defaultFormItemSize"
:plain=
"true"
@
click=
"onCancel(false)"
>
取消
</el-button>
<el-button
type=
"primary"
:size=
"defaultFormItemSize"
@
click=
"onSubmit"
>
确定
</el-button>
</el-row>
</div>
</div>
</template>
<
script
>
export
default
{
data
()
{
return
{
content
:
undefined
,
text
:
''
,
placeholders
:
[]
};
},
props
:
[
'data'
],
components
:
{},
computed
:
{},
mounted
()
{
this
.
content
=
this
.
domRender
(
this
.
data
.
value
,
this
.
data
.
parameterFormat
).
map
((
item
,
index
)
=>
{
let
x
=
this
.
placeholders
.
indexOf
(
item
)
!==
-
1
return
{
text
:
x
?
''
:
item
,
value
:
''
,
placeholder
:
x
?
item
:
''
}
})
},
methods
:
{
onCancel
(
isSuccess
,
data
)
{
if
(
this
.
observer
!=
null
)
{
this
.
observer
.
cancel
(
isSuccess
,
data
);
}
},
domRender
(
str
,
parameterFormat
)
{
var
match
;
let
strData
=
str
var
regexPattern
=
new
RegExp
(
`\\
${
parameterFormat
[
0
]}
([^}]+)\\
${
parameterFormat
[
1
]}
`
,
'g'
);
while
((
match
=
regexPattern
.
exec
(
str
))
!==
null
)
{
this
.
placeholders
.
push
(
match
[
1
]);
}
var
reg
=
new
RegExp
(
`\\
${
parameterFormat
[
0
]}
(.*?)\\
${
parameterFormat
[
1
]}
`
,
'g'
)
strData
=
strData
.
split
(
reg
);
return
strData
},
onSubmit
()
{
this
.
content
.
forEach
(
element
=>
{
this
.
text
+=
element
.
text
||
element
.
value
});
this
.
onCancel
(
true
,
this
.
text
)
}
}
}
</
script
>
<
style
scoped
>
.promptWordTemplate
{
line-height
:
30px
;
}
</
style
>
src/views/gptTraining/modelService/testOnline/components/rightBox/index.vue
View file @
80200a17
This diff is collapsed.
Click to expand it.
src/views/gptTraining/modelService/testOnline/index.vue
View file @
80200a17
...
@@ -64,6 +64,7 @@ export default {
...
@@ -64,6 +64,7 @@ export default {
background
:
#fff
;
background
:
#fff
;
position
:
relative
;
position
:
relative
;
transition
:
all
0.3s
;
transition
:
all
0.3s
;
}
}
.leftBox
{
.leftBox
{
...
...
src/views/login/index.vue
View file @
80200a17
...
@@ -12,9 +12,9 @@
...
@@ -12,9 +12,9 @@
<div
class=
"login-input"
>
<div
class=
"login-input"
>
<span
class=
"title"
>
欢迎登录
</span>
<span
class=
"title"
>
欢迎登录
</span>
<span
class=
"desc"
>
{{
projectName
}}
</span>
<span
class=
"desc"
>
{{
projectName
}}
</span>
<el-form
:model=
"dataForm"
:rules=
"dataRule"
size=
"medium"
ref=
"dataForm"
@
keyup
.
enter
.
native=
"dataFormSubmit()
"
>
<el-form
:model=
"dataForm"
label-position=
"top"
:rules=
"dataRule"
size=
"medium"
ref=
"dataForm"
@
keyup
.
enter
.
native=
"dataFormSubmit()"
label-width=
"70px
"
>
<el-col
:span=
"24"
>
<el-col
:span=
"24"
>
<el-form-item
prop=
"mobilePhone"
label=
"用户名"
style=
"margin-bottom: 12px;"
>
<el-form-item
prop=
"mobilePhone"
label=
"用户名"
>
<el-input
v-model=
"dataForm.mobilePhone"
style=
"width: 100%;"
placeholder=
"帐号"
>
<el-input
v-model=
"dataForm.mobilePhone"
style=
"width: 100%;"
placeholder=
"帐号"
>
<img
slot=
"prefix"
src=
"@/assets/img/login_username.png"
alt=
""
>
<img
slot=
"prefix"
src=
"@/assets/img/login_username.png"
alt=
""
>
</el-input>
</el-input>
...
...
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