diff --git a/backend/apps/ollama/main.py b/backend/apps/ollama/main.py index 455dc89a5..fd4ba7b06 100644 --- a/backend/apps/ollama/main.py +++ b/backend/apps/ollama/main.py @@ -153,7 +153,7 @@ async def cleanup_response( await session.close() -async def post_streaming_url(url: str, payload: str): +async def post_streaming_url(url: str, payload: str, stream: bool = True): r = None try: session = aiohttp.ClientSession( @@ -162,12 +162,20 @@ async def post_streaming_url(url: str, payload: str): r = await session.post(url, data=payload) r.raise_for_status() - return StreamingResponse( - r.content, - status_code=r.status, - headers=dict(r.headers), - background=BackgroundTask(cleanup_response, response=r, session=session), - ) + if stream: + return StreamingResponse( + r.content, + status_code=r.status, + headers=dict(r.headers), + background=BackgroundTask( + cleanup_response, response=r, session=session + ), + ) + else: + res = await r.json() + await cleanup_response(r, session) + return res + except Exception as e: error_detail = "Open WebUI: Server Connection Error" if r is not None: @@ -963,7 +971,11 @@ async def generate_openai_chat_completion( url = app.state.config.OLLAMA_BASE_URLS[url_idx] log.info(f"url: {url}") - return await post_streaming_url(f"{url}/v1/chat/completions", json.dumps(payload)) + return await post_streaming_url( + f"{url}/v1/chat/completions", + json.dumps(payload), + stream=payload.get("stream", False), + ) @app.get("/v1/models") diff --git a/backend/requirements.txt b/backend/requirements.txt index dd9de2ff1..329637ef4 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -6,7 +6,7 @@ python-multipart==0.0.9 Flask==3.0.3 Flask-Cors==4.0.1 -python-socketio==5.11.2 +python-socketio==5.11.3 python-jose==3.3.0 passlib[bcrypt]==1.7.4 @@ -32,10 +32,10 @@ google-generativeai==0.5.4 langchain==0.2.0 langchain-community==0.2.0 -langchain-chroma==0.1.1 +langchain-chroma==0.1.2 fake-useragent==1.5.1 -chromadb==0.5.0 +chromadb==0.5.3 sentence-transformers==2.7.0 pypdf==4.2.0 docx2txt==0.8 @@ -67,4 +67,4 @@ pytube==15.0.0 extract_msg pydub -duckduckgo-search~=6.1.5 \ No newline at end of file +duckduckgo-search~=6.1.7 \ No newline at end of file