You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.5 KiB
TypeScript

import { create } from "zustand";
import type { OtherParameters, Store } from "./types.js";
import type { ConversationsId } from "./database/generated/public/Conversations.js";
export const defaultSystemPrompt = `You are a helpful assistant that answers questions based on the provided context. If you don't know the answer, just say that you don't know, don't try to make up an answer.`;
export const defaultParameters = {
temperature: 0.5,
max_tokens: 100,
} as OtherParameters;
export const useStore = create<Store>()((set) => ({
conversationId: 0 as ConversationsId,
conversationTitle: "",
conversations: [],
messages: [],
message: "",
systemPrompt: defaultSystemPrompt,
parameters: defaultParameters,
loading: false,
setConversationId: (conversationId) => set({ conversationId }),
setConversationTitle: (conversationTitle) => set({ conversationTitle }),
setConversations: (conversations) => set({ conversations }),
addConversation: (conversation) =>
set((state) => ({
conversations: [...state.conversations, conversation],
})),
removeConversation: (conversationId) =>
set((state) => ({
conversations: state.conversations.filter(
(conversation) => conversation.id !== conversationId,
),
})),
setMessages: (messages) => set({ messages }),
setMessage: (message) => set({ message }),
setSystemPrompt: (systemPrompt) => set({ systemPrompt }),
setParameters: (parameters) => set({ parameters }),
setLoading: (loading) => set({ loading }),
}));