Skip to content

Commit b5de34e

Browse files
committed
Optimize handling of long diffs in BuildPrompt
Skip long diffs instead of truncating them to improve performance and token utilization.
1 parent ad6e10e commit b5de34e

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

prompt.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -172,18 +172,16 @@ func BuildPrompt(log io.Writer, dir string,
172172
sysToken := CountTokens(resp...)
173173

174174
var tokensUsed int
175-
// Process the commits (you can modify this part based on your needs)
176175
for _, commit := range commits {
177176
buf.Reset()
178177
if err := generateDiff(&buf, dir, commit.Hash.String()); err != nil {
179178
return nil, fmt.Errorf("generate diff: %w", err)
180179
}
181180

182-
maxDiffLength := maxTokens / 10
183181
msgs := []openai.ChatCompletionMessage{
184182
{
185183
Role: openai.ChatMessageRoleUser,
186-
Content: Ellipse(buf.String(), maxDiffLength),
184+
Content: buf.String(),
187185
},
188186
{
189187
Role: openai.ChatMessageRoleAssistant,
@@ -192,6 +190,13 @@ func BuildPrompt(log io.Writer, dir string,
192190
}
193191
tok := CountTokens(msgs...)
194192

193+
maxDiffLength := maxTokens / 20
194+
if tok > maxDiffLength {
195+
// Don't spend tokens on diffs that are too long.
196+
// It's better for performance to skip these diffs vs. ellipsing them.
197+
continue
198+
}
199+
195200
if tok+tokensUsed+targetDiffNumTokens+sysToken > maxTokens {
196201
break
197202
}

0 commit comments

Comments
 (0)