WIP: message extra contet

This commit is contained in:
QuantumGhost
2025-12-08 01:18:44 +08:00
parent 095eaabc0d
commit 1f64281ce5
13 changed files with 537 additions and 4 deletions

View File

@ -1,7 +1,9 @@
import json
from collections.abc import Sequence
from typing import Union
from core.app.apps.advanced_chat.app_config_manager import AdvancedChatAppConfigManager
from sqlalchemy.orm import sessionmaker
from core.app.entities.app_invoke_entities import InvokeFrom
from core.llm_generator.llm_generator import LLMGenerator
from core.memory.token_buffer_memory import TokenBufferMemory
@ -14,6 +16,10 @@ from extensions.ext_database import db
from libs.infinite_scroll_pagination import InfiniteScrollPagination
from models import Account
from models.model import App, AppMode, AppModelConfig, EndUser, Message, MessageFeedback
from repositories.execution_extra_content_repository import ExecutionExtraContentRepository
from repositories.sqlalchemy_execution_extra_content_repository import (
SQLAlchemyExecutionExtraContentRepository,
)
from services.conversation_service import ConversationService
from services.errors.message import (
FirstMessageNotExistsError,
@ -24,6 +30,23 @@ from services.errors.message import (
from services.workflow_service import WorkflowService
def _create_execution_extra_content_repository() -> ExecutionExtraContentRepository:
session_maker = sessionmaker(bind=db.engine, expire_on_commit=False)
return SQLAlchemyExecutionExtraContentRepository(session_maker=session_maker)
def _attach_message_extra_contents(messages: Sequence[Message]) -> None:
if not messages:
return
repository = _create_execution_extra_content_repository()
extra_contents_lists = repository.get_by_message_ids([message.id for message in messages])
for index, message in enumerate(messages):
contents = extra_contents_lists[index] if index < len(extra_contents_lists) else []
message.set_extra_contents([content.to_dict() for content in contents])
class MessageService:
@classmethod
def pagination_by_first_id(
@ -85,6 +108,8 @@ class MessageService:
if order == "asc":
history_messages = list(reversed(history_messages))
_attach_message_extra_contents(history_messages)
return InfiniteScrollPagination(data=history_messages, limit=limit, has_more=has_more)
@classmethod