fix: #289 #367 #353 #369 provide more error message info

This commit is contained in:
Yifei Zhang 2023-04-02 19:14:53 +00:00
parent 8d60a414f0
commit b44caeeefb
5 changed files with 25 additions and 6 deletions

View File

@ -8,6 +8,15 @@ async function createStream(req: NextRequest) {
const res = await requestOpenai(req);
const contentType = res.headers.get("Content-Type") ?? "";
if (!contentType.includes("stream")) {
const content = await (
await res.text()
).replace(/provided:.*. You/, "provided: ***. You");
console.log("[Stream] error ", content);
return "```json\n" + content + "```";
}
const stream = new ReadableStream({
async start(controller) {
function onParse(event: any) {

View File

@ -525,6 +525,8 @@ export function Chat(props: {
className={styles["chat-body"]}
ref={scrollRef}
onScroll={(e) => onChatBodyScroll(e.currentTarget)}
onMouseOver={() => inputRef.current?.blur()}
onTouchStart={() => inputRef.current?.blur()}
>
{messages.map((message, i) => {
const isUser = message.role === "user";
@ -545,11 +547,7 @@ export function Chat(props: {
{Locale.Chat.Typing}
</div>
)}
<div
className={styles["chat-message-item"]}
onMouseOver={() => inputRef.current?.blur()}
onTouchStart={() => inputRef.current?.blur()}
>
<div className={styles["chat-message-item"]}>
{!isUser &&
!(message.preview || message.content.length === 0) && (
<div className={styles["chat-message-top-actions"]}>

View File

@ -59,7 +59,7 @@ export function Markdown(props: { content: string }) {
[
RehypeHighlight,
{
detect: true,
detect: false,
ignoreMissing: true,
},
],

View File

@ -128,6 +128,8 @@
justify-content: center;
.toast-content {
max-width: 80vw;
word-break: break-all;
font-size: 14px;
background-color: var(--white);
box-shadow: var(--card-shadow);

View File

@ -1,6 +1,7 @@
import type { ChatRequest, ChatReponse } from "./api/openai/typing";
import { filterConfig, Message, ModelConfig, useAccessStore } from "./store";
import Locale from "./locales";
import { showToast } from "./components/ui-lib";
const TIME_OUT_MS = 30000;
@ -87,7 +88,16 @@ export async function requestUsage() {
try {
const response = (await res.json()) as {
total_usage: number;
error?: {
type: string;
message: string;
};
};
if (response.error && response.error.type) {
showToast(response.error.message);
return;
}
if (response.total_usage) {
response.total_usage = Math.round(response.total_usage) / 100;