diff --git a/private_gpt/components/tools/processors/base.py b/private_gpt/components/tools/processors/base.py index e8cd13e0..d00ff092 100644 --- a/private_gpt/components/tools/processors/base.py +++ b/private_gpt/components/tools/processors/base.py @@ -1,5 +1,6 @@ import uuid from abc import ABC, abstractmethod +from typing import Literal from private_gpt.components.chat.models.chat_config_models import ( ResolvedChatRequest, @@ -52,11 +53,13 @@ def _wrapper_tool( name: str, description: str | None = None, tool_type: str | None = None, + runtime: Literal["client", "server"] = "server", ) -> ToolSpec: return ToolSpec( name=name, description=description or None, type=tool_type or f"{name}_v1", + runtime=runtime, ) diff --git a/private_gpt/components/tools/tool_pipeline.py b/private_gpt/components/tools/tool_pipeline.py index 51528e2b..8015d575 100644 --- a/private_gpt/components/tools/tool_pipeline.py +++ b/private_gpt/components/tools/tool_pipeline.py @@ -74,12 +74,6 @@ class ToolPipeline: self, request: ResolvedChatRequest ) -> ResolvedChatRequest: request_copy = request.model_copy(deep=True) - while await self._intercept_once(request_copy): - pass - return request_copy - - async def _intercept_once(self, request: ResolvedChatRequest) -> bool: for processor in self._processors: - if await processor.intercept(request): - return True - return False + await processor.intercept(request_copy) + return request_copy