| ) | ) | ||||
| # publish files | # publish files | ||||
| for message_file, save_as in message_files: | |||||
| for message_file_id, save_as in message_files: | |||||
| if save_as: | if save_as: | ||||
| self.variables_pool.set_file( | self.variables_pool.set_file( | ||||
| tool_name=tool_call_name, value=message_file.id, name=save_as) | |||||
| tool_name=tool_call_name, value=message_file_id, name=save_as) | |||||
| # publish message file | # publish message file | ||||
| self.queue_manager.publish(QueueMessageFileEvent( | self.queue_manager.publish(QueueMessageFileEvent( | ||||
| message_file_id=message_file.id | |||||
| message_file_id=message_file_id | |||||
| ), PublishFrom.APPLICATION_MANAGER) | ), PublishFrom.APPLICATION_MANAGER) | ||||
| # add message file ids | # add message file ids | ||||
| message_file_ids.append(message_file.id) | |||||
| message_file_ids.append(message_file_id) | |||||
| return tool_invoke_response, tool_invoke_meta | return tool_invoke_response, tool_invoke_meta | ||||
| agent_tool_callback=self.agent_callback, | agent_tool_callback=self.agent_callback, | ||||
| ) | ) | ||||
| # publish files | # publish files | ||||
| for message_file, save_as in message_files: | |||||
| for message_file_id, save_as in message_files: | |||||
| if save_as: | if save_as: | ||||
| self.variables_pool.set_file(tool_name=tool_call_name, value=message_file.id, name=save_as) | |||||
| self.variables_pool.set_file(tool_name=tool_call_name, value=message_file_id, name=save_as) | |||||
| # publish message file | # publish message file | ||||
| self.queue_manager.publish(QueueMessageFileEvent( | self.queue_manager.publish(QueueMessageFileEvent( | ||||
| message_file_id=message_file.id | |||||
| message_file_id=message_file_id | |||||
| ), PublishFrom.APPLICATION_MANAGER) | ), PublishFrom.APPLICATION_MANAGER) | ||||
| # add message file ids | # add message file ids | ||||
| message_file_ids.append(message_file.id) | |||||
| message_file_ids.append(message_file_id) | |||||
| tool_response = { | tool_response = { | ||||
| "tool_call_id": tool_call_id, | "tool_call_id": tool_call_id, |
| extension = '.bin' | extension = '.bin' | ||||
| else: | else: | ||||
| extension = '.bin' | extension = '.bin' | ||||
| # add sign url | |||||
| url = ToolFileManager.sign_file(tool_file_id=tool_file_id, extension=extension) | |||||
| # add sign url to local file | |||||
| if message_file.url.startswith('http'): | |||||
| url = message_file.url | |||||
| else: | |||||
| url = ToolFileManager.sign_file(tool_file_id=tool_file_id, extension=extension) | |||||
| return MessageFileStreamResponse( | return MessageFileStreamResponse( | ||||
| task_id=self._application_generate_entity.task_id, | task_id=self._application_generate_entity.task_id, |
| 'type': self.type.value, | 'type': self.type.value, | ||||
| 'transfer_method': self.transfer_method.value, | 'transfer_method': self.transfer_method.value, | ||||
| 'url': self.preview_url, | 'url': self.preview_url, | ||||
| 'remote_url': self.url, | |||||
| 'related_id': self.related_id, | 'related_id': self.related_id, | ||||
| 'filename': self.filename, | 'filename': self.filename, | ||||
| 'extension': self.extension, | 'extension': self.extension, |
| "max_results": tool_parameters.get('max_results'), | "max_results": tool_parameters.get('max_results'), | ||||
| } | } | ||||
| response = DDGS().images(**query_dict) | response = DDGS().images(**query_dict) | ||||
| results = [] | |||||
| result = [] | |||||
| for res in response: | for res in response: | ||||
| results.append(self.create_image_message(image=res.get("image"))) | |||||
| return results | |||||
| msg = ToolInvokeMessage(type=ToolInvokeMessage.MessageType.IMAGE_LINK, | |||||
| message=res.get('image'), | |||||
| save_as='', | |||||
| meta=res) | |||||
| result.append(msg) | |||||
| return result |
| from copy import deepcopy | from copy import deepcopy | ||||
| from datetime import datetime, timezone | from datetime import datetime, timezone | ||||
| from mimetypes import guess_type | from mimetypes import guess_type | ||||
| from typing import Union | |||||
| from typing import Any, Union | |||||
| from yarl import URL | from yarl import URL | ||||
| agent_message: Message, | agent_message: Message, | ||||
| invoke_from: InvokeFrom, | invoke_from: InvokeFrom, | ||||
| user_id: str | user_id: str | ||||
| ) -> list[tuple[MessageFile, bool]]: | |||||
| ) -> list[tuple[Any, str]]: | |||||
| """ | """ | ||||
| Create message file | Create message file | ||||
| db.session.refresh(message_file) | db.session.refresh(message_file) | ||||
| result.append(( | result.append(( | ||||
| message_file, | |||||
| message_file.id, | |||||
| message.save_as | message.save_as | ||||
| )) | )) | ||||
| tenant_id=self.tenant_id, | tenant_id=self.tenant_id, | ||||
| type=FileType.IMAGE, | type=FileType.IMAGE, | ||||
| transfer_method=FileTransferMethod.TOOL_FILE, | transfer_method=FileTransferMethod.TOOL_FILE, | ||||
| url=url, | |||||
| related_id=tool_file_id, | related_id=tool_file_id, | ||||
| filename=filename, | filename=filename, | ||||
| extension=ext, | extension=ext, |
| src={src} | src={src} | ||||
| alt='' | alt='' | ||||
| onClick={() => setImagePreviewUrl(src)} | onClick={() => setImagePreviewUrl(src)} | ||||
| onError={e => e.currentTarget.remove()} | |||||
| /> | /> | ||||
| ))} | ))} | ||||
| { | { |