-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathPromptCompilerTest.java
More file actions
101 lines (84 loc) · 3.72 KB
/
PromptCompilerTest.java
File metadata and controls
101 lines (84 loc) · 3.72 KB
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package com.langfuse.client.prompt;
import com.langfuse.client.resources.prompts.types.ChatMessage;
import com.langfuse.client.resources.prompts.types.ChatMessageWithPlaceholders;
import com.langfuse.client.resources.prompts.types.ChatPrompt;
import com.langfuse.client.resources.prompts.types.PlaceholderMessage;
import com.langfuse.client.resources.prompts.types.TextPrompt;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.*;
class PromptCompilerTest {
@Test
void compileTextPrompt() {
TextPrompt prompt = TextPrompt.builder()
.name("test")
.version(1)
.config(Map.of())
.prompt("Hello {{name}}, you are a {{role}}")
.build();
String result = PromptCompiler.compile(prompt, Map.of("name", "Alice", "role", "developer"));
assertEquals("Hello Alice, you are a developer", result);
}
@Test
void compileTextPromptMissingVariable() {
TextPrompt prompt = TextPrompt.builder()
.name("test")
.version(1)
.config(Map.of())
.prompt("Hello {{name}}, age {{age}}")
.build();
String result = PromptCompiler.compile(prompt, Map.of("name", "Alice"));
assertEquals("Hello Alice, age {{age}}", result);
}
@Test
void compileChatPrompt() {
ChatPrompt prompt = ChatPrompt.builder()
.name("test")
.version(1)
.config(Map.of())
.prompt(List.of(
ChatMessageWithPlaceholders.of(
ChatMessage.builder().role("system").content("You are a {{role}}").build()),
ChatMessageWithPlaceholders.of(
ChatMessage.builder().role("user").content("{{user_input}}").build())
))
.build();
List<ChatMessage> result = PromptCompiler.compile(prompt, Map.of("role", "helpful assistant", "user_input", "Hi"));
assertEquals(2, result.size());
assertEquals("system", result.get(0).getRole());
assertEquals("You are a helpful assistant", result.get(0).getContent());
assertEquals("user", result.get(1).getRole());
assertEquals("Hi", result.get(1).getContent());
}
@Test
void compileChatPromptSkipsPlaceholders() {
ChatPrompt prompt = ChatPrompt.builder()
.name("test")
.version(1)
.config(Map.of())
.prompt(List.of(
ChatMessageWithPlaceholders.of(
ChatMessage.builder().role("system").content("You are a {{role}}").build()),
ChatMessageWithPlaceholders.of(
PlaceholderMessage.builder().name("examples").build()),
ChatMessageWithPlaceholders.of(
ChatMessage.builder().role("user").content("{{question}}").build())
))
.build();
List<ChatMessage> result = PromptCompiler.compile(prompt, Map.of("role", "tutor", "question", "What is Java?"));
assertEquals(2, result.size());
assertEquals("You are a tutor", result.get(0).getContent());
assertEquals("What is Java?", result.get(1).getContent());
}
@Test
void compileChatPromptEmpty() {
ChatPrompt prompt = ChatPrompt.builder()
.name("test")
.version(1)
.config(Map.of())
.build();
List<ChatMessage> result = PromptCompiler.compile(prompt, Map.of("x", "y"));
assertTrue(result.isEmpty());
}
}