Skip to content

Commit 4308ff0

Browse files
committed
Update Bridge Version to 3 and Add Interrogation Feature
1 parent 2ea70c6 commit 4308ff0

7 files changed

Lines changed: 667 additions & 73 deletions

File tree

config.yml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,25 @@
11
# The Horde Cluster URL to use to grab populated prompts from and to submit generations to.
22
# This shouldn't be changed at all, unless if you run a private Horde Cluster and you know what you are doing.
3-
clusterURL: "https://stablehorde.net"
3+
clusterURL: "https://aihorde.net"
4+
5+
# The Backup Horde Cluster URL to use if the main Horde Cluster is down
6+
# This shouldn't be changed at all, unless if you run a private Horde Cluster and you know what you are doing.
7+
backupClusterURL: "https://stablehorde.net"
48

59
# An amazing, cool, awesome Horde Worker name you can specify yourself.
610
workerName: ""
711

12+
# The worker type you must specify. If left blank, it'll auto default to text.
13+
# Acceptable options are, text or interrogation
14+
workerType: ""
15+
816
# The KoboldAI Client URL where it can reach your worker.
17+
# If you are running an interrogation client, you must use https://github.com/LogicismDev/HordeInterrogateAgent
918
# The URL can be a cloudflared, nginx, or localtunnel URL as well that is hosted on other machines (e.g. Colab).
1019
kaiURL: ""
1120

1221
# The API Key that is used to uniquely identify yourself on the Horde Cluster.
13-
# If you don't have an API Key, visit https://stablehorde.net/register to grab one.
22+
# If you don't have an API Key, visit https://aihorde.net/register to grab one.
1423
apiKey: ""
1524

1625
# The usernames to prioritize generations first.
@@ -22,4 +31,11 @@ apiKey: ""
2231
# If you have no usernames to prioritize, you must put the following format below.
2332
# priorityUsernames: []
2433
# Please note that your username is already prioritized.
25-
priorityUsernames: []
34+
priorityUsernames: []
35+
36+
# The interrogation forms to enable for the worker
37+
interrogationForms:
38+
- caption
39+
- nsfw
40+
- interrogation
41+
- strip_background

src/main/java/me/Logicism/JavaHordeBridge/HordeBridge.java

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.fasterxml.jackson.databind.ObjectMapper;
44
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
55
import me.Logicism.JavaHordeBridge.console.HordeLogger;
6+
import me.Logicism.JavaHordeBridge.core.InterrogationGenerator;
67
import me.Logicism.JavaHordeBridge.runnables.TextHordeRunnable;
78
import me.Logicism.JavaHordeBridge.core.KAIGenerator;
89
import org.apache.commons.cli.*;
@@ -16,20 +17,23 @@
1617

