From f1a4b7029222a939ed63ae998451126c3a516ed0 Mon Sep 17 00:00:00 2001 From: Kevin Hu Date: Thu, 20 Nov 2025 14:11:18 +0800 Subject: [PATCH] Continue... --- api/apps/sdk/agents.py | 2 +- api/apps/sdk/session.py | 8 +++----- api/db/services/canvas_service.py | 8 ++++---- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/api/apps/sdk/agents.py b/api/apps/sdk/agents.py index 4396f68b1..b20a22ad8 100644 --- a/api/apps/sdk/agents.py +++ b/api/apps/sdk/agents.py @@ -159,7 +159,7 @@ async def webhook(tenant_id: str, agent_id: str): data=False, message=str(e), code=RetCode.EXCEPTION_ERROR) - def sse(): + async def sse(): nonlocal canvas try: async for ans in canvas.run(query=req.get("query", ""), files=req.get("files", []), user_id=req.get("user_id", tenant_id), webhook_payload=req): diff --git a/api/apps/sdk/session.py b/api/apps/sdk/session.py index 8a853f848..533375622 100644 --- a/api/apps/sdk/session.py +++ b/api/apps/sdk/session.py @@ -428,17 +428,15 @@ async def agents_completion_openai_compatibility(tenant_id, agent_id): return resp else: # For non-streaming, just return the response directly - response = next( - completion_openai( + async for response in completion_openai( tenant_id, agent_id, question, session_id=req.pop("session_id", req.get("id", "")) or req.get("metadata", {}).get("id", ""), stream=False, **req, - ) - ) - return jsonify(response) + ): + return jsonify(response) @manager.route("/agents//completions", methods=["POST"]) # noqa: F821 diff --git a/api/db/services/canvas_service.py b/api/db/services/canvas_service.py index b5f3dfeed..57b4b5c2a 100644 --- a/api/db/services/canvas_service.py +++ b/api/db/services/canvas_service.py @@ -177,7 +177,7 @@ class UserCanvasService(CommonService): return True -def completion(tenant_id, agent_id, session_id=None, **kwargs): +async def completion(tenant_id, agent_id, session_id=None, **kwargs): query = kwargs.get("query", "") or kwargs.get("question", "") files = kwargs.get("files", []) inputs = kwargs.get("inputs", {}) @@ -237,7 +237,7 @@ def completion(tenant_id, agent_id, session_id=None, **kwargs): API4ConversationService.append_message(conv["id"], conv) -def completion_openai(tenant_id, agent_id, question, session_id=None, stream=True, **kwargs): +async def completion_openai(tenant_id, agent_id, question, session_id=None, stream=True, **kwargs): tiktoken_encoder = tiktoken.get_encoding("cl100k_base") prompt_tokens = len(tiktoken_encoder.encode(str(question))) user_id = kwargs.get("user_id", "") @@ -245,7 +245,7 @@ def completion_openai(tenant_id, agent_id, question, session_id=None, stream=Tru if stream: completion_tokens = 0 try: - for ans in completion( + async for ans in completion( tenant_id=tenant_id, agent_id=agent_id, session_id=session_id, @@ -304,7 +304,7 @@ def completion_openai(tenant_id, agent_id, question, session_id=None, stream=Tru try: all_content = "" reference = {} - for ans in completion( + async for ans in completion( tenant_id=tenant_id, agent_id=agent_id, session_id=session_id,