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
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 }),
|
|
}));
|