From a118132cbfadf51c26b7f7e4610a57d2fbe6f908 Mon Sep 17 00:00:00 2001 From: johnny-emp Date: Fri, 21 Feb 2025 08:07:33 -0600 Subject: [PATCH 1/3] raise validation error --- src/emp_agents/agents/base.py | 11 +++++++++-- src/emp_agents/exceptions.py | 4 ++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/emp_agents/agents/base.py b/src/emp_agents/agents/base.py index b300c45..e423bfd 100644 --- a/src/emp_agents/agents/base.py +++ b/src/emp_agents/agents/base.py @@ -7,10 +7,12 @@ ConfigDict, Field, PrivateAttr, + ValidationError, computed_field, field_validator, ) +from emp_agents.exceptions import ResponseValidationError from emp_agents.agents.history import AbstractConversationProvider, ConversationProvider from emp_agents.logger import logger from emp_agents.models import ( @@ -46,7 +48,7 @@ class AgentBase(BaseModel): default_factory=ConversationProvider ) sync_tools: bool = Field( - True, description="If true, tools will be executed synchronously" + default=True, description="If true, tools will be executed synchronously" ) # This can be used to modify the conversation before completion, such as RAG @@ -195,7 +197,12 @@ async def respond( max_tokens=max_tokens, response_format=response_format, ) - return response_format.model_validate_json(response) + try: + return response_format.model_validate_json(response) + except ValidationError as e: + raise ResponseValidationError( + f"Error validating agent response to {response_format.__name__}: {response}" + ) from e @overload async def complete( diff --git a/src/emp_agents/exceptions.py b/src/emp_agents/exceptions.py index 65a3b99..9a06b5d 100644 --- a/src/emp_agents/exceptions.py +++ b/src/emp_agents/exceptions.py @@ -4,3 +4,7 @@ class TooManyTriesException(BaseException): class InvalidModelException(BaseException): pass + + +class ResponseValidationError(BaseException): + pass From ef2f18f2bb1f054134c1f840ea02e9c5730f8b6f Mon Sep 17 00:00:00 2001 From: johnny-emp Date: Fri, 21 Feb 2025 08:08:08 -0600 Subject: [PATCH 2/3] format --- src/emp_agents/agents/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emp_agents/agents/base.py b/src/emp_agents/agents/base.py index e423bfd..880b5b5 100644 --- a/src/emp_agents/agents/base.py +++ b/src/emp_agents/agents/base.py @@ -12,8 +12,8 @@ field_validator, ) -from emp_agents.exceptions import ResponseValidationError from emp_agents.agents.history import AbstractConversationProvider, ConversationProvider +from emp_agents.exceptions import ResponseValidationError from emp_agents.logger import logger from emp_agents.models import ( AssistantMessage, From 000d824d5b020a6447da295a709c57dd73804f15 Mon Sep 17 00:00:00 2001 From: johnny-emp Date: Fri, 21 Feb 2025 08:08:19 -0600 Subject: [PATCH 3/3] bump version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 0710224..86f3126 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "emp-agents" -version = "0.3.0" +version = "0.3.1" description = "A Python library for building low-code, capable and extensible autonomous agent systems." readme = "README.md" requires-python = ">=3.10"