nsmcp::questionLogJson

 nsmcp::questionLogJson

Defined in

Partial Call Graph (max 5 caller/called nodes):
::nsmcp::QuestionService ::nsmcp::QuestionService nsmcp::questionLogJson nsmcp::questionLogJson ::nsmcp::QuestionService->nsmcp::questionLogJson Class Class Class->nsmcp::questionLogJson nsmcp::QuestionService instproc logQuestion nsmcp::QuestionService instproc logQuestion (protected) nsmcp::QuestionService instproc logQuestion->nsmcp::questionLogJson

Testcases:
No testcase defined.
Source code:
    set fields [list event string $event timestamp number [clock seconds]]
    foreach key {server principal backend} {
        lappend fields $key string [dict get $record $key]
    }
    foreach key {conversation id question peerAddress peerSource status requestedModel model} {
        if {[dict exists $last $key]} {
            lappend fields $key string [dict get $last $key]
        }
    }
    if {[dict exists $last submittedAt]} {
        lappend fields submittedAt number [dict get $last submittedAt]
    }
    if {$event eq "finished"} {
        if {[dict exists $last submittedMs]} {
            lappend fields elapsedMs number [expr {[dict exists $last elapsedMs] ? [dict get $last elapsedMs] : max(0,[clock milliseconds]-[dict get $last submittedMs])}]
        }
        lappend fields toolCalls number [llength [dict get $last tools]] monetaryCost null {}  usageAvailable boolean [expr {[dict exists $last usage inputTokens] || [dict exists $last usage outputTokens] || [dict exists $last usage totalTokens]}]
        if {[dict exists $last questionUsage]} {
            set usage {}
            dict for {key value} [dict get $last questionUsage] {
                if {$key in {scope source reason}} {
                    lappend usage $key string $value
                }  elseif {$key eq "available"} {
                    lappend usage $key boolean $value
                }  else {
                    lappend usage $key number $value
                }
            }
            lappend usage complete boolean [expr {[dict get $last status] eq "complete"
                && [dict get $last questionUsage available]
                && [dict exists $last questionUsage inputTokens]
                && [dict exists $last questionUsage outputTokens]
                && [dict exists $last questionUsage totalTokens]}]
            lappend fields questionUsage object $usage
        }
        if {[dict exists $last usage]} {
            set usage {}
            dict for {key value} [dict get $last usage] {
                if {$key in {scope source}} {
                    lappend usage $key string $value
                }  elseif {$key eq "complete"} {
                    lappend usage $key boolean $value
                }  else {
                    lappend usage $key number $value
                }
            }
            lappend fields usage object $usage
        }
    }
    return [ns_json value -- [list {} object $fields]]
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: