nsmcp::ChatCompletionsRun method compactHistory (protected)

 <instance of nsmcp::ChatCompletionsRun[i]> compactHistory history \
    [ finished ]

Defined in /usr/local/ns/tcl/nsmcp/question-chat-completions.tcl

Parameters:
history (required)
finished (optional, defaults to "false")

Testcases:
No testcase defined.
Source code:
set limit [${:backend} cget -maxHistoryBytes]
set target [expr {$finished ? $limit/2 : $limit}]
set bytes [string bytelength $history]
for {set i 0} {$i<[llength $history]} {incr i} {
    if {$bytes<=$target} {break}
    set message [lindex $history $i]
    set value [ns_json parse [ns_json value -- [list {} object $message]]]
    if {[dict get $value role] ne "tool" || ![dict exists $value content]} {continue}
    set content [dict get $value content]
    if {[string bytelength $content]<=256} {continue}
    set replacement [ns_json value -- {{} object {evidenceOmitted boolean true reason string {Older tool body removed from model history; inspect retained evidence or query again. Do not infer absent details.}}}]
    set next {}
    foreach {key type data} $message {
        if {$key eq "content"} {set data $replacement}
        lappend next $key $type $data
    }
    set history [lreplace $history $i $i $next]
    set bytes [string bytelength $history]
}
if {$bytes>$limit} {error "Question model-history limit reached; start a new conversation"}
return $history
XQL Not present:
Generic, PostgreSQL, Oracle
[ hide source ] | [ make this the default ]
Show another procedure: