diff --git a/relay/channel/openai/relay-openai.go b/relay/channel/openai/relay-openai.go index b8b7d8d..39127de 100644 --- a/relay/channel/openai/relay-openai.go +++ b/relay/channel/openai/relay-openai.go @@ -75,11 +75,20 @@ func OpenaiStreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*d err := json.Unmarshal(common.StringToByteSlice(streamResp), &streamResponses) if err != nil { common.SysError("error unmarshalling stream response: " + err.Error()) - return // just ignore the error - } - for _, streamResponse := range streamResponses { - for _, choice := range streamResponse.Choices { - responseTextBuilder.WriteString(choice.Delta.Content) + for _, item := range streamItems { + var streamResponse dto.ChatCompletionsStreamResponseSimple + err := json.Unmarshal(common.StringToByteSlice(item), &streamResponse) + if err == nil { + for _, choice := range streamResponse.Choices { + responseTextBuilder.WriteString(choice.Delta.Content) + } + } + } + } else { + for _, streamResponse := range streamResponses { + for _, choice := range streamResponse.Choices { + responseTextBuilder.WriteString(choice.Delta.Content) + } } } case relayconstant.RelayModeCompletions: @@ -87,11 +96,20 @@ func OpenaiStreamHandler(c *gin.Context, resp *http.Response, relayMode int) (*d err := json.Unmarshal(common.StringToByteSlice(streamResp), &streamResponses) if err != nil { common.SysError("error unmarshalling stream response: " + err.Error()) - return // just ignore the error - } - for _, streamResponse := range streamResponses { - for _, choice := range streamResponse.Choices { - responseTextBuilder.WriteString(choice.Text) + for _, item := range streamItems { + var streamResponse dto.CompletionsStreamResponse + err := json.Unmarshal(common.StringToByteSlice(item), &streamResponse) + if err == nil { + for _, choice := range streamResponse.Choices { + responseTextBuilder.WriteString(choice.Text) + } + } + } + } else { + for _, streamResponse := range streamResponses { + for _, choice := range streamResponse.Choices { + responseTextBuilder.WriteString(choice.Text) + } } } } diff --git a/web/src/components/ChannelsTable.js b/web/src/components/ChannelsTable.js index 3f61ffc..0d2ed57 100644 --- a/web/src/components/ChannelsTable.js +++ b/web/src/components/ChannelsTable.js @@ -322,6 +322,9 @@ const ChannelsTable = () => { const res = await API.get( `/api/channel/?p=${startIdx}&page_size=${pageSize}&id_sort=${idSort}`, ); + if (res === undefined) { + return; + } const { success, message, data } = res.data; if (success) { if (startIdx === 0) { @@ -608,6 +611,9 @@ const ChannelsTable = () => { let res = await API.get(`/api/group/`); // add 'all' option // res.data.data.unshift('all'); + if (res === undefined) { + return; + } setGroupOptions( res.data.data.map((group) => ({ label: group, diff --git a/web/src/components/PersonalSetting.js b/web/src/components/PersonalSetting.js index 3fc2052..214c495 100644 --- a/web/src/components/PersonalSetting.js +++ b/web/src/components/PersonalSetting.js @@ -628,7 +628,7 @@ const PersonalSetting = () => { onCancel={() => setShowWeChatBindModal(false)} // onOpen={() => setShowWeChatBindModal(true)} visible={showWeChatBindModal} - size={'mini'} + size={'small'} >
@@ -678,7 +678,7 @@ const PersonalSetting = () => { onClick={sendVerificationCode} disabled={disableButton || loading} > - {disableButton ? `重新发送(${countdown})` : '获取验证码'} + {disableButton ? `重新发送 (${countdown})` : '获取验证码'}
diff --git a/web/src/components/SiderBar.js b/web/src/components/SiderBar.js index e0b2ae3..96d7e7e 100644 --- a/web/src/components/SiderBar.js +++ b/web/src/components/SiderBar.js @@ -156,6 +156,9 @@ const SiderBar = () => { const loadStatus = async () => { const res = await API.get('/api/status'); + if (res === undefined) { + return; + } const { success, data } = res.data; if (success) { localStorage.setItem('status', JSON.stringify(data)); diff --git a/web/src/components/SystemSetting.js b/web/src/components/SystemSetting.js index 49d6a08..a8f34b5 100644 --- a/web/src/components/SystemSetting.js +++ b/web/src/components/SystemSetting.js @@ -46,7 +46,7 @@ const SystemSetting = () => { TurnstileSecretKey: '', RegisterEnabled: '', EmailDomainRestrictionEnabled: '', - EmailDomainWhitelist: '', + EmailDomainWhitelist: [], // telegram login TelegramOAuthEnabled: '', TelegramBotToken: '', @@ -89,6 +89,7 @@ const SystemSetting = () => { useEffect(() => { getOptions().then(); }, []); + useEffect(() => {}, [inputs.EmailDomainWhitelist]); const updateOption = async (key, value) => { setLoading(true); diff --git a/web/src/pages/Channel/EditChannel.js b/web/src/pages/Channel/EditChannel.js index ab0a373..9b98de2 100644 --- a/web/src/pages/Channel/EditChannel.js +++ b/web/src/pages/Channel/EditChannel.js @@ -188,6 +188,9 @@ const EditChannel = (props) => { const loadChannel = async () => { setLoading(true); let res = await API.get(`/api/channel/${channelId}`); + if (res === undefined) { + return; + } const { success, message, data } = res.data; if (success) { if (data.models === '') { @@ -223,6 +226,9 @@ const EditChannel = (props) => { const fetchModels = async () => { try { let res = await API.get(`/api/channel/models`); + if (res === undefined) { + return; + } let localModelOptions = res.data.data.map((model) => ({ label: model.id, value: model.id, @@ -244,6 +250,9 @@ const EditChannel = (props) => { const fetchGroups = async () => { try { let res = await API.get(`/api/group/`); + if (res === undefined) { + return; + } setGroupOptions( res.data.data.map((group) => ({ label: group, diff --git a/web/src/pages/Setting/index.js b/web/src/pages/Setting/index.js index 25d3600..fe38ea7 100644 --- a/web/src/pages/Setting/index.js +++ b/web/src/pages/Setting/index.js @@ -39,7 +39,7 @@ const Setting = () => { {panes.map((pane) => ( - + {pane.content} ))}