Browse Source

feat/async-pipes

Olof Larsson 2 months ago
parent
commit
ab1f2ae914
1 changed files with 6 additions and 3 deletions
  1. 6 3
      backend/open_webui/functions.py

+ 6 - 3
backend/open_webui/functions.py

@@ -2,6 +2,7 @@ import logging
 import sys
 import sys
 import inspect
 import inspect
 import json
 import json
+import asyncio
 
 
 from pydantic import BaseModel
 from pydantic import BaseModel
 from typing import AsyncGenerator, Generator, Iterator
 from typing import AsyncGenerator, Generator, Iterator
@@ -76,11 +77,13 @@ async def get_function_models(request):
         if hasattr(function_module, "pipes"):
         if hasattr(function_module, "pipes"):
             sub_pipes = []
             sub_pipes = []
 
 
-            # Check if pipes is a function or a list
-
+            # Handle pipes being a list, sync function, or async function
             try:
             try:
                 if callable(function_module.pipes):
                 if callable(function_module.pipes):
-                    sub_pipes = function_module.pipes()
+                    if asyncio.iscoroutinefunction(function_module.pipes):
+                        sub_pipes = await function_module.pipes()
+                    else:
+                        sub_pipes = function_module.pipes()
                 else:
                 else:
                     sub_pipes = function_module.pipes
                     sub_pipes = function_module.pipes
             except Exception as e:
             except Exception as e: