From 2489a6d8a0902f8e6429b6334def3ad15ea01caa Mon Sep 17 00:00:00 2001 From: Andreas Humenberger Date: Tue, 4 Mar 2025 13:14:49 +0100 Subject: [PATCH] Log response ID and token usage of queries to be able to fetch additional data from the provider after evaluation Part of #347 --- model/llm/llm.go | 2 +- provider/openai-api/query.go | 5 +++-- provider/provider.go | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/model/llm/llm.go b/model/llm/llm.go index 842f0e9c..1dc6802c 100644 --- a/model/llm/llm.go +++ b/model/llm/llm.go @@ -339,7 +339,7 @@ func (m *Model) query(logger *log.Logger, request string) (queryResult *provider return err } duration = time.Since(start) - logger.Info("model responded", "model", m.ID(), "id", id, "duration", duration.Milliseconds(), "response", string(bytesutil.PrefixLines([]byte(queryResult.Message), []byte("\t")))) + logger.Info("model responded", "model", m.ID(), "id", id, "duration", duration.Milliseconds(), "response-id", queryResult.ResponseID, "token-input", queryResult.Usage.PromptTokens, "token-output", queryResult.Usage.CompletionTokens, "response", string(bytesutil.PrefixLines([]byte(queryResult.Message), []byte("\t")))) return nil }, diff --git a/provider/openai-api/query.go b/provider/openai-api/query.go index 54ebc374..399fb151 100644 --- a/provider/openai-api/query.go +++ b/provider/openai-api/query.go @@ -38,7 +38,8 @@ func QueryOpenAIAPIModel(ctx context.Context, client *openai.Client, modelIdenti } return &provider.QueryResult{ - Message: apiResponse.Choices[0].Message.Content, - Usage: apiResponse.Usage, + ResponseID: apiResponse.ID, + Message: apiResponse.Choices[0].Message.Content, + Usage: apiResponse.Usage, }, nil } diff --git a/provider/provider.go b/provider/provider.go index 29d416c1..9c02097d 100644 --- a/provider/provider.go +++ b/provider/provider.go @@ -46,6 +46,8 @@ type InjectToken interface { // QueryResult holds the result of a query. type QueryResult struct { + // ResponseID holds the response ID. + ResponseID string // Message holds the response message. Message string // Duration holds the duration of the result.