diff --git a/README.md b/README.md index fff4f20..4eed244 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,7 @@ ## 比原版One API多出的配置 - `STREAMING_TIMEOUT`:设置流式一次回复的超时时间,默认为 30 秒 +- `DIFY_DEBUG`:设置 Dify 渠道是否输出工作流和节点信息到客户端,默认为 `true`, 可选值为 `true` 和 `false` ## 部署 ### 部署要求 diff --git a/common/env.go b/common/env.go index 856fa61..1aa340f 100644 --- a/common/env.go +++ b/common/env.go @@ -24,3 +24,15 @@ func GetEnvOrDefaultString(env string, defaultValue string) string { } return os.Getenv(env) } + +func GetEnvOrDefaultBool(env string, defaultValue bool) bool { + if env == "" || os.Getenv(env) == "" { + return defaultValue + } + b, err := strconv.ParseBool(os.Getenv(env)) + if err != nil { + SysError(fmt.Sprintf("failed to parse %s: %s, using default value: %t", env, err.Error(), defaultValue)) + return defaultValue + } + return b +} diff --git a/constant/env.go b/constant/env.go index 6355a6b..b08bc04 100644 --- a/constant/env.go +++ b/constant/env.go @@ -5,3 +5,4 @@ import ( ) var StreamingTimeout = common.GetEnvOrDefault("STREAMING_TIMEOUT", 30) +var DifyDebug = common.GetEnvOrDefaultBool("DIFY_DEBUG", true) diff --git a/relay/channel/dify/relay-dify.go b/relay/channel/dify/relay-dify.go index 5553dfa..e3fe933 100644 --- a/relay/channel/dify/relay-dify.go +++ b/relay/channel/dify/relay-dify.go @@ -7,6 +7,7 @@ import ( "io" "net/http" "one-api/common" + "one-api/constant" "one-api/dto" relaycommon "one-api/relay/common" "one-api/service" @@ -48,9 +49,9 @@ func streamResponseDify2OpenAI(difyResponse DifyChunkChatCompletionResponse) *dt Model: "dify", } var choice dto.ChatCompletionsStreamResponseChoice - if difyResponse.Event == "workflow_started" { + if constant.DifyDebug && difyResponse.Event == "workflow_started" { choice.Delta.SetContentString("Workflow: " + difyResponse.Data.WorkflowId + "\n") - } else if difyResponse.Event == "node_started" { + } else if constant.DifyDebug && difyResponse.Event == "node_started" { choice.Delta.SetContentString("Node: " + difyResponse.Data.NodeId + "\n") } else if difyResponse.Event == "message" { choice.Delta.SetContentString(difyResponse.Answer)