MCPcopy Create free account
hub / github.com/SamuelZ12/longcut / generateProviderBackedTopicsFromTranscript

Function generateProviderBackedTopicsFromTranscript

lib/ai-processing.ts:756–1036  ·  view source on GitHub ↗
(
  transcript: TranscriptSegment[],
  options: GenerateTopicsOptions,
  provider: ProviderKey
)

Source from the content-addressed store, hash-verified

754}
755
756async function generateProviderBackedTopicsFromTranscript(
757 transcript: TranscriptSegment[],
758 options: GenerateTopicsOptions,
759 provider: ProviderKey
760): Promise<ProviderBackedTopicGenerationResult> {
761 const {
762 videoInfo,
763 chunkDurationSeconds = DEFAULT_CHUNK_DURATION_SECONDS,
764 chunkOverlapSeconds = DEFAULT_CHUNK_OVERLAP_SECONDS,
765 maxTopics = 5,
766 theme,
767 excludeTopicKeys,
768 mode = 'smart',
769 fastModel: fastModelOverride,
770 proModel: proModelOverride,
771 language
772 } = options;
773
774 const providerModelDefaults = getProviderModelDefaults(provider);
775 const fastModel = fastModelOverride ?? providerModelDefaults.fastModel;
776 const proModel = proModelOverride ?? providerModelDefaults.proModel;
777 const forceFullTranscript =
778 getProviderBehavior(provider).forceFullTranscriptTopicGeneration;
779 const requestedTopics = Math.max(1, Math.min(maxTopics, 5));
780 const isSmartMode = mode === 'smart';
781 const transcriptWithTimestamps = formatTranscriptWithTimestamps(transcript);
782 const videoDurationSeconds =
783 transcript.length > 0
784 ? transcript[transcript.length - 1].start +
785 transcript[transcript.length - 1].duration
786 : 0;
787 const isShortVideo = videoDurationSeconds <= 30 * 60;
788 const smartModeModel = getProviderBackedTopicModel({
789 provider,
790 mode,
791 transcript,
792 fastModel,
793 proModel
794 });
795
796 let topicsArray: ParsedTopic[] = [];
797 let candidateTopics: CandidateTopic[] = [];
798 const excludedKeys = excludeTopicKeys ?? new Set<string>();
799 let resolvedModel = isSmartMode ? smartModeModel : fastModel;
800
801 if (isSmartMode || forceFullTranscript) {
802 const singlePassModel = isSmartMode ? smartModeModel : fastModel;
803 resolvedModel = singlePassModel;
804
805 const smartTopics = await runSinglePassTopicGeneration(
806 transcript,
807 transcriptWithTimestamps,
808 singlePassModel,
809 provider,
810 theme,
811 language
812 );
813

Callers 1

Calls 12

getProviderModelDefaultsFunction · 0.90
getProviderBehaviorFunction · 0.90
generateAIResponseFunction · 0.90
normalizeWhitespaceFunction · 0.90
filterExcludedTopicsFunction · 0.85
chunkTranscriptFunction · 0.85
buildChunkPromptFunction · 0.85
dedupeCandidatesFunction · 0.85
reduceCandidateSubsetFunction · 0.85

Tested by

no test coverage detected