feat(config): add log_conversations option to AI metadata configuration

This commit is contained in:
2026-03-27 00:12:33 +02:00
parent 6af02a2ba1
commit 74e67526d1
7 changed files with 32 additions and 4 deletions

View File

@@ -44,6 +44,7 @@ type Client struct {
httpClient *http.Client
log *slog.Logger
dimensions int
logConversations bool
}
type Config struct {
@@ -58,6 +59,7 @@ type Config struct {
HTTPClient *http.Client
Log *slog.Logger
Dimensions int
LogConversations bool
}
type embeddingsRequest struct {
@@ -113,6 +115,7 @@ func New(cfg Config) *Client {
httpClient: cfg.HTTPClient,
log: cfg.Log,
dimensions: cfg.Dimensions,
logConversations: cfg.LogConversations,
}
}
@@ -177,6 +180,15 @@ func (c *Client) extractMetadataWithModel(ctx context.Context, input, model stri
},
}
if c.logConversations && c.log != nil {
c.log.Info("metadata conversation request",
slog.String("provider", c.name),
slog.String("model", model),
slog.String("system", metadataSystemPrompt),
slog.String("input", input),
)
}
var resp chatCompletionsResponse
if err := c.doJSON(ctx, "/chat/completions", req, &resp); err != nil {
return thoughttypes.ThoughtMetadata{}, err
@@ -188,7 +200,17 @@ func (c *Client) extractMetadataWithModel(ctx context.Context, input, model stri
return thoughttypes.ThoughtMetadata{}, fmt.Errorf("%s metadata: no choices returned", c.name)
}
metadataText := strings.TrimSpace(resp.Choices[0].Message.Content)
rawResponse := resp.Choices[0].Message.Content
if c.logConversations && c.log != nil {
c.log.Info("metadata conversation response",
slog.String("provider", c.name),
slog.String("model", model),
slog.String("response", rawResponse),
)
}
metadataText := strings.TrimSpace(rawResponse)
metadataText = stripThinkingBlocks(metadataText)
metadataText = stripCodeFence(metadataText)
metadataText = extractJSONObject(metadataText)