Skip to content

Commit 4e845c6

Browse files
committed
add prompt and context
1 parent bdd7693 commit 4e845c6

File tree

4 files changed

+51
-22
lines changed

4 files changed

+51
-22
lines changed

keyext.llm/src/main/java/org/key_project/key/llm/LlmClient.java

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,16 @@
11
package org.key_project.key.llm;
22

33
import com.google.gson.GsonBuilder;
4-
import org.apache.hc.client5.http.classic.methods.HttpGet;
54
import org.apache.hc.client5.http.classic.methods.HttpPost;
65
import org.apache.hc.client5.http.impl.classic.AbstractHttpClientResponseHandler;
76
import org.apache.hc.client5.http.impl.classic.HttpClients;
87
import org.apache.hc.core5.http.HttpEntity;
98
import org.apache.hc.core5.http.ParseException;
109
import org.apache.hc.core5.http.io.entity.EntityUtils;
1110
import org.apache.hc.core5.http.io.entity.StringEntity;
12-
import org.key_project.util.java.IOUtil;
13-
import org.slf4j.LoggerFactory;
1411

1512
import java.io.IOException;
16-
import java.util.List;
13+
import java.util.ArrayList;
1714
import java.util.Map;
1815
import java.util.concurrent.Callable;
1916

@@ -24,9 +21,13 @@
2421
*/
2522
public class LlmClient implements Callable<Map<String, Object>> {
2623
private final LlmSession llmSession;
24+
private final LlmContext context;
25+
private final LlmContext.LlmMessage prompt;
2726

28-
public LlmClient(LlmSession llmSession) {
27+
public LlmClient(LlmSession llmSession, LlmContext context, String message) {
2928
this.llmSession = llmSession;
29+
this.context = context;
30+
this.prompt = new LlmContext.LlmMessage("user", message);
3031
}
3132

3233
@Override
@@ -38,13 +39,13 @@ public Map<String, Object> call() throws Exception {
3839
request.addHeader("Content-Type", "application/json");
3940
request.addHeader("Accept", "application/json");
4041

42+
var msg = new ArrayList<>(context.getMessages());
43+
msg.add(prompt);
44+
4145
var data = Map.of(
42-
"model", "azure.gpt-4.1-mini",
43-
"messages", List.of(
44-
createMessage("system", "Du bist ein hilfreicher Assistent am KIT."),
45-
createMessage("user", "Erkläre das Prinzip der Rayleigh-Streuung indrei Sätzen.")
46-
)
47-
);
46+
"model", llmSession.getModel(),
47+
"messages", msg);
48+
4849
var gson = new GsonBuilder().create();
4950
var stringBody = gson.toJson(data);
5051
request.setEntity(new StringEntity(stringBody));
@@ -54,10 +55,6 @@ public Map<String, Object> call() throws Exception {
5455
}
5556
}
5657

57-
private Map<String, Object> createMessage(String role, String content) {
58-
return Map.of("role", role, "content", content);
59-
}
60-
6158

6259
private static class GsonHttpClientResponseHandler extends AbstractHttpClientResponseHandler<Map<String, Object>> {
6360
@Override
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.key_project.key.llm;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
/**
7+
*
8+
* @author Alexander Weigl
9+
* @version 1 (11/19/25)
10+
*/
11+
public class LlmContext {
12+
private final List<LlmMessage> messages = new ArrayList<>();
13+
14+
public void addMessage(LlmMessage message) {
15+
messages.add(message);
16+
}
17+
18+
public List<LlmMessage> getMessages() {
19+
return messages;
20+
}
21+
22+
public record LlmMessage(String role, String content) {
23+
}
24+
}

keyext.llm/src/main/java/org/key_project/key/llm/LlmPrompt.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,9 @@ public void keyTyped(KeyEvent e) {
5151
var node = MainWindow.getInstance().getMediator().getSelectedNode();
5252

5353
LlmSession session = LlmUtils.getSession(proof);
54-
LlmClient client = new LlmClient(session);
55-
5654
var txt = txtInput.getText();
57-
addBox(txt);
58-
55+
LlmClient client = new LlmClient(session, new LlmContext(), txt);
56+
addInput(txt);
5957
txtInput.setText("");
6058

6159
var sw = new SwingWorker<Map<String, Object>, Void>() {
@@ -68,9 +66,9 @@ protected Map<String, Object> doInBackground() throws Exception {
6866
protected void done() {
6967
try {
7068
handle(resultNow());
71-
} catch (Exception ex) {
72-
LOGGER.error(ex.getMessage(), ex);
73-
handle(ex);
69+
} catch (IllegalStateException ex) {
70+
LOGGER.error("Exceptional case", exceptionNow());
71+
handle(exceptionNow());
7472
}
7573
}
7674
};
@@ -88,6 +86,7 @@ public static class OutputBox<T> extends JPanel {
8886

8987
public OutputBox(T userData) {
9088
this(userData, userData.toString());
89+
output.add(menu);
9190
}
9291

9392
public OutputBox(T userData, String text) {

keyext.llm/src/main/java/org/key_project/key/llm/LlmSession.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
* @version 1 (11/18/25)
77
*/
88
public class LlmSession {
9+
private String model = "azure.gpt-4.1-mini";
910
private String apiEndpoint;
1011
private String authToken;
1112

@@ -29,4 +30,12 @@ public String getAuthToken() {
2930
public void setAuthToken(String authToken) {
3031
this.authToken = authToken;
3132
}
33+
34+
public String getModel() {
35+
return model;
36+
}
37+
38+
public void setModel(String model) {
39+
this.model = model;
40+
}
3241
}

0 commit comments

Comments
 (0)