Skip to content

Commit 9d741b4

Browse files
committed
wip: added regenerate and modify for ChatGPT
1 parent 4cd77f2 commit 9d741b4

File tree

2 files changed

+71
-17
lines changed

2 files changed

+71
-17
lines changed

frontend/src/components/ChatGPT/ChatGPT.vue

Lines changed: 69 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,7 @@ const messages: any = ref([])
2626
const loading = ref(false)
2727
const ask_buffer = ref('')
2828
29-
async function send() {
30-
if (messages.value.length === 0) {
31-
messages.value.push({
32-
role: 'user',
33-
content: props.content + '\n\nCurrent Language Code: ' + current
34-
})
35-
} else {
36-
messages.value.push({
37-
role: 'user',
38-
content: ask_buffer.value
39-
})
40-
ask_buffer.value = ''
41-
}
29+
async function request() {
4230
loading.value = true
4331
const t = ref({
4432
role: 'assistant',
@@ -110,6 +98,22 @@ async function send() {
11098
11199
}
112100
101+
async function send() {
102+
if (messages.value.length === 0) {
103+
messages.value.push({
104+
role: 'user',
105+
content: props.content + '\n\nCurrent Language Code: ' + current
106+
})
107+
} else {
108+
messages.value.push({
109+
role: 'user',
110+
content: ask_buffer.value
111+
})
112+
ask_buffer.value = ''
113+
}
114+
await request()
115+
}
116+
113117
const renderer = new marked.Renderer()
114118
renderer.code = (code, lang: string) => {
115119
const language = hljs.getLanguage(lang) ? lang : 'nginx'
@@ -134,6 +138,22 @@ function store_record() {
134138
messages: messages.value
135139
})
136140
}
141+
142+
function clear_record() {
143+
openai.store_record({
144+
file_name: props.path,
145+
messages: []
146+
})
147+
messages.value = []
148+
}
149+
150+
async function regenerate(index: number) {
151+
editing_idx.value = -1
152+
messages.value = messages.value.slice(0, index)
153+
await request()
154+
}
155+
156+
const editing_idx = ref(-1)
137157
</script>
138158

139159
<template>
@@ -145,17 +165,46 @@ function store_record() {
145165
item-layout="horizontal"
146166
:data-source="messages"
147167
>
148-
<template #renderItem="{ item }">
168+
<template #renderItem="{ item, index }">
149169
<a-list-item>
150170
<a-comment :author="item.role" :avatar="item.avatar">
151171
<template #content>
152-
<div class="content" v-html="marked.parse(item.content)"></div>
172+
<div class="content" v-if="item.role==='assistant'||editing_idx!=index"
173+
v-html="marked.parse(item.content)"></div>
174+
<a-input style="padding: 0" v-else v-model:value="item.content"
175+
:bordered="false"/>
176+
</template>
177+
<template #actions>
178+
<span v-if="item.role==='user'&&editing_idx!==index" @click="editing_idx=index">
179+
{{ $gettext('Modify') }}
180+
</span>
181+
<template v-else-if="editing_idx==index">
182+
<span @click="regenerate(index+1)">{{ $gettext('Save') }}</span>
183+
<span @click="editing_idx=-1">{{ $gettext('Cancel') }}</span>
184+
</template>
185+
<span v-else-if="!loading" @click="regenerate(index)" :disabled="loading">
186+
{{ $gettext('Reload') }}
187+
</span>
153188
</template>
154189
</a-comment>
155190
</a-list-item>
156191
</template>
157192
</a-list>
158193
<div class="input-msg">
194+
<div class="control-btn">
195+
<a-space v-show="!loading">
196+
<a-popconfirm
197+
:cancelText="$gettext('No')"
198+
:okText="$gettext('OK')"
199+
:title="$gettext('Are you sure you want to clear the record of chat?')"
200+
@confirm="clear_record">
201+
<a-button type="text">{{ $gettext('Clear') }}</a-button>
202+
</a-popconfirm>
203+
<a-button type="text" @click="regenerate(messages?.length-1)">
204+
{{ $gettext('Regenerate response') }}
205+
</a-button>
206+
</a-space>
207+
</div>
159208
<a-textarea auto-size v-model:value="ask_buffer"/>
160209
<div class="sned-btn">
161210
<a-button size="small" type="text" :loading="loading" @click="send">
@@ -209,6 +258,11 @@ function store_record() {
209258
.input-msg {
210259
position: relative;
211260
261+
.control-btn {
262+
display: flex;
263+
justify-content: center;
264+
}
265+
212266
.sned-btn {
213267
position: absolute;
214268
right: 0;

frontend/src/views/domain/DomainEdit.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ function on_change_enabled(checked: boolean) {
165165
</script>
166166
<template>
167167
<a-row :gutter="16">
168-
<a-col :xs="24" :sm="18" :md="16">
168+
<a-col :xs="24" :sm="24" :md="16">
169169
<a-card :bordered="false">
170170
<template #title>
171171
<span style="margin-right: 10px">{{ interpolate($gettext('Edit %{n}'), {n: name}) }}</span>
@@ -225,7 +225,7 @@ function on_change_enabled(checked: boolean) {
225225
</a-card>
226226
</a-col>
227227

228-
<a-col class="col-right" :xs="24" :sm="6" :md="8">
228+
<a-col class="col-right" :xs="24" :sm="24" :md="8">
229229
<chat-g-p-t class="chatgpt" :content="configText" :path="ngx_config.file_name"
230230
:history_messages="history_chatgpt_record"/>
231231
</a-col>

0 commit comments

Comments
 (0)