fix(agent features):

1.Voice output is generated in a streaming manner.
2.Multimodal file storage type repair;
3.Adding features to the configuration of the sub-agents in the multi-agent system
This commit is contained in:
Timebomb2018
2026-03-19 12:31:41 +08:00
parent 33d522b387
commit 8c804a1011
9 changed files with 505 additions and 113 deletions

View File

@@ -9,7 +9,7 @@ and error handling.
import logging
import time
import uuid
from typing import Optional
from typing import AsyncIterator, Optional
from app.core.storage import StorageFactory, StorageBackend
from app.core.storage_exceptions import (
@@ -162,6 +162,31 @@ class FileStorageService:
cause=e,
)
async def upload_stream(
self,
tenant_id: uuid.UUID,
workspace_id: uuid.UUID | None,
file_id: uuid.UUID,
file_ext: str,
stream: AsyncIterator[bytes],
content_type: Optional[str] = None,
) -> int:
"""
Upload a file from an async byte stream.
Returns:
Total bytes written.
"""
file_key = generate_file_key(tenant_id, workspace_id, file_id, file_ext)
logger.info(f"Starting stream upload: file_key={file_key}, content_type={content_type}")
try:
total = await self.storage.upload_stream(file_key, stream, content_type)
logger.info(f"Stream upload successful: file_key={file_key}, size={total} bytes")
return total
except Exception as e:
logger.error(f"Stream upload failed: file_key={file_key}, error={str(e)}")
raise
async def download_file(self, file_key: str) -> bytes:
"""
Download a file from storage.