Spaces:
Running
Running
import { usePubSub } from "create-pubsub/react"; | |
import { useCallback } from "react"; | |
import { settingsPubSub } from "../../../modules/pubSub"; | |
export function useReasoningContent(text: string) { | |
const [settings] = usePubSub(settingsPubSub); | |
const extractReasoningAndMainContent = useCallback( | |
(text: string, startMarker: string, endMarker: string) => { | |
if (!text) | |
return { reasoningContent: "", mainContent: "", isGenerating: false }; | |
if (!text.trim().startsWith(startMarker)) | |
return { reasoningContent: "", mainContent: text, isGenerating: false }; | |
const endIndex = text.indexOf(endMarker); | |
if (endIndex === -1) { | |
return { | |
reasoningContent: text.slice(startMarker.length), | |
mainContent: "", | |
isGenerating: true, | |
}; | |
} | |
return { | |
reasoningContent: text.slice(startMarker.length, endIndex), | |
mainContent: text.slice(endIndex + endMarker.length), | |
isGenerating: false, | |
}; | |
}, | |
[], | |
); | |
const result = extractReasoningAndMainContent( | |
text, | |
settings.reasoningStartMarker, | |
settings.reasoningEndMarker, | |
); | |
return result; | |
} | |