From cfbb7bec582c6d2ce810bac7726cbb0db8b79a90 Mon Sep 17 00:00:00 2001 From: Yeuoly <45712896+Yeuoly@users.noreply.github.com> Date: Thu, 1 Feb 2024 17:09:59 +0800 Subject: [PATCH] Feat/current time tool zone (#2337) --- api/core/features/assistant_fc_runner.py | 2 +- .../builtin/time/tools/current_time.py | 13 ++- .../builtin/time/tools/current_time.yaml | 94 +++++++++++++++++++ 3 files changed, 106 insertions(+), 3 deletions(-) diff --git a/api/core/features/assistant_fc_runner.py b/api/core/features/assistant_fc_runner.py index 3528091d63..b3340906b5 100644 --- a/api/core/features/assistant_fc_runner.py +++ b/api/core/features/assistant_fc_runner.py @@ -271,7 +271,7 @@ class AssistantFunctionCallApplicationRunner(BaseAssistantApplicationRunner): message_file_ids.append(message_file.id) except ToolProviderCredentialValidationError as e: - error_response = f"Plese check your tool provider credentials" + error_response = f"Please check your tool provider credentials" except ( ToolNotFoundError, ToolNotSupportedError, ToolProviderNotFoundError ) as e: diff --git a/api/core/tools/provider/builtin/time/tools/current_time.py b/api/core/tools/provider/builtin/time/tools/current_time.py index 6919fb82de..ae4ece9aa6 100644 --- a/api/core/tools/provider/builtin/time/tools/current_time.py +++ b/api/core/tools/provider/builtin/time/tools/current_time.py @@ -2,6 +2,7 @@ from core.tools.entities.tool_entities import ToolInvokeMessage from core.tools.tool.builtin_tool import BuiltinTool from typing import Any, Dict, List, Union +from pytz import timezone as pytz_timezone from datetime import datetime, timezone @@ -13,5 +14,13 @@ class CurrentTimeTool(BuiltinTool): """ invoke tools """ - return self.create_text_message(f'{datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S %Z")}') - \ No newline at end of file + # get timezone + tz = tool_parameters.get('timezone', 'UTC') + if tz == 'UTC': + return self.create_text_message(f'{datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S %Z")}') + + try: + tz = pytz_timezone(tz) + except: + return self.create_text_message(f'Invalid timezone: {tz}') + return self.create_text_message(f'{datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S %Z")}') \ No newline at end of file diff --git a/api/core/tools/provider/builtin/time/tools/current_time.yaml b/api/core/tools/provider/builtin/time/tools/current_time.yaml index 09a34d2ee9..f0b5f53bd8 100644 --- a/api/core/tools/provider/builtin/time/tools/current_time.yaml +++ b/api/core/tools/provider/builtin/time/tools/current_time.yaml @@ -12,3 +12,97 @@ description: pt_BR: A tool for getting the current time. llm: A tool for getting the current time. parameters: + - name: timezone + type: select + required: false + label: + en_US: Timezone + zh_Hans: 时区 + pt_BR: Timezone + human_description: + en_US: Timezone + zh_Hans: 时区 + pt_BR: Timezone + form: form + default: UTC + options: + - value: UTC + label: + en_US: UTC + zh_Hans: UTC + pt_BR: UTC + - value: America/New_York + label: + en_US: America/New_York + zh_Hans: 美洲/纽约 + pt_BR: America/New_York + - value: America/Los_Angeles + label: + en_US: America/Los_Angeles + zh_Hans: 美洲/洛杉矶 + pt_BR: America/Los_Angeles + - value: America/Chicago + label: + en_US: America/Chicago + zh_Hans: 美洲/芝加哥 + pt_BR: America/Chicago + - value: Asia/Shanghai + label: + en_US: Asia/Shanghai + zh_Hans: 亚洲/上海 + pt_BR: Asia/Shanghai + - value: Asia/Tokyo + label: + en_US: Asia/Tokyo + zh_Hans: 亚洲/东京 + pt_BR: Asia/Tokyo + - value: Asia/Dubai + label: + en_US: Asia/Dubai + zh_Hans: 亚洲/迪拜 + pt_BR: Asia/Dubai + - value: Asia/Kolkata + label: + en_US: Asia/Kolkata + zh_Hans: 亚洲/加尔各答 + pt_BR: Asia/Kolkata + - value: Asia/Seoul + label: + en_US: Asia/Seoul + zh_Hans: 亚洲/首尔 + pt_BR: Asia/Seoul + - value: Asia/Singapore + label: + en_US: Asia/Singapore + zh_Hans: 亚洲/新加坡 + pt_BR: Asia/Singapore + - value: Europe/London + label: + en_US: Europe/London + zh_Hans: 欧洲/伦敦 + pt_BR: Europe/London + - value: Europe/Berlin + label: + en_US: Europe/Berlin + zh_Hans: 欧洲/柏林 + pt_BR: Europe/Berlin + - value: Europe/Moscow + label: + en_US: Europe/Moscow + zh_Hans: 欧洲/莫斯科 + pt_BR: Europe/Moscow + - value: Australia/Sydney + label: + en_US: Australia/Sydney + zh_Hans: 澳大利亚/悉尼 + pt_BR: Australia/Sydney + - value: Pacific/Auckland + label: + en_US: Pacific/Auckland + zh_Hans: 太平洋/奥克兰 + pt_BR: Pacific/Auckland + - value: Africa/Cairo + label: + en_US: Africa/Cairo + zh_Hans: 非洲/开罗 + pt_BR: Africa/Cairo