File size: 208,274 Bytes
af895b2
1
{"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&lt;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&lt;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&lt;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&lt;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&lt;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&lt;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":["<IPython.core.display.Image object>"]},"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<?, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"3fdada257f9846979a7b6b3f7c476d2c"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Retrieval process completed......\n","The retrieval is:\n"," [[[{'ishtukarkee': 'Certainly! Here\\'s a breakdown of the video you sent, formatted according to your instructions:\\n\\n**1. Story:**\\nThe video opens with a woman outdoors, using her phone. She\\'s then seen on a phone call, expressing her desire to film a restaurant video. A friend is busy so she goes to restaurant with a different friend. The scene shifts to a restaurant setting, showcasing the staff and then a special dish. The video details the unique way to eat the dish, the ambiance and concludes with promotional details.\\n\\n**2. Characters:**\\n\\n*   **Woman with Phone:** She appears outdoors, wearing a long-sleeved black and white \"Magic Moon\" shirt and jeans, she speaks on the phone and initially seems disappointed that a friend is busy.\\n*   **Woman with brown jacket:** This character wears a brown jacket with fur trim. She also makes calls on her phone.\\n*    **The two female companions** They are both dressed in casual clothes. \\n*   **Restaurant staff:** A waitress is seen in a black uniform with a pink tie and her job is to take orders.\\n\\n**3. Narration or Voiceover:**\\nThe video is narrated with a conversational voice, and also includes a brief phone call. She is heard recounting her day. \\n\\n**4. Transitions and Pacing:**\\nThe video transitions between scenes using standard cuts, maintaining a fairly brisk pace. There is a mix of full body shots, close-ups and scene pans.\\n\\n**5. Mood and Tone:**\\nThe overall mood of the video is lighthearted and casual, with an excited tone especially when the dishes are being highlighted. There is no music in the video, but the conversational tone makes it seem casual. The restaurant scene is warm and cozy with warm lights and inviting ambiance.\\n\\n**6. Visible Texts or Brandings:**\\n*   \"Magic Moon\" is printed on the first woman\\'s shirt.\\n*   \"PINK PUTALI R&B\" (Restaurant & Bar) appears multiple times.\\n*   A poster details \"PINK PUTALI Live Music Fest\" \"YOU\\'RE INVITED\". Below this is, \"Artist Date:\" and artists such as, \"Rahul Roxx / Shristi Raut\", \"Asmita Adhikari / Mahesh Kafle\", \"Rachana Rimal\", \"Kamal Khatri\", \"Kamala Ghimire / Kishan Sijapati\" \"Eleena Chauhan\" and \"Anju Panta / Rahul R\" along with the performance dates from \"DEC 24\" - \"JAN 1\"\\n*   The poster also lists \"Entry Fee: Rs 1250. With Free Complimentary Dish\" and \"Free Parking Available\".\\n*   A phone number \"977 9803074666\" is included as well as Instagram handle \"instagram.com/pinkputali/\"\\n\\n**Conclusion:**\\nThe video follows a young woman who is on a quest to document a restaurant called \"Pink Putali\" with her friend. After making some calls and figuring out who was free she went with a different friend. The video then transitions into showing the restaurant in great detail, showcasing the ambiance, special menu, staff members and finishes with details of their \"Live Music Fest\" and how to join. Overall the video is a promotional reel for Pink Putali restaurant. The main goal of the video is to engage the audience by showcasing the uniqueness of the place and the quality of their dishes and events.\\n'}]]]\n","The state retrieval is: [[[{'ishtukarkee': 'Certainly! Here\\'s a breakdown of the video you sent, formatted according to your instructions:\\n\\n**1. Story:**\\nThe video opens with a woman outdoors, using her phone. She\\'s then seen on a phone call, expressing her desire to film a restaurant video. A friend is busy so she goes to restaurant with a different friend. The scene shifts to a restaurant setting, showcasing the staff and then a special dish. The video details the unique way to eat the dish, the ambiance and concludes with promotional details.\\n\\n**2. Characters:**\\n\\n*   **Woman with Phone:** She appears outdoors, wearing a long-sleeved black and white \"Magic Moon\" shirt and jeans, she speaks on the phone and initially seems disappointed that a friend is busy.\\n*   **Woman with brown jacket:** This character wears a brown jacket with fur trim. She also makes calls on her phone.\\n*    **The two female companions** They are both dressed in casual clothes. \\n*   **Restaurant staff:** A waitress is seen in a black uniform with a pink tie and her job is to take orders.\\n\\n**3. Narration or Voiceover:**\\nThe video is narrated with a conversational voice, and also includes a brief phone call. She is heard recounting her day. \\n\\n**4. Transitions and Pacing:**\\nThe video transitions between scenes using standard cuts, maintaining a fairly brisk pace. There is a mix of full body shots, close-ups and scene pans.\\n\\n**5. Mood and Tone:**\\nThe overall mood of the video is lighthearted and casual, with an excited tone especially when the dishes are being highlighted. There is no music in the video, but the conversational tone makes it seem casual. The restaurant scene is warm and cozy with warm lights and inviting ambiance.\\n\\n**6. Visible Texts or Brandings:**\\n*   \"Magic Moon\" is printed on the first woman\\'s shirt.\\n*   \"PINK PUTALI R&B\" (Restaurant & Bar) appears multiple times.\\n*   A poster details \"PINK PUTALI Live Music Fest\" \"YOU\\'RE INVITED\". Below this is, \"Artist Date:\" and artists such as, \"Rahul Roxx / Shristi Raut\", \"Asmita Adhikari / Mahesh Kafle\", \"Rachana Rimal\", \"Kamal Khatri\", \"Kamala Ghimire / Kishan Sijapati\" \"Eleena Chauhan\" and \"Anju Panta / Rahul R\" along with the performance dates from \"DEC 24\" - \"JAN 1\"\\n*   The poster also lists \"Entry Fee: Rs 1250. With Free Complimentary Dish\" and \"Free Parking Available\".\\n*   A phone number \"977 9803074666\" is included as well as Instagram handle \"instagram.com/pinkputali/\"\\n\\n**Conclusion:**\\nThe video follows a young woman who is on a quest to document a restaurant called \"Pink Putali\" with her friend. After making some calls and figuring out who was free she went with a different friend. The video then transitions into showing the restaurant in great detail, showcasing the ambiance, special menu, staff members and finishes with details of their \"Live Music Fest\" and how to join. Overall the video is a promotional reel for Pink Putali restaurant. The main goal of the video is to engage the audience by showcasing the uniqueness of the place and the quality of their dishes and events.\\n'}]]]\n","item: dict_values(['Certainly! Here\\'s a breakdown of the video you sent, formatted according to your instructions:\\n\\n**1. Story:**\\nThe video opens with a woman outdoors, using her phone. She\\'s then seen on a phone call, expressing her desire to film a restaurant video. A friend is busy so she goes to restaurant with a different friend. The scene shifts to a restaurant setting, showcasing the staff and then a special dish. The video details the unique way to eat the dish, the ambiance and concludes with promotional details.\\n\\n**2. Characters:**\\n\\n*   **Woman with Phone:** She appears outdoors, wearing a long-sleeved black and white \"Magic Moon\" shirt and jeans, she speaks on the phone and initially seems disappointed that a friend is busy.\\n*   **Woman with brown jacket:** This character wears a brown jacket with fur trim. She also makes calls on her phone.\\n*    **The two female companions** They are both dressed in casual clothes. \\n*   **Restaurant staff:** A waitress is seen in a black uniform with a pink tie and her job is to take orders.\\n\\n**3. Narration or Voiceover:**\\nThe video is narrated with a conversational voice, and also includes a brief phone call. She is heard recounting her day. \\n\\n**4. Transitions and Pacing:**\\nThe video transitions between scenes using standard cuts, maintaining a fairly brisk pace. There is a mix of full body shots, close-ups and scene pans.\\n\\n**5. Mood and Tone:**\\nThe overall mood of the video is lighthearted and casual, with an excited tone especially when the dishes are being highlighted. There is no music in the video, but the conversational tone makes it seem casual. The restaurant scene is warm and cozy with warm lights and inviting ambiance.\\n\\n**6. Visible Texts or Brandings:**\\n*   \"Magic Moon\" is printed on the first woman\\'s shirt.\\n*   \"PINK PUTALI R&B\" (Restaurant & Bar) appears multiple times.\\n*   A poster details \"PINK PUTALI Live Music Fest\" \"YOU\\'RE INVITED\". Below this is, \"Artist Date:\" and artists such as, \"Rahul Roxx / Shristi Raut\", \"Asmita Adhikari / Mahesh Kafle\", \"Rachana Rimal\", \"Kamal Khatri\", \"Kamala Ghimire / Kishan Sijapati\" \"Eleena Chauhan\" and \"Anju Panta / Rahul R\" along with the performance dates from \"DEC 24\" - \"JAN 1\"\\n*   The poster also lists \"Entry Fee: Rs 1250. With Free Complimentary Dish\" and \"Free Parking Available\".\\n*   A phone number \"977 9803074666\" is included as well as Instagram handle \"instagram.com/pinkputali/\"\\n\\n**Conclusion:**\\nThe video follows a young woman who is on a quest to document a restaurant called \"Pink Putali\" with her friend. After making some calls and figuring out who was free she went with a different friend. The video then transitions into showing the restaurant in great detail, showcasing the ambiance, special menu, staff members and finishes with details of their \"Live Music Fest\" and how to join. Overall the video is a promotional reel for Pink Putali restaurant. The main goal of the video is to engage the audience by showcasing the uniqueness of the place and the quality of their dishes and events.\\n'])\n","The response is: content='' additional_kwargs={'tool_calls': [{'id': 'call_jk40', 'function': {'arguments': '{\"emotional_tone\":\"excited\",\"key_visuals\":\"restaurant setting, staff, special dish\",\"narration\":\"promotional details\",\"story\":\"introduce the scene, set the tone, describe key visuals and actions\",\"text_in_the_Video\":\"promotional text overlays for key moments\",\"transitions\":\"smooth transitions between scenes\"}', 'name': 'StoryFormatter'}, 'type': 'function'}]} response_metadata={'token_usage': {'completion_tokens': 144, 'prompt_tokens': 1976, 'total_tokens': 2120, 'completion_time': 0.12, 'prompt_time': 0.247484715, 'queue_time': 0.09979986799999999, 'total_time': 0.367484715}, 'model_name': 'llama3-8b-8192', 'system_fingerprint': 'fp_dadc9d6142', 'finish_reason': 'tool_calls', 'logprobs': None} id='run-6e325575-148c-440b-a177-61b6ab14d314-0' tool_calls=[{'name': 'StoryFormatter', 'args': {'emotional_tone': 'excited', 'key_visuals': 'restaurant setting, staff, special dish', 'narration': 'promotional details', 'story': 'introduce the scene, set the tone, describe key visuals and actions', 'text_in_the_Video': 'promotional text overlays for key moments', 'transitions': 'smooth transitions between scenes'}, 'id': 'call_jk40', 'type': 'tool_call'}] usage_metadata={'input_tokens': 1976, 'output_tokens': 144, 'total_tokens': 2120}\n","The response is: content='' additional_kwargs={'tool_calls': [{'id': 'call_mqw8', 'function': {'arguments': '{\"topic1\":\"Showcase the chef preparing a signature dish\",\"topic2\":\"Add a sequence of customers sharing their experiences at the restaurant\",\"topic3\":\"Highlight the farm-to-table sourcing of ingredients with a short segment showing local farms\",\"topic4\":\"Include a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance\"}', 'name': 'BrainstromTopicFormatter'}, 'type': 'function'}]} response_metadata={'token_usage': {'completion_tokens': 151, 'prompt_tokens': 1265, 'total_tokens': 1416, 'completion_time': 0.125833333, 'prompt_time': 0.172189702, 'queue_time': 0.07082481800000001, 'total_time': 0.298023035}, 'model_name': 'llama3-8b-8192', 'system_fingerprint': 'fp_dadc9d6142', 'finish_reason': 'tool_calls', 'logprobs': None} id='run-86196f7a-087f-4b50-b808-f20b9bf3ead5-0' tool_calls=[{'name': 'BrainstromTopicFormatter', 'args': {'topic1': 'Showcase the chef preparing a signature dish', 'topic2': 'Add a sequence of customers sharing their experiences at the restaurant', 'topic3': 'Highlight the farm-to-table sourcing of ingredients with a short segment showing local farms', 'topic4': 'Include a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance'}, 'id': 'call_mqw8', 'type': 'tool_call'}] usage_metadata={'input_tokens': 1265, 'output_tokens': 151, 'total_tokens': 1416}\n","The brainstroming topics are: [{'topic1': 'Showcase the chef preparing a signature dish', 'topic2': 'Add a sequence of customers sharing their experiences at the restaurant', 'topic3': 'Highlight the farm-to-table sourcing of ingredients with a short segment showing local farms', 'topic4': 'Include a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance'}]\n","---human_feedback---\n","Available topics:\n","1. Showcase the chef preparing a signature dish\n","2. Add a sequence of customers sharing their experiences at the restaurant\n","3. Highlight the farm-to-table sourcing of ingredients with a short segment showing local farms\n","4. Include a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance\n","Enter the numbers of your preferred topics (comma-separated), or press Enter to skip: 1,4\n","You selected:\n","['Showcase the chef preparing a signature dish', 'Include a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance']\n","The output is: True\n","Moving to retrieval process\n"]},{"output_type":"display_data","data":{"text/plain":["  0%|          | 0/2 [00:00<?, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"ab55ccdd65b84efaa047401f357ad842"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Retrieval process completed......\n","The retrieval is:\n"," [[[{'ishtukarkee': 'Certainly! Here\\'s a breakdown of the video you sent, formatted according to your instructions:\\n\\n**1. Story:**\\nThe video opens with a woman outdoors, using her phone. She\\'s then seen on a phone call, expressing her desire to film a restaurant video. A friend is busy so she goes to restaurant with a different friend. The scene shifts to a restaurant setting, showcasing the staff and then a special dish. The video details the unique way to eat the dish, the ambiance and concludes with promotional details.\\n\\n**2. Characters:**\\n\\n*   **Woman with Phone:** She appears outdoors, wearing a long-sleeved black and white \"Magic Moon\" shirt and jeans, she speaks on the phone and initially seems disappointed that a friend is busy.\\n*   **Woman with brown jacket:** This character wears a brown jacket with fur trim. She also makes calls on her phone.\\n*    **The two female companions** They are both dressed in casual clothes. \\n*   **Restaurant staff:** A waitress is seen in a black uniform with a pink tie and her job is to take orders.\\n\\n**3. Narration or Voiceover:**\\nThe video is narrated with a conversational voice, and also includes a brief phone call. She is heard recounting her day. \\n\\n**4. Transitions and Pacing:**\\nThe video transitions between scenes using standard cuts, maintaining a fairly brisk pace. There is a mix of full body shots, close-ups and scene pans.\\n\\n**5. Mood and Tone:**\\nThe overall mood of the video is lighthearted and casual, with an excited tone especially when the dishes are being highlighted. There is no music in the video, but the conversational tone makes it seem casual. The restaurant scene is warm and cozy with warm lights and inviting ambiance.\\n\\n**6. Visible Texts or Brandings:**\\n*   \"Magic Moon\" is printed on the first woman\\'s shirt.\\n*   \"PINK PUTALI R&B\" (Restaurant & Bar) appears multiple times.\\n*   A poster details \"PINK PUTALI Live Music Fest\" \"YOU\\'RE INVITED\". Below this is, \"Artist Date:\" and artists such as, \"Rahul Roxx / Shristi Raut\", \"Asmita Adhikari / Mahesh Kafle\", \"Rachana Rimal\", \"Kamal Khatri\", \"Kamala Ghimire / Kishan Sijapati\" \"Eleena Chauhan\" and \"Anju Panta / Rahul R\" along with the performance dates from \"DEC 24\" - \"JAN 1\"\\n*   The poster also lists \"Entry Fee: Rs 1250. With Free Complimentary Dish\" and \"Free Parking Available\".\\n*   A phone number \"977 9803074666\" is included as well as Instagram handle \"instagram.com/pinkputali/\"\\n\\n**Conclusion:**\\nThe video follows a young woman who is on a quest to document a restaurant called \"Pink Putali\" with her friend. After making some calls and figuring out who was free she went with a different friend. The video then transitions into showing the restaurant in great detail, showcasing the ambiance, special menu, staff members and finishes with details of their \"Live Music Fest\" and how to join. Overall the video is a promotional reel for Pink Putali restaurant. The main goal of the video is to engage the audience by showcasing the uniqueness of the place and the quality of their dishes and events.\\n'}]], [[{'ishtukarkee': 'Certainly! Here\\'s a breakdown of the video you sent, formatted according to your instructions:\\n\\n**1. Story:**\\nThe video opens with a woman outdoors, using her phone. She\\'s then seen on a phone call, expressing her desire to film a restaurant video. A friend is busy so she goes to restaurant with a different friend. The scene shifts to a restaurant setting, showcasing the staff and then a special dish. The video details the unique way to eat the dish, the ambiance and concludes with promotional details.\\n\\n**2. Characters:**\\n\\n*   **Woman with Phone:** She appears outdoors, wearing a long-sleeved black and white \"Magic Moon\" shirt and jeans, she speaks on the phone and initially seems disappointed that a friend is busy.\\n*   **Woman with brown jacket:** This character wears a brown jacket with fur trim. She also makes calls on her phone.\\n*    **The two female companions** They are both dressed in casual clothes. \\n*   **Restaurant staff:** A waitress is seen in a black uniform with a pink tie and her job is to take orders.\\n\\n**3. Narration or Voiceover:**\\nThe video is narrated with a conversational voice, and also includes a brief phone call. She is heard recounting her day. \\n\\n**4. Transitions and Pacing:**\\nThe video transitions between scenes using standard cuts, maintaining a fairly brisk pace. There is a mix of full body shots, close-ups and scene pans.\\n\\n**5. Mood and Tone:**\\nThe overall mood of the video is lighthearted and casual, with an excited tone especially when the dishes are being highlighted. There is no music in the video, but the conversational tone makes it seem casual. The restaurant scene is warm and cozy with warm lights and inviting ambiance.\\n\\n**6. Visible Texts or Brandings:**\\n*   \"Magic Moon\" is printed on the first woman\\'s shirt.\\n*   \"PINK PUTALI R&B\" (Restaurant & Bar) appears multiple times.\\n*   A poster details \"PINK PUTALI Live Music Fest\" \"YOU\\'RE INVITED\". Below this is, \"Artist Date:\" and artists such as, \"Rahul Roxx / Shristi Raut\", \"Asmita Adhikari / Mahesh Kafle\", \"Rachana Rimal\", \"Kamal Khatri\", \"Kamala Ghimire / Kishan Sijapati\" \"Eleena Chauhan\" and \"Anju Panta / Rahul R\" along with the performance dates from \"DEC 24\" - \"JAN 1\"\\n*   The poster also lists \"Entry Fee: Rs 1250. With Free Complimentary Dish\" and \"Free Parking Available\".\\n*   A phone number \"977 9803074666\" is included as well as Instagram handle \"instagram.com/pinkputali/\"\\n\\n**Conclusion:**\\nThe video follows a young woman who is on a quest to document a restaurant called \"Pink Putali\" with her friend. After making some calls and figuring out who was free she went with a different friend. The video then transitions into showing the restaurant in great detail, showcasing the ambiance, special menu, staff members and finishes with details of their \"Live Music Fest\" and how to join. Overall the video is a promotional reel for Pink Putali restaurant. The main goal of the video is to engage the audience by showcasing the uniqueness of the place and the quality of their dishes and events.\\n'}]]]\n","The state retrieval is: [[[{'ishtukarkee': 'Certainly! Here\\'s a breakdown of the video you sent, formatted according to your instructions:\\n\\n**1. Story:**\\nThe video opens with a woman outdoors, using her phone. She\\'s then seen on a phone call, expressing her desire to film a restaurant video. A friend is busy so she goes to restaurant with a different friend. The scene shifts to a restaurant setting, showcasing the staff and then a special dish. The video details the unique way to eat the dish, the ambiance and concludes with promotional details.\\n\\n**2. Characters:**\\n\\n*   **Woman with Phone:** She appears outdoors, wearing a long-sleeved black and white \"Magic Moon\" shirt and jeans, she speaks on the phone and initially seems disappointed that a friend is busy.\\n*   **Woman with brown jacket:** This character wears a brown jacket with fur trim. She also makes calls on her phone.\\n*    **The two female companions** They are both dressed in casual clothes. \\n*   **Restaurant staff:** A waitress is seen in a black uniform with a pink tie and her job is to take orders.\\n\\n**3. Narration or Voiceover:**\\nThe video is narrated with a conversational voice, and also includes a brief phone call. She is heard recounting her day. \\n\\n**4. Transitions and Pacing:**\\nThe video transitions between scenes using standard cuts, maintaining a fairly brisk pace. There is a mix of full body shots, close-ups and scene pans.\\n\\n**5. Mood and Tone:**\\nThe overall mood of the video is lighthearted and casual, with an excited tone especially when the dishes are being highlighted. There is no music in the video, but the conversational tone makes it seem casual. The restaurant scene is warm and cozy with warm lights and inviting ambiance.\\n\\n**6. Visible Texts or Brandings:**\\n*   \"Magic Moon\" is printed on the first woman\\'s shirt.\\n*   \"PINK PUTALI R&B\" (Restaurant & Bar) appears multiple times.\\n*   A poster details \"PINK PUTALI Live Music Fest\" \"YOU\\'RE INVITED\". Below this is, \"Artist Date:\" and artists such as, \"Rahul Roxx / Shristi Raut\", \"Asmita Adhikari / Mahesh Kafle\", \"Rachana Rimal\", \"Kamal Khatri\", \"Kamala Ghimire / Kishan Sijapati\" \"Eleena Chauhan\" and \"Anju Panta / Rahul R\" along with the performance dates from \"DEC 24\" - \"JAN 1\"\\n*   The poster also lists \"Entry Fee: Rs 1250. With Free Complimentary Dish\" and \"Free Parking Available\".\\n*   A phone number \"977 9803074666\" is included as well as Instagram handle \"instagram.com/pinkputali/\"\\n\\n**Conclusion:**\\nThe video follows a young woman who is on a quest to document a restaurant called \"Pink Putali\" with her friend. After making some calls and figuring out who was free she went with a different friend. The video then transitions into showing the restaurant in great detail, showcasing the ambiance, special menu, staff members and finishes with details of their \"Live Music Fest\" and how to join. Overall the video is a promotional reel for Pink Putali restaurant. The main goal of the video is to engage the audience by showcasing the uniqueness of the place and the quality of their dishes and events.\\n'}]], [[{'ishtukarkee': 'Certainly! Here\\'s a breakdown of the video you sent, formatted according to your instructions:\\n\\n**1. Story:**\\nThe video opens with a woman outdoors, using her phone. She\\'s then seen on a phone call, expressing her desire to film a restaurant video. A friend is busy so she goes to restaurant with a different friend. The scene shifts to a restaurant setting, showcasing the staff and then a special dish. The video details the unique way to eat the dish, the ambiance and concludes with promotional details.\\n\\n**2. Characters:**\\n\\n*   **Woman with Phone:** She appears outdoors, wearing a long-sleeved black and white \"Magic Moon\" shirt and jeans, she speaks on the phone and initially seems disappointed that a friend is busy.\\n*   **Woman with brown jacket:** This character wears a brown jacket with fur trim. She also makes calls on her phone.\\n*    **The two female companions** They are both dressed in casual clothes. \\n*   **Restaurant staff:** A waitress is seen in a black uniform with a pink tie and her job is to take orders.\\n\\n**3. Narration or Voiceover:**\\nThe video is narrated with a conversational voice, and also includes a brief phone call. She is heard recounting her day. \\n\\n**4. Transitions and Pacing:**\\nThe video transitions between scenes using standard cuts, maintaining a fairly brisk pace. There is a mix of full body shots, close-ups and scene pans.\\n\\n**5. Mood and Tone:**\\nThe overall mood of the video is lighthearted and casual, with an excited tone especially when the dishes are being highlighted. There is no music in the video, but the conversational tone makes it seem casual. The restaurant scene is warm and cozy with warm lights and inviting ambiance.\\n\\n**6. Visible Texts or Brandings:**\\n*   \"Magic Moon\" is printed on the first woman\\'s shirt.\\n*   \"PINK PUTALI R&B\" (Restaurant & Bar) appears multiple times.\\n*   A poster details \"PINK PUTALI Live Music Fest\" \"YOU\\'RE INVITED\". Below this is, \"Artist Date:\" and artists such as, \"Rahul Roxx / Shristi Raut\", \"Asmita Adhikari / Mahesh Kafle\", \"Rachana Rimal\", \"Kamal Khatri\", \"Kamala Ghimire / Kishan Sijapati\" \"Eleena Chauhan\" and \"Anju Panta / Rahul R\" along with the performance dates from \"DEC 24\" - \"JAN 1\"\\n*   The poster also lists \"Entry Fee: Rs 1250. With Free Complimentary Dish\" and \"Free Parking Available\".\\n*   A phone number \"977 9803074666\" is included as well as Instagram handle \"instagram.com/pinkputali/\"\\n\\n**Conclusion:**\\nThe video follows a young woman who is on a quest to document a restaurant called \"Pink Putali\" with her friend. After making some calls and figuring out who was free she went with a different friend. The video then transitions into showing the restaurant in great detail, showcasing the ambiance, special menu, staff members and finishes with details of their \"Live Music Fest\" and how to join. Overall the video is a promotional reel for Pink Putali restaurant. The main goal of the video is to engage the audience by showcasing the uniqueness of the place and the quality of their dishes and events.\\n'}]]]\n","item: dict_values(['Certainly! Here\\'s a breakdown of the video you sent, formatted according to your instructions:\\n\\n**1. Story:**\\nThe video opens with a woman outdoors, using her phone. She\\'s then seen on a phone call, expressing her desire to film a restaurant video. A friend is busy so she goes to restaurant with a different friend. The scene shifts to a restaurant setting, showcasing the staff and then a special dish. The video details the unique way to eat the dish, the ambiance and concludes with promotional details.\\n\\n**2. Characters:**\\n\\n*   **Woman with Phone:** She appears outdoors, wearing a long-sleeved black and white \"Magic Moon\" shirt and jeans, she speaks on the phone and initially seems disappointed that a friend is busy.\\n*   **Woman with brown jacket:** This character wears a brown jacket with fur trim. She also makes calls on her phone.\\n*    **The two female companions** They are both dressed in casual clothes. \\n*   **Restaurant staff:** A waitress is seen in a black uniform with a pink tie and her job is to take orders.\\n\\n**3. Narration or Voiceover:**\\nThe video is narrated with a conversational voice, and also includes a brief phone call. She is heard recounting her day. \\n\\n**4. Transitions and Pacing:**\\nThe video transitions between scenes using standard cuts, maintaining a fairly brisk pace. There is a mix of full body shots, close-ups and scene pans.\\n\\n**5. Mood and Tone:**\\nThe overall mood of the video is lighthearted and casual, with an excited tone especially when the dishes are being highlighted. There is no music in the video, but the conversational tone makes it seem casual. The restaurant scene is warm and cozy with warm lights and inviting ambiance.\\n\\n**6. Visible Texts or Brandings:**\\n*   \"Magic Moon\" is printed on the first woman\\'s shirt.\\n*   \"PINK PUTALI R&B\" (Restaurant & Bar) appears multiple times.\\n*   A poster details \"PINK PUTALI Live Music Fest\" \"YOU\\'RE INVITED\". Below this is, \"Artist Date:\" and artists such as, \"Rahul Roxx / Shristi Raut\", \"Asmita Adhikari / Mahesh Kafle\", \"Rachana Rimal\", \"Kamal Khatri\", \"Kamala Ghimire / Kishan Sijapati\" \"Eleena Chauhan\" and \"Anju Panta / Rahul R\" along with the performance dates from \"DEC 24\" - \"JAN 1\"\\n*   The poster also lists \"Entry Fee: Rs 1250. With Free Complimentary Dish\" and \"Free Parking Available\".\\n*   A phone number \"977 9803074666\" is included as well as Instagram handle \"instagram.com/pinkputali/\"\\n\\n**Conclusion:**\\nThe video follows a young woman who is on a quest to document a restaurant called \"Pink Putali\" with her friend. After making some calls and figuring out who was free she went with a different friend. The video then transitions into showing the restaurant in great detail, showcasing the ambiance, special menu, staff members and finishes with details of their \"Live Music Fest\" and how to join. Overall the video is a promotional reel for Pink Putali restaurant. The main goal of the video is to engage the audience by showcasing the uniqueness of the place and the quality of their dishes and events.\\n'])\n","The response is: content='' additional_kwargs={'tool_calls': [{'id': 'call_vv96', 'function': {'arguments': '{\"emotional_tone\":\"excitement\",\"key_visuals\":\"chef preparing a signature dish, time-lapse of the restaurant transforming from day to night\",\"narration\":\"A promotional video showcasing the unique ambiance and signature dishes of the restaurant\",\"story\":\"The video opens with a shot of the chef preparing a signature dish, followed by a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance\",\"text_in_the_Video\":\"Promotional details of the restaurant, including its events and offers\",\"transitions\":\"Smooth transitions between scenes to maintain flow\"}', 'name': 'StoryFormatter'}, 'type': 'function'}]} response_metadata={'token_usage': {'completion_tokens': 192, 'prompt_tokens': 2026, 'total_tokens': 2218, 'completion_time': 0.16, 'prompt_time': 0.254295137, 'queue_time': 0.08129004499999998, 'total_time': 0.414295137}, 'model_name': 'llama3-8b-8192', 'system_fingerprint': 'fp_dadc9d6142', 'finish_reason': 'tool_calls', 'logprobs': None} id='run-54644305-8937-421a-8788-068332206bfd-0' tool_calls=[{'name': 'StoryFormatter', 'args': {'emotional_tone': 'excitement', 'key_visuals': 'chef preparing a signature dish, time-lapse of the restaurant transforming from day to night', 'narration': 'A promotional video showcasing the unique ambiance and signature dishes of the restaurant', 'story': 'The video opens with a shot of the chef preparing a signature dish, followed by a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance', 'text_in_the_Video': 'Promotional details of the restaurant, including its events and offers', 'transitions': 'Smooth transitions between scenes to maintain flow'}, 'id': 'call_vv96', 'type': 'tool_call'}] usage_metadata={'input_tokens': 2026, 'output_tokens': 192, 'total_tokens': 2218}\n","The response is: content='' additional_kwargs={'tool_calls': [{'id': 'call_qp3d', 'function': {'arguments': '{\"topic1\":\"Showcasing the chef preparing a signature dish\",\"topic2\":\"Adding a sequence of customers sharing their experiences at the restaurant\",\"topic3\":\"Highlighting the farm-to-table sourcing of ingredients with a short segment showing local farms\",\"topic4\":\"Including a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance\"}', 'name': 'BrainstromTopicFormatter'}, 'type': 'function'}]} response_metadata={'token_usage': {'completion_tokens': 153, 'prompt_tokens': 1313, 'total_tokens': 1466, 'completion_time': 0.1275, 'prompt_time': 0.185502697, 'queue_time': 0.09189365599999999, 'total_time': 0.313002697}, 'model_name': 'llama3-8b-8192', 'system_fingerprint': 'fp_dadc9d6142', 'finish_reason': 'tool_calls', 'logprobs': None} id='run-f42a029d-80ad-4d9f-8820-ba3e87ec920c-0' tool_calls=[{'name': 'BrainstromTopicFormatter', 'args': {'topic1': 'Showcasing the chef preparing a signature dish', 'topic2': 'Adding a sequence of customers sharing their experiences at the restaurant', 'topic3': 'Highlighting the farm-to-table sourcing of ingredients with a short segment showing local farms', 'topic4': 'Including a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance'}, 'id': 'call_qp3d', 'type': 'tool_call'}] usage_metadata={'input_tokens': 1313, 'output_tokens': 153, 'total_tokens': 1466}\n","The brainstroming topics are: [{'topic1': 'Showcase the chef preparing a signature dish', 'topic2': 'Add a sequence of customers sharing their experiences at the restaurant', 'topic3': 'Highlight the farm-to-table sourcing of ingredients with a short segment showing local farms', 'topic4': 'Include a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance'}, {'topic1': 'Showcasing the chef preparing a signature dish', 'topic2': 'Adding a sequence of customers sharing their experiences at the restaurant', 'topic3': 'Highlighting the farm-to-table sourcing of ingredients with a short segment showing local farms', 'topic4': 'Including a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance'}]\n","---human_feedback---\n","Available topics:\n","1. Showcasing the chef preparing a signature dish\n","2. Adding a sequence of customers sharing their experiences at the restaurant\n","3. Highlighting the farm-to-table sourcing of ingredients with a short segment showing local farms\n","4. Including a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance\n","Enter the numbers of your preferred topics (comma-separated), or press Enter to skip: \n","No topics selected. Ending process.\n","The output is: False\n","The final response is: content='' additional_kwargs={'tool_calls': [{'id': 'call_w7rk', 'function': {'arguments': '{\"emotional_tone\":\"excitement\",\"key_visuals\":\"chef preparing a signature dish, time-lapse of the restaurant transforming from day to night\",\"narration\":\"A promotional video showcasing the unique ambiance and signature dishes of the restaurant.\",\"story\":\"The video opens with a shot of the chef preparing a signature dish, followed by a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance. The video then transitions into showcasing the restaurant\\'s interior, highlighting the staff and the ambiance. The video concludes with promotional details of the restaurant\\'s events and dishes.\",\"text_in_the_Video\":\"Propose important text overlays for key moments, such as the name of the restaurant, the name of the dish, and the dates of the events.\",\"transitions\":\"Smooth transitions between scenes to maintain flow, using standard cuts and a mix of full body shots, close-ups, and scene pans.\"}', 'name': 'StoryFormatter'}, 'type': 'function'}]} response_metadata={'token_usage': {'completion_tokens': 259, 'prompt_tokens': 2068, 'total_tokens': 2327, 'completion_time': 0.215833333, 'prompt_time': 0.264723864, 'queue_time': 0.102056337, 'total_time': 0.480557197}, 'model_name': 'llama3-8b-8192', 'system_fingerprint': 'fp_a97cfe35ae', 'finish_reason': 'tool_calls', 'logprobs': None} id='run-2b9831df-3dfc-4861-8174-07d892f29f15-0' tool_calls=[{'name': 'StoryFormatter', 'args': {'emotional_tone': 'excitement', 'key_visuals': 'chef preparing a signature dish, time-lapse of the restaurant transforming from day to night', 'narration': 'A promotional video showcasing the unique ambiance and signature dishes of the restaurant.', 'story': \"The video opens with a shot of the chef preparing a signature dish, followed by a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance. The video then transitions into showcasing the restaurant's interior, highlighting the staff and the ambiance. The video concludes with promotional details of the restaurant's events and dishes.\", 'text_in_the_Video': 'Propose important text overlays for key moments, such as the name of the restaurant, the name of the dish, and the dates of the events.', 'transitions': 'Smooth transitions between scenes to maintain flow, using standard cuts and a mix of full body shots, close-ups, and scene pans.'}, 'id': 'call_w7rk', 'type': 'tool_call'}] usage_metadata={'input_tokens': 2068, 'output_tokens': 259, 'total_tokens': 2327}\n"]}]},{"cell_type":"code","source":["state['final_story']"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"LvBBJ50OH19E","executionInfo":{"status":"ok","timestamp":1746164038182,"user_tz":-345,"elapsed":62,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"533c76ae-7879-4421-c8ff-da64535b862c"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["{'emotional_tone': 'excitement',\n"," 'key_visuals': 'chef preparing a signature dish, time-lapse of the restaurant transforming from day to night',\n"," 'narration': 'A promotional video showcasing the unique ambiance and signature dishes of the restaurant.',\n"," 'story': \"The video opens with a shot of the chef preparing a signature dish, followed by a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance. The video then transitions into showcasing the restaurant's interior, highlighting the staff and the ambiance. The video concludes with promotional details of the restaurant's events and dishes.\",\n"," 'text_in_the_Video': 'Propose important text overlays for key moments, such as the name of the restaurant, the name of the dish, and the dates of the events.',\n"," 'transitions': 'Smooth transitions between scenes to maintain flow, using standard cuts and a mix of full body shots, close-ups, and scene pans.'}"]},"metadata":{},"execution_count":15}]},{"cell_type":"code","source":["preferred_topics=state['preferred_topics']"],"metadata":{"id":"Bhn9h0nAJQr_"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":["[item for sublist in preferred_topics for item in sublist]"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"xzknIPpOJgKV","executionInfo":{"status":"ok","timestamp":1746007398581,"user_tz":-345,"elapsed":57,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"9168f456-9eac-44a7-b835-e96c96af09dc"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["['Showcase the chef preparing a signature dish in a behind-the-scenes segment',\n"," 'Feature a quick interview with the owner sharing the story behind the restaurant and its unique features',\n"," \"Highlight the restaurant's commitment to sustainability by featuring a segment on their eco-friendly practices, such as reducing food waste and using locally sourced ingredients.\",\n"," 'Include a time-lapse of the restaurant transforming from day to night, capturing its unique ambiance',\n"," 'Showcase the chef preparing a signature dish in a behind-the-scenes segment',\n"," \"Include a time-lapse of the restaurant's kitchen during a busy night, capturing the energy and chaos of a high-volume service.\"]"]},"metadata":{},"execution_count":29}]},{"cell_type":"markdown","source":["# Inferencing"],"metadata":{"id":"S3mTmtpfLI5V"}},{"cell_type":"code","source":["state_retrievals=[]\n","\n","def retrieve(topic):\n","  retrievals=[]\n","  for topic in 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","\n","  state_retrievals.append(retrievals)\n","  # print('The retrieval is:\\n',state_retrievals )\n","  return state_retrievals\n","\n","state_retrievals=retrieve(['I want to make a promotional video of restaurant.','Hello'])\n","state_retrievals"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":932,"referenced_widgets":["ad92ee452f07431f990a355cf0b1fd55","a08a8d0f5e934acca3fc56be28b5cc15","cb0f95c27acc4578accc9e234cdebb3d","56335e52e20241e4913f6198a7db5b75","3a0ca7cb3bf04a0586507d5fff8d0123","69c0502d107f48e089884b270bf3b015","0e6af6d183ae42919b1a01ca1a3dbf0b","2a40b88d70204d2f807a5c1ef168f172","ad5f433e9fb243baa4f9b516c57c5ec2","9ef98b03c696450eaef1116fa0f8e565","53c9fd389ce54525b947b1707e053fe0","11af4e7cdf03451481a67703d3cd4abf","caab75c693dd48aaa46e993902a31d69","db16e0ff465e42ce96442fbd2ff2a760","422ad358c8ef4a2d87483b739b4baed0","8cacc5827128460bb00ca3d841d9863e","37573abde97246a39bd341d17ee2532c","bc2231cdb3224b66ac921ead9fd993df","f43202859ffc4a5ab1cc9bc44a65db00","b8b5dfb8d9c04472a6dd88c8277498a9","02518b8d717a456a9edbcb7fc9910645","db909ba2a8e14387b0559412946edb7d"]},"collapsed":true,"id":"zA--rXLMMFFN","executionInfo":{"status":"ok","timestamp":1745991726183,"user_tz":-345,"elapsed":2198,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"8758c03b-c543-4839-c5e6-909165383c21"},"execution_count":null,"outputs":[{"output_type":"display_data","data":{"text/plain":["  0%|          | 0/2 [00:00<?, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"ad92ee452f07431f990a355cf0b1fd55"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Retrieval process completed......\n"]},{"output_type":"display_data","data":{"text/plain":["  0%|          | 0/2 [00:00<?, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"11af4e7cdf03451481a67703d3cd4abf"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Retrieval process completed......\n"]},{"output_type":"execute_result","data":{"text/plain":["[[[{'ishtukarkee': 'Certainly! Here\\'s a breakdown of the video you sent, formatted according to your instructions:\\n\\n**1. Story:**\\nThe video opens with a woman outdoors, using her phone. She\\'s then seen on a phone call, expressing her desire to film a restaurant video. A friend is busy so she goes to restaurant with a different friend. The scene shifts to a restaurant setting, showcasing the staff and then a special dish. The video details the unique way to eat the dish, the ambiance and concludes with promotional details.\\n\\n**2. Characters:**\\n\\n*   **Woman with Phone:** She appears outdoors, wearing a long-sleeved black and white \"Magic Moon\" shirt and jeans, she speaks on the phone and initially seems disappointed that a friend is busy.\\n*   **Woman with brown jacket:** This character wears a brown jacket with fur trim. She also makes calls on her phone.\\n*    **The two female companions** They are both dressed in casual clothes. \\n*   **Restaurant staff:** A waitress is seen in a black uniform with a pink tie and her job is to take orders.\\n\\n**3. Narration or Voiceover:**\\nThe video is narrated with a conversational voice, and also includes a brief phone call. She is heard recounting her day. \\n\\n**4. Transitions and Pacing:**\\nThe video transitions between scenes using standard cuts, maintaining a fairly brisk pace. There is a mix of full body shots, close-ups and scene pans.\\n\\n**5. Mood and Tone:**\\nThe overall mood of the video is lighthearted and casual, with an excited tone especially when the dishes are being highlighted. There is no music in the video, but the conversational tone makes it seem casual. The restaurant scene is warm and cozy with warm lights and inviting ambiance.\\n\\n**6. Visible Texts or Brandings:**\\n*   \"Magic Moon\" is printed on the first woman\\'s shirt.\\n*   \"PINK PUTALI R&B\" (Restaurant & Bar) appears multiple times.\\n*   A poster details \"PINK PUTALI Live Music Fest\" \"YOU\\'RE INVITED\". Below this is, \"Artist Date:\" and artists such as, \"Rahul Roxx / Shristi Raut\", \"Asmita Adhikari / Mahesh Kafle\", \"Rachana Rimal\", \"Kamal Khatri\", \"Kamala Ghimire / Kishan Sijapati\" \"Eleena Chauhan\" and \"Anju Panta / Rahul R\" along with the performance dates from \"DEC 24\" - \"JAN 1\"\\n*   The poster also lists \"Entry Fee: Rs 1250. With Free Complimentary Dish\" and \"Free Parking Available\".\\n*   A phone number \"977 9803074666\" is included as well as Instagram handle \"instagram.com/pinkputali/\"\\n\\n**Conclusion:**\\nThe video follows a young woman who is on a quest to document a restaurant called \"Pink Putali\" with her friend. After making some calls and figuring out who was free she went with a different friend. The video then transitions into showing the restaurant in great detail, showcasing the ambiance, special menu, staff members and finishes with details of their \"Live Music Fest\" and how to join. Overall the video is a promotional reel for Pink Putali restaurant. The main goal of the video is to engage the audience by showcasing the uniqueness of the place and the quality of their dishes and events.\\n'}],\n","  [{'kano_mama': 'Okay, here’s a breakdown of the video\\'s storyline:\\n\\n**1. Story:**\\n\\nThe video begins in a cluttered office space. The scene is introduced with a shot of a white desk covered with papers, books, a mug, and a motorcycle helmet. A person is holding up a green textbook titled “English” as the camera pans across to capture these items. The tone is casual and seemingly spontaneous. The camera then shows the person placing the book on the desk and grabbing a travel mug, highlighting the routine of daily life. The video cuts to the person putting on various pieces of protective gear before heading out. This leads to them taking the elevator, heading outside and finally starting up their motorcycle.\\n\\nInside, at their house, a person gets a container of food, a piece of butter, and sliced bread to make toast with jam. They then brew tea and finally enjoy their meal while facing the camera.\\n\\n**2. Characters**:\\n\\nThe main character is a person who remains masked for the majority of the time. When their mask is off, they appear calm and focused. Their expressions, mostly neutral, show concentration while completing their routines such as wearing their protective equipment or making breakfast. They wear jeans, a t-shirt, and a black riding jacket along with protective equipment.\\n\\nThe secondary character is an elderly lady walking down the street. The interaction between them is brief, yet friendly, as they exchange greetings.\\n\\n**3. Narration or Voiceover**:\\n\\nThe video features a German song playing throughout. The song has a lively, upbeat tempo that creates a sense of energy. There is no spoken narration, and the conversations are in Chinese.\\n\\n**4. Transitions and Pacing**:\\n\\nThe video uses a mix of cuts and quick pans to move from one scene to the next. These transitions keep the pace lively and engaging. The transitions are straightforward and abrupt and the shifts in focus are swift, maintaining the video\\'s dynamic feel.\\n\\n**5. Mood and Tone:**\\n\\nThe video begins with a light, somewhat chaotic mood, reflecting the disarray of the office space, shifting to a more focused and action-oriented mood as the person prepares to ride. The breakfast scene is homely, showing a calm and routine pace. The outdoor scenes are sunny and energetic, aligning with the overall feel of the song. The tone is casual and documentary, capturing an ordinary day in an individual’s life.\\n\\n**6. Visible Texts or Brandings:**\\n\\n- **\"AGV\"** - The brand name visible on the motorcycle helmet.\\n- **\"VOGUE\"** - The name visible on a white tote bag.\\n- **\"KM\"** - Logo on the travel mug, with a tagline: \"Beauty for the love of coffee\"\\n- **\"CONVERSE\"** - Brand name visible on the grey shoes.\\n- **\"Westgold\"** and some Chinese characters appear on the butter packaging.\\n-   **\"IMPRA\"**  and some Chinese characters appear on the tea packaging. Also some text reads:\"EARL GREY TEA\"\\n- **Various Chinese words** appearing on papers, textbooks, and packaging.\\n-  A sticker on the door has the text **\"开锁 换锁\"** and  **\"13811599110\"** as a phone number.\\n-   The motorcycle is branded **\"Benelli BN600\"**\\n\\n**Summary:**\\n\\nThe video captures a day in the life of an individual, starting with a busy office environment. The person then prepares for a motorcycle ride, putting on protective gear, then heading to their bike. The second half focuses on their home, showing a relaxed and routine breakfast with tea and toast with jam. The video’s casual pace and upbeat music, combined with brief interactions and practical activities, create a relatable and engaging story. Throughout the video, brands like AGV, VOGUE, KM, CONVERSE, IMPRA, and Westgold are visible, seamlessly integrated into daily routines. The text,  \"开锁 换锁\" and \"13811599110,\" on the door provides context of a service. The motorcycle\\'s branding, \"Benelli BN600,\" is also visible. The narrative transitions from the work-preparation routine to an active day and then to the person\\'s home for breakfast. This journey offers a slice-of-life experience, concluding with a simple \"Happy Friday, Enjoy\" message.\\n'}]]]"]},"metadata":{},"execution_count":11}]},{"cell_type":"code","source":["state_retrievals[-1]"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"collapsed":true,"id":"YwUqpZf4ODND","executionInfo":{"status":"ok","timestamp":1745991828423,"user_tz":-345,"elapsed":25,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"6f66cc60-0058-4954-cefa-955d15251e55"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[[{'ishtukarkee': 'Certainly! Here\\'s a breakdown of the video you sent, formatted according to your instructions:\\n\\n**1. Story:**\\nThe video opens with a woman outdoors, using her phone. She\\'s then seen on a phone call, expressing her desire to film a restaurant video. A friend is busy so she goes to restaurant with a different friend. The scene shifts to a restaurant setting, showcasing the staff and then a special dish. The video details the unique way to eat the dish, the ambiance and concludes with promotional details.\\n\\n**2. Characters:**\\n\\n*   **Woman with Phone:** She appears outdoors, wearing a long-sleeved black and white \"Magic Moon\" shirt and jeans, she speaks on the phone and initially seems disappointed that a friend is busy.\\n*   **Woman with brown jacket:** This character wears a brown jacket with fur trim. She also makes calls on her phone.\\n*    **The two female companions** They are both dressed in casual clothes. \\n*   **Restaurant staff:** A waitress is seen in a black uniform with a pink tie and her job is to take orders.\\n\\n**3. Narration or Voiceover:**\\nThe video is narrated with a conversational voice, and also includes a brief phone call. She is heard recounting her day. \\n\\n**4. Transitions and Pacing:**\\nThe video transitions between scenes using standard cuts, maintaining a fairly brisk pace. There is a mix of full body shots, close-ups and scene pans.\\n\\n**5. Mood and Tone:**\\nThe overall mood of the video is lighthearted and casual, with an excited tone especially when the dishes are being highlighted. There is no music in the video, but the conversational tone makes it seem casual. The restaurant scene is warm and cozy with warm lights and inviting ambiance.\\n\\n**6. Visible Texts or Brandings:**\\n*   \"Magic Moon\" is printed on the first woman\\'s shirt.\\n*   \"PINK PUTALI R&B\" (Restaurant & Bar) appears multiple times.\\n*   A poster details \"PINK PUTALI Live Music Fest\" \"YOU\\'RE INVITED\". Below this is, \"Artist Date:\" and artists such as, \"Rahul Roxx / Shristi Raut\", \"Asmita Adhikari / Mahesh Kafle\", \"Rachana Rimal\", \"Kamal Khatri\", \"Kamala Ghimire / Kishan Sijapati\" \"Eleena Chauhan\" and \"Anju Panta / Rahul R\" along with the performance dates from \"DEC 24\" - \"JAN 1\"\\n*   The poster also lists \"Entry Fee: Rs 1250. With Free Complimentary Dish\" and \"Free Parking Available\".\\n*   A phone number \"977 9803074666\" is included as well as Instagram handle \"instagram.com/pinkputali/\"\\n\\n**Conclusion:**\\nThe video follows a young woman who is on a quest to document a restaurant called \"Pink Putali\" with her friend. After making some calls and figuring out who was free she went with a different friend. The video then transitions into showing the restaurant in great detail, showcasing the ambiance, special menu, staff members and finishes with details of their \"Live Music Fest\" and how to join. Overall the video is a promotional reel for Pink Putali restaurant. The main goal of the video is to engage the audience by showcasing the uniqueness of the place and the quality of their dishes and events.\\n'}],\n"," [{'kano_mama': 'Okay, here’s a breakdown of the video\\'s storyline:\\n\\n**1. Story:**\\n\\nThe video begins in a cluttered office space. The scene is introduced with a shot of a white desk covered with papers, books, a mug, and a motorcycle helmet. A person is holding up a green textbook titled “English” as the camera pans across to capture these items. The tone is casual and seemingly spontaneous. The camera then shows the person placing the book on the desk and grabbing a travel mug, highlighting the routine of daily life. The video cuts to the person putting on various pieces of protective gear before heading out. This leads to them taking the elevator, heading outside and finally starting up their motorcycle.\\n\\nInside, at their house, a person gets a container of food, a piece of butter, and sliced bread to make toast with jam. They then brew tea and finally enjoy their meal while facing the camera.\\n\\n**2. Characters**:\\n\\nThe main character is a person who remains masked for the majority of the time. When their mask is off, they appear calm and focused. Their expressions, mostly neutral, show concentration while completing their routines such as wearing their protective equipment or making breakfast. They wear jeans, a t-shirt, and a black riding jacket along with protective equipment.\\n\\nThe secondary character is an elderly lady walking down the street. The interaction between them is brief, yet friendly, as they exchange greetings.\\n\\n**3. Narration or Voiceover**:\\n\\nThe video features a German song playing throughout. The song has a lively, upbeat tempo that creates a sense of energy. There is no spoken narration, and the conversations are in Chinese.\\n\\n**4. Transitions and Pacing**:\\n\\nThe video uses a mix of cuts and quick pans to move from one scene to the next. These transitions keep the pace lively and engaging. The transitions are straightforward and abrupt and the shifts in focus are swift, maintaining the video\\'s dynamic feel.\\n\\n**5. Mood and Tone:**\\n\\nThe video begins with a light, somewhat chaotic mood, reflecting the disarray of the office space, shifting to a more focused and action-oriented mood as the person prepares to ride. The breakfast scene is homely, showing a calm and routine pace. The outdoor scenes are sunny and energetic, aligning with the overall feel of the song. The tone is casual and documentary, capturing an ordinary day in an individual’s life.\\n\\n**6. Visible Texts or Brandings:**\\n\\n- **\"AGV\"** - The brand name visible on the motorcycle helmet.\\n- **\"VOGUE\"** - The name visible on a white tote bag.\\n- **\"KM\"** - Logo on the travel mug, with a tagline: \"Beauty for the love of coffee\"\\n- **\"CONVERSE\"** - Brand name visible on the grey shoes.\\n- **\"Westgold\"** and some Chinese characters appear on the butter packaging.\\n-   **\"IMPRA\"**  and some Chinese characters appear on the tea packaging. Also some text reads:\"EARL GREY TEA\"\\n- **Various Chinese words** appearing on papers, textbooks, and packaging.\\n-  A sticker on the door has the text **\"开锁 换锁\"** and  **\"13811599110\"** as a phone number.\\n-   The motorcycle is branded **\"Benelli BN600\"**\\n\\n**Summary:**\\n\\nThe video captures a day in the life of an individual, starting with a busy office environment. The person then prepares for a motorcycle ride, putting on protective gear, then heading to their bike. The second half focuses on their home, showing a relaxed and routine breakfast with tea and toast with jam. The video’s casual pace and upbeat music, combined with brief interactions and practical activities, create a relatable and engaging story. Throughout the video, brands like AGV, VOGUE, KM, CONVERSE, IMPRA, and Westgold are visible, seamlessly integrated into daily routines. The text,  \"开锁 换锁\" and \"13811599110,\" on the door provides context of a service. The motorcycle\\'s branding, \"Benelli BN600,\" is also visible. The narrative transitions from the work-preparation routine to an active day and then to the person\\'s home for breakfast. This journey offers a slice-of-life experience, concluding with a simple \"Happy Friday, Enjoy\" message.\\n'}]]"]},"metadata":{},"execution_count":14}]},{"cell_type":"code","source":[],"metadata":{"id":"V3mD3I7mPpGQ"},"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","state_stories=[]\n","def generate_story(state_retrievals, preferred_topics):\n","  topic=['I want to make a promotional video of restaurant.']\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","  print('Retrieval:',retrieval)\n","\n","  if preferred_topics!=None:\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{topic[-1]}\\n\\n\n","\n","  **Final Reminder** You have to strongly focus on these topics while creating the storyline: {preferred_topics}'''\n","\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{topic[-1]}'''\n","\n","  messages = [SystemMessage(content=template)]\n","  print('The message is:',messages)\n","  response = llm.bind_tools([StoryFormatter]).invoke(messages)\n","  print('The response of story generator is:\\n',response)\n","  response= response.tool_calls[0]['args']\n","  state_stories.append(response)\n","  preferred_topics=None\n","  return response\n","\n","# response= generate_story(state_retrievals)\n","# response\n","# #\n","# state_stories=generate_story(state_retrievals)\n","# state_stories"],"metadata":{"id":"IWY4KqmONjVV","collapsed":true},"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(story):\n","  brainstroming_topics=[]\n","  story=story[-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","  response= response.tool_calls[0]['args']\n","  brainstroming_topics.append(response)\n","  return brainstroming_topics\n","\n","brainstorming_topics=generate_brainstroming(state_stories)\n","brainstorming_topics"],"metadata":{"colab":{"base_uri":"https://localhost:8080/"},"id":"8beYYpzNMM8P","executionInfo":{"status":"ok","timestamp":1745993832354,"user_tz":-345,"elapsed":1033,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"e54b065a-db82-4da8-96a1-797bd07af83f"},"execution_count":null,"outputs":[{"output_type":"execute_result","data":{"text/plain":["[{'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":{},"execution_count":49}]},{"cell_type":"code","source":["preferred_topics=[\n","    brainstorming_topics[-1]['topic1'],\n","    brainstorming_topics[-1]['topic3']\n","\n","]\n","preferred_topics"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":211},"collapsed":true,"id":"cQKzqPDLVyAn","executionInfo":{"status":"error","timestamp":1745997903240,"user_tz":-345,"elapsed":141,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"2eef2f74-e2b9-4053-bb67-9c6a0439cdc0"},"execution_count":null,"outputs":[{"output_type":"error","ename":"NameError","evalue":"name 'brainstorming_topics' is not defined","traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)","\u001b[0;32m<ipython-input-13-1f8e1a77f81f>\u001b[0m in \u001b[0;36m<cell line: 0>\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<?, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"54427439a80446b5853871505975c61c"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Retrieval process completed......\n"]},{"output_type":"display_data","data":{"text/plain":["  0%|          | 0/2 [00:00<?, ?it/s]"],"application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"246d04b817aa414ea7ff857119699fe0"}},"metadata":{}},{"output_type":"stream","name":"stdout","text":["Retrieval process completed......\n"]}]},{"cell_type":"code","source":["generate_story(retrievals,preferred_topics)"],"metadata":{"colab":{"base_uri":"https://localhost:8080/","height":1000},"collapsed":true,"id":"vj4gp7uDZvh9","executionInfo":{"status":"error","timestamp":1745995269659,"user_tz":-345,"elapsed":2475,"user":{"displayName":"subash subash","userId":"16848708090543892284"}},"outputId":"522d9e16-375b-4372-d69b-4ac81ce14cfc"},"execution_count":null,"outputs":[{"output_type":"stream","name":"stdout","text":["item: dict_values(['Okay, here\\'s a breakdown of the video\\'s storyline, characters, and other elements:\\n\\n**1. Story:** The video opens inside a restaurant, showcasing unique table setups with individual grilling stations and overhead exhaust pipes. A staff member is seen preparing at a station. The scene shifts to show the restaurant\\'s exterior with a graphic that states \"K5\" and then focuses on a grill top at a table. The video then introduces a staff member carrying a silver exhaust pipe, which is then installed. Subsequently, a staff member is seen opening a refrigerator and picks two bottles of beer. The beers are brought to the table where two men are waiting. The beers are opened, poured, and then the camera focuses on the grill and then another staff member is seen carrying a pan with meat.  Hot coals are added to the grill. The next scene shows the placing of marinated meats, and other platters of sides on the table and those are grilled. The diners eat the grilled foods using chopsticks. The camera alternates between meat cooking and two men eating and enjoying their meals, followed by a close-up of an oyster with a topping being cooked and eaten.\\n\\n**2. Characters:**\\n   - There are several staff members, dressed in red and black uniforms. They are focused on setting up and serving the customers. The staff in the initial restaurant scenes moves quickly to install the exhaust pipes. The staff members that bring food are seen working in the kitchen.\\n  - Two male diners are shown, one in a gray jacket and the other in a tan colored sweater, enjoying the grilled food. The diners do the grilling themselves at their table. They also appear to be trying different platters of food.\\n\\n**3. Narration or Voiceover**: The video has music with a Korean pop song and there are no narrations or voiceovers in the video.\\n\\n**4. Transitions and Pacing:** The video uses quick cuts to change between scenes, creating a fast-paced feel. There are some close up zoom-ins on food and the grilling process. This helps in highlighting the experience and unique cooking style.\\n\\n**5. Mood and Tone:** The overall tone of the video is lively and inviting with an upbeat tone. The bright lighting and fast pace of the edits suggest an active dining atmosphere. The music also enhances the lively mood.\\n\\n**6. Visible Texts or Brandings**: The visible texts include \"K5\" as mentioned in the storyline and the restaurant\\'s menu and promotional material with chinese characters. There is text on the beer bottle \"Kraitzauber\". A red paper wrapper says in chinese and in english text \"SPANNER BARBEQUE\". There is also price in yuan text which is displayed on the refrigerator that states \"Mineral water 3 yuan per bottle\".\\n\\n**Summary**: The video is a dynamic showcase of a Korean-style barbeque restaurant. It emphasizes the unique dining experience with personal grilling stations, the installation of equipment and the steps from selecting drinks to prepping food to grilling the food. The video is set to a lively soundtrack highlighting the restaurant\\'s unique setup. The staff members and diners are engaged with each other and eating at the restaurant. The overall tone is vibrant and inviting. It encourages customers to try the food and beverages with the Kraitzauber beer. The video\\'s fast pace and numerous close-ups emphasize the food and its preparation, showcasing a \"Spanner Barbecue\".\\n'])\n","item: dict_values(['Okay, let\\'s break down the video step by step.\\n\\n**1. Story:**\\n\\nThe video opens with a close-up view of a seafood display on ice. The setting is a restaurant or market where fresh seafood is being sold. The initial focus is on the abundance of options: red snapper, various smaller fish, mussels, and skewered vegetables and seafood. The video progresses as a customer selects several items, and then showcases the dishes prepared. The final scene shows people enjoying the dishes at a restaurant table. \\n\\n**2. Characters:**\\n\\nThere are two characters, a customer and a vendor. The customer is visible at the beginning of the video in a shot of his arm while he’s selecting food. In later shots, his face is visible while he is enjoying the food in the restaurant. He appears excited to be choosing fresh seafood and very much enjoys the finished dishes. The vendor is mostly out of frame; we see their arms and hands as they pick out seafood for the customer.\\n\\n**3. Narration or Voiceover**:\\n\\nThere is a conversation between the customer and the vendor where the customer is placing an order.\\n\\n**4. Transitions and Pacing**:\\n\\nThe video uses a mix of cuts and quick transitions to move between scenes, from the display to the selection and then the final dishes. The fast cuts creates a sense of anticipation, especially when moving from selecting the food to seeing it cooked and served. The transitions are efficient, maintaining a moderate pace that is not rushed but gives a nice summary.\\n\\n**5. Mood and Tone:**\\n\\nThe initial mood of the video is energetic and exciting, with all the fresh seafood on ice. The middle section shifts the tone to a quick pace as the vendor is selecting the food. The final section of the video is a calm, satisfied feeling as people enjoy the freshly prepared dishes. \\n\\n**6. Visible Texts or Brandings:**\\n\\nThe text \"**www.Kanomama.com**\" is overlayed on the video several times throughout the video. A red container has a text \"ผ้าซัก\" on it.\\n\\n**Summary:**\\n\\nThe video starts at a seafood market displaying many fresh options. The initial scenes show the customer making his selection of Red snapper, mussels, clams, calamari and shrimps. Then, the video transitions to the preparation of the food and to the final shots of the cooked dishes being enjoyed at the restaurant. The video promotes the website \"**www.Kanomama.com**\" which looks to be the name of the restaurant or market. The final scenes showcase a satisfying dining experience.\\n'])\n","Retrieval: Okay, here's a breakdown of the video's storyline, characters, and other elements:\n","\n","**1. Story:** The video opens inside a restaurant, showcasing unique table setups with individual grilling stations and overhead exhaust pipes. A staff member is seen preparing at a station. The scene shifts to show the restaurant's exterior with a graphic that states \"K5\" and then focuses on a grill top at a table. The video then introduces a staff member carrying a silver exhaust pipe, which is then installed. Subsequently, a staff member is seen opening a refrigerator and picks two bottles of beer. The beers are brought to the table where two men are waiting. The beers are opened, poured, and then the camera focuses on the grill and then another staff member is seen carrying a pan with meat.  Hot coals are added to the grill. The next scene shows the placing of marinated meats, and other platters of sides on the table and those are grilled. The diners eat the grilled foods using chopsticks. The camera alternates between meat cooking and two men eating and enjoying their meals, followed by a close-up of an oyster with a topping being cooked and eaten.\n","\n","**2. Characters:**\n","   - There are several staff members, dressed in red and black uniforms. They are focused on setting up and serving the customers. The staff in the initial restaurant scenes moves quickly to install the exhaust pipes. The staff members that bring food are seen working in the kitchen.\n","  - Two male diners are shown, one in a gray jacket and the other in a tan colored sweater, enjoying the grilled food. The diners do the grilling themselves at their table. They also appear to be trying different platters of food.\n","\n","**3. Narration or Voiceover**: The video has music with a Korean pop song and there are no narrations or voiceovers in the video.\n","\n","**4. Transitions and Pacing:** The video uses quick cuts to change between scenes, creating a fast-paced feel. There are some close up zoom-ins on food and the grilling process. This helps in highlighting the experience and unique cooking style.\n","\n","**5. Mood and Tone:** The overall tone of the video is lively and inviting with an upbeat tone. The bright lighting and fast pace of the edits suggest an active dining atmosphere. The music also enhances the lively mood.\n","\n","**6. Visible Texts or Brandings**: The visible texts include \"K5\" as mentioned in the storyline and the restaurant's menu and promotional material with chinese characters. There is text on the beer bottle \"Kraitzauber\". A red paper wrapper says in chinese and in english text \"SPANNER BARBEQUE\". There is also price in yuan text which is displayed on the refrigerator that states \"Mineral water 3 yuan per bottle\".\n","\n","**Summary**: The video is a dynamic showcase of a Korean-style barbeque restaurant. It emphasizes the unique dining experience with personal grilling stations, the installation of equipment and the steps from selecting drinks to prepping food to grilling the food. The video is set to a lively soundtrack highlighting the restaurant's unique setup. The staff members and diners are engaged with each other and eating at the restaurant. The overall tone is vibrant and inviting. It encourages customers to try the food and beverages with the Kraitzauber beer. The video's fast pace and numerous close-ups emphasize the food and its preparation, showcasing a \"Spanner Barbecue\".\n"," Okay, let's break down the video step by step.\n","\n","**1. Story:**\n","\n","The video opens with a close-up view of a seafood display on ice. The setting is a restaurant or market where fresh seafood is being sold. The initial focus is on the abundance of options: red snapper, various smaller fish, mussels, and skewered vegetables and seafood. The video progresses as a customer selects several items, and then showcases the dishes prepared. The final scene shows people enjoying the dishes at a restaurant table. \n","\n","**2. Characters:**\n","\n","There are two characters, a customer and a vendor. The customer is visible at the beginning of the video in a shot of his arm while he’s selecting food. In later shots, his face is visible while he is enjoying the food in the restaurant. He appears excited to be choosing fresh seafood and very much enjoys the finished dishes. The vendor is mostly out of frame; we see their arms and hands as they pick out seafood for the customer.\n","\n","**3. Narration or Voiceover**:\n","\n","There is a conversation between the customer and the vendor where the customer is placing an order.\n","\n","**4. Transitions and Pacing**:\n","\n","The video uses a mix of cuts and quick transitions to move between scenes, from the display to the selection and then the final dishes. The fast cuts creates a sense of anticipation, especially when moving from selecting the food to seeing it cooked and served. The transitions are efficient, maintaining a moderate pace that is not rushed but gives a nice summary.\n","\n","**5. Mood and Tone:**\n","\n","The initial mood of the video is energetic and exciting, with all the fresh seafood on ice. The middle section shifts the tone to a quick pace as the vendor is selecting the food. The final section of the video is a calm, satisfied feeling as people enjoy the freshly prepared dishes. \n","\n","**6. Visible Texts or Brandings:**\n","\n","The text \"**www.Kanomama.com**\" is overlayed on the video several times throughout the video. A red container has a text \"ผ้าซัก\" on it.\n","\n","**Summary:**\n","\n","The video starts at a seafood market displaying many fresh options. The initial scenes show the customer making his selection of Red snapper, mussels, clams, calamari and shrimps. Then, the video transitions to the preparation of the food and to the final shots of the cooked dishes being enjoyed at the restaurant. The video promotes the website \"**www.Kanomama.com**\" which looks to be the name of the restaurant or market. The final scenes showcase a satisfying dining experience.\n","\n","The message is: [SystemMessage(content='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:\\nOkay, here\\'s a breakdown of the video\\'s storyline, characters, and other elements:\\n\\n**1. Story:** The video opens inside a restaurant, showcasing unique table setups with individual grilling stations and overhead exhaust pipes. A staff member is seen preparing at a station. The scene shifts to show the restaurant\\'s exterior with a graphic that states \"K5\" and then focuses on a grill top at a table. The video then introduces a staff member carrying a silver exhaust pipe, which is then installed. Subsequently, a staff member is seen opening a refrigerator and picks two bottles of beer. The beers are brought to the table where two men are waiting. The beers are opened, poured, and then the camera focuses on the grill and then another staff member is seen carrying a pan with meat.  Hot coals are added to the grill. The next scene shows the placing of marinated meats, and other platters of sides on the table and those are grilled. The diners eat the grilled foods using chopsticks. The camera alternates between meat cooking and two men eating and enjoying their meals, followed by a close-up of an oyster with a topping being cooked and eaten.\\n\\n**2. Characters:**\\n   - There are several staff members, dressed in red and black uniforms. They are focused on setting up and serving the customers. The staff in the initial restaurant scenes moves quickly to install the exhaust pipes. The staff members that bring food are seen working in the kitchen.\\n  - Two male diners are shown, one in a gray jacket and the other in a tan colored sweater, enjoying the grilled food. The diners do the grilling themselves at their table. They also appear to be trying different platters of food.\\n\\n**3. Narration or Voiceover**: The video has music with a Korean pop song and there are no narrations or voiceovers in the video.\\n\\n**4. Transitions and Pacing:** The video uses quick cuts to change between scenes, creating a fast-paced feel. There are some close up zoom-ins on food and the grilling process. This helps in highlighting the experience and unique cooking style.\\n\\n**5. Mood and Tone:** The overall tone of the video is lively and inviting with an upbeat tone. The bright lighting and fast pace of the edits suggest an active dining atmosphere. The music also enhances the lively mood.\\n\\n**6. Visible Texts or Brandings**: The visible texts include \"K5\" as mentioned in the storyline and the restaurant\\'s menu and promotional material with chinese characters. There is text on the beer bottle \"Kraitzauber\". A red paper wrapper says in chinese and in english text \"SPANNER BARBEQUE\". There is also price in yuan text which is displayed on the refrigerator that states \"Mineral water 3 yuan per bottle\".\\n\\n**Summary**: The video is a dynamic showcase of a Korean-style barbeque restaurant. It emphasizes the unique dining experience with personal grilling stations, the installation of equipment and the steps from selecting drinks to prepping food to grilling the food. The video is set to a lively soundtrack highlighting the restaurant\\'s unique setup. The staff members and diners are engaged with each other and eating at the restaurant. The overall tone is vibrant and inviting. It encourages customers to try the food and beverages with the Kraitzauber beer. The video\\'s fast pace and numerous close-ups emphasize the food and its preparation, showcasing a \"Spanner Barbecue\".\\n Okay, let\\'s break down the video step by step.\\n\\n**1. Story:**\\n\\nThe video opens with a close-up view of a seafood display on ice. The setting is a restaurant or market where fresh seafood is being sold. The initial focus is on the abundance of options: red snapper, various smaller fish, mussels, and skewered vegetables and seafood. The video progresses as a customer selects several items, and then showcases the dishes prepared. The final scene shows people enjoying the dishes at a restaurant table. \\n\\n**2. Characters:**\\n\\nThere are two characters, a customer and a vendor. The customer is visible at the beginning of the video in a shot of his arm while he’s selecting food. In later shots, his face is visible while he is enjoying the food in the restaurant. He appears excited to be choosing fresh seafood and very much enjoys the finished dishes. The vendor is mostly out of frame; we see their arms and hands as they pick out seafood for the customer.\\n\\n**3. Narration or Voiceover**:\\n\\nThere is a conversation between the customer and the vendor where the customer is placing an order.\\n\\n**4. Transitions and Pacing**:\\n\\nThe video uses a mix of cuts and quick transitions to move between scenes, from the display to the selection and then the final dishes. The fast cuts creates a sense of anticipation, especially when moving from selecting the food to seeing it cooked and served. The transitions are efficient, maintaining a moderate pace that is not rushed but gives a nice summary.\\n\\n**5. Mood and Tone:**\\n\\nThe initial mood of the video is energetic and exciting, with all the fresh seafood on ice. The middle section shifts the tone to a quick pace as the vendor is selecting the food. The final section of the video is a calm, satisfied feeling as people enjoy the freshly prepared dishes. \\n\\n**6. Visible Texts or Brandings:**\\n\\nThe text \"**www.Kanomama.com**\" is overlayed on the video several times throughout the video. A red container has a text \"ผ้าซัก\" on it.\\n\\n**Summary:**\\n\\nThe video starts at a seafood market displaying many fresh options. The initial scenes show the customer making his selection of Red snapper, mussels, clams, calamari and shrimps. Then, the video transitions to the preparation of the food and to the final shots of the cooked dishes being enjoyed at the restaurant. The video promotes the website \"**www.Kanomama.com**\" which looks to be the name of the restaurant or market. The final scenes showcase a satisfying dining experience.\\n.\\n  \\n\\n Now let\\'s start creating the storyline for my topic. The topic of the video is: \\n\\nI want to make a promotional video of restaurant.\\n\\n\\n  \\n  **Final Reminder** You have to strongly focus on these topics while creating the storyline: [\"Showcase a behind-the-scenes look at the restaurant\\'s kitchen, highlighting the chefs\\' skills and the preparation of the special dish.\", \\'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.\\']', additional_kwargs={}, response_metadata={})]\n","The response of story generator is:\n"," content='<function=StoryFormatter>{\"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<ipython-input-62-cf917e977311>\u001b[0m in \u001b[0;36m<cell line: 0>\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<ipython-input-58-048d5f9edff5>\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":[]}]}