3434from veadk .memory .short_term_memory import ShortTermMemory
3535from veadk .types import MediaMessage
3636from veadk .utils .logger import get_logger
37- from veadk .utils .misc import formatted_timestamp , read_png_to_bytes
37+ from veadk .utils .misc import formatted_timestamp , read_file_to_bytes
3838
3939logger = get_logger (__name__ )
4040
@@ -105,9 +105,23 @@ def _convert_messages(
105105 if isinstance (messages , str ):
106106 _messages = [types .Content (role = "user" , parts = [types .Part (text = messages )])]
107107 elif isinstance (messages , MediaMessage ):
108- assert messages .media .endswith (".png" ), (
109- "The MediaMessage only supports PNG format file for now."
108+ import filetype
109+
110+ # 读取文件数据
111+ file_data = read_file_to_bytes (messages .media )
112+
113+ # 自动识别 MIME 类型
114+ kind = filetype .guess (file_data )
115+ if kind is None :
116+ raise ValueError ("Unsupported or unknown file type." )
117+
118+ mime_type = kind .mime
119+
120+ # 检查是否为图片或视频
121+ assert mime_type .startswith (("image/" , "video/" )), (
122+ f"Unsupported media type: { mime_type } "
110123 )
124+
111125 _messages = [
112126 types .Content (
113127 role = "user" ,
@@ -116,8 +130,8 @@ def _convert_messages(
116130 types .Part (
117131 inline_data = Blob (
118132 display_name = messages .media ,
119- data = read_png_to_bytes ( messages . media ) ,
120- mime_type = "image/png" ,
133+ data = file_data ,
134+ mime_type = mime_type ,
121135 )
122136 ),
123137 ],
@@ -271,7 +285,8 @@ async def run(
271285 and event .content .parts [0 ].text is not None
272286 and len (event .content .parts [0 ].text .strip ()) > 0
273287 ):
274- final_output += event .content .parts [0 ].text
288+ final_output = event .content .parts [0 ].text
289+ logger .debug (f"Output: { final_output } " )
275290 except LlmCallsLimitExceededError as e :
276291 logger .warning (f"Max number of llm calls limit exceeded: { e } " )
277292 final_output = ""
0 commit comments