Skip to content

Commit 450d984

Browse files
committed
- get or create working directory for jlama
1 parent 9612aa5 commit 450d984

File tree

1 file changed

+19
-9
lines changed
  • modules/jooby-langchain4j/src/main/java/io/jooby/internal/langchain4j

1 file changed

+19
-9
lines changed

modules/jooby-langchain4j/src/main/java/io/jooby/internal/langchain4j/BuiltInModel.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
*/
66
package io.jooby.internal.langchain4j;
77

8-
import java.nio.file.Paths;
98
import java.time.Duration;
109

1110
import com.typesafe.config.Config;
@@ -106,21 +105,15 @@ public ChatModel createChatModel(@NonNull Config config) {
106105
check("dev.langchain4j.model.jlama.JlamaChatModel", "langchain4j-jlama");
107106
return JlamaChatModel.builder()
108107
.modelName(config.getString("model-name"))
109-
.workingDirectory(
110-
config.hasPath("working-dir")
111-
? Paths.get(config.getString("working-dir"))
112-
: Paths.get(System.getProperty("user.dir"), "./models"))
108+
.workingDirectory(getOrCreateWorkingDir(config))
113109
.build();
114110
}
115111

116112
@Override
117113
public StreamingChatModel createStreamingModel(@NonNull Config config) {
118114
return JlamaStreamingChatModel.builder()
119115
.modelName(config.getString("model-name"))
120-
.workingDirectory(
121-
config.hasPath("working-dir")
122-
? Paths.get(config.getString("working-dir"))
123-
: Paths.get(System.getProperty("user.dir"), "./models"))
116+
.workingDirectory(getOrCreateWorkingDir(config))
124117
.build();
125118
}
126119
};
@@ -164,4 +157,21 @@ protected Duration getStreamTimeout(Config config) {
164157
protected double getTemp(Config config) {
165158
return config.hasPath("temperature") ? config.getDouble("temperature") : 0.7;
166159
}
160+
161+
protected java.nio.file.Path getOrCreateWorkingDir(Config config) {
162+
java.nio.file.Path path =
163+
config.hasPath("working-dir")
164+
? java.nio.file.Paths.get(config.getString("working-dir"))
165+
: java.nio.file.Paths.get(System.getProperty("user.dir"), "models");
166+
167+
try {
168+
// Jlama explicitly requires the directory to exist before booting
169+
if (!java.nio.file.Files.exists(path)) {
170+
java.nio.file.Files.createDirectories(path);
171+
}
172+
return path;
173+
} catch (java.io.IOException e) {
174+
throw new IllegalStateException("Failed to create a working directory at: " + path, e);
175+
}
176+
}
167177
}

0 commit comments

Comments
 (0)