File size: 1,165 Bytes
1e22bf6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { useEffect, useState } from "react";
import { addLogEntry } from "../../../../../../modules/logEntries";
import type { defaultSettings } from "../../../../../../modules/settings";
import { fetchHordeModels } from "../../../../../../modules/textGenerationWithHorde";
import type { ModelOption } from "../types";

type Settings = typeof defaultSettings;

export const useHordeModels = (settings: Settings) => {
  const [hordeModels, setHordeModels] = useState<ModelOption[]>([]);

  useEffect(() => {
    async function fetchAvailableHordeModels() {
      try {
        const models = await fetchHordeModels();
        const formattedModels = models.map((model) => ({
          label: model.name,
          value: model.name,
        }));
        setHordeModels(formattedModels);
      } catch (error) {
        const errorMessage =
          error instanceof Error ? error.message : String(error);
        addLogEntry(`Error fetching AI Horde models: ${errorMessage}`);
        setHordeModels([]);
      }
    }

    if (settings.inferenceType === "horde") {
      fetchAvailableHordeModels();
    }
  }, [settings.inferenceType]);

  return hordeModels;
};