// Request is one model call. Input holds the input items in order, such as
// userMessage values or output items of an earlier response. Node names the
-// node that a compaction builds, or is nil. It goes only to the usage file,
-// never to the endpoint.
+// node that a compaction builds, or is nil. Turn names the request of a turn:
+// first or next. Node and Turn go only to the usage file, never to the
+// endpoint.
type Request struct {
Model string
Effort string
Tools []Tool
Input []any
Node *nodeKey
+ Turn string
}
// Tool is the definition of a function tool.
record.Node = &[2]int{request.Node.level, request.Node.index}
}
+ record.Turn = request.Turn
response, err := c.send(httpRequest, &record)
if err != nil {
record.Error = err.Error()
// usageRecord is one line of usage.jsonl. Date is the start of the call, and
// Seconds its length. Node is the node [l, i] of a compaction. Status is the
// HTTP status, or 0 when no response came. TextBytes is the size of the text of
-// the reply. Quota holds the x-codex-* headers of the response, without the
+// the reply. Turn names the request of a turn. Quota holds the x-codex-* headers of the response, without the
// turn state.
type usageRecord struct {
Date string `json:"date"`
Seconds float64 `json:"seconds"`
Model string `json:"model"`
Node *[2]int `json:"node,omitempty"`
+ Turn string `json:"turn,omitempty"`
Status int `json:"status"`
InputTokens int `json:"input_tokens"`
CachedTokens int `json:"cached_tokens"`