Skip to content

Commit 19b0fa4

Browse files
committed
Summaries
1 parent 2bd4a10 commit 19b0fa4

5 files changed

Lines changed: 31 additions & 150 deletions

File tree

src/main/java/com/embabel/grouper/agent/Grouper.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -131,16 +131,18 @@ Model.Positioning evolvePositioning(
131131
logger.info("Evolving positioning based on FocusGroupRun {}", focusGroupRun);
132132
// TODO Should handle > 1 message
133133
var messageVariants = focusGroupRun.positioning.messageVariants().getFirst();
134-
var newMessageWordings = config.nextCreative()
134+
var creativeControl = config.nextCreative()
135135
.promptRunner(ai)
136136
.withPromptContributor(messageVariants.message())
137-
.creating(NewMessageWordings.class)
137+
.creating(CreativeControl.class)
138138
.fromPrompt("""
139139
Given the objectives, consider
140140
the following feedback:
141141
%s
142142
143-
Create new message wordings we could try.
143+
1. Summarize the feedback in no more than %d words.
144+
145+
2. Create new message wordings we could try.
144146
145147
Be creative. Try to break through!
146148
@@ -150,13 +152,15 @@ Model.Positioning evolvePositioning(
150152
%s
151153
""".formatted(
152154
focusGroupRun.infoString(true, 1),
155+
config.findingsWordCount(),
153156
config.maxVariants(),
154157
bestScoringVariants)
155158
);
156-
logger.info("New wordings: {}", newMessageWordings);
159+
logger.info("Creative input: {}", creativeControl);
160+
bestScoringVariants.addFinding(creativeControl.summary);
157161
var newMessageVariants = new Model.MessageVariants(
158162
messageVariants.message(),
159-
newMessageWordings.wordings().toArray(new String[0])
163+
creativeControl.wordings().toArray(new String[0])
160164
);
161165

162166
return new Model.Positioning(List.of(newMessageVariants));
@@ -171,11 +175,12 @@ Model.BestScoringVariants results(
171175
OperationContext context) {
172176
return bestScoringVariants;
173177
}
174-
}
175178

179+
private record CreativeControl(
180+
String summary,
181+
List<String> wordings
182+
) {
183+
}
184+
}
176185

177-
record NewMessageWordings(
178-
List<String> wordings
179-
) {
180186

181-
}

src/main/java/com/embabel/grouper/agent/Grouper2.java

Lines changed: 0 additions & 138 deletions
This file was deleted.

src/main/java/com/embabel/grouper/agent/GrouperConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public record GrouperConfig(
1616
int maxVariants,
1717
int maxIterations,
1818
double minMessageScore,
19+
int findingsWordCount,
1920
List<Actor<RoleGoalBackstory>> creatives
2021
) implements Predicate<FocusGroupRun> {
2122

src/main/java/com/embabel/grouper/domain/Model.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ public record MessageVariantScore(
177177
public static class BestScoringVariants {
178178
private Vector<MessageVariantScore> bestVariants = Vector.empty();
179179
private final GrouperConfig config;
180+
private Vector<String> findings = Vector.empty();
180181

181182
public BestScoringVariants(GrouperConfig config) {
182183
this.config = config;
@@ -186,7 +187,8 @@ public List<Model.MessageVariantScore> bestVariants() {
186187
return bestVariants.asJava();
187188
}
188189

189-
public void updateFrom(FocusGroupRun focusGroupRun, GrouperConfig config) {
190+
public void updateFrom(FocusGroupRun focusGroupRun,
191+
GrouperConfig config) {
190192
var newScores = Vector.ofAll(
191193
focusGroupRun.positioning.messageVariants().stream()
192194
.flatMap(mv -> mv.expressions().stream())
@@ -202,13 +204,23 @@ public void updateFrom(FocusGroupRun focusGroupRun, GrouperConfig config) {
202204
.take(config.maxVariants());
203205
}
204206

207+
public void addFinding(String finding) {
208+
findings = findings.append(finding);
209+
}
210+
205211
@NotNull
206212
@Override
207213
public String toString() {
208-
return bestVariants
214+
var variants = bestVariants
209215
.sorted(Comparator.comparingDouble(Model.MessageVariantScore::normalizedScore).reversed())
210216
.map(mv -> "%.2f: %s".formatted(config.decisionScore(mv), mv.messageVariant().wording()))
211217
.collect(Collectors.joining("\n"));
218+
return """
219+
%s
220+
221+
Findings:
222+
- %s
223+
""".formatted(variants, findings.collect(Collectors.joining("\n- ")));
212224

213225
}
214226
}

src/main/resources/application.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,4 @@ grouper:
4242
max-variants: 10
4343
max-iterations: 10
4444
min-message-score: 0.9
45+
findings-word-count: 60

0 commit comments

Comments
 (0)