feat: add api-based extension & external data tool & moderation (#1459)

This commit is contained in:
zxhlyh
2023-11-06 19:36:32 +08:00
committed by GitHub
parent db43ed6f41
commit 32747641e4
84 changed files with 3327 additions and 167 deletions

View File

@ -368,7 +368,7 @@ const Main: FC<IMainProps> = ({
const isNotNewConversation = allConversations.some(item => item.id === _conversationId)
setAllConversationList(allConversations)
// fetch new conversation info
const { user_input_form, opening_statement: introduction, suggested_questions_after_answer, speech_to_text, retriever_resource }: any = appParams
const { user_input_form, opening_statement: introduction, suggested_questions_after_answer, speech_to_text, retriever_resource, sensitive_word_avoidance }: any = appParams
const prompt_variables = userInputsFormToPromptVariables(user_input_form)
if (siteInfo.default_language)
changeLanguage(siteInfo.default_language)
@ -555,6 +555,22 @@ const Main: FC<IMainProps> = ({
setChatList(newListWithAnswer)
}
: undefined,
onMessageReplace: (messageReplace) => {
if (isInstalledApp) {
responseItem.content = messageReplace.answer
}
else {
setChatList(produce(
getChatList(),
(draft) => {
const current = draft.find(item => item.id === messageReplace.id)
if (current)
current.content = messageReplace.answer
},
))
}
},
onError() {
setResponsingFalse()
// role back placeholder answer

View File

@ -292,7 +292,7 @@ const Main: FC<IMainProps> = ({
const isNotNewConversation = allConversations.some(item => item.id === _conversationId)
setAllConversationList(allConversations)
// fetch new conversation info
const { user_input_form, opening_statement: introduction, suggested_questions_after_answer, speech_to_text, retriever_resource }: any = appParams
const { user_input_form, opening_statement: introduction, suggested_questions_after_answer, speech_to_text, sensitive_word_avoidance }: any = appParams
const prompt_variables = userInputsFormToPromptVariables(user_input_form)
if (siteInfo.default_language)
changeLanguage(siteInfo.default_language)
@ -455,6 +455,17 @@ const Main: FC<IMainProps> = ({
setIsShowSuggestion(true)
}
},
onMessageReplace: (messageReplace) => {
setChatList(produce(
getChatList(),
(draft) => {
const current = draft.find(item => item.id === messageReplace.id)
if (current)
current.content = messageReplace.answer
},
))
},
onError(errorMessage, errorCode) {
if (['provider_not_initialize', 'completion_request_error'].includes(errorCode as string))
setShouldReload(true)

View File

@ -26,6 +26,7 @@ import SavedItems from '@/app/components/app/text-generate/saved-items'
import type { InstalledApp } from '@/models/explore'
import { DEFAULT_VALUE_MAX_LEN, appDefaultIconBackground } from '@/config'
import Toast from '@/app/components/base/toast'
const GROUP_SIZE = 5 // to avoid RPM(Request per minute) limit. The group task finished then the next group.
enum TaskStatus {
pending = 'pending',
@ -337,7 +338,7 @@ const TextGeneration: FC<IMainProps> = ({
setSiteInfo(siteInfo as SiteInfo)
changeLanguage(siteInfo.default_language)
const { user_input_form, more_like_this }: any = appParams
const { user_input_form, more_like_this, sensitive_word_avoidance }: any = appParams
const prompt_variables = userInputsFormToPromptVariables(user_input_form)
setPromptConfig({
prompt_template: '', // placeholder for feture

View File

@ -12,6 +12,7 @@ import type { Feedbacktype } from '@/app/components/app/chat/type'
import Loading from '@/app/components/base/loading'
import type { PromptConfig } from '@/models/debug'
import type { InstalledApp } from '@/models/explore'
import type { ModerationService } from '@/models/common'
export type IResultProps = {
isCallBatchAPI: boolean
isPC: boolean
@ -29,6 +30,8 @@ export type IResultProps = {
handleSaveMessage: (messageId: string) => void
taskId?: number
onCompleted: (completionRes: string, taskId?: number, success?: boolean) => void
enableModeration?: boolean
moderationService?: (text: string) => ReturnType<ModerationService>
}
const Result: FC<IResultProps> = ({
@ -127,7 +130,7 @@ const Result: FC<IResultProps> = ({
})
setCompletionRes('')
const res: string[] = []
let res: string[] = []
let tempMessageId = ''
if (!isPC)
@ -160,6 +163,10 @@ const Result: FC<IResultProps> = ({
onCompleted(getCompletionRes(), taskId, true)
clearInterval(runId)
},
onMessageReplace: (messageReplace) => {
res = [messageReplace.answer]
setCompletionRes(res.join(''))
},
onError() {
if (isTimeout)
return