|
@@ -0,0 +1,52 @@
|
|
|
+from typing import Any, Union
|
|
|
+
|
|
|
+import requests
|
|
|
+
|
|
|
+from core.tools.entities.tool_entities import ToolInvokeMessage
|
|
|
+from core.tools.tool.builtin_tool import BuiltinTool
|
|
|
+
|
|
|
+
|
|
|
+class GoogleTranslate(BuiltinTool):
|
|
|
+ def _invoke(self,
|
|
|
+ user_id: str,
|
|
|
+ tool_parameters: dict[str, Any],
|
|
|
+ ) -> Union[ToolInvokeMessage, list[ToolInvokeMessage]]:
|
|
|
+ """
|
|
|
+ invoke tools
|
|
|
+ """
|
|
|
+ content = tool_parameters.get('content', '')
|
|
|
+ if not content:
|
|
|
+ return self.create_text_message('Invalid parameter content')
|
|
|
+
|
|
|
+ dest = tool_parameters.get('dest', '')
|
|
|
+ if not dest:
|
|
|
+ return self.create_text_message('Invalid parameter destination language')
|
|
|
+
|
|
|
+ try:
|
|
|
+ result = self._translate(content, dest)
|
|
|
+ return self.create_text_message(str(result))
|
|
|
+ except Exception:
|
|
|
+ return self.create_text_message('Translation service error, please check the network')
|
|
|
+
|
|
|
+ def _translate(self, content: str, dest: str) -> str:
|
|
|
+ try:
|
|
|
+ url = "https://translate.googleapis.com/translate_a/single"
|
|
|
+ params = {
|
|
|
+ "client": "gtx",
|
|
|
+ "sl": "auto",
|
|
|
+ "tl": dest,
|
|
|
+ "dt": "t",
|
|
|
+ "q": content
|
|
|
+ }
|
|
|
+
|
|
|
+ headers = {
|
|
|
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
|
|
|
+ }
|
|
|
+
|
|
|
+ response_json = requests.get(
|
|
|
+ url, params=params, headers=headers).json()
|
|
|
+ result = response_json[0]
|
|
|
+ translated_text = ''.join([item[0] for item in result if item[0]])
|
|
|
+ return str(translated_text)
|
|
|
+ except Exception as e:
|
|
|
+ return str(e)
|