Add lucide-react package and remove unused icons

This commit is contained in:
n4ze3m
2024-02-25 18:44:47 +05:30
parent 06b32176a9
commit 43f3727369
37 changed files with 610 additions and 574 deletions

View File

@@ -13,6 +13,7 @@ import { useStoreMessageOption } from "~store/option"
import { removeMessageUsingHistoryId, saveHistory, saveMessage } from "~libs/db"
import { useNavigate } from "react-router-dom"
import { notification } from "antd"
import { getSystemPromptForWeb } from "~web/web"
export type BotResponse = {
bot: {
@@ -93,15 +94,19 @@ export const useMessageOption = () => {
chatMode,
setChatMode,
speechToTextLanguage,
setSpeechToTextLanguage
setSpeechToTextLanguage,
webSearch,
setWebSearch,
isSearchingInternet,
setIsSearchingInternet
} = useStoreMessageOption()
const navigate = useNavigate()
const abortControllerRef = React.useRef<AbortController | null>(null)
const clearChat = () => {
// stopStreamingRequest()
setMessages([])
setHistory([])
setHistoryId(null)
@@ -112,6 +117,224 @@ export const useMessageOption = () => {
navigate("/")
}
const searchChatMode = async (
message: string,
image: string,
isRegenerate: boolean
) => {
const url = await getOllamaURL()
if (image.length > 0) {
image = `data:image/jpeg;base64,${image.split(",")[1]}`
}
abortControllerRef.current = new AbortController()
const ollama = new ChatOllama({
model: selectedModel,
baseUrl: cleanUrl(url)
})
let newMessage: Message[] = [
...messages,
{
isBot: false,
name: "You",
message,
sources: [],
images: [image]
},
{
isBot: true,
name: selectedModel,
message: "▋",
sources: []
}
]
const appendingIndex = newMessage.length - 1
if (!isRegenerate) {
setMessages(newMessage)
}
try {
setIsSearchingInternet(true)
const prompt = await getSystemPromptForWeb(message)
setIsSearchingInternet(false)
message = message.trim().replaceAll("\n", " ")
let humanMessage = new HumanMessage({
content: [
{
text: message,
type: "text"
}
]
})
if (image.length > 0) {
humanMessage = new HumanMessage({
content: [
{
text: message,
type: "text"
},
{
image_url: image,
type: "image_url"
}
]
})
}
const applicationChatHistory = generateHistory(history)
if (prompt) {
applicationChatHistory.unshift(
new SystemMessage({
content: [
{
text: prompt,
type: "text"
}
]
})
)
}
const chunks = await ollama.stream(
[...applicationChatHistory, humanMessage],
{
signal: abortControllerRef.current.signal
}
)
let count = 0
for await (const chunk of chunks) {
if (count === 0) {
setIsProcessing(true)
newMessage[appendingIndex].message = chunk.content + "▋"
setMessages(newMessage)
} else {
newMessage[appendingIndex].message =
newMessage[appendingIndex].message.slice(0, -1) +
chunk.content +
"▋"
setMessages(newMessage)
}
count++
}
newMessage[appendingIndex].message = newMessage[
appendingIndex
].message.slice(0, -1)
if (!isRegenerate) {
setHistory([
...history,
{
role: "user",
content: message,
image
},
{
role: "assistant",
content: newMessage[appendingIndex].message
}
])
} else {
setHistory([
...history,
{
role: "assistant",
content: newMessage[appendingIndex].message
}
])
}
if (historyId) {
if (!isRegenerate) {
await saveMessage(historyId, selectedModel, "user", message, [image])
}
await saveMessage(
historyId,
selectedModel,
"assistant",
newMessage[appendingIndex].message,
[]
)
} else {
const newHistoryId = await saveHistory(message)
await saveMessage(newHistoryId.id, selectedModel, "user", message, [
image
])
await saveMessage(
newHistoryId.id,
selectedModel,
"assistant",
newMessage[appendingIndex].message,
[]
)
setHistoryId(newHistoryId.id)
}
setIsProcessing(false)
setStreaming(false)
} catch (e) {
console.log(e)
if (e?.name === "AbortError") {
newMessage[appendingIndex].message = newMessage[
appendingIndex
].message.slice(0, -1)
setHistory([
...history,
{
role: "user",
content: message,
image
},
{
role: "assistant",
content: newMessage[appendingIndex].message
}
])
if (historyId) {
await saveMessage(historyId, selectedModel, "user", message, [image])
await saveMessage(
historyId,
selectedModel,
"assistant",
newMessage[appendingIndex].message,
[]
)
} else {
const newHistoryId = await saveHistory(message)
await saveMessage(newHistoryId.id, selectedModel, "user", message, [
image
])
await saveMessage(
newHistoryId.id,
selectedModel,
"assistant",
newMessage[appendingIndex].message,
[]
)
setHistoryId(newHistoryId.id)
}
} else {
notification.error({
message: "Error",
description: e?.message || "Something went wrong"
})
}
setIsProcessing(false)
setStreaming(false)
}
}
const normalChatMode = async (
message: string,
image: string,
@@ -338,9 +561,11 @@ export const useMessageOption = () => {
isRegenerate?: boolean
}) => {
setStreaming(true)
// const web = await localGoogleSearch(message)
// console.log(web)
await normalChatMode(message, image, isRegenerate)
if (webSearch) {
await searchChatMode(message, image, isRegenerate)
} else {
await normalChatMode(message, image, isRegenerate)
}
}
const regenerateLastMessage = async () => {
@@ -387,6 +612,9 @@ export const useMessageOption = () => {
setChatMode,
speechToTextLanguage,
setSpeechToTextLanguage,
regenerateLastMessage
regenerateLastMessage,
webSearch,
setWebSearch,
isSearchingInternet,
}
}