diff --git a/src/inspect_ai/model/_providers/anthropic.py b/src/inspect_ai/model/_providers/anthropic.py index 18508e95c..407552aa0 100644 --- a/src/inspect_ai/model/_providers/anthropic.py +++ b/src/inspect_ai/model/_providers/anthropic.py @@ -288,6 +288,13 @@ async def message_param(message: ChatMessage) -> MessageParam: content: str | list[TextBlockParam | ImageBlockParam] = ( message.error.message ) + # anthropic requires that content be populated when + # is_error is true (throws bad_request_error when not) + # so make sure this precondition is met + if not content: + content = message.text + if not content: + content = "error" elif isinstance(message.content, str): content = [TextBlockParam(type="text", text=message.content)] else: diff --git a/src/inspect_ai/tool/_tools/_execute.py b/src/inspect_ai/tool/_tools/_execute.py index 86d08d6d7..89ae1709f 100644 --- a/src/inspect_ai/tool/_tools/_execute.py +++ b/src/inspect_ai/tool/_tools/_execute.py @@ -30,7 +30,9 @@ async def execute(cmd: str) -> str: if result.success: return result.stdout else: - raise ToolError(result.stderr) + raise ToolError( + result.stderr if result.stderr else "error executing command" + ) return execute @@ -62,6 +64,6 @@ async def execute(code: str) -> str: if result.success: return result.stdout else: - raise ToolError(result.stderr) + raise ToolError(result.stderr if result.stderr else "error executing code") return execute