MCPcopy Create free account
hub / github.com/Paper2Poster/Paper2Poster / synergize

Method synergize

utils/src/pptgen.py:307–355  ·  view source on GitHub ↗

Synergize Agents to generate a slide. Args: template (dict): The template data. slide_content (str): The slide content. code_executor (CodeExecutor): The code executor object. images_info (str): The image information. Returns

(
        self,
        template: dict,
        slide_content: str,
        code_executor: CodeExecutor,
        images_info: str,
    )

Source from the content-addressed store, hash-verified

305 roles: list[str] = ["editor", "coder"]
306
307 def synergize(
308 self,
309 template: dict,
310 slide_content: str,
311 code_executor: CodeExecutor,
312 images_info: str,
313 ) -> SlidePage:
314 """
315 Synergize Agents to generate a slide.
316
317 Args:
318 template (dict): The template data.
319 slide_content (str): The slide content.
320 code_executor (CodeExecutor): The code executor object.
321 images_info (str): The image information.
322
323 Returns:
324 SlidePage: The generated slide.
325 """
326 content_schema = template["content_schema"]
327 old_data = self._prepare_schema(content_schema)
328 editor_output = self.staffs["editor"](
329 schema=content_schema,
330 outline=self.simple_outline,
331 metadata=self.metadata,
332 text=slide_content,
333 images_info=images_info,
334 )
335 command_list = self._generate_commands(editor_output, content_schema, old_data)
336
337 edit_actions = self.staffs["coder"](
338 api_docs=code_executor.get_apis_docs(API_TYPES.Agent.value),
339 edit_target=self.presentation.slides[template["template_id"] - 1].to_html(),
340 command_list="\n".join([str(i) for i in command_list]),
341 )
342 for error_idx in range(self.retry_times):
343 edited_slide: SlidePage = deepcopy(
344 self.presentation.slides[template["template_id"] - 1]
345 )
346 feedback = code_executor.execute_actions(edit_actions, edited_slide)
347 if feedback is None:
348 break
349 if error_idx == self.retry_times:
350 raise Exception(
351 f"Failed to generate slide, tried too many times at editing\ntraceback: {feedback[1]}"
352 )
353 edit_actions = self.staffs["coder"].retry(*feedback, error_idx + 1)
354 self.empty_prs.build_slide(edited_slide)
355 return edited_slide
356
357 def _prepare_schema(self, content_schema: dict):
358 """

Callers

nothing calls this directly

Calls 7

_prepare_schemaMethod · 0.95
_generate_commandsMethod · 0.95
get_apis_docsMethod · 0.45
to_htmlMethod · 0.45
execute_actionsMethod · 0.45
retryMethod · 0.45
build_slideMethod · 0.45

Tested by

no test coverage detected