add chat and completion page under lab

This commit is contained in:
Mike Liao 2024-07-03 15:16:53 -07:00
parent 3ae84ce548
commit 811db71bf5
5 changed files with 164 additions and 3 deletions

View File

@ -33,6 +33,20 @@ export default {
summary_text: 'Translate lanuages leverage AI power', summary_text: 'Translate lanuages leverage AI power',
icon_picture: '', icon_picture: '',
cover_picture: cover_picture cover_picture: cover_picture
},
{
path: 'task-completion',
title_text: 'Task Completion',
summary_text: 'Respone for a user prompty',
icon_picture: '',
cover_picture: cover_picture
},
{
path: 'multiturn-chat',
title_text: 'Multi turn chat',
summary_text: 'Respone based on multi turn messages ',
icon_picture: '',
cover_picture: cover_picture
} }
] ]
} }

View File

@ -0,0 +1,59 @@
<template>
<div class="input_containter">
<input class="input_text" type="text" v-model="input_text" @keyup.enter="lets_chat($event)" />
<p class="responded_text">{{ responded_text }}</p>
</div>
</template>
<script>
import { LabApi } from '@/utils/index'
export default {
name: 'MultiturnChat',
components: {},
computed: {},
mounted() { },
methods: {
lets_chat($event) {
this.messages.push({
"role": "user",
"content": this.input_text
})
LabApi.multiturn_chat(this.messages)
.then((response) => {
this.responded_text = response.data
this.messages.push({
"role": "assistant",
"content": this.responded_text
})
})
.catch((error) => {
this.mnx_backendErrorHandler(error)
})
}
},
data() {
return {
input_text: null,
messages: [
{ "role": "system", "content": "You are a helpful assistant." }
],
responded_text: null
}
}
}
</script>
<style scoped lang="scss">
.input_containter {
@extend .container;
@extend .m-3;
}
.input_text {
@extend .w-100;
}
.responded_text {
@extend .w-100;
}
</style>

View File

@ -0,0 +1,48 @@
<template>
<div class="input_containter">
<input class="input_text" type="text" v-model="input_text" @keyup.enter="task_completion($event)" />
<p class="responded_text">{{ responded_text }}</p>
</div>
</template>
<script>
import { LabApi } from '@/utils/index'
export default {
name: 'TaskCompletion',
components: {},
computed: {},
mounted() { },
methods: {
task_completion($event) {
LabApi.task_completion(this.input_text)
.then((response) => {
this.responded_text = response.data
})
.catch((error) => {
this.mnx_backendErrorHandler(error)
})
}
},
data() {
return {
input_text: null,
responded_text: null
}
}
}
</script>
<style scoped lang="scss">
.input_containter {
@extend .container;
@extend .m-3;
}
.input_text {
@extend .w-100;
}
.responded_text {
@extend .w-100;
}
</style>

View File

@ -66,7 +66,8 @@ import HeaderUser from '@/headers/HeaderUser.vue'
//Lab //Lab
import LabHome from '@/pages/lab/Home.vue' import LabHome from '@/pages/lab/Home.vue'
import TranslationHome from '@/pages/lab/translation/Home.vue' import TranslationHome from '@/pages/lab/translation/Home.vue'
import TaskCompletion from '@/pages/lab/openai/TaskCompletion.vue'
import MultiturnChat from '@/pages/lab/openai/MultiturnChat.vue'
const router = createRouter({ const router = createRouter({
history: createWebHistory(), history: createWebHistory(),
routes: [ routes: [
@ -389,8 +390,19 @@ const router = createRouter({
path: '/machine-translation', path: '/machine-translation',
meta: { requiredRoles: [userRoleEnum.PERSONAL] }, meta: { requiredRoles: [userRoleEnum.PERSONAL] },
components: { default: TranslationHome, footer: FooterUser, header: HeaderUser } components: { default: TranslationHome, footer: FooterUser, header: HeaderUser }
} },
], {
name: 'task-completion',
path: '/task-completion',
meta: { requiredRoles: [userRoleEnum.PERSONAL] },
components: { default: TaskCompletion, footer: FooterUser, header: HeaderUser }
},
{
name: 'multiturn-chat',
path: '/multiturn-chat',
meta: { requiredRoles: [userRoleEnum.PERSONAL] },
components: { default: MultiturnChat, footer: FooterUser, header: HeaderUser }
}],
linkActiveClass: 'active' linkActiveClass: 'active'
/* scrollBehavior(_, _2, savedPosition) { /* scrollBehavior(_, _2, savedPosition) {

View File

@ -14,5 +14,33 @@ class LabApi {
) )
return request return request
} }
static task_completion(prompt) {
let jwt = userUtils.getJwtToken()
const request = backendAxios.post(
'/api/lab/openai-completion',
{
user_prompt: prompt
},
{
headers: { Authorization: `Bearer ${jwt}` }
}
)
return request
}
static multiturn_chat(messages) {
let jwt = userUtils.getJwtToken()
const request = backendAxios.post(
'/api/lab/openai-chat',
{
messages: messages
},
{
headers: { Authorization: `Bearer ${jwt}` }
}
)
return request
}
} }
export { LabApi } export { LabApi }