From b7936835db3b04b557edfdd962135d20699fb726 Mon Sep 17 00:00:00 2001 From: Kibin Shin Date: Fri, 14 Jun 2024 17:00:20 +0900 Subject: [PATCH] Add GPTSCRIPT_PROGRESS_TIME_STEP_MS --- pkg/runner/runner.go | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index 7df697ff8..d93bb081d 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -5,7 +5,9 @@ import ( "encoding/json" "errors" "fmt" + "os" "sort" + "strconv" "strings" "sync" "time" @@ -668,17 +670,29 @@ func streamProgress(callCtx *engine.Context, monitor Monitor) (chan<- types.Comp wg := sync.WaitGroup{} wg.Add(1) + progressTimeStepMs, err := strconv.Atoi(os.Getenv("GPTSCRIPT_PROGRESS_TIME_STEP_MS")) + if err != nil { + // 기본값 250ms를 사용하거나 오류를 처리합니다. + progressTimeStepMs = 250 + } + progressTimeStep := time.Duration(progressTimeStepMs) * time.Millisecond go func() { defer wg.Done() + lastSentTimeMap := make(map[string]time.Time) for status := range progress { if message := status.PartialResponse; message != nil { - monitor.Event(Event{ - Time: time.Now(), - CallContext: callCtx.GetCallContext(), - Type: EventTypeCallProgress, - ChatCompletionID: status.CompletionID, - Content: message.String(), - }) + now := time.Now() + lastSentTime, ok := lastSentTimeMap[status.CompletionID] + if !ok || now.Sub(lastSentTime) > progressTimeStep { + lastSentTimeMap[status.CompletionID] = now + monitor.Event(Event{ + Time: time.Now(), + CallContext: callCtx.GetCallContext(), + Type: EventTypeCallProgress, + ChatCompletionID: status.CompletionID, + Content: message.String(), + }) + } } else { monitor.Event(Event{ Time: time.Now(), @@ -690,6 +704,7 @@ func streamProgress(callCtx *engine.Context, monitor Monitor) (chan<- types.Comp Usage: status.Usage, ChatResponseCached: status.Cached, }) + delete(lastSentTimeMap, status.CompletionID) } } }()