add recommended rag plugin endpoint

This commit is contained in:
jyong
2025-09-02 11:56:05 +08:00
parent 826b9d5b21
commit 56fc9088dd
4 changed files with 32 additions and 33 deletions

View File

@ -107,7 +107,7 @@ class DatasourceFileManager:
tenant_id: str,
file_url: str,
conversation_id: Optional[str] = None,
) -> UploadFile:
) -> ToolFile:
# try to download image
try:
response = ssrf_proxy.get(file_url)
@ -127,26 +127,22 @@ class DatasourceFileManager:
filepath = f"tools/{tenant_id}/{filename}"
storage.save(filepath, blob)
upload_file = UploadFile(
tool_file = ToolFile(
tenant_id=tenant_id,
storage_type=dify_config.STORAGE_TYPE,
key=filepath,
user_id=user_id,
conversation_id=conversation_id,
file_key=filepath,
mimetype=mimetype,
original_url=file_url,
name=filename,
size=len(blob),
extension=extension,
mime_type=mimetype,
created_by_role=CreatorUserRole.ACCOUNT,
created_by=user_id,
used=False,
hash=hashlib.sha3_256(blob).hexdigest(),
source_url=file_url,
created_at=datetime.now(),
key=filepath,
)
db.session.add(upload_file)
db.session.add(tool_file)
db.session.commit()
return upload_file
return tool_file
@staticmethod
def get_file_binary(id: str) -> Union[tuple[bytes, str], None]:

View File

@ -3,9 +3,9 @@ from collections.abc import Generator
from mimetypes import guess_extension, guess_type
from typing import Optional
from core.datasource.datasource_file_manager import DatasourceFileManager
from core.datasource.entities.datasource_entities import DatasourceMessage
from core.file import File, FileTransferMethod, FileType
from core.tools.tool_file_manager import ToolFileManager
logger = logging.getLogger(__name__)
@ -31,15 +31,15 @@ class DatasourceFileMessageTransformer:
# try to download image
try:
assert isinstance(message.message, DatasourceMessage.TextMessage)
file = DatasourceFileManager.create_file_by_url(
tool_file_manager = ToolFileManager()
file = tool_file_manager.create_file_by_url(
user_id=user_id,
tenant_id=tenant_id,
file_url=message.message.text,
conversation_id=conversation_id,
)
url = f"/files/datasources/{file.id}{guess_extension(file.mime_type) or '.png'}"
url = f"/files/datasources/{file.id}{guess_extension(file.mimetype) or '.png'}"
yield DatasourceMessage(
type=DatasourceMessage.MessageType.IMAGE_LINK,
@ -71,7 +71,8 @@ class DatasourceFileMessageTransformer:
# FIXME: should do a type check here.
assert isinstance(message.message.blob, bytes)
file = DatasourceFileManager.create_file_by_raw(
tool_file_manager = ToolFileManager()
file = tool_file_manager.create_file_by_raw(
user_id=user_id,
tenant_id=tenant_id,
conversation_id=conversation_id,
@ -80,7 +81,7 @@ class DatasourceFileMessageTransformer:
filename=filename,
)
url = cls.get_datasource_file_url(datasource_file_id=file.id, extension=guess_extension(file.mime_type))
url = cls.get_datasource_file_url(datasource_file_id=file.id, extension=guess_extension(file.mimetype))
# check if file is image
if "image" in mimetype: