add base edits

This commit is contained in:
Luciano Scarpulla
2024-11-12 11:49:06 +08:00
parent 1709055e1a
commit 8492ec9456
2 changed files with 24 additions and 3 deletions
+10 -2
View File
@@ -34,12 +34,18 @@ class BaseProvider(ABC):
raise NotImplementedError
@abstractmethod
def send_conversation(self, conversation: "Conversation") -> "Message":
def send_conversation(
self,
conversation: "Conversation",
tools: list[Callable] | None = None,
) -> "Message":
"""Send a conversation to the provider."""
raise NotImplementedError
@abstractmethod
def structured_response(self, prompt: str, response_model: Type[T], **kwargs) -> T:
def structured_response(
self, prompt: str, response_model: Type[T], **kwargs
) -> T:
"""Get a structured response."""
raise NotImplementedError
@@ -64,3 +70,5 @@ class BaseProvider(ABC):
def make_tools(self, tools: list[Callable] | None):
if tools is not None:
return [self.tool.from_function(func) for func in tools]
else:
return []
+14 -1
View File
@@ -42,6 +42,12 @@ class BaseTool(BaseModel, ABC):
properties: dict[str, BaseToolProperty]
required: list[str] | None = None
config: ClassVar[BaseToolConfig] = BaseToolConfig()
raw_func: Callable
tool_id: str | None = None
function_result: str | None = None
def is_executed(self) -> bool:
return self.function_result is not None
@classmethod
def convert_type(cls, field_type) -> str:
@@ -104,7 +110,14 @@ class BaseTool(BaseModel, ABC):
description=(func.__doc__ or "").strip(),
properties=properties,
required=required,
raw_func=func,
)
@abstractmethod
def get_schema(self) -> Any: ...
def get_input_schema(self) -> Any: ...
@abstractmethod
def handle(self, message) -> None: ...
@abstractmethod
def get_response_schema(self) -> Any: ...