{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"provenance":[],"authorship_tag":"ABX9TyNeN4aha1oDdMsljOuWUsA/"},"kernelspec":{"name":"python3","display_name":"Python 3"},"language_info":{"name":"python"},"widgets":{"application/vnd.jupyter.widget-state+json":{"ad92ee452f07431f990a355cf0b1fd55":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_a08a8d0f5e934acca3fc56be28b5cc15","IPY_MODEL_cb0f95c27acc4578accc9e234cdebb3d","IPY_MODEL_56335e52e20241e4913f6198a7db5b75"],"layout":"IPY_MODEL_3a0ca7cb3bf04a0586507d5fff8d0123"}},"a08a8d0f5e934acca3fc56be28b5cc15":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_69c0502d107f48e089884b270bf3b015","placeholder":"​","style":"IPY_MODEL_0e6af6d183ae42919b1a01ca1a3dbf0b","value":"100%"}},"cb0f95c27acc4578accc9e234cdebb3d":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_2a40b88d70204d2f807a5c1ef168f172","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_ad5f433e9fb243baa4f9b516c57c5ec2","value":2}},"56335e52e20241e4913f6198a7db5b75":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_9ef98b03c696450eaef1116fa0f8e565","placeholder":"​","style":"IPY_MODEL_53c9fd389ce54525b947b1707e053fe0","value":" 2/2 [00:00<00:00, 52.21it/s]"}},"3a0ca7cb3bf04a0586507d5fff8d0123":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"69c0502d107f48e089884b270bf3b015":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0e6af6d183ae42919b1a01ca1a3dbf0b":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"2a40b88d70204d2f807a5c1ef168f172":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"ad5f433e9fb243baa4f9b516c57c5ec2":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"9ef98b03c696450eaef1116fa0f8e565":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"53c9fd389ce54525b947b1707e053fe0":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"11af4e7cdf03451481a67703d3cd4abf":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_caab75c693dd48aaa46e993902a31d69","IPY_MODEL_db16e0ff465e42ce96442fbd2ff2a760","IPY_MODEL_422ad358c8ef4a2d87483b739b4baed0"],"layout":"IPY_MODEL_8cacc5827128460bb00ca3d841d9863e"}},"caab75c693dd48aaa46e993902a31d69":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_37573abde97246a39bd341d17ee2532c","placeholder":"​","style":"IPY_MODEL_bc2231cdb3224b66ac921ead9fd993df","value":"100%"}},"db16e0ff465e42ce96442fbd2ff2a760":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_f43202859ffc4a5ab1cc9bc44a65db00","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_b8b5dfb8d9c04472a6dd88c8277498a9","value":2}},"422ad358c8ef4a2d87483b739b4baed0":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_02518b8d717a456a9edbcb7fc9910645","placeholder":"​","style":"IPY_MODEL_db909ba2a8e14387b0559412946edb7d","value":" 2/2 [00:00<00:00, 63.77it/s]"}},"8cacc5827128460bb00ca3d841d9863e":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"37573abde97246a39bd341d17ee2532c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bc2231cdb3224b66ac921ead9fd993df":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"f43202859ffc4a5ab1cc9bc44a65db00":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"b8b5dfb8d9c04472a6dd88c8277498a9":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"02518b8d717a456a9edbcb7fc9910645":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"db909ba2a8e14387b0559412946edb7d":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"54427439a80446b5853871505975c61c":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_ba4cde86ee5b4952ad68231df4a37b07","IPY_MODEL_1f8ac559524b4f89bb51c3d6b4ccda56","IPY_MODEL_0cb30b4d61fb4e328ed2ed70f095d982"],"layout":"IPY_MODEL_aacea2a1566849eeac902b690505511a"}},"ba4cde86ee5b4952ad68231df4a37b07":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_a3143fd6b1ce46439b057bb31bd08c5f","placeholder":"​","style":"IPY_MODEL_bdf97f44aa0a4a93a8b3ca198fb2e1b1","value":"100%"}},"1f8ac559524b4f89bb51c3d6b4ccda56":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_4f19828056004a21813e729d48905aab","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_7c3f05dd8cdf473fb3dfa3a38b81f3e5","value":2}},"0cb30b4d61fb4e328ed2ed70f095d982":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_e6e8c3105aaa48fb8d8b0e15c42ee268","placeholder":"​","style":"IPY_MODEL_cc998f573fd448b3836e2c73af5a1885","value":" 2/2 [00:00<00:00, 66.04it/s]"}},"aacea2a1566849eeac902b690505511a":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"a3143fd6b1ce46439b057bb31bd08c5f":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"bdf97f44aa0a4a93a8b3ca198fb2e1b1":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"4f19828056004a21813e729d48905aab":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"7c3f05dd8cdf473fb3dfa3a38b81f3e5":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"e6e8c3105aaa48fb8d8b0e15c42ee268":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"cc998f573fd448b3836e2c73af5a1885":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"246d04b817aa414ea7ff857119699fe0":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_ef280a3f7d6544258a22d5a585bce896","IPY_MODEL_0a3a8086b68c400fba8831cd6d031308","IPY_MODEL_a89843bb80de447385c49d44c84fef80"],"layout":"IPY_MODEL_dfcfc593ef0a4a67a0071012702f8dc1"}},"ef280a3f7d6544258a22d5a585bce896":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_3b31fba23f174e588c89dcfeb2f0171c","placeholder":"​","style":"IPY_MODEL_01c7986a28a74064b4c06905776df5f4","value":"100%"}},"0a3a8086b68c400fba8831cd6d031308":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_cee481de414544539a90f1c8c36bfbca","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_5210076d91c945f990aaca31c8f10495","value":2}},"a89843bb80de447385c49d44c84fef80":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_3b72ae7ee6b94be5a7dffde24665c210","placeholder":"​","style":"IPY_MODEL_0402f88ffe0b4717af4ff0bd4bb8b8bb","value":" 2/2 [00:00<00:00, 90.46it/s]"}},"dfcfc593ef0a4a67a0071012702f8dc1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3b31fba23f174e588c89dcfeb2f0171c":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"01c7986a28a74064b4c06905776df5f4":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"cee481de414544539a90f1c8c36bfbca":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5210076d91c945f990aaca31c8f10495":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"3b72ae7ee6b94be5a7dffde24665c210":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"0402f88ffe0b4717af4ff0bd4bb8b8bb":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"3fdada257f9846979a7b6b3f7c476d2c":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_8ae3dbaf228842fd94a271fcedb25df2","IPY_MODEL_fe1dbbd2c64249d8bbbba0f50679e69b","IPY_MODEL_286f84a6e7354552949359ff44f69b01"],"layout":"IPY_MODEL_9c724fce99c645c08b9c4998c58384d2"}},"8ae3dbaf228842fd94a271fcedb25df2":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_42dec83a0a4c4845997ff643331cef72","placeholder":"​","style":"IPY_MODEL_5dc2b4e9ecf343c99690f88223e6f16f","value":"100%"}},"fe1dbbd2c64249d8bbbba0f50679e69b":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_9baea35cf70f4b269cad5c46c9c25acf","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_07586cebb9f54a8595866db552996117","value":2}},"286f84a6e7354552949359ff44f69b01":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_404d3932d8094419a3a1af18aacee28d","placeholder":"​","style":"IPY_MODEL_671a939f656f408f8c1861273c4e4d61","value":" 2/2 [00:00<00:00, 40.87it/s]"}},"9c724fce99c645c08b9c4998c58384d2":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"42dec83a0a4c4845997ff643331cef72":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"5dc2b4e9ecf343c99690f88223e6f16f":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"9baea35cf70f4b269cad5c46c9c25acf":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"07586cebb9f54a8595866db552996117":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"404d3932d8094419a3a1af18aacee28d":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"671a939f656f408f8c1861273c4e4d61":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"ab55ccdd65b84efaa047401f357ad842":{"model_module":"@jupyter-widgets/controls","model_name":"HBoxModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HBoxModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HBoxView","box_style":"","children":["IPY_MODEL_547cd815673b496790476defdfed4c1b","IPY_MODEL_c91b19d3428b49158a4d9f6f6fb8d3ef","IPY_MODEL_d73d5581e26442bd8dd59c374e706db1"],"layout":"IPY_MODEL_9722ed9c5ba041d6bd92c4b9166fe156"}},"547cd815673b496790476defdfed4c1b":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_f3c43c27b0e2494d937526da394447f1","placeholder":"​","style":"IPY_MODEL_4f07ffb02e224d6988128cda0002145e","value":"100%"}},"c91b19d3428b49158a4d9f6f6fb8d3ef":{"model_module":"@jupyter-widgets/controls","model_name":"FloatProgressModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"FloatProgressModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"ProgressView","bar_style":"success","description":"","description_tooltip":null,"layout":"IPY_MODEL_7a40773aca494f878e1a29c48257eca9","max":2,"min":0,"orientation":"horizontal","style":"IPY_MODEL_3b788e14c68e4e54ae347c0759e93def","value":2}},"d73d5581e26442bd8dd59c374e706db1":{"model_module":"@jupyter-widgets/controls","model_name":"HTMLModel","model_module_version":"1.5.0","state":{"_dom_classes":[],"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"HTMLModel","_view_count":null,"_view_module":"@jupyter-widgets/controls","_view_module_version":"1.5.0","_view_name":"HTMLView","description":"","description_tooltip":null,"layout":"IPY_MODEL_b1d755f17de14bde959735e6f5fffa40","placeholder":"​","style":"IPY_MODEL_d39bc0fa2bdb43ed93bc46d2d854ca68","value":" 2/2 [00:00<00:00, 82.28it/s]"}},"9722ed9c5ba041d6bd92c4b9166fe156":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"f3c43c27b0e2494d937526da394447f1":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"4f07ffb02e224d6988128cda0002145e":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}},"7a40773aca494f878e1a29c48257eca9":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"3b788e14c68e4e54ae347c0759e93def":{"model_module":"@jupyter-widgets/controls","model_name":"ProgressStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"ProgressStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","bar_color":null,"description_width":""}},"b1d755f17de14bde959735e6f5fffa40":{"model_module":"@jupyter-widgets/base","model_name":"LayoutModel","model_module_version":"1.2.0","state":{"_model_module":"@jupyter-widgets/base","_model_module_version":"1.2.0","_model_name":"LayoutModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"LayoutView","align_content":null,"align_items":null,"align_self":null,"border":null,"bottom":null,"display":null,"flex":null,"flex_flow":null,"grid_area":null,"grid_auto_columns":null,"grid_auto_flow":null,"grid_auto_rows":null,"grid_column":null,"grid_gap":null,"grid_row":null,"grid_template_areas":null,"grid_template_columns":null,"grid_template_rows":null,"height":null,"justify_content":null,"justify_items":null,"left":null,"margin":null,"max_height":null,"max_width":null,"min_height":null,"min_width":null,"object_fit":null,"object_position":null,"order":null,"overflow":null,"overflow_x":null,"overflow_y":null,"padding":null,"right":null,"top":null,"visibility":null,"width":null}},"d39bc0fa2bdb43ed93bc46d2d854ca68":{"model_module":"@jupyter-widgets/controls","model_name":"DescriptionStyleModel","model_module_version":"1.5.0","state":{"_model_module":"@jupyter-widgets/controls","_model_module_version":"1.5.0","_model_name":"DescriptionStyleModel","_view_count":null,"_view_module":"@jupyter-widgets/base","_view_module_version":"1.2.0","_view_name":"StyleView","description_width":""}}}}},"cells":[{"cell_type":"code","execution_count":null,"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"t21KOzPIWp3f","executionInfo":{"status":"ok","timestamp":1747290197875,"user_tz":-345,"elapsed":28831,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"d78021c1-bab2-4c37-f107-84aace9f1c94"},"outputs":[{"output_type":"stream","name":"stdout","text":["Collecting langgraph\n"," Downloading langgraph-0.4.3-py3-none-any.whl.metadata (7.9 kB)\n","Requirement already satisfied: langsmith in /usr/local/lib/python3.11/dist-packages (0.3.42)\n","Collecting langchain_groq\n"," Downloading langchain_groq-0.3.2-py3-none-any.whl.metadata (2.6 kB)\n","Requirement already satisfied: pydantic in /usr/local/lib/python3.11/dist-packages (2.11.4)\n","Requirement already satisfied: datasets in /usr/local/lib/python3.11/dist-packages (2.14.4)\n","Collecting datasets\n"," Downloading datasets-3.6.0-py3-none-any.whl.metadata (19 kB)\n","Collecting faiss-cpu\n"," Downloading faiss_cpu-1.11.0-cp311-cp311-manylinux_2_28_x86_64.whl.metadata (4.8 kB)\n","Requirement already satisfied: langchain-core>=0.1 in /usr/local/lib/python3.11/dist-packages (from langgraph) (0.3.59)\n","Collecting langgraph-checkpoint<3.0.0,>=2.0.10 (from langgraph)\n"," Downloading langgraph_checkpoint-2.0.25-py3-none-any.whl.metadata (4.6 kB)\n","Collecting langgraph-prebuilt>=0.1.8 (from langgraph)\n"," Downloading langgraph_prebuilt-0.1.8-py3-none-any.whl.metadata (5.0 kB)\n","Collecting langgraph-sdk>=0.1.42 (from langgraph)\n"," Downloading langgraph_sdk-0.1.69-py3-none-any.whl.metadata (1.8 kB)\n","Requirement already satisfied: xxhash<4.0.0,>=3.5.0 in /usr/local/lib/python3.11/dist-packages (from langgraph) (3.5.0)\n","Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.11/dist-packages (from langsmith) (0.28.1)\n","Requirement already satisfied: orjson<4.0.0,>=3.9.14 in /usr/local/lib/python3.11/dist-packages (from langsmith) (3.10.18)\n","Requirement already satisfied: packaging>=23.2 in /usr/local/lib/python3.11/dist-packages (from langsmith) (24.2)\n","Requirement already satisfied: requests<3,>=2 in /usr/local/lib/python3.11/dist-packages (from langsmith) (2.32.3)\n","Requirement already satisfied: requests-toolbelt<2.0.0,>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from langsmith) (1.0.0)\n","Requirement already satisfied: zstandard<0.24.0,>=0.23.0 in /usr/local/lib/python3.11/dist-packages (from langsmith) (0.23.0)\n","Collecting groq<1,>=0.4.1 (from langchain_groq)\n"," Downloading groq-0.24.0-py3-none-any.whl.metadata (15 kB)\n","Requirement already satisfied: annotated-types>=0.6.0 in /usr/local/lib/python3.11/dist-packages (from pydantic) (0.7.0)\n","Requirement already satisfied: pydantic-core==2.33.2 in /usr/local/lib/python3.11/dist-packages (from pydantic) (2.33.2)\n","Requirement already satisfied: typing-extensions>=4.12.2 in /usr/local/lib/python3.11/dist-packages (from pydantic) (4.13.2)\n","Requirement already satisfied: typing-inspection>=0.4.0 in /usr/local/lib/python3.11/dist-packages (from pydantic) (0.4.0)\n","Requirement already satisfied: filelock in /usr/local/lib/python3.11/dist-packages (from datasets) (3.18.0)\n","Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.11/dist-packages (from datasets) (2.0.2)\n","Requirement already satisfied: pyarrow>=15.0.0 in /usr/local/lib/python3.11/dist-packages (from datasets) (18.1.0)\n","Requirement already satisfied: dill<0.3.9,>=0.3.0 in /usr/local/lib/python3.11/dist-packages (from datasets) (0.3.7)\n","Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (from datasets) (2.2.2)\n","Requirement already satisfied: tqdm>=4.66.3 in /usr/local/lib/python3.11/dist-packages (from datasets) (4.67.1)\n","Requirement already satisfied: multiprocess<0.70.17 in /usr/local/lib/python3.11/dist-packages (from datasets) (0.70.15)\n","Collecting fsspec<=2025.3.0,>=2023.1.0 (from fsspec[http]<=2025.3.0,>=2023.1.0->datasets)\n"," Downloading fsspec-2025.3.0-py3-none-any.whl.metadata (11 kB)\n","Requirement already satisfied: huggingface-hub>=0.24.0 in /usr/local/lib/python3.11/dist-packages (from datasets) (0.31.1)\n","Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.11/dist-packages (from datasets) (6.0.2)\n","Requirement already satisfied: aiohttp!=4.0.0a0,!=4.0.0a1 in /usr/local/lib/python3.11/dist-packages (from fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (3.11.15)\n","Requirement already satisfied: anyio<5,>=3.5.0 in /usr/local/lib/python3.11/dist-packages (from groq<1,>=0.4.1->langchain_groq) (4.9.0)\n","Requirement already satisfied: distro<2,>=1.7.0 in /usr/local/lib/python3.11/dist-packages (from groq<1,>=0.4.1->langchain_groq) (1.9.0)\n","Requirement already satisfied: sniffio in /usr/local/lib/python3.11/dist-packages (from groq<1,>=0.4.1->langchain_groq) (1.3.1)\n","Requirement already satisfied: certifi in /usr/local/lib/python3.11/dist-packages (from httpx<1,>=0.23.0->langsmith) (2025.4.26)\n","Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.11/dist-packages (from httpx<1,>=0.23.0->langsmith) (1.0.9)\n","Requirement already satisfied: idna in /usr/local/lib/python3.11/dist-packages (from httpx<1,>=0.23.0->langsmith) (3.10)\n","Requirement already satisfied: h11>=0.16 in /usr/local/lib/python3.11/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->langsmith) (0.16.0)\n","Requirement already satisfied: hf-xet<2.0.0,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from huggingface-hub>=0.24.0->datasets) (1.1.0)\n","Requirement already satisfied: tenacity!=8.4.0,<10.0.0,>=8.1.0 in /usr/local/lib/python3.11/dist-packages (from langchain-core>=0.1->langgraph) (9.1.2)\n","Requirement already satisfied: jsonpatch<2.0,>=1.33 in /usr/local/lib/python3.11/dist-packages (from langchain-core>=0.1->langgraph) (1.33)\n","Collecting ormsgpack<2.0.0,>=1.8.0 (from langgraph-checkpoint<3.0.0,>=2.0.10->langgraph)\n"," Downloading ormsgpack-1.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (43 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m43.5/43.5 kB\u001b[0m \u001b[31m1.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hRequirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2->langsmith) (3.4.2)\n","Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.11/dist-packages (from requests<3,>=2->langsmith) (2.4.0)\n","Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2.9.0.post0)\n","Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2025.2)\n","Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas->datasets) (2025.2)\n","Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (2.6.1)\n","Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (1.3.2)\n","Requirement already satisfied: attrs>=17.3.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (25.3.0)\n","Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (1.6.0)\n","Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (6.4.3)\n","Requirement already satisfied: propcache>=0.2.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (0.3.1)\n","Requirement already satisfied: yarl<2.0,>=1.17.0 in /usr/local/lib/python3.11/dist-packages (from aiohttp!=4.0.0a0,!=4.0.0a1->fsspec[http]<=2025.3.0,>=2023.1.0->datasets) (1.20.0)\n","Requirement already satisfied: jsonpointer>=1.9 in /usr/local/lib/python3.11/dist-packages (from jsonpatch<2.0,>=1.33->langchain-core>=0.1->langgraph) (3.0.0)\n","Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->pandas->datasets) (1.17.0)\n","Downloading langgraph-0.4.3-py3-none-any.whl (151 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m151.2/151.2 kB\u001b[0m \u001b[31m4.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading langchain_groq-0.3.2-py3-none-any.whl (15 kB)\n","Downloading datasets-3.6.0-py3-none-any.whl (491 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m491.5/491.5 kB\u001b[0m \u001b[31m13.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading faiss_cpu-1.11.0-cp311-cp311-manylinux_2_28_x86_64.whl (31.3 MB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m31.3/31.3 MB\u001b[0m \u001b[31m30.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading fsspec-2025.3.0-py3-none-any.whl (193 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m193.6/193.6 kB\u001b[0m \u001b[31m10.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading groq-0.24.0-py3-none-any.whl (127 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m127.5/127.5 kB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading langgraph_checkpoint-2.0.25-py3-none-any.whl (42 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m42.3/42.3 kB\u001b[0m \u001b[31m2.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading langgraph_prebuilt-0.1.8-py3-none-any.whl (25 kB)\n","Downloading langgraph_sdk-0.1.69-py3-none-any.whl (48 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m48.9/48.9 kB\u001b[0m \u001b[31m3.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hDownloading ormsgpack-1.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (223 kB)\n","\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m223.6/223.6 kB\u001b[0m \u001b[31m10.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n","\u001b[?25hInstalling collected packages: ormsgpack, fsspec, faiss-cpu, langgraph-sdk, groq, datasets, langgraph-checkpoint, langchain_groq, langgraph-prebuilt, langgraph\n"," Attempting uninstall: fsspec\n"," Found existing installation: fsspec 2025.3.2\n"," Uninstalling fsspec-2025.3.2:\n"," Successfully uninstalled fsspec-2025.3.2\n"," Attempting uninstall: datasets\n"," Found existing installation: datasets 2.14.4\n"," Uninstalling datasets-2.14.4:\n"," Successfully uninstalled datasets-2.14.4\n","\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n","torch 2.6.0+cu124 requires nvidia-cublas-cu12==12.4.5.8; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cublas-cu12 12.5.3.2 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cuda-cupti-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-cupti-cu12 12.5.82 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cuda-nvrtc-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-nvrtc-cu12 12.5.82 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cuda-runtime-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cuda-runtime-cu12 12.5.82 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cudnn-cu12==9.1.0.70; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cudnn-cu12 9.3.0.75 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cufft-cu12==11.2.1.3; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cufft-cu12 11.2.3.61 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-curand-cu12==10.3.5.147; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-curand-cu12 10.3.6.82 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cusolver-cu12==11.6.1.9; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cusolver-cu12 11.6.3.83 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-cusparse-cu12==12.3.1.170; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-cusparse-cu12 12.5.1.3 which is incompatible.\n","torch 2.6.0+cu124 requires nvidia-nvjitlink-cu12==12.4.127; platform_system == \"Linux\" and platform_machine == \"x86_64\", but you have nvidia-nvjitlink-cu12 12.5.82 which is incompatible.\n","gcsfs 2025.3.2 requires fsspec==2025.3.2, but you have fsspec 2025.3.0 which is incompatible.\u001b[0m\u001b[31m\n","\u001b[0mSuccessfully installed datasets-3.6.0 faiss-cpu-1.11.0 fsspec-2025.3.0 groq-0.24.0 langchain_groq-0.3.2 langgraph-0.4.3 langgraph-checkpoint-2.0.25 langgraph-prebuilt-0.1.8 langgraph-sdk-0.1.69 ormsgpack-1.9.1\n"]}],"source":["!pip install -U langgraph langsmith langchain_groq pydantic datasets faiss-cpu"]},{"cell_type":"code","source":["import pandas as pd\n","from langchain_core.messages import SystemMessage\n","import os\n","from huggingface_hub import login\n","from google.colab import userdata\n","os.environ['GROQ_API_KEY']=userdata.get('groq_api_subash')"],"metadata":{"id":"ft_bDv0bW8Ii"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["from typing import Annotated,Optional\n","\n","from typing_extensions import TypedDict\n","\n","from langgraph.graph import StateGraph, START, END\n","from langgraph.graph.message import add_messages\n","from pydantic import BaseModel,ConfigDict,Field\n","from typing import Optional\n","from datasets import Dataset # Define the search function\n","from sentence_transformers import SentenceTransformer\n","from datasets import load_dataset\n","\n"],"metadata":{"id":"Y7I8kvgTXK5j"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["ST = SentenceTransformer(\"mixedbread-ai/mxbai-embed-large-v1\")"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"gnatQOigxcim","executionInfo":{"status":"ok","timestamp":1746163998738,"user_tz":-345,"elapsed":5113,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"859f3e1a-1b65-402c-ed70-3836d17db4d2"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stderr","text":["/usr/local/lib/python3.11/dist-packages/huggingface_hub/utils/_auth.py:94: UserWarning: \n","The secret `HF_TOKEN` does not exist in your Colab secrets.\n","To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n","You will be able to reuse this secret in all of your notebooks.\n","Please note that authentication is recommended but still optional to access public models or datasets.\n"," warnings.warn(\n"]}]},{"cell_type":"code","source":["class State(BaseModel):\n"," carry_on: Optional[bool]=False\n"," messages: Optional[str] = None\n"," topic: list\n"," brainstroming_topics: Optional[list] = []\n"," preferred_topics: Optional[list] = []\n"," stories : Optional[list]=[]\n"," final_story: Optional[str]=None\n"," retrievals : Optional[list]=[]\n"," model_config = ConfigDict(arbitrary_types_allowed=True)\n","\n","graph_builder = StateGraph(State)"],"metadata":{"id":"plciNVb4XgJb"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["from langchain_groq import ChatGroq\n","llm = ChatGroq(\n"," model=\"llama3-8b-8192\",\n"," temperature=0,\n"," max_tokens=None,\n"," timeout=None,\n"," max_retries=2,\n","\n",")"],"metadata":{"id":"xWTPCgfsYWMu"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["\n","def retrieve(state: State) -> State:\n"," print('Moving to retrieval process')\n"," retrievals=[]\n"," for topic in state.topic: # Loop through each topic\n"," embedded_query = ST.encode(topic) # Embed each topic\n"," dataset = load_dataset(\"subashdvorak/tiktok-agentic-story\",revision=\"embedded\")\n"," data = dataset[\"train\"].add_faiss_index(\"embeddings\")\n"," scores, retrieved_examples = data.get_nearest_examples(\"embeddings\", embedded_query, k=1)\n","\n"," # Construct a list of dictionaries for this topic\n"," result = [{user: story} for user, story in zip(retrieved_examples['username'], retrieved_examples['agentic_story'])]\n"," retrievals.append(result)\n"," print('Retrieval process completed......')\n"," state.retrievals.append(retrievals)\n","\n"," print('The retrieval is:\\n',state.retrievals )\n"," # return State(messages=\"Retrieved\",topic=state.topic,retrievals=state.retrievals)\n"," return state\n","\n"],"metadata":{"id":"lLvLdFAYg-MB"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["class StoryFormatter(BaseModel):\n"," \"\"\"Always use this tool to structure your response to the user.\"\"\"\n"," story: str=Field(description=\"How to introduce the scene and set the tone. What is happening in the scene? Describe key visuals and actions\")\n"," narration:str=Field(description=\"Suggestions for narration or voiceover that complements the visuals.\" )\n"," text_in_the_Video:str=Field(description=\"Propose important text overlays for key moments.\")\n"," transitions:str=Field(description=\"Smooth transitions between scenes to maintain flow.\")\n"," emotional_tone:str=Field(description=\"The mood and energy of the scenes (e.g., excitement, calm, tension, joy\")\n"," key_visuals:str=Field(description=\"Important props, locations, sound effects, or background music to enhance the video.\")\n","\n","\n","\n","def generate_story(state:State)-> State:\n"," topic=state.topic\n"," print('The state retrieval is:',state.retrievals)\n"," retrieval_list= state.retrievals[-1]\n"," agentic_stories = []\n","\n"," for item in retrieval_list:\n"," print('item:', item[-1].values())\n","\n"," agentic_stories.extend(item[-1].values()) # Add all stories to the list\n","\n"," retrieval = \" \".join(agentic_stories)\n","\n"," if len(state.preferred_topics)==0:\n"," template = f'''I want to create a detailed storyline for a video in any domain. You have to provide me that storyline what to include in the video.\n"," Now, i am giving you the topic of the video. But the need is to generate the story focusing on the format that i'll provide to you.\n"," You can use this format for the reference purpose, not for the exact similar generation. Th format is:\\n{retrieval}.\n"," \\n\\n Now let's start creating the storyline for my topic. The topic of the video is: \\n\\n{state.topic}'''\n"," else:\n"," template = f'''I want to create a detailed storyline for a video in the given topic. You have to provide me that storyline what to include in the video.\n"," Now, i am giving you the topic of the video. But the need is to generate the story focusing on the format that i'll provide to you.\n"," You can use this format for the reference purpose, not for the exact similar generation. The format is:\\n{retrieval}.\n"," \\n\\n Now let's start creating the storyline for my topic. The topic of the video is: \\n\\n{state.topic}\\n\\n\n","\n"," **Final Reminder** You have to strongly focus on these topics while creating the storyline: {state.preferred_topics[-1]}'''\n","\n","\n"," messages = [SystemMessage(content=template)]\n"," response = llm.bind_tools([StoryFormatter]).invoke(messages)\n"," print('The response is:',response)\n"," if hasattr(response, 'tool_calls') and response.tool_calls:\n"," response = response.tool_calls[0]['args']\n"," elif hasattr(response, 'content'):\n"," response = response.content\n"," else:\n"," response = \"No response\"\n"," state.stories.append(response)\n"," # return State(messages=\"Story generated\", topic=state.topic,stories=state.stories)\n"," return state\n"],"metadata":{"id":"uFa9PXusbzET"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["class BrainstromTopicFormatter(BaseModel):\n"," topic1:str=Field(description=\"First brainstorming topic of the story\")\n"," topic2:str=Field(description=\"Second brainstorming topic of the story\")\n"," topic3:str=Field(description=\"Third brainstorming topic of the story\")\n"," topic4:str=Field(description=\"Fourth brainstorming topic of the story\")\n","\n","def generate_brainstroming(state:State)-> State:\n"," story=state.stories[-1]\n","\n"," template= f'''I want to brainstorm ways to diversify or improve a storyline in exactly 4 sentences.\n","The goal is to generate creative and actionable ideas that are not on the storyline on how the storyline can be expanded or modified for better engagement.\n","For example: If the storyline is about creating a promotional video for a restaurant, the new suggestions might include:\n","- I want to showcase the chef preparing a signature dish.\n","- I want to add a sequence of customers sharing their experiences at the restaurant.\n","- I want to highlight the farm-to-table sourcing of ingredients with a short segment showing local farms.\n","- I want to include a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance.\n","- I want to feature a quick interview with the owner sharing the story behind the restaurant.\n","Now, I will provide you with the storyline. The storyline is:\\n{story}'''\n","\n"," messages = [SystemMessage(content=template)]\n"," response = llm.bind_tools([BrainstromTopicFormatter]).invoke(messages)\n"," print('The response is:',response)\n"," if hasattr(response, 'tool_calls') and response.tool_calls:\n"," response = response.tool_calls[0]['args']\n"," elif hasattr(response, 'content'):\n"," response = response.content\n"," else:\n"," response = \"No response\"\n","\n"," state.brainstroming_topics.append(response)\n"," print('The brainstroming topics are:',state.brainstroming_topics)\n"," # return State(messages=\"Story generated\",topic=state.topic,brainstroming_topics=state.brainstroming_topics)\n"," return state\n","\n","\n","\n"],"metadata":{"id":"9wwTIeX3dCn7"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["def select_preferred_topics(state: State)-> State:\n"," print(\"---human_feedback---\")\n","\n"," topic_values = list(state.brainstroming_topics[-1].values())\n","\n"," print(\"Available topics:\")\n"," for idx, topic in enumerate(topic_values, 1):\n"," print(f\"{idx}. {topic}\")\n","\n"," raw_input_str = input(\"Enter the numbers of your preferred topics (comma-separated), or press Enter to skip: \").strip()\n","\n"," if not raw_input_str:\n"," state.carry_on=False\n"," print(\"No topics selected. Ending process.\")\n"," return state\n","\n"," try:\n"," preferred_indices = [int(i.strip()) for i in raw_input_str.split(\",\")]\n"," preferred_topics = [topic_values[i - 1] for i in preferred_indices if 0 < i <= len(topic_values)]\n"," state.preferred_topics.append(preferred_topics)\n"," except Exception:\n"," state.carry_on=False\n"," print(\"Invalid input. Please try again.\")\n"," return state\n","\n"," if not preferred_topics:\n"," state.carry_on=False\n"," print(\"No valid topics selected. Ending process.\")\n"," return state\n","\n"," print(\"You selected:\")\n"," print(preferred_topics)\n"," state.carry_on=True\n"," return state\n"],"metadata":{"id":"kyJMlsUl1jWM"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["def generate_final_story(state:State)-> State:\n"," template = f'''I want to create a detailed storyline for a video in the given topic. You have to provide me that storyline what to include in the video.\n"," Now, i am giving you the topic of the video. But the need is to generate the story focusing on the format that i'll provide to you.\n"," You can use this format for the reference purpose, not for the exact similar generation. The format is:\\n{state.retrievals[-1]}.\n"," \\n\\n Now let's start creating the storyline for my topic. The topic of the video is: \\n\\n{state.topic}\\n\\n\n","\n"," **Final Reminder** You have to strongly focus on these topics while creating the storyline: {[item for sublist in state.preferred_topics for item in sublist]}'''\n"," messages = [SystemMessage(content=template)]\n"," response = llm.bind_tools([StoryFormatter]).invoke(messages)\n"," print('The final response is:',response)\n"," if hasattr(response, 'tool_calls') and response.tool_calls:\n"," response = response.tool_calls[0]['args']\n"," elif hasattr(response, 'content'):\n"," response = response.content\n"," else:\n"," response = \"No response\"\n"," state.final_story=response\n"," state.stories.append(response)\n"," return state\n","\n","\n","\n"],"metadata":{"id":"Q9mIflMnGamx"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["# def route_after_selection(output):\n","# _, signal = output\n","# return \"retrieve\" if signal == \"CONTINUE\" else END\n","\n","def route_after_selection(state:State):\n"," print('The output is:',state.carry_on)\n"," return state.carry_on"],"metadata":{"id":"YtaLtPXewCWy"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["graph_builder.add_node(retrieve)\n","graph_builder.add_node(generate_story)\n","graph_builder.add_node(generate_brainstroming)\n","graph_builder.add_node(select_preferred_topics)\n","graph_builder.add_node(generate_final_story)\n","\n","\n","# Normal edges\n","graph_builder.add_edge(START, \"retrieve\")\n","graph_builder.add_edge(\"retrieve\", \"generate_story\")\n","graph_builder.add_edge(\"generate_story\", \"generate_brainstroming\")\n","graph_builder.add_edge(\"generate_brainstroming\", \"select_preferred_topics\")\n","\n","# Conditional edge\n","graph_builder.add_conditional_edges(\"select_preferred_topics\", route_after_selection,{True:'retrieve',False:'generate_final_story'})\n","graph_builder.add_edge(\"generate_final_story\",END)\n","\n","# Compile\n","graph = graph_builder.compile()"],"metadata":{"id":"W1-5WwiIsa8U"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["from IPython.display import Image, display\n","\n","try:\n"," display(Image(graph.get_graph().draw_mermaid_png()))\n","except Exception:\n"," # This requires some extra dependencies and is optional\n"," pass"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":695},"id":"VhXC8vCLwnEc","executionInfo":{"status":"ok","timestamp":1746164004404,"user_tz":-345,"elapsed":126,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"1f08b84c-f1ca-4d46-e1fe-764dd73680e2"},"execution_count":null,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":[""]},"metadata":{}}]},{"cell_type":"code","source":["state = graph.invoke({\"topic\": ['I want to create a promotional video of restaurant.']})"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":761,"referenced_widgets":["3fdada257f9846979a7b6b3f7c476d2c","8ae3dbaf228842fd94a271fcedb25df2","fe1dbbd2c64249d8bbbba0f50679e69b","286f84a6e7354552949359ff44f69b01","9c724fce99c645c08b9c4998c58384d2","42dec83a0a4c4845997ff643331cef72","5dc2b4e9ecf343c99690f88223e6f16f","9baea35cf70f4b269cad5c46c9c25acf","07586cebb9f54a8595866db552996117","404d3932d8094419a3a1af18aacee28d","671a939f656f408f8c1861273c4e4d61","ab55ccdd65b84efaa047401f357ad842","547cd815673b496790476defdfed4c1b","c91b19d3428b49158a4d9f6f6fb8d3ef","d73d5581e26442bd8dd59c374e706db1","9722ed9c5ba041d6bd92c4b9166fe156","f3c43c27b0e2494d937526da394447f1","4f07ffb02e224d6988128cda0002145e","7a40773aca494f878e1a29c48257eca9","3b788e14c68e4e54ae347c0759e93def","b1d755f17de14bde959735e6f5fffa40","d39bc0fa2bdb43ed93bc46d2d854ca68"]},"id":"Kv3FXDyFJB6u","executionInfo":{"status":"ok","timestamp":1746164030595,"user_tz":-345,"elapsed":24584,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"4cd5020f-194d-4e80-defa-25287e1826d7"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["Moving to retrieval process\n"]},{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/2 [00:00\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m preferred_topics=[\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mbrainstorming_topics\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'topic1'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mbrainstorming_topics\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'topic3'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m ]\n","\u001b[0;31mNameError\u001b[0m: name 'brainstorming_topics' is not defined"]}]},{"cell_type":"code","source":["retrievals=retrieve(preferred_topics)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":116,"referenced_widgets":["54427439a80446b5853871505975c61c","ba4cde86ee5b4952ad68231df4a37b07","1f8ac559524b4f89bb51c3d6b4ccda56","0cb30b4d61fb4e328ed2ed70f095d982","aacea2a1566849eeac902b690505511a","a3143fd6b1ce46439b057bb31bd08c5f","bdf97f44aa0a4a93a8b3ca198fb2e1b1","4f19828056004a21813e729d48905aab","7c3f05dd8cdf473fb3dfa3a38b81f3e5","e6e8c3105aaa48fb8d8b0e15c42ee268","cc998f573fd448b3836e2c73af5a1885","246d04b817aa414ea7ff857119699fe0","ef280a3f7d6544258a22d5a585bce896","0a3a8086b68c400fba8831cd6d031308","a89843bb80de447385c49d44c84fef80","dfcfc593ef0a4a67a0071012702f8dc1","3b31fba23f174e588c89dcfeb2f0171c","01c7986a28a74064b4c06905776df5f4","cee481de414544539a90f1c8c36bfbca","5210076d91c945f990aaca31c8f10495","3b72ae7ee6b94be5a7dffde24665c210","0402f88ffe0b4717af4ff0bd4bb8b8bb"]},"collapsed":true,"id":"6EgTOO2EYMEN","executionInfo":{"status":"ok","timestamp":1745995216199,"user_tz":-345,"elapsed":2783,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"2e161e9d-90bf-44f9-e74b-bf04399fe0f6"},"execution_count":null,"outputs":[{"output_type":"display_data","data":{"text/plain":[" 0%| | 0/2 [00:00{\"story\": \"The video opens with a shot of the restaurant\\'s exterior, showcasing its unique architecture and ambiance. As the camera pans inside, viewers are taken on a behind-the-scenes tour of the kitchen, where chefs are expertly preparing the special dish of the day. The camera captures the sizzling sounds and aromas of the kitchen, highlighting the chefs\\' skills and attention to detail. The video then cuts to a shot of the finished dish, beautifully presented and garnished with fresh herbs. The camera pans out to reveal the restaurant\\'s interior, where customers are enjoying their meals and taking photos to share on social media. The video then transitions to a montage of customers sharing their experiences and photos on social media, using a branded hashtag. The restaurant\\'s social media team is shown responding to comments and engaging with customers, creating a sense of community and interaction. The video ends with a shot of the restaurant\\'s logo and a call-to-action to visit the restaurant and share their own experiences on social media.\", \"narration\": \"The video features a lively and upbeat soundtrack, with a mix of background music and sound effects to enhance the viewing experience. The narration is minimal, with a focus on highlighting the restaurant\\'s unique features and the chefs\\' skills. The voiceover is friendly and inviting, encouraging viewers to visit the restaurant and share their own experiences on social media.\", \"text_in_the_Video\": \"The video includes text overlays to highlight the restaurant\\'s name, address, and social media handles. The branded hashtag is also displayed prominently throughout the video. The text is clean and easy to read, with a modern and sleek design that matches the restaurant\\'s brand identity.\", \"transitions\": \"The video uses a mix of cuts and transitions to move between scenes, creating a fast-paced and engaging viewing experience. The transitions are smooth and seamless, with a focus on highlighting the restaurant\\'s unique features and the chefs\\' skills. The video ends with a shot of the restaurant\\'s logo and a call-to-action to visit the restaurant and share their own experiences on social media.\", \"emotional_tone\": \"The overall tone of the video is lively and inviting, with a focus on showcasing the restaurant\\'s unique features and the chefs\\' skills. The video is designed to make viewers feel hungry and eager to visit the restaurant, while also encouraging them to share their own experiences on social media.\", \"key_visuals\": \"The key visuals in the video include shots of the restaurant\\'s exterior and interior, the kitchen, the chefs, and the finished dish. The video also includes shots of customers enjoying their meals and taking photos to share on social media. The visuals are high-quality and engaging, with a focus on highlighting the restaurant\\'s unique features and the chefs\\' skills.\"}' additional_kwargs={} response_metadata={'token_usage': {'completion_tokens': 563, 'prompt_tokens': 1798, 'total_tokens': 2361, 'completion_time': 0.750666667, 'prompt_time': 0.198111801, 'queue_time': 1.326779075, 'total_time': 0.948778468}, 'model_name': 'llama-3.1-8b-instant', 'system_fingerprint': 'fp_f7bd09b454', 'finish_reason': 'stop', 'logprobs': None} id='run-c6bc7bfd-d83d-464d-b4d7-ba8e518c536d-0' usage_metadata={'input_tokens': 1798, 'output_tokens': 563, 'total_tokens': 2361}\n"]},{"output_type":"error","ename":"IndexError","evalue":"list index out of range","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)","\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mgenerate_story\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mretrievals\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mpreferred_topics\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m","\u001b[0;32m\u001b[0m in \u001b[0;36mgenerate_story\u001b[0;34m(state_retrievals, preferred_topics)\u001b[0m\n\u001b[1;32m 42\u001b[0m \u001b[0mresponse\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mllm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbind_tools\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mStoryFormatter\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minvoke\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessages\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'The response of story generator is:\\n'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 44\u001b[0;31m \u001b[0mresponse\u001b[0m\u001b[0;34m=\u001b[0m \u001b[0mresponse\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtool_calls\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'args'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 45\u001b[0m \u001b[0mstate_stories\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mresponse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0mpreferred_topics\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mIndexError\u001b[0m: list index out of range"]}]},{"cell_type":"code","source":["brainstroming_topics = [{'topic1': \"Showcase a behind-the-scenes look at the restaurant's kitchen, highlighting the chefs' skills and the preparation of the special dish.\",\n"," 'topic2': \"Create a 'day in the life' segment featuring a staff member, showcasing their daily tasks and interactions with customers.\",\n"," 'topic3': 'Develop a social media integration, where customers can share their own experiences and photos at the restaurant, and the restaurant can respond and engage with them.',\n"," 'topic4': \"Include a 'sneak peek' segment, where the restaurant reveals a new dish or promotion, building anticipation and excitement among viewers.\"}]"],"metadata":{"id":"lT95Paprm2T2"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["from langgraph.types import interrupt\n","def human_feedback(state=None):\n"," print(\"---human_feedback---\")\n","\n"," # Use your provided brainstorming_topics list\n"," brainstorming_topics = [{\n"," 'topic1': \"Showcase a behind-the-scenes look at the restaurant's kitchen, highlighting the chefs' skills and the preparation of the special dish.\",\n"," 'topic2': \"Create a 'day in the life' segment featuring a staff member, showcasing their daily tasks and interactions with customers.\",\n"," 'topic3': 'Develop a social media integration, where customers can share their own experiences and photos at the restaurant, and the restaurant can respond and engage with them.',\n"," 'topic4': \"Include a 'sneak peek' segment, where the restaurant reveals a new dish or promotion, building anticipation and excitement among viewers.\"\n"," }]\n","\n"," # Flatten and list the topic strings\n"," topic_dict = brainstorming_topics[0]\n"," topic_keys = list(topic_dict.keys())\n"," topic_values = list(topic_dict.values())\n","\n"," print(\"Available topics:\")\n"," for idx, topic in enumerate(topic_values, 1):\n"," print(f\"{idx}. {topic}\")\n","\n"," # Ask for selection\n"," raw_input = input(\"Enter the numbers of your preferred topics (comma-separated): \")\n","\n"," # Parse and validate\n"," try:\n"," preferred_indices = [int(i.strip()) for i in raw_input.split(\",\")]\n"," preferred_topics = [topic_values[i - 1] for i in preferred_indices if 0 < i <= len(topic_values)]\n"," except Exception:\n"," print(\"Invalid input. Please try again.\")\n"," return human_feedback(state)\n","\n"," print(\"You selected:\")\n"," print(preferred_topics)\n","\n","\n"," return preferred_topics\n"],"metadata":{"id":"SKIMXATFbSuc"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["human_feedback()"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"qpEoR_vrnRdu","executionInfo":{"status":"ok","timestamp":1745998667355,"user_tz":-345,"elapsed":3099,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"421b21b6-5e06-4533-bc06-c4ffa8024e62"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["---human_feedback---\n","Available topics:\n","1. Showcase a behind-the-scenes look at the restaurant's kitchen, highlighting the chefs' skills and the preparation of the special dish.\n","2. Create a 'day in the life' segment featuring a staff member, showcasing their daily tasks and interactions with customers.\n","3. Develop a social media integration, where customers can share their own experiences and photos at the restaurant, and the restaurant can respond and engage with them.\n","4. Include a 'sneak peek' segment, where the restaurant reveals a new dish or promotion, building anticipation and excitement among viewers.\n","Enter the numbers of your preferred topics (comma-separated): 1,4\n","You selected:\n","[\"Showcase a behind-the-scenes look at the restaurant's kitchen, highlighting the chefs' skills and the preparation of the special dish.\", \"Include a 'sneak peek' segment, where the restaurant reveals a new dish or promotion, building anticipation and excitement among viewers.\"]\n"]},{"output_type":"execute_result","data":{"text/plain":["[\"Showcase a behind-the-scenes look at the restaurant's kitchen, highlighting the chefs' skills and the preparation of the special dish.\",\n"," \"Include a 'sneak peek' segment, where the restaurant reveals a new dish or promotion, building anticipation and excitement among viewers.\"]"]},"metadata":{},"execution_count":22}]},{"cell_type":"code","source":["def human_feedback(state=None):\n"," print(\"---human_feedback---\")\n","\n"," brainstorming_topics = [{\n"," 'topic1': \"Showcase a behind-the-scenes look at the restaurant's kitchen, highlighting the chefs' skills and the preparation of the special dish.\",\n"," 'topic2': \"Create a 'day in the life' segment featuring a staff member, showcasing their daily tasks and interactions with customers.\",\n"," 'topic3': 'Develop a social media integration, where customers can share their own experiences and photos at the restaurant, and the restaurant can respond and engage with them.',\n"," 'topic4': \"Include a 'sneak peek' segment, where the restaurant reveals a new dish or promotion, building anticipation and excitement among viewers.\"\n"," }]\n","\n"," topic_dict = brainstorming_topics[0]\n"," topic_values = list(topic_dict.values())\n","\n"," print(\"Available topics:\")\n"," for idx, topic in enumerate(topic_values, 1):\n"," print(f\"{idx}. {topic}\")\n","\n"," # Ask for selection\n"," raw_input_str = input(\"Enter the numbers of your preferred topics (comma-separated), or press Enter to skip: \").strip()\n","\n"," # If user pressed Enter with no input, end early\n"," if not raw_input_str:\n"," print(\"No topics selected. Ending process.\")\n"," return None\n","\n"," try:\n"," preferred_indices = [int(i.strip()) for i in raw_input_str.split(\",\")]\n"," preferred_topics = [topic_values[i - 1] for i in preferred_indices if 0 < i <= len(topic_values)]\n"," except Exception:\n"," print(\"Invalid input. Please try again.\")\n"," return human_feedback(state)\n","\n"," if not preferred_topics:\n"," print(\"No valid topics selected. Ending process.\")\n"," return None\n","\n","\n"," return preferred_topics\n"],"metadata":{"id":"rbQd76DKnW2T"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["human_feedback()\n"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"-hZsPPC9pP5g","executionInfo":{"status":"ok","timestamp":1745998978199,"user_tz":-345,"elapsed":1101,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"df916719-9241-418b-c208-afd1276a473b"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["---human_feedback---\n","Available topics:\n","1. Showcase a behind-the-scenes look at the restaurant's kitchen, highlighting the chefs' skills and the preparation of the special dish.\n","2. Create a 'day in the life' segment featuring a staff member, showcasing their daily tasks and interactions with customers.\n","3. Develop a social media integration, where customers can share their own experiences and photos at the restaurant, and the restaurant can respond and engage with them.\n","4. Include a 'sneak peek' segment, where the restaurant reveals a new dish or promotion, building anticipation and excitement among viewers.\n","Enter the numbers of your preferred topics (comma-separated), or press Enter to skip: \n","No topics selected. Ending process.\n"]}]},{"cell_type":"code","source":[],"metadata":{"id":"P-zEPm5qpQ_a"},"execution_count":null,"outputs":[]}]}