Guest User

Open WebUI Task Generation Outlet Fix

a guest
Mar 17th, 2026
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 8.02 KB | None | 0 0
  1. diff --git a/backend/open_webui/routers/tasks.py b/backend/open_webui/routers/tasks.py
  2. index f6404da05..abb0fbdb6 100644
  3. --- a/backend/open_webui/routers/tasks.py
  4. +++ b/backend/open_webui/routers/tasks.py
  5. @@ -20,7 +20,10 @@ from open_webui.utils.task import (
  6.  from open_webui.utils.auth import get_admin_user, get_verified_user
  7.  from open_webui.constants import TASKS
  8.  
  9. -from open_webui.routers.pipelines import process_pipeline_inlet_filter
  10. +from open_webui.routers.pipelines import (
  11. +    process_pipeline_inlet_filter,
  12. +    process_pipeline_outlet_filter,
  13. +)
  14.  
  15.  from open_webui.utils.task import get_task_model_id
  16.  
  17. @@ -179,7 +182,6 @@ async def update_task_config(
  18.  async def generate_title(
  19.      request: Request, form_data: dict, user=Depends(get_verified_user)
  20.  ):
  21. -
  22.      if not request.app.state.config.ENABLE_TITLE_GENERATION:
  23.          return JSONResponse(
  24.              status_code=status.HTTP_200_OK,
  25. @@ -250,7 +252,12 @@ async def generate_title(
  26.          raise e
  27.  
  28.      try:
  29. -        return await generate_chat_completion(request, form_data=payload, user=user)
  30. +        response = await generate_chat_completion(request, form_data=payload, user=user)
  31. +        # Add chat_id to response for observability correlation
  32. +        response["chat_id"] = form_data.get("chat_id")
  33. +        # Process response through outlet filter for observability (Opik, Langfuse, etc.)
  34. +        response = await process_pipeline_outlet_filter(request, response, user, models)
  35. +        return response
  36.      except Exception as e:
  37.          log.error("Exception occurred", exc_info=True)
  38.          return JSONResponse(
  39. @@ -263,7 +270,6 @@ async def generate_title(
  40.  async def generate_follow_ups(
  41.      request: Request, form_data: dict, user=Depends(get_verified_user)
  42.  ):
  43. -
  44.      if not request.app.state.config.ENABLE_FOLLOW_UP_GENERATION:
  45.          return JSONResponse(
  46.              status_code=status.HTTP_200_OK,
  47. @@ -323,7 +329,12 @@ async def generate_follow_ups(
  48.          raise e
  49.  
  50.      try:
  51. -        return await generate_chat_completion(request, form_data=payload, user=user)
  52. +        response = await generate_chat_completion(request, form_data=payload, user=user)
  53. +        # Add chat_id to response for observability correlation
  54. +        response["chat_id"] = form_data.get("chat_id")
  55. +        # Process response through outlet filter for observability (Opik, Langfuse, etc.)
  56. +        response = await process_pipeline_outlet_filter(request, response, user, models)
  57. +        return response
  58.      except Exception as e:
  59.          log.error("Exception occurred", exc_info=True)
  60.          return JSONResponse(
  61. @@ -336,7 +347,6 @@ async def generate_follow_ups(
  62.  async def generate_chat_tags(
  63.      request: Request, form_data: dict, user=Depends(get_verified_user)
  64.  ):
  65. -
  66.      if not request.app.state.config.ENABLE_TAGS_GENERATION:
  67.          return JSONResponse(
  68.              status_code=status.HTTP_200_OK,
  69. @@ -396,7 +406,12 @@ async def generate_chat_tags(
  70.          raise e
  71.  
  72.      try:
  73. -        return await generate_chat_completion(request, form_data=payload, user=user)
  74. +        response = await generate_chat_completion(request, form_data=payload, user=user)
  75. +        # Add chat_id to response for observability correlation
  76. +        response["chat_id"] = form_data.get("chat_id")
  77. +        # Process response through outlet filter for observability (Opik, Langfuse, etc.)
  78. +        response = await process_pipeline_outlet_filter(request, response, user, models)
  79. +        return response
  80.      except Exception as e:
  81.          log.error(f"Error generating chat completion: {e}")
  82.          return JSONResponse(
  83. @@ -462,7 +477,12 @@ async def generate_image_prompt(
  84.          raise e
  85.  
  86.      try:
  87. -        return await generate_chat_completion(request, form_data=payload, user=user)
  88. +        response = await generate_chat_completion(request, form_data=payload, user=user)
  89. +        # Add chat_id to response for observability correlation
  90. +        response["chat_id"] = form_data.get("chat_id")
  91. +        # Process response through outlet filter for observability (Opik, Langfuse, etc.)
  92. +        response = await process_pipeline_outlet_filter(request, response, user, models)
  93. +        return response
  94.      except Exception as e:
  95.          log.error("Exception occurred", exc_info=True)
  96.          return JSONResponse(
  97. @@ -475,7 +495,6 @@ async def generate_image_prompt(
  98.  async def generate_queries(
  99.      request: Request, form_data: dict, user=Depends(get_verified_user)
  100.  ):
  101. -
  102.      type = form_data.get("type")
  103.      if type == "web_search":
  104.          if not request.app.state.config.ENABLE_SEARCH_QUERY_GENERATION:
  105. @@ -547,7 +566,12 @@ async def generate_queries(
  106.          raise e
  107.  
  108.      try:
  109. -        return await generate_chat_completion(request, form_data=payload, user=user)
  110. +        response = await generate_chat_completion(request, form_data=payload, user=user)
  111. +        # Add chat_id to response for observability correlation
  112. +        response["chat_id"] = form_data.get("chat_id")
  113. +        # Process response through outlet filter for observability (Opik, Langfuse, etc.)
  114. +        response = await process_pipeline_outlet_filter(request, response, user, models)
  115. +        return response
  116.      except Exception as e:
  117.          return JSONResponse(
  118.              status_code=status.HTTP_400_BAD_REQUEST,
  119. @@ -632,7 +656,12 @@ async def generate_autocompletion(
  120.          raise e
  121.  
  122.      try:
  123. -        return await generate_chat_completion(request, form_data=payload, user=user)
  124. +        response = await generate_chat_completion(request, form_data=payload, user=user)
  125. +        # Add chat_id to response for observability correlation
  126. +        response["chat_id"] = form_data.get("chat_id")
  127. +        # Process response through outlet filter for observability (Opik, Langfuse, etc.)
  128. +        response = await process_pipeline_outlet_filter(request, response, user, models)
  129. +        return response
  130.      except Exception as e:
  131.          log.error(f"Error generating chat completion: {e}")
  132.          return JSONResponse(
  133. @@ -645,7 +674,6 @@ async def generate_autocompletion(
  134.  async def generate_emoji(
  135.      request: Request, form_data: dict, user=Depends(get_verified_user)
  136.  ):
  137. -
  138.      if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
  139.          models = {
  140.              request.state.model["id"]: request.state.model,
  141. @@ -701,7 +729,12 @@ async def generate_emoji(
  142.          raise e
  143.  
  144.      try:
  145. -        return await generate_chat_completion(request, form_data=payload, user=user)
  146. +        response = await generate_chat_completion(request, form_data=payload, user=user)
  147. +        # Add chat_id to response for observability correlation
  148. +        response["chat_id"] = form_data.get("chat_id")
  149. +        # Process response through outlet filter for observability (Opik, Langfuse, etc.)
  150. +        response = await process_pipeline_outlet_filter(request, response, user, models)
  151. +        return response
  152.      except Exception as e:
  153.          return JSONResponse(
  154.              status_code=status.HTTP_400_BAD_REQUEST,
  155. @@ -713,7 +746,6 @@ async def generate_emoji(
  156.  async def generate_moa_response(
  157.      request: Request, form_data: dict, user=Depends(get_verified_user)
  158.  ):
  159. -
  160.      if getattr(request.state, "direct", False) and hasattr(request.state, "model"):
  161.          models = {
  162.              request.state.model["id"]: request.state.model,
  163. @@ -756,7 +788,12 @@ async def generate_moa_response(
  164.          raise e
  165.  
  166.      try:
  167. -        return await generate_chat_completion(request, form_data=payload, user=user)
  168. +        response = await generate_chat_completion(request, form_data=payload, user=user)
  169. +        # Add chat_id to response for observability correlation
  170. +        response["chat_id"] = form_data.get("chat_id")
  171. +        # Process response through outlet filter for observability (Opik, Langfuse, etc.)
  172. +        response = await process_pipeline_outlet_filter(request, response, user, models)
  173. +        return response
  174.      except Exception as e:
  175.          return JSONResponse(
  176.              status_code=status.HTTP_400_BAD_REQUEST,
  177.  
Advertisement
Add Comment
Please, Sign In to add comment