more sophisticated prompting

This commit is contained in:
2026-02-02 02:00:49 +03:00
parent 6332aa3c19
commit a4f156eac7

46
main.go
View File

@@ -28,18 +28,52 @@ func (p *OpenAIPrompter) Prompt(ctx context.Context, req PromptRequest) (*Highly
p.log.Info("new prompt request", p.log.Info("new prompt request",
"req", req) "req", req)
instructions := p.cfg.SystemPrompt input := []responses.ResponseInputItemUnionParam{
if req.OriginalPostContent != nil { {
instructions += fmt.Sprintf("\nThis is the channel post that user is mentioning: %s", *req.OriginalPostContent) OfMessage: &responses.EasyInputMessageParam{
Content: responses.EasyInputMessageContentUnionParam{
OfString: openai.String(p.cfg.SystemPrompt),
},
Role: responses.EasyInputMessageRoleSystem,
},
},
{
OfMessage: &responses.EasyInputMessageParam{
Content: responses.EasyInputMessageContentUnionParam{
OfString: openai.String("Пользователя зовут " + req.Username),
},
Role: responses.EasyInputMessageRoleSystem,
},
},
{
OfMessage: &responses.EasyInputMessageParam{
Content: responses.EasyInputMessageContentUnionParam{
OfString: openai.String(req.Question),
},
Role: responses.EasyInputMessageRoleUser,
},
},
} }
prompt := fmt.Sprintf("<system>%v</system> user %v asks: %v", instructions, req.Username, req.Question) if req.OriginalPostContent != nil {
p.log.Info("resulting prompt", "prompt", prompt) message := "Пользователь может ссылаться на текст поста, который он комментирует. Вот он: " +
*req.OriginalPostContent
input = append(input, responses.ResponseInputItemUnionParam{
OfMessage: &responses.EasyInputMessageParam{
Content: responses.EasyInputMessageContentUnionParam{
OfString: openai.String(message),
},
Role: responses.EasyInputMessageRoleDeveloper,
Type: responses.EasyInputMessageTypeMessage,
},
})
}
resp, err := p.cli.Responses.New(ctx, responses.ResponseNewParams{ resp, err := p.cli.Responses.New(ctx, responses.ResponseNewParams{
Instructions: openai.String(p.cfg.SystemPrompt), Instructions: openai.String(p.cfg.SystemPrompt),
Input: responses.ResponseNewParamsInputUnion{ Input: responses.ResponseNewParamsInputUnion{
OfString: openai.String(prompt), OfInputItemList: input,
}, },
Reasoning: shared.ReasoningParam{ Reasoning: shared.ReasoningParam{
Effort: shared.ReasoningEffortXhigh, Effort: shared.ReasoningEffortXhigh,