AgentKit
原始代码(仅支持文本) | 修改后代码(支持多模态文件) |
原始代码(仅支持文本) | 修改后代码(支持多模态文件) |
@app.entrypoint async def run(payload: dict, headers: dict): prompt = payload["prompt"] user_id = headers["user_id"] session_id = headers["session_id"] logger.info( f"Running agent with prompt: {prompt}, user_id: {user_id}, session_id: {session_id}" ) session_service = runner.short_term_memory.session_service # type: ignore # 防止会话重复创建 session = await session_service.get_session( app_name=app_name, user_id=user_id, session_id=session_id ) if not session: await session_service.create_session( app_name=app_name, user_id=user_id, session_id=session_id ) new_message = Content(role="user", parts=[Part(text=prompt)]) try: async for event in runner.run_async( user_id=user_id, session_id=session_id, new_message=new_message, run_config=RunConfig(streaming_mode=StreamingMode.SSE), ): # 格式化SSE数据 sse_event = event.model_dump_json(exclude_none=True, by_alias=True) logger.debug("Generated event in agent run streaming: %s", sse_event) yield sse_event except Exception as e: logger.exception("Error in event_generator: %s", e) # 返回错误信息 error_data = json.dumps({"error": str(e)}) yield error_data | @app.entrypoint async def run(payload: dict, headers: dict): prompt = payload["prompt"] user_id = headers["user_id"] session_id = headers["session_id"] logger.info( f"Running agent with prompt: {prompt}, user_id: {user_id}, session_id: {session_id}" ) session_service = runner.short_term_memory.session_service # type: ignore # 防止会话重复创建 session = await session_service.get_session( app_name=app_name, user_id=user_id, session_id=session_id ) if not session: await session_service.create_session( app_name=app_name, user_id=user_id, session_id=session_id ) new_message = Content(role="user", parts=[Part(text=prompt)]) # 读取payload中的files列表,将每个文件URL封装为Part.from_uri并添加到消息体中 files = payload.get("files", []) for file_url in files: new_message.parts.append(Part.from_uri(file_uri=file_url)) try: async for event in runner.run_async( user_id=user_id, session_id=session_id, new_message=new_message, run_config=RunConfig(streaming_mode=StreamingMode.SSE), ): # 格式化SSE数据 sse_event = event.model_dump_json(exclude_none=True, by_alias=True) logger.debug("Generated event in agent run streaming: %s", sse_event) yield sse_event except Exception as e: logger.exception("Error in event_generator: %s", e) # 返回错误信息 error_data = json.dumps({"error": str(e)}) yield error_data |