feat: add suggestions to issue output

This commit is contained in:
2025-02-23 14:26:40 +01:00
parent 93ef37bba6
commit 65f9f2ef15
6 changed files with 92 additions and 9 deletions

View File

@ -80,17 +80,17 @@ func (m *IssueManager) GetUserProjects(ctx context.Context, user *model.User) ([
return projects, nil
}
func (m *IssueManager) GenerateIssue(ctx context.Context, user *model.User, projectID string, issueSummary string) (string, string, error) {
func (m *IssueManager) GenerateIssue(ctx context.Context, user *model.User, projectID string, issueSummary string) (string, string, string, error) {
systemPrompt, err := m.getIssueSystemPrompt(ctx, user, projectID)
if err != nil {
return "", "", errors.WithStack(err)
return "", "", "", errors.WithStack(err)
}
slog.DebugContext(ctx, "using system prompt", slog.String("systemPrompt", systemPrompt))
userPrompt, err := m.getIssueUserPrompt(ctx, user, projectID, issueSummary)
if err != nil {
return "", "", errors.WithStack(err)
return "", "", "", errors.WithStack(err)
}
slog.DebugContext(ctx, "using user prompt", slog.String("userPrompt", userPrompt))
@ -102,7 +102,7 @@ func (m *IssueManager) GenerateIssue(ctx context.Context, user *model.User, proj
res, err := m.llmClient.ChatCompletion(ctx, llm.WithMessages(messages...))
if err != nil {
return "", "", errors.WithStack(err)
return "", "", "", errors.WithStack(err)
}
body := res.Message().Content()
@ -112,12 +112,22 @@ func (m *IssueManager) GenerateIssue(ctx context.Context, user *model.User, proj
res, err = m.llmClient.ChatCompletion(ctx, llm.WithMessages(messages...))
if err != nil {
return "", "", errors.WithStack(err)
return "", "", "", errors.WithStack(err)
}
title := toTitle(res.Message().Content())
return title, body, nil
messages = append(messages, res.Message())
messages = append(messages, llm.NewMessage(llm.RoleUser, "Give me a list of questions as Markdown that could help clarify the request. Only write the list without additional headings."))
res, err = m.llmClient.ChatCompletion(ctx, llm.WithMessages(messages...))
if err != nil {
return "", "", "", errors.WithStack(err)
}
tips := res.Message().Content()
return title, body, tips, nil
}
func (m *IssueManager) getIssueSystemPrompt(ctx context.Context, user *model.User, projectID string) (string, error) {