diff --git a/adk/human-in-the-loop/5_supervisor/agent.go b/adk/human-in-the-loop/5_supervisor/agent.go index a2526c8..2adc7ae 100644 --- a/adk/human-in-the-loop/5_supervisor/agent.go +++ b/adk/human-in-the-loop/5_supervisor/agent.go @@ -19,6 +19,8 @@ package main import ( "context" "fmt" + "os" + "strconv" "time" "github.com/cloudwego/eino/adk" @@ -47,21 +49,35 @@ func (r *rateLimitedModel) WithTools(tools []*schema.ToolInfo) (model.ToolCallin } func (r *rateLimitedModel) Generate(ctx context.Context, input []*schema.Message, opts ...model.Option) (*schema.Message, error) { - fmt.Println("enter rateLimitedModel.generate") time.Sleep(r.delay) return r.m.Generate(ctx, input, opts...) } func (r *rateLimitedModel) Stream(ctx context.Context, input []*schema.Message, opts ...model.Option) (*schema.StreamReader[*schema.Message], error) { - fmt.Println("enter rateLimitedModel.stream") time.Sleep(r.delay) return r.m.Stream(ctx, input, opts...) } +func getRateLimitDelay() time.Duration { + delayMs := os.Getenv("RATE_LIMIT_DELAY_MS") + if delayMs == "" { + return 0 + } + ms, err := strconv.Atoi(delayMs) + if err != nil { + return 0 + } + return time.Duration(ms) * time.Millisecond +} + func newRateLimitedModel() model.ToolCallingChatModel { + delay := getRateLimitDelay() + if delay == 0 { + return commonModel.NewChatModel() + } return &rateLimitedModel{ m: commonModel.NewChatModel(), - delay: 300 * time.Millisecond, + delay: delay, } } diff --git a/adk/human-in-the-loop/6_plan-execute-replan/agent.go b/adk/human-in-the-loop/6_plan-execute-replan/agent.go index 6ba991f..5e6de56 100644 --- a/adk/human-in-the-loop/6_plan-execute-replan/agent.go +++ b/adk/human-in-the-loop/6_plan-execute-replan/agent.go @@ -19,6 +19,8 @@ package main import ( "context" "fmt" + "os" + "strconv" "strings" "time" @@ -46,21 +48,35 @@ func (r *rateLimitedModel) WithTools(tools []*schema.ToolInfo) (model.ToolCallin } func (r *rateLimitedModel) Generate(ctx context.Context, input []*schema.Message, opts ...model.Option) (*schema.Message, error) { - fmt.Println("enter rateLimitedModel.generate") time.Sleep(r.delay) return r.m.Generate(ctx, input, opts...) } func (r *rateLimitedModel) Stream(ctx context.Context, input []*schema.Message, opts ...model.Option) (*schema.StreamReader[*schema.Message], error) { - fmt.Println("enter rateLimitedModel.stream") time.Sleep(r.delay) return r.m.Stream(ctx, input, opts...) } +func getRateLimitDelay() time.Duration { + delayMs := os.Getenv("RATE_LIMIT_DELAY_MS") + if delayMs == "" { + return 0 + } + ms, err := strconv.Atoi(delayMs) + if err != nil { + return 0 + } + return time.Duration(ms) * time.Millisecond +} + func newRateLimitedModel() model.ToolCallingChatModel { + delay := getRateLimitDelay() + if delay == 0 { + return commonModel.NewChatModel() + } return &rateLimitedModel{ m: commonModel.NewChatModel(), - delay: 300 * time.Millisecond, + delay: delay, } } diff --git a/adk/human-in-the-loop/7_deep-agents/agent.go b/adk/human-in-the-loop/7_deep-agents/agent.go index 15447af..50f8d21 100644 --- a/adk/human-in-the-loop/7_deep-agents/agent.go +++ b/adk/human-in-the-loop/7_deep-agents/agent.go @@ -18,7 +18,8 @@ package main import ( "context" - "fmt" + "os" + "strconv" "time" "github.com/cloudwego/eino/adk" @@ -47,21 +48,35 @@ func (r *rateLimitedModel) WithTools(tools []*schema.ToolInfo) (model.ToolCallin } func (r *rateLimitedModel) Generate(ctx context.Context, input []*schema.Message, opts ...model.Option) (*schema.Message, error) { - fmt.Println("enter rateLimitedModel.generate") time.Sleep(r.delay) return r.m.Generate(ctx, input, opts...) } func (r *rateLimitedModel) Stream(ctx context.Context, input []*schema.Message, opts ...model.Option) (*schema.StreamReader[*schema.Message], error) { - fmt.Println("enter rateLimitedModel.stream") time.Sleep(r.delay) return r.m.Stream(ctx, input, opts...) } +func getRateLimitDelay() time.Duration { + delayMs := os.Getenv("RATE_LIMIT_DELAY_MS") + if delayMs == "" { + return 0 + } + ms, err := strconv.Atoi(delayMs) + if err != nil { + return 0 + } + return time.Duration(ms) * time.Millisecond +} + func newRateLimitedModel() model.ToolCallingChatModel { + delay := getRateLimitDelay() + if delay == 0 { + return commonModel.NewChatModel() + } return &rateLimitedModel{ m: commonModel.NewChatModel(), - delay: time.Minute, + delay: delay, } } diff --git a/adk/human-in-the-loop/8_supervisor-plan-execute/agent.go b/adk/human-in-the-loop/8_supervisor-plan-execute/agent.go index c05e001..046cfb1 100644 --- a/adk/human-in-the-loop/8_supervisor-plan-execute/agent.go +++ b/adk/human-in-the-loop/8_supervisor-plan-execute/agent.go @@ -19,6 +19,8 @@ package main import ( "context" "fmt" + "os" + "strconv" "strings" "time" @@ -56,10 +58,26 @@ func (r *rateLimitedModel) Stream(ctx context.Context, input []*schema.Message, return r.m.Stream(ctx, input, opts...) } +func getRateLimitDelay() time.Duration { + delayMs := os.Getenv("RATE_LIMIT_DELAY_MS") + if delayMs == "" { + return 0 + } + ms, err := strconv.Atoi(delayMs) + if err != nil { + return 0 + } + return time.Duration(ms) * time.Millisecond +} + func newRateLimitedModel() model.ToolCallingChatModel { + delay := getRateLimitDelay() + if delay == 0 { + return commonModel.NewChatModel() + } return &rateLimitedModel{ m: commonModel.NewChatModel(), - delay: time.Minute, + delay: delay, } }