1718
public class HordeBridge {
1819

19-
public static int BRIDGE_VERSION = 2;
20+
public static int BRIDGE_VERSION = 3;
2021
public static String BRIDGE_AGENT = "Java Horde Bridge:" + BRIDGE_VERSION + ":https://github.com/LogicismDev/Java-Horde-Bridge";
2122

2223
public static HordeBridge INSTANCE;
2324
public static int INTERVAL = 1;
2425

2526
private KAIGenerator kaiGenerator;
27+
private InterrogationGenerator interroGenerator;
2628
private HordeLogger logger;
2729
private HordeConfig config;
2830

31+
private static String workerType = "text";
2932
private static String kaiURL = "http://127.0.0.1:5000";
3033
private static String kaiName = "Java Horde Bridge Worker #" + new Random().nextInt();
3134
private static String kaiAPIKey = "0000000000";
32-
private static String clusterURL = "https://stablehorde.net";
35+
private static String clusterURL = "https://aihorde.net";
36+
private static String backupClusterURL = "https://stablehorde.net";
3337
private static String[] priorityUsernames = new String[0];
3438

3539
private static ExecutorService service = Executors.newSingleThreadExecutor();
@@ -41,18 +45,22 @@ public static void main(String[] args) {
4145

4246
Option interval = Option.builder("i").longOpt("interval").argName("interval").hasArg().desc("The interval to check if there are new generations").numberOfArgs(1).build();
4347
Option config = Option.builder("c").longOpt("config").argName("config").hasArg().desc("The configuration file to grab the Horde Worker information from").numberOfArgs(1).build();
48+
Option worker_type = Option.builder("t").longOpt("worker_type").argName("worker_type").hasArg().desc("The Worker type to specify (text/interrogation)").numberOfArgs(1).build();
4449
Option kai_url = Option.builder("k").longOpt("kai_url").argName("kai_url").hasArg().desc("The KoboldAI URL to grab generations from").numberOfArgs(1).build();
4550
Option kai_name = Option.builder("n").longOpt("kai_name").argName("kai_name").hasArg().desc("Set the Horde Worker name").numberOfArgs(1).build();
4651
Option kai_apikey = Option.builder("a").longOpt("kai_apikey").argName("kai_apikey").hasArg().desc("Set the Horde Worker API Key").numberOfArgs(1).build();
4752
Option cluster_url = Option.builder("u").longOpt("cluster_url").argName("cluster_url").hasArg().desc("Set the cluster url to grab prompts and to send generations to").numberOfArgs(1).build();
53+
Option backup_cluster_url = Option.builder("b").longOpt("backup_cluster_url").argName("backup_cluster_url").hasArg().desc("Set the backup cluster url if the main cluster is down").numberOfArgs(1).build();
4854
Option priority_usernames = Option.builder("p").longOpt("priority_usernames").argName("priority_usernames").hasArg().valueSeparator(',').desc("The usernames to prioritize generations").build();
4955

5056
options.addOption(interval);
5157
options.addOption(config);
58+
options.addOption(worker_type);
5259
options.addOption(kai_url);
5360
options.addOption(kai_name);
5461
options.addOption(kai_apikey);
5562
options.addOption(cluster_url);
63+
options.addOption(backup_cluster_url);
5664
options.addOption(priority_usernames);
5765

5866
HelpFormatter helper = new HelpFormatter();
@@ -64,7 +72,7 @@ public static void main(String[] args) {
6472

6573
INSTANCE.getLogger().info("Starting Java Horde Worker " + kaiName);
6674

67-
service.execute(new TextHordeRunnable(INSTANCE, kaiURL, kaiName, kaiAPIKey, clusterURL, priorityUsernames));
75+
service.execute(new TextHordeRunnable(INSTANCE, kaiURL, kaiName, kaiAPIKey, clusterURL, backupClusterURL, priorityUsernames));
6876
} catch (ParseException e) {
6977
System.out.println(e.getMessage());
7078
helper.printHelp("Usage", options);
@@ -84,6 +92,13 @@ public HordeBridge(CommandLine cmd) {
8492
}
8593

8694
if (!configFile.exists()) {
95+
if (cmd.hasOption("worker_type")) {
96+
if (!cmd.getOptionValue("worker_type").equals("interrogation") || !cmd.getOptionValue("worker_type").equals("text")) {
97+
workerType = "text";
98+
} else {
99+
workerType = cmd.getOptionValue("worker_type");
100+
}
101+
}
87102
if (cmd.hasOption("kai_url")) {
88103
kaiURL = cmd.getOptionValue("kai_url");
89104
}
@@ -94,23 +109,33 @@ public HordeBridge(CommandLine cmd) {
94109
kaiAPIKey = cmd.getOptionValue("kai_apikey");
95110
}
96111
if (cmd.hasOption("kai_url")) {
112+
kaiURL = cmd.getOptionValue("kai_url");
113+
}
114+
if (cmd.hasOption("cluster_url")) {
97115
clusterURL = cmd.getOptionValue("cluster_url");
98116
}
117+
if (cmd.hasOption("cluster_url")) {
118+
backupClusterURL = cmd.getOptionValue("cluster_url");
119+
}
99120
if (cmd.hasOption("priority_usernames")) {
100-
cmd.getOptionValues("priority_usernames");
121+
priorityUsernames = cmd.getOptionValues("priority_usernames");
101122
}
102123
} else {
103124
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
104125

105126
try {
106127
config = mapper.readValue(configFile, HordeConfig.class);
107128

129+
if (config.getWorkerType().equals("interrogation") || config.getWorkerType().equals("text")) {
130+
workerType = config.getWorkerType();
131+
}
108132
kaiURL = config.getKaiURL();
109133
if (!kaiName.isEmpty()) {
110134
kaiName = config.getWorkerName();
111135
}
112136
kaiAPIKey = config.getApiKey();
113137
clusterURL = config.getClusterURL();
138+
backupClusterURL = config.getBackupClusterURL();
114139
priorityUsernames = config.getPriorityUsernames().toArray(new String[0]);
115140
} catch (IOException e) {
116141
logger.error("Couldn't load configuration! " + e.getMessage() + " Stopping Java Horde Bridge");
@@ -129,7 +154,11 @@ public KAIGenerator getGenerator() {
129154
return kaiGenerator;
130155
}
131156

132-
public ExecutorService getService() {
133-
return service;
157+
public InterrogationGenerator getInterroGenerator() {
158+
return interroGenerator;
159+
}
160+
161+
public HordeConfig getConfig() {
162+
return config;
134163
}
135164
}

src/main/java/me/Logicism/JavaHordeBridge/HordeConfig.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,28 @@ public class HordeConfig {
66

77
private String clusterURL;
88

9+
private String backupClusterURL;
10+
911
private String workerName;
1012

13+
private String workerType;
14+
1115
private String kaiURL;
1216

1317
private String apiKey;
1418

1519
private List<String> priorityUsernames;
1620

21+
private List<String> interrogationForms;
22+
1723
public String getWorkerName() {
1824
return workerName;
1925
}
2026

27+
public String getWorkerType() {
28+
return workerType;
29+
}
30+
2131
public String getKaiURL() {
2232
return kaiURL;
2333
}
@@ -26,11 +36,19 @@ public String getClusterURL() {
2636
return clusterURL;
2737
}
2838

39+
public String getBackupClusterURL() {
40+
return backupClusterURL;
41+
}
42+
2943
public String getApiKey() {
3044
return apiKey;
3145
}
3246

3347
public List<String> getPriorityUsernames() {
3448
return priorityUsernames;
3549
}
50+
51+
public List<String> getInterrogationForms() {
52+
return interrogationForms;
53+
}
3654
}

0 commit comments

Comments
 (0)