Sfoglia il codice sorgente

fix: add before send to remove langfuse defaultErrorResponse (#8361)

Joe 7 mesi fa
parent
commit
84ac5ccc8f
2 ha cambiato i file con 28 aggiunte e 6 eliminazioni
  1. 10 0
      api/extensions/ext_sentry.py
  2. 18 6
      api/services/ops_service.py

+ 10 - 0
api/extensions/ext_sentry.py

@@ -6,6 +6,15 @@ from sentry_sdk.integrations.flask import FlaskIntegration
 from werkzeug.exceptions import HTTPException
 
 
+def before_send(event, hint):
+    if "exc_info" in hint:
+        exc_type, exc_value, tb = hint["exc_info"]
+        if parse_error.defaultErrorResponse in str(exc_value):
+            return None
+
+    return event
+
+
 def init_app(app):
     if app.config.get("SENTRY_DSN"):
         sentry_sdk.init(
@@ -16,4 +25,5 @@ def init_app(app):
             profiles_sample_rate=app.config.get("SENTRY_PROFILES_SAMPLE_RATE", 1.0),
             environment=app.config.get("DEPLOY_ENV"),
             release=f"dify-{app.config.get('CURRENT_VERSION')}-{app.config.get('COMMIT_SHA')}",
+            before_send=before_send,
         )

+ 18 - 6
api/services/ops_service.py

@@ -31,16 +31,28 @@ class OpsService:
         if tracing_provider == "langfuse" and (
             "project_key" not in decrypt_tracing_config or not decrypt_tracing_config.get("project_key")
         ):
-            project_key = OpsTraceManager.get_trace_config_project_key(decrypt_tracing_config, tracing_provider)
-            new_decrypt_tracing_config.update(
-                {"project_url": "{host}/project/{key}".format(host=decrypt_tracing_config.get("host"), key=project_key)}
-            )
+            try:
+                project_key = OpsTraceManager.get_trace_config_project_key(decrypt_tracing_config, tracing_provider)
+                new_decrypt_tracing_config.update(
+                    {
+                        "project_url": "{host}/project/{key}".format(
+                            host=decrypt_tracing_config.get("host"), key=project_key
+                        )
+                    }
+                )
+            except Exception:
+                new_decrypt_tracing_config.update(
+                    {"project_url": "{host}/".format(host=decrypt_tracing_config.get("host"))}
+                )
 
         if tracing_provider == "langsmith" and (
             "project_url" not in decrypt_tracing_config or not decrypt_tracing_config.get("project_url")
         ):
-            project_url = OpsTraceManager.get_trace_config_project_url(decrypt_tracing_config, tracing_provider)
-            new_decrypt_tracing_config.update({"project_url": project_url})
+            try:
+                project_url = OpsTraceManager.get_trace_config_project_url(decrypt_tracing_config, tracing_provider)
+                new_decrypt_tracing_config.update({"project_url": project_url})
+            except Exception:
+                new_decrypt_tracing_config.update({"project_url": "https://smith.langchain.com/"})
 
         trace_config_data.tracing_config = new_decrypt_tracing_config
         return trace_config_data.to_dict()