diff --git a/app.py b/app.py index 397aa5bd2687d88babd86fcbc99f4d026128c9e4..36068d40821599fa84ff25a08ca733fa879ef02d 100644 --- a/app.py +++ b/app.py @@ -3,6 +3,7 @@ Streamlit app containing the UI and the application logic. """ import datetime import logging +import os import pathlib import random import tempfile @@ -50,9 +51,31 @@ def _get_prompt_template(is_refinement: bool) -> str: @st.cache_resource def _get_llm(): + """ + Get an LLM instance. + + :return: The LLM. + """ + return llm_helper.get_hf_endpoint() +@st.cache_data +def _get_icons_list() -> List[str]: + """ + Get a list of available icons names without the dir name and file extension. + + :return: A llist of the icons. + """ + + items = pathlib.Path(GlobalConfig.ICONS_DIR).glob('*.png') + items = [ + os.path.basename(str(item)).removesuffix('.png') for item in items + ] + + return items + + APP_TEXT = _load_strings() # Session variables @@ -169,13 +192,15 @@ def set_up_chat_ui(): formatted_template = prompt_template.format( **{ 'instructions': list_of_msgs, - 'previous_content': _get_last_response() + 'previous_content': _get_last_response(), + 'icons_list': '\n'.join(_get_icons_list()) } ) else: formatted_template = prompt_template.format( **{ 'question': prompt, + 'icons_list': '\n'.join(_get_icons_list()) } ) @@ -204,7 +229,10 @@ def set_up_chat_ui(): logger.debug('Cleaned JSON: %s', response_cleaned) # Now create the PPT file - progress_bar.progress(0.95, text='Searching photos and generating the slide deck...') + progress_bar.progress( + GlobalConfig.LLM_PROGRESS_MAX, + text='Finding photos online and generating the slide deck...' + ) path = generate_slide_deck(response_cleaned) progress_bar.progress(1.0, text='Done!') diff --git a/bootstrap-icons-1.11.3/png128/0-circle.png b/bootstrap-icons-1.11.3/png128/0-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..54f47eb1eae9f340f4e6a612c7ac56ac715f48ef Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/0-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/1-circle.png b/bootstrap-icons-1.11.3/png128/1-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..fc5bf8551e6b9adb94b5c855c29416c8889c48cb Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/1-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/123.png b/bootstrap-icons-1.11.3/png128/123.png new file mode 100644 index 0000000000000000000000000000000000000000..c398bcaeabb4ca8319b017491ce58e3cbb12c17a Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/123.png differ diff --git a/bootstrap-icons-1.11.3/png128/2-circle.png b/bootstrap-icons-1.11.3/png128/2-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..0c23c949f76114c837f2963ec64f5d1d7fb6b8ac Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/2-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/3-circle.png b/bootstrap-icons-1.11.3/png128/3-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..bc8fb86a1c6514d55a9e8ab213a628c7978f86f5 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/3-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/4-circle.png b/bootstrap-icons-1.11.3/png128/4-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..3e01f38654cc2020765e7c7941b37463aaf599de Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/4-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/5-circle.png b/bootstrap-icons-1.11.3/png128/5-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..764078232850575eb31cd8b880d9c035916e35eb Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/5-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/6-circle.png b/bootstrap-icons-1.11.3/png128/6-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..21969c5f8c2ca81ac78dd32df80eff6e23f7e699 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/6-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/7-circle.png b/bootstrap-icons-1.11.3/png128/7-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..47244a9e177268563a3d22c3d20f3d548ccf9846 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/7-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/8-circle.png b/bootstrap-icons-1.11.3/png128/8-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..dec789bbe0ee0399159bbe4003b79f8e1f2633ca Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/8-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/9-circle.png b/bootstrap-icons-1.11.3/png128/9-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..97ce7c79930e78396a6f7b2e3e3a1f5077d94886 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/9-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/activity.png b/bootstrap-icons-1.11.3/png128/activity.png new file mode 100644 index 0000000000000000000000000000000000000000..29d173caabfee8dbb024414671252eccc2bf6f5e Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/activity.png differ diff --git a/bootstrap-icons-1.11.3/png128/airplane.png b/bootstrap-icons-1.11.3/png128/airplane.png new file mode 100644 index 0000000000000000000000000000000000000000..d99b0d657016d5803783eb3f9c7bad28770f0848 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/airplane.png differ diff --git a/bootstrap-icons-1.11.3/png128/alarm.png b/bootstrap-icons-1.11.3/png128/alarm.png new file mode 100644 index 0000000000000000000000000000000000000000..89634dbcb111f590e518b98bb45c1629867f32b6 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/alarm.png differ diff --git a/bootstrap-icons-1.11.3/png128/alphabet.png b/bootstrap-icons-1.11.3/png128/alphabet.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe4f1c0498ecb672182ff2740bc7da41eb93229 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/alphabet.png differ diff --git a/bootstrap-icons-1.11.3/png128/amazon.png b/bootstrap-icons-1.11.3/png128/amazon.png new file mode 100644 index 0000000000000000000000000000000000000000..8161b2c5dde25d37492b54c00d85d23ff992d1fd Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/amazon.png differ diff --git a/bootstrap-icons-1.11.3/png128/android2.png b/bootstrap-icons-1.11.3/png128/android2.png new file mode 100644 index 0000000000000000000000000000000000000000..aac1a5407e30df19cb07e574a73fff333c90eaf9 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/android2.png differ diff --git a/bootstrap-icons-1.11.3/png128/apple.png b/bootstrap-icons-1.11.3/png128/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac1512bac7d1b0c08bfc4813a87da851a5082e1 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/apple.png differ diff --git a/bootstrap-icons-1.11.3/png128/archive.png b/bootstrap-icons-1.11.3/png128/archive.png new file mode 100644 index 0000000000000000000000000000000000000000..dad00d7ffca81e9a0172c2329228516cfa9b1534 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/archive.png differ diff --git a/bootstrap-icons-1.11.3/png128/award-fill.png b/bootstrap-icons-1.11.3/png128/award-fill.png new file mode 100644 index 0000000000000000000000000000000000000000..704537ce37318f8f561d1e38e0b91f4ac58759f4 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/award-fill.png differ diff --git a/bootstrap-icons-1.11.3/png128/award.png b/bootstrap-icons-1.11.3/png128/award.png new file mode 100644 index 0000000000000000000000000000000000000000..282c114e0adfa595a90f67a6cd7ec0df06b41937 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/award.png differ diff --git a/bootstrap-icons-1.11.3/png128/balloon.png b/bootstrap-icons-1.11.3/png128/balloon.png new file mode 100644 index 0000000000000000000000000000000000000000..430a0bd23b3bc95fe0ef4d0684536c45af3b621d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/balloon.png differ diff --git a/bootstrap-icons-1.11.3/png128/ban.png b/bootstrap-icons-1.11.3/png128/ban.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9ff0d59edcd335de08205789cda9d6b0c4c600 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/ban.png differ diff --git a/bootstrap-icons-1.11.3/png128/bandaid.png b/bootstrap-icons-1.11.3/png128/bandaid.png new file mode 100644 index 0000000000000000000000000000000000000000..c3ca610d459cb55f08eb471afb0d42f1bba6bd12 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bandaid.png differ diff --git a/bootstrap-icons-1.11.3/png128/bank.png b/bootstrap-icons-1.11.3/png128/bank.png new file mode 100644 index 0000000000000000000000000000000000000000..29623d64da5f34831adeb5be210c7a46afa18a1f Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bank.png differ diff --git a/bootstrap-icons-1.11.3/png128/bank2.png b/bootstrap-icons-1.11.3/png128/bank2.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc4da284f03f19a8b13ab2440b917be7eb2efc4 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bank2.png differ diff --git a/bootstrap-icons-1.11.3/png128/bar-chart-line.png b/bootstrap-icons-1.11.3/png128/bar-chart-line.png new file mode 100644 index 0000000000000000000000000000000000000000..790a7312a0c99ea3cc893f837298bfb069e6006e Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bar-chart-line.png differ diff --git a/bootstrap-icons-1.11.3/png128/basket.png b/bootstrap-icons-1.11.3/png128/basket.png new file mode 100644 index 0000000000000000000000000000000000000000..f12d5e59093acfaea962037697d70214b3ff319a Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/basket.png differ diff --git a/bootstrap-icons-1.11.3/png128/battery-charging.png b/bootstrap-icons-1.11.3/png128/battery-charging.png new file mode 100644 index 0000000000000000000000000000000000000000..6653462a7bcf5de72c214b6d8701af937d9a3581 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/battery-charging.png differ diff --git a/bootstrap-icons-1.11.3/png128/bell-slash.png b/bootstrap-icons-1.11.3/png128/bell-slash.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6573cb82a4227c6258c5af21b3cf866fbb001f Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bell-slash.png differ diff --git a/bootstrap-icons-1.11.3/png128/bell.png b/bootstrap-icons-1.11.3/png128/bell.png new file mode 100644 index 0000000000000000000000000000000000000000..471edd200778ac45f92abfe7228cca4c5d0dcd4c Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bell.png differ diff --git a/bootstrap-icons-1.11.3/png128/bicycle.png b/bootstrap-icons-1.11.3/png128/bicycle.png new file mode 100644 index 0000000000000000000000000000000000000000..9ccce6a065645beb69676611d900b0a91e1a16c3 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bicycle.png differ diff --git a/bootstrap-icons-1.11.3/png128/bing.png b/bootstrap-icons-1.11.3/png128/bing.png new file mode 100644 index 0000000000000000000000000000000000000000..2214899be252e612843d5d57bdf9898a52a1bb03 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bing.png differ diff --git a/bootstrap-icons-1.11.3/png128/binoculars.png b/bootstrap-icons-1.11.3/png128/binoculars.png new file mode 100644 index 0000000000000000000000000000000000000000..5fee8e59399eec136bec72fe5df8a3e6c9c23c5c Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/binoculars.png differ diff --git a/bootstrap-icons-1.11.3/png128/bluetooth.png b/bootstrap-icons-1.11.3/png128/bluetooth.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9fb7d6565d99207340f4a551ac72e82c1eb623 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bluetooth.png differ diff --git a/bootstrap-icons-1.11.3/png128/book.png b/bootstrap-icons-1.11.3/png128/book.png new file mode 100644 index 0000000000000000000000000000000000000000..ef73c51cbb36cd540fe753bb38d9a451106f2957 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/book.png differ diff --git a/bootstrap-icons-1.11.3/png128/bookmark.png b/bootstrap-icons-1.11.3/png128/bookmark.png new file mode 100644 index 0000000000000000000000000000000000000000..1c4157b7e754e10c1ca96ff5661135a7461ed20d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bookmark.png differ diff --git a/bootstrap-icons-1.11.3/png128/bootstrap.png b/bootstrap-icons-1.11.3/png128/bootstrap.png new file mode 100644 index 0000000000000000000000000000000000000000..e862c3042d0e14c6577ab9631fe2365156f5e703 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bootstrap.png differ diff --git a/bootstrap-icons-1.11.3/png128/briefcase.png b/bootstrap-icons-1.11.3/png128/briefcase.png new file mode 100644 index 0000000000000000000000000000000000000000..9bed1c0d4d84c2507660a1c884e8aae3995b0b72 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/briefcase.png differ diff --git a/bootstrap-icons-1.11.3/png128/broadcast-pin.png b/bootstrap-icons-1.11.3/png128/broadcast-pin.png new file mode 100644 index 0000000000000000000000000000000000000000..4abd2229b3b5996bd1e4b5827ea3ffd662827e81 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/broadcast-pin.png differ diff --git a/bootstrap-icons-1.11.3/png128/browser-chrome.png b/bootstrap-icons-1.11.3/png128/browser-chrome.png new file mode 100644 index 0000000000000000000000000000000000000000..0fb8d4b76a8f63db37f5d6b6edaa8d3103c7850e Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/browser-chrome.png differ diff --git a/bootstrap-icons-1.11.3/png128/browser-edge.png b/bootstrap-icons-1.11.3/png128/browser-edge.png new file mode 100644 index 0000000000000000000000000000000000000000..b5332c5b562afeb59e665a7009b9294eb22d4c9d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/browser-edge.png differ diff --git a/bootstrap-icons-1.11.3/png128/browser-firefox.png b/bootstrap-icons-1.11.3/png128/browser-firefox.png new file mode 100644 index 0000000000000000000000000000000000000000..898a502a00044e7a1724f2fd1950208035578f34 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/browser-firefox.png differ diff --git a/bootstrap-icons-1.11.3/png128/browser-safari.png b/bootstrap-icons-1.11.3/png128/browser-safari.png new file mode 100644 index 0000000000000000000000000000000000000000..f9fc62833d0095cf7cb99d98589f27f085161d18 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/browser-safari.png differ diff --git a/bootstrap-icons-1.11.3/png128/brush.png b/bootstrap-icons-1.11.3/png128/brush.png new file mode 100644 index 0000000000000000000000000000000000000000..f80c663eb1caf13e2196e3f2a585cdd57ddc92b1 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/brush.png differ diff --git a/bootstrap-icons-1.11.3/png128/bucket.png b/bootstrap-icons-1.11.3/png128/bucket.png new file mode 100644 index 0000000000000000000000000000000000000000..aa435e13005e0bbcf3fd1900bb26df3f1b1523c2 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bucket.png differ diff --git a/bootstrap-icons-1.11.3/png128/bug-fill.png b/bootstrap-icons-1.11.3/png128/bug-fill.png new file mode 100644 index 0000000000000000000000000000000000000000..41e14d6d8e4d286c63ccb4eb68be8271b83bc2c8 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bug-fill.png differ diff --git a/bootstrap-icons-1.11.3/png128/bug.png b/bootstrap-icons-1.11.3/png128/bug.png new file mode 100644 index 0000000000000000000000000000000000000000..44fbe6f0630adefdba3a94840c0a9b5bc7a978d6 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bug.png differ diff --git a/bootstrap-icons-1.11.3/png128/building.png b/bootstrap-icons-1.11.3/png128/building.png new file mode 100644 index 0000000000000000000000000000000000000000..3a07874b1e912dd1771dcc6e17b1381fbcee4aa2 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/building.png differ diff --git a/bootstrap-icons-1.11.3/png128/bullseye.png b/bootstrap-icons-1.11.3/png128/bullseye.png new file mode 100644 index 0000000000000000000000000000000000000000..cac1147bbb0af22f9e87c37321b8377eafa0256b Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bullseye.png differ diff --git a/bootstrap-icons-1.11.3/png128/bus-front.png b/bootstrap-icons-1.11.3/png128/bus-front.png new file mode 100644 index 0000000000000000000000000000000000000000..5fcf88594732e1deb9972fca01932639e97ce4fb Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/bus-front.png differ diff --git a/bootstrap-icons-1.11.3/png128/cake2.png b/bootstrap-icons-1.11.3/png128/cake2.png new file mode 100644 index 0000000000000000000000000000000000000000..70f1ab92e3d3c7dd413a33d206b03c45c9aa6b80 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/cake2.png differ diff --git a/bootstrap-icons-1.11.3/png128/calculator.png b/bootstrap-icons-1.11.3/png128/calculator.png new file mode 100644 index 0000000000000000000000000000000000000000..b33c415bd454282040c95ef2d8a4b17b738d62b2 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/calculator.png differ diff --git a/bootstrap-icons-1.11.3/png128/camera.png b/bootstrap-icons-1.11.3/png128/camera.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3192ecb48728c42a632b56b35376a4c9a46ece Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/camera.png differ diff --git a/bootstrap-icons-1.11.3/png128/card-image.png b/bootstrap-icons-1.11.3/png128/card-image.png new file mode 100644 index 0000000000000000000000000000000000000000..66d81d99388b220ff444f21a46247a2e306a23ff Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/card-image.png differ diff --git a/bootstrap-icons-1.11.3/png128/cart3.png b/bootstrap-icons-1.11.3/png128/cart3.png new file mode 100644 index 0000000000000000000000000000000000000000..9b25a75e7d982c61783afc4c2422fc5168058015 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/cart3.png differ diff --git a/bootstrap-icons-1.11.3/png128/clipboard2-check.png b/bootstrap-icons-1.11.3/png128/clipboard2-check.png new file mode 100644 index 0000000000000000000000000000000000000000..b1544d00819526a4d23f7a1137441deff9a66c3b Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/clipboard2-check.png differ diff --git a/bootstrap-icons-1.11.3/png128/cloud-moon.png b/bootstrap-icons-1.11.3/png128/cloud-moon.png new file mode 100644 index 0000000000000000000000000000000000000000..4781ae81fd4553fbdab4760a79cc3fdf6b4280ca Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/cloud-moon.png differ diff --git a/bootstrap-icons-1.11.3/png128/cloud-sun.png b/bootstrap-icons-1.11.3/png128/cloud-sun.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed28c28e04dabcfd2f9b6144055dc801b9c28a0 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/cloud-sun.png differ diff --git a/bootstrap-icons-1.11.3/png128/cloud.png b/bootstrap-icons-1.11.3/png128/cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..edf3442d35a9d6d30a96f1f6211d1911296a0e29 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/cloud.png differ diff --git a/bootstrap-icons-1.11.3/png128/code-slash.png b/bootstrap-icons-1.11.3/png128/code-slash.png new file mode 100644 index 0000000000000000000000000000000000000000..7372f5fa90fec510dfd859f658035b262d1b6690 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/code-slash.png differ diff --git a/bootstrap-icons-1.11.3/png128/compass.png b/bootstrap-icons-1.11.3/png128/compass.png new file mode 100644 index 0000000000000000000000000000000000000000..9d96b2795200410e037495c13483b6ed4b5d6c09 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/compass.png differ diff --git a/bootstrap-icons-1.11.3/png128/cone-striped.png b/bootstrap-icons-1.11.3/png128/cone-striped.png new file mode 100644 index 0000000000000000000000000000000000000000..071731457c881c77d7c35d2b4c5315f1716cefa0 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/cone-striped.png differ diff --git a/bootstrap-icons-1.11.3/png128/cpu-fill.png b/bootstrap-icons-1.11.3/png128/cpu-fill.png new file mode 100644 index 0000000000000000000000000000000000000000..7d17ba0074f9a72275ad9017a7cb19d563842836 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/cpu-fill.png differ diff --git a/bootstrap-icons-1.11.3/png128/cpu.png b/bootstrap-icons-1.11.3/png128/cpu.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1edee055520f770087c51e49b7aae6d02133fb Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/cpu.png differ diff --git a/bootstrap-icons-1.11.3/png128/credit-card.png b/bootstrap-icons-1.11.3/png128/credit-card.png new file mode 100644 index 0000000000000000000000000000000000000000..ab97cecd076f0f829cf958096ca9ef218aec23fb Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/credit-card.png differ diff --git a/bootstrap-icons-1.11.3/png128/cup.png b/bootstrap-icons-1.11.3/png128/cup.png new file mode 100644 index 0000000000000000000000000000000000000000..8d3cd3c5d2190e146b25877e2b195208fde7047d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/cup.png differ diff --git a/bootstrap-icons-1.11.3/png128/currency-bitcoin.png b/bootstrap-icons-1.11.3/png128/currency-bitcoin.png new file mode 100644 index 0000000000000000000000000000000000000000..34ca9616beab6db0eece5f7dc36b6064af31372c Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/currency-bitcoin.png differ diff --git a/bootstrap-icons-1.11.3/png128/currency-dollar.png b/bootstrap-icons-1.11.3/png128/currency-dollar.png new file mode 100644 index 0000000000000000000000000000000000000000..14fbd46eb110c2446e4c06c4482ebee22a4c1907 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/currency-dollar.png differ diff --git a/bootstrap-icons-1.11.3/png128/currency-euro.png b/bootstrap-icons-1.11.3/png128/currency-euro.png new file mode 100644 index 0000000000000000000000000000000000000000..6113911b9019d16b4468ba6c182f5327c716e22e Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/currency-euro.png differ diff --git a/bootstrap-icons-1.11.3/png128/currency-exchange.png b/bootstrap-icons-1.11.3/png128/currency-exchange.png new file mode 100644 index 0000000000000000000000000000000000000000..88fc82fa7bdc3ed7d8d3f649af65d01b73bcf0f2 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/currency-exchange.png differ diff --git a/bootstrap-icons-1.11.3/png128/currency-pound.png b/bootstrap-icons-1.11.3/png128/currency-pound.png new file mode 100644 index 0000000000000000000000000000000000000000..13276f42a59856b81efc7a61c716c23280de41b5 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/currency-pound.png differ diff --git a/bootstrap-icons-1.11.3/png128/currency-rupee.png b/bootstrap-icons-1.11.3/png128/currency-rupee.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b3912402fbce34d5ee378f1f205492467ac2db Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/currency-rupee.png differ diff --git a/bootstrap-icons-1.11.3/png128/currency-yen.png b/bootstrap-icons-1.11.3/png128/currency-yen.png new file mode 100644 index 0000000000000000000000000000000000000000..7afd975ce7d24026d133d226c6b4eff0f6fa5566 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/currency-yen.png differ diff --git a/bootstrap-icons-1.11.3/png128/dash-circle.png b/bootstrap-icons-1.11.3/png128/dash-circle.png new file mode 100644 index 0000000000000000000000000000000000000000..c2146bafb02f7bc412949cc01dda70713cb0f64a Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/dash-circle.png differ diff --git a/bootstrap-icons-1.11.3/png128/database.png b/bootstrap-icons-1.11.3/png128/database.png new file mode 100644 index 0000000000000000000000000000000000000000..509e8e0c4666c8fa2ba2788a5ac651509b3827c5 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/database.png differ diff --git a/bootstrap-icons-1.11.3/png128/device-ssd.png b/bootstrap-icons-1.11.3/png128/device-ssd.png new file mode 100644 index 0000000000000000000000000000000000000000..ec2533109e8e0dbe7516e754f06c187c1224e44f Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/device-ssd.png differ diff --git a/bootstrap-icons-1.11.3/png128/display.png b/bootstrap-icons-1.11.3/png128/display.png new file mode 100644 index 0000000000000000000000000000000000000000..94dbf7cbd09b74d45383b9d1cadfe197300c2a22 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/display.png differ diff --git a/bootstrap-icons-1.11.3/png128/envelope.png b/bootstrap-icons-1.11.3/png128/envelope.png new file mode 100644 index 0000000000000000000000000000000000000000..1c9fe342c58e6568e0b17b7246333ef46aa8219a Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/envelope.png differ diff --git a/bootstrap-icons-1.11.3/png128/ev-station-fill.png b/bootstrap-icons-1.11.3/png128/ev-station-fill.png new file mode 100644 index 0000000000000000000000000000000000000000..a542bf95332f2139316e9d9be499bfcd9260d60d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/ev-station-fill.png differ diff --git a/bootstrap-icons-1.11.3/png128/ev-station.png b/bootstrap-icons-1.11.3/png128/ev-station.png new file mode 100644 index 0000000000000000000000000000000000000000..10cd0de9398f6516cf6a2c35e9f5f8c1941fa3fb Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/ev-station.png differ diff --git a/bootstrap-icons-1.11.3/png128/exclamation-triangle.png b/bootstrap-icons-1.11.3/png128/exclamation-triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..5c9484fb959d67c8aa01f2383d048f00152a0ee3 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/exclamation-triangle.png differ diff --git a/bootstrap-icons-1.11.3/png128/facebook.png b/bootstrap-icons-1.11.3/png128/facebook.png new file mode 100644 index 0000000000000000000000000000000000000000..2d61f4e7351c05d4422f300796e791f1f9b51bb9 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/facebook.png differ diff --git a/bootstrap-icons-1.11.3/png128/feather.png b/bootstrap-icons-1.11.3/png128/feather.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d6b37a59b8ce3f889b47936ca218067990d352 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/feather.png differ diff --git a/bootstrap-icons-1.11.3/png128/fingerprint.png b/bootstrap-icons-1.11.3/png128/fingerprint.png new file mode 100644 index 0000000000000000000000000000000000000000..599a5da3f3816c01e7548704ad94822b555c62c6 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/fingerprint.png differ diff --git a/bootstrap-icons-1.11.3/png128/fire.png b/bootstrap-icons-1.11.3/png128/fire.png new file mode 100644 index 0000000000000000000000000000000000000000..6c367a871592ce3183a093d509a241ad9d973c43 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/fire.png differ diff --git a/bootstrap-icons-1.11.3/png128/flag.png b/bootstrap-icons-1.11.3/png128/flag.png new file mode 100644 index 0000000000000000000000000000000000000000..2aae6912ae304e8e1cdec7479da500fc99d8f7a6 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/flag.png differ diff --git a/bootstrap-icons-1.11.3/png128/floppy.png b/bootstrap-icons-1.11.3/png128/floppy.png new file mode 100644 index 0000000000000000000000000000000000000000..417862a92062152115a6638d494ba524aded969a Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/floppy.png differ diff --git a/bootstrap-icons-1.11.3/png128/flower1.png b/bootstrap-icons-1.11.3/png128/flower1.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1a86e2ed8389ffc652a309ea5bac317f7bbf4c Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/flower1.png differ diff --git a/bootstrap-icons-1.11.3/png128/flower3.png b/bootstrap-icons-1.11.3/png128/flower3.png new file mode 100644 index 0000000000000000000000000000000000000000..624eb0fb770d756906e95449864a1e9c44c22bb8 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/flower3.png differ diff --git a/bootstrap-icons-1.11.3/png128/folder.png b/bootstrap-icons-1.11.3/png128/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..2108e64b3ac2253d88a8bf6ad0f4d65cffc52199 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/folder.png differ diff --git a/bootstrap-icons-1.11.3/png128/funnel.png b/bootstrap-icons-1.11.3/png128/funnel.png new file mode 100644 index 0000000000000000000000000000000000000000..e68c290a0f92bfa83b44b43ecd6cae33f420820d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/funnel.png differ diff --git a/bootstrap-icons-1.11.3/png128/gear-wide.png b/bootstrap-icons-1.11.3/png128/gear-wide.png new file mode 100644 index 0000000000000000000000000000000000000000..41b616ead514eca32635247352f8be7fb615c798 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/gear-wide.png differ diff --git a/bootstrap-icons-1.11.3/png128/gem.png b/bootstrap-icons-1.11.3/png128/gem.png new file mode 100644 index 0000000000000000000000000000000000000000..bd7b34a69c6140d3e662f300cc3f77114015eed8 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/gem.png differ diff --git a/bootstrap-icons-1.11.3/png128/geo-alt.png b/bootstrap-icons-1.11.3/png128/geo-alt.png new file mode 100644 index 0000000000000000000000000000000000000000..2d46517d070373677d5557c90543ddac1e871287 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/geo-alt.png differ diff --git a/bootstrap-icons-1.11.3/png128/github.png b/bootstrap-icons-1.11.3/png128/github.png new file mode 100644 index 0000000000000000000000000000000000000000..efeb414441acfcea1bd2ef3c483f9a79b808d64c Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/github.png differ diff --git a/bootstrap-icons-1.11.3/png128/globe2.png b/bootstrap-icons-1.11.3/png128/globe2.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd1e356c13326761c93ebbed508b51580ba0f9d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/globe2.png differ diff --git a/bootstrap-icons-1.11.3/png128/google.png b/bootstrap-icons-1.11.3/png128/google.png new file mode 100644 index 0000000000000000000000000000000000000000..38aade8312bae18d56fd0fa752ee9b6ae103957d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/google.png differ diff --git a/bootstrap-icons-1.11.3/png128/graph-down-arrow.png b/bootstrap-icons-1.11.3/png128/graph-down-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..7c10f4a3b9bb461a8cdba3c7dccd8cf848862940 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/graph-down-arrow.png differ diff --git a/bootstrap-icons-1.11.3/png128/graph-up-arrow.png b/bootstrap-icons-1.11.3/png128/graph-up-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..adab0c9520d11e835da7d478c02fe28193bedc60 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/graph-up-arrow.png differ diff --git a/bootstrap-icons-1.11.3/png128/grid-3x3-gap.png b/bootstrap-icons-1.11.3/png128/grid-3x3-gap.png new file mode 100644 index 0000000000000000000000000000000000000000..346a802691331a3d55dff43abe1a732d1f2c1d2c Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/grid-3x3-gap.png differ diff --git a/bootstrap-icons-1.11.3/png128/hammer.png b/bootstrap-icons-1.11.3/png128/hammer.png new file mode 100644 index 0000000000000000000000000000000000000000..11a37117ced2b07bcac9ba8a45e63d08f5061296 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/hammer.png differ diff --git a/bootstrap-icons-1.11.3/png128/handbag.png b/bootstrap-icons-1.11.3/png128/handbag.png new file mode 100644 index 0000000000000000000000000000000000000000..8aeda881bd702edeb6804d7e7f616b9465ee7f27 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/handbag.png differ diff --git a/bootstrap-icons-1.11.3/png128/headset.png b/bootstrap-icons-1.11.3/png128/headset.png new file mode 100644 index 0000000000000000000000000000000000000000..3a52f69217d08116ebcd7298e07fe24727ac9de7 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/headset.png differ diff --git a/bootstrap-icons-1.11.3/png128/heart.png b/bootstrap-icons-1.11.3/png128/heart.png new file mode 100644 index 0000000000000000000000000000000000000000..e9aa685df428098bcc46a5bf8d6a7042cb482598 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/heart.png differ diff --git a/bootstrap-icons-1.11.3/png128/heartbreak.png b/bootstrap-icons-1.11.3/png128/heartbreak.png new file mode 100644 index 0000000000000000000000000000000000000000..b5ddc37c7971e685b1258e8425311e58c4c3b20d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/heartbreak.png differ diff --git a/bootstrap-icons-1.11.3/png128/hospital.png b/bootstrap-icons-1.11.3/png128/hospital.png new file mode 100644 index 0000000000000000000000000000000000000000..93400d091a8c428b06dfd09bea4be06603567444 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/hospital.png differ diff --git a/bootstrap-icons-1.11.3/png128/hourglass-split.png b/bootstrap-icons-1.11.3/png128/hourglass-split.png new file mode 100644 index 0000000000000000000000000000000000000000..a1fbbb716c7289b789004fa0064a2410d98927cf Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/hourglass-split.png differ diff --git a/bootstrap-icons-1.11.3/png128/house.png b/bootstrap-icons-1.11.3/png128/house.png new file mode 100644 index 0000000000000000000000000000000000000000..5be282e94b6b438e6f5b6472c1311ab4bfdda308 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/house.png differ diff --git a/bootstrap-icons-1.11.3/png128/journal-text.png b/bootstrap-icons-1.11.3/png128/journal-text.png new file mode 100644 index 0000000000000000000000000000000000000000..28b5694af02507ed9961082a6ef4ce403e2fedee Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/journal-text.png differ diff --git a/bootstrap-icons-1.11.3/png128/key.png b/bootstrap-icons-1.11.3/png128/key.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc4363f0d61a1c315d3bcde1b9ea029b8be078b Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/key.png differ diff --git a/bootstrap-icons-1.11.3/png128/lightbulb.png b/bootstrap-icons-1.11.3/png128/lightbulb.png new file mode 100644 index 0000000000000000000000000000000000000000..67cb0da1182e420880cf330e92065dd17a525a41 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/lightbulb.png differ diff --git a/bootstrap-icons-1.11.3/png128/lightning.png b/bootstrap-icons-1.11.3/png128/lightning.png new file mode 100644 index 0000000000000000000000000000000000000000..f3bdf56e510bc272345f72c57b2596a829f86991 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/lightning.png differ diff --git a/bootstrap-icons-1.11.3/png128/linkedin.png b/bootstrap-icons-1.11.3/png128/linkedin.png new file mode 100644 index 0000000000000000000000000000000000000000..ebd0e9fc066d16bcf36ea70a515604ea1e26a794 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/linkedin.png differ diff --git a/bootstrap-icons-1.11.3/png128/magic.png b/bootstrap-icons-1.11.3/png128/magic.png new file mode 100644 index 0000000000000000000000000000000000000000..74a25817225223d627e5bb38e977a84a018a56b3 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/magic.png differ diff --git a/bootstrap-icons-1.11.3/png128/magnet.png b/bootstrap-icons-1.11.3/png128/magnet.png new file mode 100644 index 0000000000000000000000000000000000000000..f3d0bdd7faf2c740cfbf7f23ee10c0626044e5e0 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/magnet.png differ diff --git a/bootstrap-icons-1.11.3/png128/map.png b/bootstrap-icons-1.11.3/png128/map.png new file mode 100644 index 0000000000000000000000000000000000000000..92836990f928c8921a5f4cf45ca6a398c7854db4 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/map.png differ diff --git a/bootstrap-icons-1.11.3/png128/meta.png b/bootstrap-icons-1.11.3/png128/meta.png new file mode 100644 index 0000000000000000000000000000000000000000..73fbe10ddfde1281fbabe3568a81ab68848c8ded Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/meta.png differ diff --git a/bootstrap-icons-1.11.3/png128/microsoft.png b/bootstrap-icons-1.11.3/png128/microsoft.png new file mode 100644 index 0000000000000000000000000000000000000000..664aafaa83e0323dcfd817927502217bbf279a9d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/microsoft.png differ diff --git a/bootstrap-icons-1.11.3/png128/modem.png b/bootstrap-icons-1.11.3/png128/modem.png new file mode 100644 index 0000000000000000000000000000000000000000..936ae0e9dfe87b87999e6f6d2d2b298b64ab4692 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/modem.png differ diff --git a/bootstrap-icons-1.11.3/png128/moon-stars.png b/bootstrap-icons-1.11.3/png128/moon-stars.png new file mode 100644 index 0000000000000000000000000000000000000000..cbbc733604911c6c4c44dc300e31a0583de36394 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/moon-stars.png differ diff --git a/bootstrap-icons-1.11.3/png128/moon.png b/bootstrap-icons-1.11.3/png128/moon.png new file mode 100644 index 0000000000000000000000000000000000000000..2473062487bf8034ea600d9bcca562f9c69b8170 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/moon.png differ diff --git a/bootstrap-icons-1.11.3/png128/mortarboard.png b/bootstrap-icons-1.11.3/png128/mortarboard.png new file mode 100644 index 0000000000000000000000000000000000000000..7350c2a4f27745a67381f7319755e6805031b3c8 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/mortarboard.png differ diff --git a/bootstrap-icons-1.11.3/png128/motherboard.png b/bootstrap-icons-1.11.3/png128/motherboard.png new file mode 100644 index 0000000000000000000000000000000000000000..cb564c6ea8021c016045e00a25d6ae4d7f3e208a Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/motherboard.png differ diff --git a/bootstrap-icons-1.11.3/png128/music-note.png b/bootstrap-icons-1.11.3/png128/music-note.png new file mode 100644 index 0000000000000000000000000000000000000000..ea523976f84555ccb633fabfcb068414861d9f0f Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/music-note.png differ diff --git a/bootstrap-icons-1.11.3/png128/newspaper.png b/bootstrap-icons-1.11.3/png128/newspaper.png new file mode 100644 index 0000000000000000000000000000000000000000..726396b5d44eed2ec8eca0176f265931b219ac67 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/newspaper.png differ diff --git a/bootstrap-icons-1.11.3/png128/palette.png b/bootstrap-icons-1.11.3/png128/palette.png new file mode 100644 index 0000000000000000000000000000000000000000..a93a3914f0d50ea7f46aa3e7bfb226e1ae4b9a31 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/palette.png differ diff --git a/bootstrap-icons-1.11.3/png128/paperclip.png b/bootstrap-icons-1.11.3/png128/paperclip.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb24a81a030a6107e34c4279d1417e550eb842d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/paperclip.png differ diff --git a/bootstrap-icons-1.11.3/png128/pencil.png b/bootstrap-icons-1.11.3/png128/pencil.png new file mode 100644 index 0000000000000000000000000000000000000000..4ce7c96b5b7af7c4eda12b745b25aa7433411394 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/pencil.png differ diff --git a/bootstrap-icons-1.11.3/png128/people.png b/bootstrap-icons-1.11.3/png128/people.png new file mode 100644 index 0000000000000000000000000000000000000000..ce9752024fb87a54a341611f8051616cd6689e68 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/people.png differ diff --git a/bootstrap-icons-1.11.3/png128/person.png b/bootstrap-icons-1.11.3/png128/person.png new file mode 100644 index 0000000000000000000000000000000000000000..3313f1d071a5a400a902f776d1e8c56e0e865929 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/person.png differ diff --git a/bootstrap-icons-1.11.3/png128/phone-vibrate.png b/bootstrap-icons-1.11.3/png128/phone-vibrate.png new file mode 100644 index 0000000000000000000000000000000000000000..9ec0c2fc09a4e1a22385ba28b7030436a3f23620 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/phone-vibrate.png differ diff --git a/bootstrap-icons-1.11.3/png128/piggy-bank.png b/bootstrap-icons-1.11.3/png128/piggy-bank.png new file mode 100644 index 0000000000000000000000000000000000000000..348f34a55c9e0fa69d237c2f2a1c9c0b90e7aec5 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/piggy-bank.png differ diff --git a/bootstrap-icons-1.11.3/png128/pin-angle.png b/bootstrap-icons-1.11.3/png128/pin-angle.png new file mode 100644 index 0000000000000000000000000000000000000000..89a674aee883cf8cbe45d1c334bc8ab178b91d29 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/pin-angle.png differ diff --git a/bootstrap-icons-1.11.3/png128/printer.png b/bootstrap-icons-1.11.3/png128/printer.png new file mode 100644 index 0000000000000000000000000000000000000000..3020ec364da2dc4a9545e6b58fbb91c0a47fae71 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/printer.png differ diff --git a/bootstrap-icons-1.11.3/png128/question.png b/bootstrap-icons-1.11.3/png128/question.png new file mode 100644 index 0000000000000000000000000000000000000000..5f2ccb745edf187b0a8529659b53a5ae13c1dc94 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/question.png differ diff --git a/bootstrap-icons-1.11.3/png128/radioactive.png b/bootstrap-icons-1.11.3/png128/radioactive.png new file mode 100644 index 0000000000000000000000000000000000000000..45c4735e5398fc3a4613285a4b9c0602bbf1ae1b Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/radioactive.png differ diff --git a/bootstrap-icons-1.11.3/png128/recycle.png b/bootstrap-icons-1.11.3/png128/recycle.png new file mode 100644 index 0000000000000000000000000000000000000000..a58dcb65195e9d78d5e88fba6d451d23ff5ce774 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/recycle.png differ diff --git a/bootstrap-icons-1.11.3/png128/rocket-takeoff.png b/bootstrap-icons-1.11.3/png128/rocket-takeoff.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d278a3b281d30707e1be37675976e3c08aff7a Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/rocket-takeoff.png differ diff --git a/bootstrap-icons-1.11.3/png128/scissors.png b/bootstrap-icons-1.11.3/png128/scissors.png new file mode 100644 index 0000000000000000000000000000000000000000..e05d3690d139877aa0b004387453022059bb10af Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/scissors.png differ diff --git a/bootstrap-icons-1.11.3/png128/screwdriver.png b/bootstrap-icons-1.11.3/png128/screwdriver.png new file mode 100644 index 0000000000000000000000000000000000000000..dcbc2ac21abcc02ca640e63c30b3685d784894ae Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/screwdriver.png differ diff --git a/bootstrap-icons-1.11.3/png128/shield-check.png b/bootstrap-icons-1.11.3/png128/shield-check.png new file mode 100644 index 0000000000000000000000000000000000000000..1a0bf290e171a9e030277319dc8127cb7c2b8958 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/shield-check.png differ diff --git a/bootstrap-icons-1.11.3/png128/shuffle.png b/bootstrap-icons-1.11.3/png128/shuffle.png new file mode 100644 index 0000000000000000000000000000000000000000..d68889f604be26827bfa781d32a1d4e49231fc41 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/shuffle.png differ diff --git a/bootstrap-icons-1.11.3/png128/soundwave.png b/bootstrap-icons-1.11.3/png128/soundwave.png new file mode 100644 index 0000000000000000000000000000000000000000..e0acedc6406e8086daf92165561a92415fad63a5 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/soundwave.png differ diff --git a/bootstrap-icons-1.11.3/png128/speedometer.png b/bootstrap-icons-1.11.3/png128/speedometer.png new file mode 100644 index 0000000000000000000000000000000000000000..a327a92c4871b3dd71905f9853487a3260f3908a Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/speedometer.png differ diff --git a/bootstrap-icons-1.11.3/png128/stars.png b/bootstrap-icons-1.11.3/png128/stars.png new file mode 100644 index 0000000000000000000000000000000000000000..37f7c0cb4ce973011a9d8b87a73fe03bf90f83c1 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/stars.png differ diff --git a/bootstrap-icons-1.11.3/png128/suitcase2.png b/bootstrap-icons-1.11.3/png128/suitcase2.png new file mode 100644 index 0000000000000000000000000000000000000000..e11d11b827cd3b9c435654b507ef97a0ad9ff484 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/suitcase2.png differ diff --git a/bootstrap-icons-1.11.3/png128/table.png b/bootstrap-icons-1.11.3/png128/table.png new file mode 100644 index 0000000000000000000000000000000000000000..ddfa856f016a52e169b465d364534c407505bd46 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/table.png differ diff --git a/bootstrap-icons-1.11.3/png128/taxi-front.png b/bootstrap-icons-1.11.3/png128/taxi-front.png new file mode 100644 index 0000000000000000000000000000000000000000..1f004b6af047d27a01c6cbf0cb27db68a94fcffc Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/taxi-front.png differ diff --git a/bootstrap-icons-1.11.3/png128/telephone.png b/bootstrap-icons-1.11.3/png128/telephone.png new file mode 100644 index 0000000000000000000000000000000000000000..c55987a503e002eea6306801b43786a974d4e83a Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/telephone.png differ diff --git a/bootstrap-icons-1.11.3/png128/thermometer.png b/bootstrap-icons-1.11.3/png128/thermometer.png new file mode 100644 index 0000000000000000000000000000000000000000..7262a72551fb2fd93d1adf6774c962d51dbb2615 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/thermometer.png differ diff --git a/bootstrap-icons-1.11.3/png128/tools.png b/bootstrap-icons-1.11.3/png128/tools.png new file mode 100644 index 0000000000000000000000000000000000000000..5b1ddef6f8284a855832ea51e065dc7bdb2dcd61 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/tools.png differ diff --git a/bootstrap-icons-1.11.3/png128/translate.png b/bootstrap-icons-1.11.3/png128/translate.png new file mode 100644 index 0000000000000000000000000000000000000000..90d06bb7243ff78373c1671ac09f88373dd9592b Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/translate.png differ diff --git a/bootstrap-icons-1.11.3/png128/trash.png b/bootstrap-icons-1.11.3/png128/trash.png new file mode 100644 index 0000000000000000000000000000000000000000..7d9d4b7a84d192006fbce7f1932edb4bd1d4175c Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/trash.png differ diff --git a/bootstrap-icons-1.11.3/png128/trophy.png b/bootstrap-icons-1.11.3/png128/trophy.png new file mode 100644 index 0000000000000000000000000000000000000000..977999fcd705cd2c4138d9670f70b2180a19eae9 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/trophy.png differ diff --git a/bootstrap-icons-1.11.3/png128/truck.png b/bootstrap-icons-1.11.3/png128/truck.png new file mode 100644 index 0000000000000000000000000000000000000000..7feaae299507dcd93b591e8c610ff76dda2f2d92 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/truck.png differ diff --git a/bootstrap-icons-1.11.3/png128/ubuntu.png b/bootstrap-icons-1.11.3/png128/ubuntu.png new file mode 100644 index 0000000000000000000000000000000000000000..a11e3fe7de6cbf0f1faa5ca793fafc0c95bb044b Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/ubuntu.png differ diff --git a/bootstrap-icons-1.11.3/png128/umbrella.png b/bootstrap-icons-1.11.3/png128/umbrella.png new file mode 100644 index 0000000000000000000000000000000000000000..237f1a506e07a608e3ca0d6ce9cc7d896e585150 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/umbrella.png differ diff --git a/bootstrap-icons-1.11.3/png128/unlock.png b/bootstrap-icons-1.11.3/png128/unlock.png new file mode 100644 index 0000000000000000000000000000000000000000..82c4e002e8be13f4d882135f5669ec995aab416f Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/unlock.png differ diff --git a/bootstrap-icons-1.11.3/png128/virus.png b/bootstrap-icons-1.11.3/png128/virus.png new file mode 100644 index 0000000000000000000000000000000000000000..41aabbac30e4c562ddf3559682363e166266b1d8 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/virus.png differ diff --git a/bootstrap-icons-1.11.3/png128/wallet.png b/bootstrap-icons-1.11.3/png128/wallet.png new file mode 100644 index 0000000000000000000000000000000000000000..fb86ac6153d0977a163a6e1db83ea7781ca72622 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/wallet.png differ diff --git a/bootstrap-icons-1.11.3/png128/watch.png b/bootstrap-icons-1.11.3/png128/watch.png new file mode 100644 index 0000000000000000000000000000000000000000..83ecca8525ebad409f4b4f58ab88bbe621138548 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/watch.png differ diff --git a/bootstrap-icons-1.11.3/png128/whatsapp.png b/bootstrap-icons-1.11.3/png128/whatsapp.png new file mode 100644 index 0000000000000000000000000000000000000000..9e716445445aded018a652326a7fa3bf5563ba84 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/whatsapp.png differ diff --git a/bootstrap-icons-1.11.3/png128/wifi.png b/bootstrap-icons-1.11.3/png128/wifi.png new file mode 100644 index 0000000000000000000000000000000000000000..7d5f01c0b66034880bed05f07095c64c3b140d94 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/wifi.png differ diff --git a/bootstrap-icons-1.11.3/png128/yin-yang.png b/bootstrap-icons-1.11.3/png128/yin-yang.png new file mode 100644 index 0000000000000000000000000000000000000000..61a4405d1d0e12a4a726d236c7a8738dbbe74bd3 Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/yin-yang.png differ diff --git a/bootstrap-icons-1.11.3/png128/youtube.png b/bootstrap-icons-1.11.3/png128/youtube.png new file mode 100644 index 0000000000000000000000000000000000000000..3f1a8f4ddb1ae08123f04630738ec485a709489d Binary files /dev/null and b/bootstrap-icons-1.11.3/png128/youtube.png differ diff --git a/global_config.py b/global_config.py index bd438160cdfa19fce5af4240d2abe17c4e737980..6c1bb43892eefea622a44439b23d6362e11751ac 100644 --- a/global_config.py +++ b/global_config.py @@ -18,10 +18,10 @@ class GlobalConfig: """ HF_LLM_MODEL_NAME = 'mistralai/Mistral-Nemo-Instruct-2407' - LLM_MODEL_TEMPERATURE: float = 0.2 - LLM_MODEL_MIN_OUTPUT_LENGTH: int = 100 - LLM_MODEL_MAX_OUTPUT_LENGTH: int = 4 * 4096 - LLM_MODEL_MAX_INPUT_LENGTH: int = 750 + LLM_MODEL_TEMPERATURE = 0.2 + LLM_MODEL_MIN_OUTPUT_LENGTH = 100 + LLM_MODEL_MAX_OUTPUT_LENGTH = 4 * 4096 + LLM_MODEL_MAX_INPUT_LENGTH = 750 HUGGINGFACEHUB_API_TOKEN = os.environ.get('HUGGINGFACEHUB_API_TOKEN', '') METAPHOR_API_KEY = os.environ.get('METAPHOR_API_KEY', '') @@ -31,10 +31,12 @@ class GlobalConfig: APP_STRINGS_FILE = 'strings.json' PRELOAD_DATA_FILE = 'examples/example_02.json' SLIDES_TEMPLATE_FILE = 'langchain_templates/template_combined.txt' - # JSON_TEMPLATE_FILE = 'langchain_templates/text_to_json_template_02.txt' INITIAL_PROMPT_TEMPLATE = 'langchain_templates/chat_prompts/initial_template_v4_two_cols_img.txt' REFINEMENT_PROMPT_TEMPLATE = 'langchain_templates/chat_prompts/refinement_template_v4_two_cols_img.txt' + LLM_PROGRESS_MAX = 90 + ICONS_DIR = 'bootstrap-icons-1.11.3/png128/' + PPTX_TEMPLATE_FILES = { 'Basic': { 'file': 'pptx_templates/Blank.pptx', diff --git a/helpers/pptx_helper.py b/helpers/pptx_helper.py index 14b82f0ca9063b1acebd06dd65b59c9aeee060eb..9189f41d16519c2ce1e8a7431b0cc27779a3d2d9 100644 --- a/helpers/pptx_helper.py +++ b/helpers/pptx_helper.py @@ -2,6 +2,7 @@ A set of functions to create a PowerPoint slide deck. """ import logging +import os import pathlib import random import re @@ -27,19 +28,41 @@ load_dotenv() # English Metric Unit (used by PowerPoint) to inches EMU_TO_INCH_SCALING_FACTOR = 1.0 / 914400 +INCHES_2 = pptx.util.Inches(2) INCHES_1_5 = pptx.util.Inches(1.5) INCHES_1 = pptx.util.Inches(1) +INCHES_0_8 = pptx.util.Inches(0.8) +INCHES_0_9 = pptx.util.Inches(0.9) INCHES_0_5 = pptx.util.Inches(0.5) INCHES_0_4 = pptx.util.Inches(0.4) INCHES_0_3 = pptx.util.Inches(0.3) +INCHES_0_2 = pptx.util.Inches(0.2) STEP_BY_STEP_PROCESS_MARKER = '>> ' +ICON_BEGINNING_MARKER = '[[' +ICON_END_MARKER = ']]' + +ICON_SIZE = INCHES_0_8 +ICON_BG_SIZE = INCHES_1 + IMAGE_DISPLAY_PROBABILITY = 1 / 3.0 FOREGROUND_IMAGE_PROBABILITY = 0.8 + SLIDE_NUMBER_REGEX = re.compile(r"^slide[ ]+\d+:", re.IGNORECASE) +ICONS_REGEX = re.compile(r"\[\[(.*?)\]\]\s*(.*)") + +ICON_COLORS = [ + pptx.dml.color.RGBColor.from_string('800000'), # Maroon + pptx.dml.color.RGBColor.from_string('6A5ACD'), # SlateBlue + pptx.dml.color.RGBColor.from_string('556B2F'), # DarkOliveGreen + pptx.dml.color.RGBColor.from_string('2F4F4F'), # DarkSlateGray + pptx.dml.color.RGBColor.from_string('4682B4'), # SteelBlue + pptx.dml.color.RGBColor.from_string('5F9EA0'), # CadetBlue +] logger = logging.getLogger(__name__) +logging.getLogger('PIL.PngImagePlugin').setLevel(logging.ERROR) def remove_slide_number_from_heading(header: str) -> str: @@ -92,13 +115,21 @@ def generate_powerpoint_presentation( # Add content in a loop for a_slide in parsed_data['slides']: - is_processing_done = _handle_double_col_layout( + is_processing_done = _handle_icons_ideas( presentation=presentation, slide_json=a_slide, slide_width_inch=slide_width_inch, slide_height_inch=slide_height_inch ) + if not is_processing_done: + is_processing_done = _handle_double_col_layout( + presentation=presentation, + slide_json=a_slide, + slide_width_inch=slide_width_inch, + slide_height_inch=slide_height_inch + ) + if not is_processing_done: is_processing_done = _handle_step_by_step_process( presentation=presentation, @@ -426,6 +457,117 @@ def _handle_display_image__in_background( return True +def _handle_icons_ideas( + presentation: pptx.Presentation(), + slide_json: dict, + slide_width_inch: float, + slide_height_inch: float +): + """ + Add a slide with some icons and text. + If no suitable icons are found, the step numbers are shown. + + :param presentation: The presentation object. + :param slide_json: The content of the slide as JSON data. + :param slide_width_inch: The width of the slide in inches. + :param slide_height_inch: The height of the slide in inches. + :return: True if the slide has been processed. + """ + + if 'bullet_points' in slide_json and slide_json['bullet_points']: + items = slide_json['bullet_points'] + + # Ensure that it is a single list of strings without any sub-list + for step in items: + if not isinstance(step, str) or not step.startswith(ICON_BEGINNING_MARKER): + return False + + slide_layout = presentation.slide_layouts[5] + slide = presentation.slides.add_slide(slide_layout) + slide.shapes.title.text = remove_slide_number_from_heading(slide_json['heading']) + + n_items = len(items) + text_box_size = INCHES_2 + + # Calculate the total width of all pictures and the spacing + total_width = n_items * ICON_SIZE + # slide_width = presentation.slide_width + spacing = (pptx.util.Inches(slide_width_inch) - total_width) / (n_items + 1) + + for idx, item in enumerate(items): + # Extract the icon name and text + match = ICONS_REGEX.search(item) + + if not match: + print('No icon/text pattern match found...skipping to the next item') + continue + + icon_name = match.group(1) + accompanying_text = match.group(2) + icon_path = f'{GlobalConfig.ICONS_DIR}/{icon_name}.png' + + left = spacing + idx * (ICON_SIZE + spacing) + top = pptx.util.Inches(2) # Adjust the vertical position as needed + + # Calculate the center position for alignment + center = left + ICON_SIZE / 2 + + # Add a rectangle shape with a fill color (background) + # The size of the shape is slightly bigger than the icon, so align the icon position + shape = slide.shapes.add_shape( + MSO_AUTO_SHAPE_TYPE.ROUNDED_RECTANGLE, + center - INCHES_0_5, + top - (ICON_BG_SIZE - ICON_SIZE) / 2, + INCHES_1, INCHES_1 + ) + shape.fill.solid() + + # Set the icon's background shape color + color = random.choice(ICON_COLORS) + shape.fill.fore_color.rgb = color + shape.line.color.rgb = color + + # Add the icon image on top of the colored shape + try: + slide.shapes.add_picture(icon_path, left, top, height=ICON_SIZE) + except FileNotFoundError: + logger.error( + 'Icon %s not found...using generic step number as icon...', + icon_name + ) + step_icon_path = f'{GlobalConfig.ICONS_DIR}/{idx + 1}-circle.png' + if os.path.exists(step_icon_path): + slide.shapes.add_picture(step_icon_path, left, top, height=ICON_SIZE) + + # Add a text box below the shape + text_top = top + ICON_SIZE + INCHES_0_2 + text_left = center - text_box_size / 2 # Center the text box horizontally + # text_box = slide.shapes.add_textbox(text_left, text_top, text_box_size, text_box_size) + text_box = slide.shapes.add_shape( + MSO_AUTO_SHAPE_TYPE.ROUNDED_RECTANGLE, + text_left, text_top, + text_box_size, text_box_size + ) + text_frame = text_box.text_frame + text_frame.text = accompanying_text + text_frame.word_wrap = True + + # Center the text vertically + text_frame.vertical_anchor = pptx.enum.text.MSO_ANCHOR.MIDDLE + text_box.fill.background() # No fill + text_box.line.fill.background() # No line + text_box.shadow.inherit = False + + # Set the font color based on the theme + for paragraph in text_frame.paragraphs: + for run in paragraph.runs: + run.font.color.theme_color = pptx.enum.dml.MSO_THEME_COLOR.TEXT_2 + + return True + + return False + + def _add_text_at_bottom( slide: pptx.slide.Slide, slide_width_inch: float, @@ -720,157 +862,108 @@ def _get_slide_width_height_inches(presentation: pptx.Presentation) -> Tuple[flo if __name__ == '__main__': _JSON_DATA = ''' { - "title": "The Fascinating World of Chess", - "slides": [ - { - "heading": "Introduction to Chess", - "bullet_points": [ - "Chess is a strategic board game played between two players.", - [ - "Each player begins the game with 16 pieces: one king, one queen, two rooks, two knights, two bishops, and eight pawns.", - "The goal of the game is to checkmate your opponent's king. This means the king is in a position to be captured (in 'check') but has no move to escape (mate)." - ], - "Chess is believed to have originated in northern India in the 6th century AD." - ], - "key_message": "Understanding the basics of chess is crucial before delving into strategies.", - "img_keywords": "chessboard, chess pieces, king, queen, rook, knight, bishop, pawn" - }, - { - "heading": "The Chessboard", - "bullet_points": [ - "The chessboard is made up of 64 squares in an 8x8 grid.", - "Each player starts with their pieces on their home rank (row).", - "The board is divided into two camps: one for each player." - ], - "key_message": "Knowing the layout of the chessboard is essential for understanding piece movement.", - "img_keywords": "chessboard layout, 8x8 grid, home rank, player camps" - }, - { - "heading": "Movement of Pieces", - "bullet_points": [ - ">> Each piece moves differently. Learning these movements is key to playing chess.", - ">> The king moves one square in any direction.", - ">> The queen combines the moves of the rook and bishop.", - ">> The rook moves horizontally or vertically along a rank or file.", - ">> The bishop moves diagonally.", - ">> The knight moves in an L-shape: two squares in a horizontal or vertical direction, then one square perpendicular to that.", - ">> The pawn moves forward one square, but captures diagonally.", - ">> Pawns have the initial option of moving two squares forward on their first move." - ], - "key_message": "Understanding how each piece moves is fundamental to playing chess.", - "img_keywords": "chess piece movements, king, queen, rook, bishop, knight, pawn" - }, - { - "heading": "Special Moves", - "bullet_points": [ - { - "heading": "Castling", - "bullet_points": [ - "Castling is a unique move involving the king and a rook.", - "It involves moving the king two squares towards a rook, then moving that rook to the square the king skipped over." - ] - }, - { - "heading": "En Passant", - "bullet_points": [ - "En passant is a special pawn capture move.", - "It occurs when a pawn moves two squares forward from its starting position and lands beside an opponent's pawn, which could have captured it if the first pawn had only moved one square forward." - ] - } - ], - "key_message": "Understanding these special moves can add depth to your chess strategy.", - "img_keywords": "castling, en passant, special chess moves" - }, - { - "heading": "Chess Notation", - "bullet_points": [ - "Chess notation is a system used to record and communicate chess games.", - "It uses algebraic notation, where each square on the board is identified by a letter and a number.", - "Pieces are identified by their initial letters: K for king, Q for queen, R for rook, B for bishop, N for knight, and P for pawn." - ], - "key_message": "Learning chess notation is helpful for recording, analyzing, and discussing games.", - "img_keywords": "chess notation, algebraic notation, chess symbols" - }, - { - "heading": "Chess Strategies", - "bullet_points": [ - "Develop your pieces quickly and efficiently.", - "Control the center of the board.", - "Castle early to protect your king.", - "Keep your king safe.", - "Think ahead and plan your moves." - ], - "key_message": "Following these strategies can help improve your chess skills.", - "img_keywords": "chess strategies, piece development, center control, king safety, planning ahead" - }, - { - "heading": "Chess Tactics", - "bullet_points": [ - "Fork: attacking two enemy pieces with the same move.", - "Pin: restricting the movement of an enemy piece.", - "Skewer: forcing an enemy piece to move away from a threatened piece.", - "Discovered attack: moving a piece to reveal an attack by another piece behind it." - ], - "key_message": "Mastering these tactics can help you gain an advantage in games.", - "img_keywords": "chess tactics, fork, pin, skewer, discovered attack" - }, - { - "heading": "Chess Openings", - "bullet_points": [ - { - "heading": "Italian Game", - "bullet_points": [ - "1. e4 e5", - "2. Nf3 Nc6", - "3. Bc4 Bc5" - ] - }, - { - "heading": "Ruy Lopez", - "bullet_points": [ - "1. e4 e5", - "2. Nf3 Nc6", - "3. Bb5" - ] - } - ], - "key_message": "Learning popular chess openings can help you start games effectively.", - "img_keywords": "chess openings, Italian Game, Ruy Lopez" - }, + "title": "AI Applications: Transforming Industries", + "slides": [ + { + "heading": "Introduction to AI Applications", + "bullet_points": [ + "Artificial Intelligence (AI) is transforming various industries", + "AI applications range from simple decision-making tools to complex systems", + "AI can be categorized into types: Rule-based, Instance-based, and Model-based" + ], + "key_message": "AI is a broad field with diverse applications and categories", + "img_keywords": "AI, transformation, industries, decision-making, categories" + }, + { + "heading": "AI in Everyday Life", + "bullet_points": [ + "Virtual assistants like Siri, Alexa, and Google Assistant", + "Recommender systems in Netflix, Amazon, and Spotify", + "Fraud detection in banking and credit card transactions" + ], + "key_message": "AI is integrated into our daily lives through various services", + "img_keywords": "virtual assistants, recommender systems, fraud detection" + }, + { + "heading": "AI in Healthcare", + "bullet_points": [ + "Disease diagnosis and prediction using machine learning algorithms", + "Personalized medicine and drug discovery", + "AI-powered robotic surgeries and remote patient monitoring" + ], + "key_message": "AI is revolutionizing healthcare with improved diagnostics and patient care", + "img_keywords": "healthcare, disease diagnosis, personalized medicine, robotic surgeries" + }, + { + "heading": "AI in Key Industries", + "bullet_points": [ { - "heading": "Chess Endgames", - "bullet_points": [ - { - "heading": "King and Pawn Endgame", - "bullet_points": [ - "This endgame involves a king and one or more pawns against a lone king.", - "The goal is to promote a pawn to a new queen." - ] - }, - { - "heading": "Rook Endgame", - "bullet_points": [ - "This endgame involves a rook against a lone king.", - "The goal is to checkmate the opponent's king using the rook." - ] - } - ], - "key_message": "Understanding common chess endgames can help you win games.", - "img_keywords": "chess endgames, king and pawn endgame, rook endgame" + "heading": "Retail", + "bullet_points": [ + "Inventory management and demand forecasting", + "Customer segmentation and targeted marketing", + "AI-driven chatbots for customer service" + ] }, { - "heading": "Conclusion", - "bullet_points": [ - "Chess is a complex game that requires strategy, tactics, and planning.", - "Understanding the rules, piece movements, and common strategies can help improve your chess skills.", - "Practice regularly to improve your game." - ], - "key_message": "To excel at chess, one must understand its fundamentals and practice regularly.", - "img_keywords": "chess fundamentals, chess improvement, regular practice" + "heading": "Finance", + "bullet_points": [ + "Credit scoring and risk assessment", + "Algorithmic trading and portfolio management", + "AI for detecting money laundering and cyber fraud" + ] } - ] -} -''' + ], + "key_message": "AI is transforming retail and finance with improved operations and decision-making", + "img_keywords": "retail, finance, inventory management, credit scoring, algorithmic trading" + }, + { + "heading": "AI in Education", + "bullet_points": [ + "Personalized learning paths and adaptive testing", + "Intelligent tutoring systems for skill development", + "AI for predicting student performance and dropout rates" + ], + "key_message": "AI is personalizing education and improving student outcomes", + "img_keywords": "education, personalized learning, intelligent tutoring, student performance" + }, + { + "heading": "Step-by-Step: AI Development Process", + "bullet_points": [ + ">> Define the problem and objectives", + ">> Collect and preprocess data", + ">> Select and train the AI model", + ">> Evaluate and optimize the model", + ">> Deploy and monitor the AI system" + ], + "key_message": "Developing AI involves a structured process from problem definition to deployment", + "img_keywords": "AI development process, problem definition, data collection, model training" + }, + { + "heading": "AI Icons: Key Aspects", + "bullet_points": [ + "[[brain]] Human-like intelligence and decision-making", + "[[robot]] Automation and physical tasks", + "[[cloud]] Data processing and cloud computing", + "[[lightbulb]] Insights and predictions", + "[[globe2]] Global connectivity and impact" + ], + "key_message": "AI encompasses various aspects, from human-like intelligence to global impact", + "img_keywords": "AI aspects, intelligence, automation, data processing, global impact" + }, + { + "heading": "Conclusion: Embracing AI's Potential", + "bullet_points": [ + "AI is transforming industries and improving lives", + "Ethical considerations are crucial for responsible AI development", + "Invest in AI education and workforce development", + "Call to action: Explore AI applications and contribute to shaping its future" + ], + "key_message": "AI offers immense potential, and we must embrace it responsibly", + "img_keywords": "AI transformation, ethical considerations, AI education, future of AI" + } + ] +}''' temp = tempfile.NamedTemporaryFile(delete=False, suffix='.pptx') path = pathlib.Path(temp.name) diff --git a/langchain_templates/chat_prompts/initial_template_v4_two_cols_img.txt b/langchain_templates/chat_prompts/initial_template_v4_two_cols_img.txt index 5c8d5f111b477dd0e0e150f02bd0156bb6131f31..b9610f3d9c7f07407140fb7276edb1b05d6f5cd4 100644 --- a/langchain_templates/chat_prompts/initial_template_v4_two_cols_img.txt +++ b/langchain_templates/chat_prompts/initial_template_v4_two_cols_img.txt @@ -6,14 +6,28 @@ Add relevant content to each slide. The content of each slide should be VERBOSE, DESCRIPTIVE, and very DETAILED. If relevant, add one or two EXAMPLES to illustrate the concept. For two or three important slides, generate the key message that those slides convey. + Identify if a slide describes a step-by-step/sequential process, then begin the bullet points with a special marker >>. Limit this to max two or three slides. Also, add at least one slide with a double column layout by generating appropriate content based on the description in the JSON schema provided below. In addition, for each slide, add image keywords based on the content of the respective slides. These keywords will be later used to search for images from the Web relevant to the slide content. + +Create one slide with rich visual experience, containing icons (pictograms) and short texts. +This particular slide will illustrate some key ideas/aspects/concepts relevant to the topic. +Here, you will generate 3 TO 5 short lines of text. Each such line will have the name of an icon +enclosed between [[ and ]]. The name of the icons should be relevant to the aspects described and +MUST BE chosen from the section provided below. You MUST NEVER generate any icon name not present +in the section. + ALWAYS add a concluding slide at the end, containing a list of the key takeaways and an optional call-to-action if relevant to the context. Unless explicitly instructed, create 10 TO 12 SLIDES in total. + +{icons_list} + + + ### Topic: {question} @@ -45,6 +59,16 @@ The output must be only a valid and syntactically correct JSON adhering to the f "key_message": "The key message conveyed in this slide", "img_keywords": "some keywords for this slide" }}, + {{ + "heading": "A slide illustrating key ideas/aspects/concepts (Hint: generate an appropriate heading)", + "bullet_points": [ + "[[icon_name]] Some short text", + "[[icon_another_name]] Some words describing this aspect", + "[[icon_other_name]] Another aspect highlighted in a few words", + ], + "key_message": "", + "img_keywords": "" + }}, {{ "heading": "A slide that describes a step-by-step/sequential process", "bullet_points": [ diff --git a/langchain_templates/chat_prompts/refinement_template_v4_two_cols_img.txt b/langchain_templates/chat_prompts/refinement_template_v4_two_cols_img.txt index 2995eb536553501ef70ab605c5a6a506b0bde82d..256a550989d9b0d70cef9c637a8f90f2bc651fa2 100644 --- a/langchain_templates/chat_prompts/refinement_template_v4_two_cols_img.txt +++ b/langchain_templates/chat_prompts/refinement_template_v4_two_cols_img.txt @@ -8,14 +8,28 @@ Add relevant content to each slide. The content of each slide should be VERBOSE, DESCRIPTIVE, and very DETAILED. If relevant, add one or two EXAMPLES to illustrate the concept. For two or three important slides, generate the key message that those slides convey. + Identify if a slide describes a step-by-step/sequential process, then begin the bullet points with a special marker >>. Limit this to max two or three slides. Also, add at least one slide with a double column layout by generating appropriate content based on the description in the JSON schema provided below. In addition, for each slide, add image keywords based on the content of the respective slides. These keywords will be later used to search for images from the Web relevant to the slide content. + +Create one slide with rich visual experience, containing icons (pictograms) and short texts. +This particular slide will illustrate some key ideas/aspects/concepts relevant to the topic. +Here, you will generate 3 TO 5 short lines of text. Each such line will have the name of an icon +enclosed between [[ and ]]. The name of the icons should be relevant to the aspects described and +MUST BE chosen from the section provided below. You MUST NEVER generate any icon name not present +in the section. + ALWAYS add a concluding slide at the end, containing a list of the key takeaways and an optional call-to-action if relevant to the context. Unless explicitly instructed, create 10 TO 12 SLIDES in total. + +{icons_list} + + + ### List of instructions: {instructions} @@ -51,6 +65,16 @@ The output must be only a valid and syntactically correct JSON adhering to the f "key_message": "The key message conveyed in this slide", "img_keywords": "some keywords for this slide" }}, + {{ + "heading": "A slide illustrating key ideas/aspects/concepts (Hint: generate an appropriate heading)", + "bullet_points": [ + "[[icon_name]] Some short text", + "[[icon_another_name]] Some words describing this aspect", + "[[icon_other_name]] Another aspect highlighted in a few words", + ], + "key_message": "", + "img_keywords": "" + }}, {{ "heading": "A slide that describes a step-by-step/sequential process", "bullet_points": [ diff --git a/requirements.txt b/requirements.txt index 2073dbe412a11577afa3ccf7df555f1f7c122b8f..a2ab5806547c4892b05107427d4b3870a642a46f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -19,4 +19,6 @@ requests~=2.31.0 transformers~=4.39.2 langchain-community -urllib3~=2.2.1 \ No newline at end of file +urllib3~=2.2.1 +lxml~=4.9.3 +tqdm~=4.64.1 \ No newline at end of file