From f29561cde24f52410e657dc726bd085798fb9ad0 Mon Sep 17 00:00:00 2001 From: leehuwuj <leehuwuj@gmail.com> Date: Wed, 29 May 2024 10:40:40 +0700 Subject: [PATCH] add cache to toolfactory load_tools --- .../components/engines/python/agent/tools/__init__.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/templates/components/engines/python/agent/tools/__init__.py b/templates/components/engines/python/agent/tools/__init__.py index d2e5da69..f2c6c985 100644 --- a/templates/components/engines/python/agent/tools/__init__.py +++ b/templates/components/engines/python/agent/tools/__init__.py @@ -1,7 +1,8 @@ import os import yaml +import json import importlib - +from cachetools import cached, LRUCache from llama_index.core.tools.tool_spec.base import BaseToolSpec from llama_index.core.tools.function_tool import FunctionTool @@ -19,6 +20,14 @@ class ToolFactory: } @staticmethod + @cached( + LRUCache(maxsize=100), + key=lambda tool_type, tool_name, config: ( + tool_type, + tool_name, + json.dumps(config, sort_keys=True), + ), + ) def load_tools(tool_type: str, tool_name: str, config: dict) -> list[FunctionTool]: source_package = ToolFactory.TOOL_SOURCE_PACKAGE_MAP[tool_type] try: -- GitLab