From f994196b32ad83e30f3735c9d4af462bc70fcff7 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Mon, 12 May 2025 11:46:16 -0700 Subject: [PATCH] tool_calls_or_raise() Refs #992, #998, #999 --- llm/default_plugins/openai_models.py | 2 +- llm/models.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/llm/default_plugins/openai_models.py b/llm/default_plugins/openai_models.py index 48abb23..e37067a 100644 --- a/llm/default_plugins/openai_models.py +++ b/llm/default_plugins/openai_models.py @@ -527,7 +527,7 @@ class _Shared: messages.append( {"role": "assistant", "content": prev_response.text_or_raise()} ) - tool_calls = prev_response.tool_calls() + tool_calls = prev_response.tool_calls_or_raise() if tool_calls: messages.append( { diff --git a/llm/models.py b/llm/models.py index b165113..f6365f5 100644 --- a/llm/models.py +++ b/llm/models.py @@ -722,6 +722,9 @@ class Response(_BaseResponse): self._force() return self._tool_calls + def tool_calls_or_raise(self) -> str: + return self.tool_calls() + def json(self) -> Optional[Dict[str, Any]]: self._force() return self.response_json @@ -872,6 +875,11 @@ class AsyncResponse(_BaseResponse): await self._force() return self._tool_calls + def tool_calls_or_raise(self) -> str: + if not self._done: + raise ValueError("Response not yet awaited") + return self.tool_calls() + async def json(self) -> Optional[Dict[str, Any]]: await self._force() return self.response_json