From 6bab712cdd61a930019b874511f422315b15eba5 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Tue, 27 May 2025 13:13:13 -0700 Subject: [PATCH] Fix for module 'builtins' has no attribute 'instance_id, closes #1107 --- llm/models.py | 29 +++++++++++++++++------------ tests/test_tools.py | 18 ++++++++++++++++++ 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/llm/models.py b/llm/models.py index 7ee7cf6..7329ee5 100644 --- a/llm/models.py +++ b/llm/models.py @@ -862,19 +862,24 @@ class _BaseResponse: for tool_result in self.prompt.tool_results: instance_id = None if tool_result.instance: - if not tool_result.instance.instance_id: - tool_result.instance.instance_id = ( - db["tool_instances"] - .insert( - { - "plugin": tool.plugin, - "name": tool.name.split("_")[0], - "arguments": json.dumps(tool_result.instance._config), - } + try: + if not tool_result.instance.instance_id: + tool_result.instance.instance_id = ( + db["tool_instances"] + .insert( + { + "plugin": tool.plugin, + "name": tool.name.split("_")[0], + "arguments": json.dumps( + tool_result.instance._config + ), + } + ) + .last_pk ) - .last_pk - ) - instance_id = tool_result.instance.instance_id + instance_id = tool_result.instance.instance_id + except AttributeError: + pass db["tool_results"].insert( { "response_id": response_id, diff --git a/tests/test_tools.py b/tests/test_tools.py index ef35276..a22b9c7 100644 --- a/tests/test_tools.py +++ b/tests/test_tools.py @@ -239,6 +239,24 @@ def test_default_tool_llm_version(): assert '"output": "{}"'.format(version("llm")) in result.output +def test_functions_tool_locals(): + # https://github.com/simonw/llm/issues/1107 + runner = CliRunner() + result = runner.invoke( + cli.cli, + [ + "-m", + "echo", + "--functions", + "my_locals = locals", + "-T", + "llm_version", + json.dumps({"tool_calls": [{"name": "locals"}]}), + ], + ) + assert result.exit_code == 0 + + def test_default_tool_llm_time(): runner = CliRunner() result = runner.invoke(