]> git.giacomolli.uk - onechat/blobdiff - probe.go
Carry new images through model request chains
[onechat] / probe.go
index f5553ce5b73ec164e213f0b0be22b990f8b34223..384d0f8357787e15fe5c5ccf07b9aa51bb0c20c5 100644 (file)
--- a/probe.go
+++ b/probe.go
@@ -7,7 +7,7 @@ import (
        "errors"
        "fmt"
        "io"
        "errors"
        "fmt"
        "io"
-       "log"
+       "log/slog"
        "os"
        "path/filepath"
        "strconv"
        "os"
        "path/filepath"
        "strconv"
@@ -18,13 +18,16 @@ const (
        // probeName is the agent name of a probe run. The cache key comes from
        // it.
        probeName = "Probe"
        // probeName is the agent name of a probe run. The cache key comes from
        // it.
        probeName = "Probe"
+
+       // probeCallLimit is the most model calls of a probe run.
+       probeCallLimit = 660
 )
 
 // probe runs "onechat probe LOG COUNT [BUILDS]". It appends the first COUNT
 // messages of LOG, one JSON object {kind, text} per line, to a new chat in
 // probe/ in the data directory, and builds its tree with the real compactor.
 // Before each user message it waits for the builds, as a turn does. It stops at
 )
 
 // probe runs "onechat probe LOG COUNT [BUILDS]". It appends the first COUNT
 // messages of LOG, one JSON object {kind, text} per line, to a new chat in
 // probe/ in the data directory, and builds its tree with the real compactor.
 // Before each user message it waits for the builds, as a turn does. It stops at
-// the first failed call, after buildCallLimit calls, or when the used percent
+// the first failed call, after probeCallLimit calls, or when the used percent
 // of a quota window grows by more than buildQuotaLimit points. At the end it
 // reports the calls, the time per call, the calls at once, the cached share,
 // the quota, the retries, and the line sizes. BUILDS, from 1 to buildMax,
 // of a quota window grows by more than buildQuotaLimit points. At the end it
 // reports the calls, the time per call, the calls at once, the cached share,
 // the quota, the retries, and the line sizes. BUILDS, from 1 to buildMax,
@@ -97,16 +100,16 @@ func probe(ctx context.Context, args []string, out io.Writer) (err error) {
 
        usagePath := filepath.Join(root, "usage.jsonl")
        client := newModelClient(address, auth, "onechat-"+probeName, usagePath)
 
        usagePath := filepath.Join(root, "usage.jsonl")
        client := newModelClient(address, auth, "onechat-"+probeName, usagePath)
-       client.LimitCalls(buildCallLimit)
+       client.LimitCalls(probeCallLimit)
 
        summarizer := ProbeSlotSummarizer{
 
        summarizer := ProbeSlotSummarizer{
-               inner: newCompactor(client, probePrompt, config.Compactor),
+               inner: newCompactor(client, probePrompt, config.Compactor, promptTools(), &ImageStore{dir: filepath.Join(dir, imageDirName)}),
                slots: make(chan struct{}, builds),
        }
 
        // The report of the probe counts the failed calls, so the lines of the
        // failed builds are not needed.
                slots: make(chan struct{}, builds),
        }
 
        // The report of the probe counts the failed calls, so the lines of the
        // failed builds are not needed.
-       memory, err := openMemory(ctx, root, time.Now, summarizer, log.New(io.Discard, "", 0))
+       memory, err := openMemory(ctx, root, time.Now, summarizer, slog.New(slog.DiscardHandler))
        if err != nil {
                return fmt.Errorf("open probe memory: %w", err)
        }
        if err != nil {
                return fmt.Errorf("open probe memory: %w", err)
        }