feat: improve prompt, add ability to abort streaming, improve message parser

This commit is contained in:
Dominic Elm
2024-07-18 11:10:12 +02:00
parent 637ad2b870
commit 012b5bae80
12 changed files with 633 additions and 160 deletions

View File

@@ -2,6 +2,8 @@ import { useChat } from 'ai/react';
import { useAnimate } from 'framer-motion';
import { useEffect, useRef, useState } from 'react';
import { useMessageParser, usePromptEnhancer } from '../../lib/hooks';
import { chatStore } from '../../lib/stores/chat';
import { workbenchStore } from '../../lib/stores/workbench';
import { cubicEasingFn } from '../../utils/easings';
import { createScopedLogger } from '../../utils/logger';
import { BaseChat } from './BaseChat';
@@ -15,7 +17,7 @@ export function Chat() {
const [animationScope, animate] = useAnimate();
const { messages, isLoading, input, handleInputChange, setInput, handleSubmit } = useChat({
const { messages, isLoading, input, handleInputChange, setInput, handleSubmit, stop } = useChat({
api: '/api/chat',
onError: (error) => {
logger.error(error);
@@ -42,6 +44,12 @@ export function Chat() {
}
};
const abort = () => {
stop();
chatStore.setKey('aborted', true);
workbenchStore.abortAllActions();
};
useEffect(() => {
const textarea = textareaRef.current;
@@ -70,6 +78,8 @@ export function Chat() {
return;
}
chatStore.setKey('aborted', false);
runAnimation();
handleSubmit();
resetEnhancer();
@@ -88,6 +98,7 @@ export function Chat() {
promptEnhanced={promptEnhanced}
sendMessage={sendMessage}
handleInputChange={handleInputChange}
handleStop={abort}
messages={messages.map((message, i) => {
if (message.role === 'user') {
return message;