(self, query: str, search_results: list[str])
| 103 | return None |
| 104 | |
| 105 | async def _write_report(self, query: str, search_results: list[str]) -> ReportData: |
| 106 | self.printer.update_item("writing", "Thinking about report...") |
| 107 | input = f"Original query: {query}\nSummarized search results: {search_results}" |
| 108 | result = Runner.run_streamed( |
| 109 | writer_agent, |
| 110 | input, |
| 111 | ) |
| 112 | update_messages = [ |
| 113 | "Thinking about report...", |
| 114 | "Planning report structure...", |
| 115 | "Writing outline...", |
| 116 | "Creating sections...", |
| 117 | "Cleaning up formatting...", |
| 118 | "Finalizing report...", |
| 119 | "Finishing report...", |
| 120 | ] |
| 121 | |
| 122 | last_update = time.time() |
| 123 | next_message = 0 |
| 124 | async for _ in result.stream_events(): |
| 125 | if time.time() - last_update > 5 and next_message < len(update_messages): |
| 126 | self.printer.update_item("writing", update_messages[next_message]) |
| 127 | next_message += 1 |
| 128 | last_update = time.time() |
| 129 | |
| 130 | self.printer.mark_item_done("writing") |
| 131 | return result.final_output_as(ReportData) |
no test coverage detected