mirror of
https://github.com/RuoJi6/ARTEX.git
synced 2026-10-28 01:03:50 +08:00
Merge pull request #25 from RuoJi6/codex/default-judge-failure-ask
fix(intercept): 模型失败默认转人工审批
This commit is contained in:
4 files changed
+33
-6
No files matched your search
@@ -316,7 +316,7 @@ const (
|
|||||||
// Judge default values.
|
// Judge default values.
|
||||||
const (
|
const (
|
||||||
defaultJudgeTimeoutSecs = 15
|
defaultJudgeTimeoutSecs = 15
|
||||||
defaultJudgeFailAction = "allow"
|
defaultJudgeFailAction = "ask"
|
||||||
defaultJudgeAskTimeoutSecs = 300
|
defaultJudgeAskTimeoutSecs = 300
|
||||||
defaultJudgeAskTimeoutAction = "deny"
|
defaultJudgeAskTimeoutAction = "deny"
|
||||||
// DefaultIncompleteScriptAction keeps incomplete snapshots with the judge.
|
// DefaultIncompleteScriptAction keeps incomplete snapshots with the judge.
|
||||||
|
|||||||
@@ -31,6 +31,28 @@ func retryTestInterceptor(t *testing.T, settings map[string]string) *Interceptor
|
|||||||
return New(&db.DB{DB: d})
|
return New(&db.DB{DB: d})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestJudgeFailActionDefaultsAndOverrides(t *testing.T) {
|
||||||
|
for _, tc := range []struct {
|
||||||
|
name, value, want string
|
||||||
|
}{
|
||||||
|
{"missing", "", "ask"},
|
||||||
|
{"invalid", "invalid", "ask"},
|
||||||
|
{"saved_allow", "allow", "allow"},
|
||||||
|
{"saved_ask", "ask", "ask"},
|
||||||
|
{"saved_deny", "deny", "deny"},
|
||||||
|
} {
|
||||||
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
|
settings := map[string]string{}
|
||||||
|
if tc.value != "" {
|
||||||
|
settings[settingJudgeFailAction] = tc.value
|
||||||
|
}
|
||||||
|
if got := retryTestInterceptor(t, settings).GetJudgeConfig().FailAction; got != tc.want {
|
||||||
|
t.Fatalf("fail action=%s want=%s", got, tc.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestJudgeRetryConfigDefaultsAndBounds(t *testing.T) {
|
func TestJudgeRetryConfigDefaultsAndBounds(t *testing.T) {
|
||||||
for _, tc := range []struct {
|
for _, tc := range []struct {
|
||||||
name string
|
name string
|
||||||
@@ -63,14 +85,19 @@ func TestJudgeRetriesBeforeApplyingFailurePolicy(t *testing.T) {
|
|||||||
{"recover", "deny", "allow", 2, 3, "allow", false},
|
{"recover", "deny", "allow", 2, 3, "allow", false},
|
||||||
{"valid_deny_is_final", "allow", "deny", 0, 1, "deny", false},
|
{"valid_deny_is_final", "allow", "deny", 0, 1, "deny", false},
|
||||||
{"valid_ask_is_final", "allow", "ask", 0, 1, "ask", false},
|
{"valid_ask_is_final", "allow", "ask", 0, 1, "ask", false},
|
||||||
|
{"exhaust_default", "", "allow", 9, 3, "ask", true},
|
||||||
{"exhaust_allow", "allow", "allow", 9, 3, "allow", true},
|
{"exhaust_allow", "allow", "allow", 9, 3, "allow", true},
|
||||||
{"exhaust_ask", "ask", "allow", 9, 3, "ask", true},
|
{"exhaust_ask", "ask", "allow", 9, 3, "ask", true},
|
||||||
{"exhaust_deny", "deny", "allow", 9, 3, "deny", true},
|
{"exhaust_deny", "deny", "allow", 9, 3, "deny", true},
|
||||||
} {
|
} {
|
||||||
t.Run(tc.name, func(t *testing.T) {
|
t.Run(tc.name, func(t *testing.T) {
|
||||||
i := retryTestInterceptor(t, map[string]string{
|
settings := map[string]string{
|
||||||
settingJudgeEnabled: "true", settingJudgeRetryCount: "2", settingJudgeRetryIntervalMS: "0", settingJudgeFailAction: tc.failAction,
|
settingJudgeEnabled: "true", settingJudgeRetryCount: "2", settingJudgeRetryIntervalMS: "0",
|
||||||
})
|
}
|
||||||
|
if tc.failAction != "" {
|
||||||
|
settings[settingJudgeFailAction] = tc.failAction
|
||||||
|
}
|
||||||
|
i := retryTestInterceptor(t, settings)
|
||||||
calls := 0
|
calls := 0
|
||||||
var first ReviewInput
|
var first ReviewInput
|
||||||
i.SetReviewer(func(ctx context.Context, id int64, prompt string, input ReviewInput) (Decision, error) {
|
i.SetReviewer(func(ctx context.Context, id int64, prompt string, input ReviewInput) (Decision, error) {
|
||||||
|
|||||||
@@ -203,7 +203,7 @@ const defaultJudge = (): JudgeConfig => ({
|
|||||||
timeout_seconds: 15,
|
timeout_seconds: 15,
|
||||||
retry_count: 0,
|
retry_count: 0,
|
||||||
retry_interval_ms: 1000,
|
retry_interval_ms: 1000,
|
||||||
fail_action: "allow",
|
fail_action: "ask",
|
||||||
ask_timeout_seconds: 300,
|
ask_timeout_seconds: 300,
|
||||||
ask_timeout_action: "deny",
|
ask_timeout_action: "deny",
|
||||||
incomplete_script_action: "model",
|
incomplete_script_action: "model",
|
||||||
|
|||||||
@@ -2514,7 +2514,7 @@ function route(m: string, path: string, seg: string[], q: URLSearchParams, b: Re
|
|||||||
timeout_seconds: 15,
|
timeout_seconds: 15,
|
||||||
retry_count: 0,
|
retry_count: 0,
|
||||||
retry_interval_ms: 1000,
|
retry_interval_ms: 1000,
|
||||||
fail_action: "allow",
|
fail_action: "ask",
|
||||||
ask_timeout_seconds: 300,
|
ask_timeout_seconds: 300,
|
||||||
ask_timeout_action: "deny",
|
ask_timeout_action: "deny",
|
||||||
incomplete_script_action: "model",
|
incomplete_script_action: "model",
|
||||||
|
|||||||
Reference in new issue
Block a user