diff --git a/.github/workflows/hugo.yml b/.github/workflows/hugo.yml deleted file mode 100644 index 7719325..0000000 --- a/.github/workflows/hugo.yml +++ /dev/null @@ -1,76 +0,0 @@ -# Sample workflow for building and deploying a Hugo site to GitHub Pages -name: Deploy Hugo site to Pages - -on: - # Runs on pushes targeting the default branch - push: - branches: ["main"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: "pages" - cancel-in-progress: false - -# Default to bash -defaults: - run: - shell: bash - -jobs: - # Build job - build: - runs-on: ubuntu-latest - env: - HUGO_VERSION: 0.124.1 - steps: - - name: Install Hugo CLI - run: | - wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ - && sudo dpkg -i ${{ runner.temp }}/hugo.deb - - name: Install Dart Sass - run: sudo snap install dart-sass - - name: Checkout - uses: actions/checkout@v4 - with: - submodules: recursive - - name: Setup Pages - id: pages - uses: actions/configure-pages@v5 - - name: Install Node.js dependencies - run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" - - name: Build with Hugo - env: - # For maximum backward compatibility with Hugo modules - HUGO_ENVIRONMENT: production - HUGO_ENV: production - run: | - cd web - hugo \ - --minify \ - --baseURL "${{ steps.pages.outputs.base_url }}/" - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: ./public - - # Deployment job - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/web/404.html b/web/404.html new file mode 100644 index 0000000..c472b4e --- /dev/null +++ b/web/404.html @@ -0,0 +1,24 @@ +--- +layout: default +--- + + + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
diff --git a/web/Gemfile b/web/Gemfile new file mode 100644 index 0000000..411c950 --- /dev/null +++ b/web/Gemfile @@ -0,0 +1,40 @@ +source "https://rubygems.org" + +# Hello! This is where you manage which Jekyll version is used to run. +# When you want to use a different version, change it below, save the +# file and run `bundle install`. Run Jekyll with `bundle exec`, like so: +# +# bundle exec jekyll serve +# +# This will help ensure the proper Jekyll version is running. +# Happy Jekylling! +#gem "jekyll", "~> 3.9.0" +gem "github-pages", "~> 231", group: :jekyll_plugins + +# This is the default theme for new Jekyll sites. You may change this to anything you like. +gem "minima", "~> 2.0" + +# If you want to use GitHub Pages, remove the "gem "jekyll"" above and +# uncomment the line below. To upgrade, run `bundle update github-pages`. +# gem "github-pages", group: :jekyll_plugins + +# If you have any plugins, put them here! +group :jekyll_plugins do + gem "jekyll-feed", "~> 0.6" +end + +# Windows does not include zoneinfo files, so bundle the tzinfo-data gem +# and associated library. +platforms :mingw, :x64_mingw, :mswin, :jruby do + gem "tzinfo", "~> 1.2" + gem "tzinfo-data" +end + +# Performance-booster for watching directories on Windows +gem "wdm", "~> 0.1.0", :platforms => [:mingw, :x64_mingw, :mswin] + +# kramdown v2 ships without the gfm parser by default. If you're using +# kramdown v1, comment out this line. +gem "kramdown-parser-gfm" + +gem 'webrick' \ No newline at end of file diff --git a/web/Gemfile.lock b/web/Gemfile.lock new file mode 100644 index 0000000..0a967ff --- /dev/null +++ b/web/Gemfile.lock @@ -0,0 +1,273 @@ +GEM + remote: https://rubygems.org/ + specs: + activesupport (7.1.3.3) + base64 + bigdecimal + concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb + i18n (>= 1.6, < 2) + minitest (>= 5.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + base64 (0.2.0) + bigdecimal (3.1.8) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.12.2) + colorator (1.1.0) + commonmarker (0.23.10) + concurrent-ruby (1.2.3) + connection_pool (2.4.1) + dnsruby (1.72.1) + simpleidn (~> 0.2.1) + drb (2.2.1) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + ethon (0.16.0) + ffi (>= 1.15.0) + eventmachine (1.2.7) + execjs (2.9.1) + faraday (2.9.0) + faraday-net_http (>= 2.0, < 3.2) + faraday-net_http (3.1.0) + net-http + ffi (1.16.3) + forwardable-extended (2.6.0) + gemoji (4.1.0) + github-pages (231) + github-pages-health-check (= 1.18.2) + jekyll (= 3.9.5) + jekyll-avatar (= 0.8.0) + jekyll-coffeescript (= 1.2.2) + jekyll-commonmark-ghpages (= 0.4.0) + jekyll-default-layout (= 0.1.5) + jekyll-feed (= 0.17.0) + jekyll-gist (= 1.5.0) + jekyll-github-metadata (= 2.16.1) + jekyll-include-cache (= 0.2.1) + jekyll-mentions (= 1.6.0) + jekyll-optional-front-matter (= 0.3.2) + jekyll-paginate (= 1.1.0) + jekyll-readme-index (= 0.3.0) + jekyll-redirect-from (= 0.16.0) + jekyll-relative-links (= 0.6.1) + jekyll-remote-theme (= 0.4.3) + jekyll-sass-converter (= 1.5.2) + jekyll-seo-tag (= 2.8.0) + jekyll-sitemap (= 1.4.0) + jekyll-swiss (= 1.0.0) + jekyll-theme-architect (= 0.2.0) + jekyll-theme-cayman (= 0.2.0) + jekyll-theme-dinky (= 0.2.0) + jekyll-theme-hacker (= 0.2.0) + jekyll-theme-leap-day (= 0.2.0) + jekyll-theme-merlot (= 0.2.0) + jekyll-theme-midnight (= 0.2.0) + jekyll-theme-minimal (= 0.2.0) + jekyll-theme-modernist (= 0.2.0) + jekyll-theme-primer (= 0.6.0) + jekyll-theme-slate (= 0.2.0) + jekyll-theme-tactile (= 0.2.0) + jekyll-theme-time-machine (= 0.2.0) + jekyll-titles-from-headings (= 0.5.3) + jemoji (= 0.13.0) + kramdown (= 2.4.0) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.4) + mercenary (~> 0.3) + minima (= 2.5.1) + nokogiri (>= 1.13.6, < 2.0) + rouge (= 3.30.0) + terminal-table (~> 1.4) + github-pages-health-check (1.18.2) + addressable (~> 2.3) + dnsruby (~> 1.60) + octokit (>= 4, < 8) + public_suffix (>= 3.0, < 6.0) + typhoeus (~> 1.3) + html-pipeline (2.14.3) + activesupport (>= 2) + nokogiri (>= 1.4) + http_parser.rb (0.8.0) + i18n (1.14.5) + concurrent-ruby (~> 1.0) + jekyll (3.9.5) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (>= 0.7, < 2) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-avatar (0.8.0) + jekyll (>= 3.0, < 5.0) + jekyll-coffeescript (1.2.2) + coffee-script (~> 2.2) + coffee-script-source (~> 1.12) + jekyll-commonmark (1.4.0) + commonmarker (~> 0.22) + jekyll-commonmark-ghpages (0.4.0) + commonmarker (~> 0.23.7) + jekyll (~> 3.9.0) + jekyll-commonmark (~> 1.4.0) + rouge (>= 2.0, < 5.0) + jekyll-default-layout (0.1.5) + jekyll (>= 3.0, < 5.0) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) + jekyll-gist (1.5.0) + octokit (~> 4.2) + jekyll-github-metadata (2.16.1) + jekyll (>= 3.4, < 5.0) + octokit (>= 4, < 7, != 4.4.0) + jekyll-include-cache (0.2.1) + jekyll (>= 3.7, < 5.0) + jekyll-mentions (1.6.0) + html-pipeline (~> 2.3) + jekyll (>= 3.7, < 5.0) + jekyll-optional-front-matter (0.3.2) + jekyll (>= 3.0, < 5.0) + jekyll-paginate (1.1.0) + jekyll-readme-index (0.3.0) + jekyll (>= 3.0, < 5.0) + jekyll-redirect-from (0.16.0) + jekyll (>= 3.3, < 5.0) + jekyll-relative-links (0.6.1) + jekyll (>= 3.3, < 5.0) + jekyll-remote-theme (0.4.3) + addressable (~> 2.0) + jekyll (>= 3.5, < 5.0) + jekyll-sass-converter (>= 1.0, <= 3.0.0, != 2.0.0) + rubyzip (>= 1.3.0, < 3.0) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-sitemap (1.4.0) + jekyll (>= 3.7, < 5.0) + jekyll-swiss (1.0.0) + jekyll-theme-architect (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-cayman (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-dinky (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-hacker (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-leap-day (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-merlot (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-midnight (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-minimal (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-modernist (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-primer (0.6.0) + jekyll (> 3.5, < 5.0) + jekyll-github-metadata (~> 2.9) + jekyll-seo-tag (~> 2.0) + jekyll-theme-slate (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-tactile (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-theme-time-machine (0.2.0) + jekyll (> 3.5, < 5.0) + jekyll-seo-tag (~> 2.0) + jekyll-titles-from-headings (0.5.3) + jekyll (>= 3.3, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + jemoji (0.13.0) + gemoji (>= 3, < 5) + html-pipeline (~> 2.2) + jekyll (>= 3.0, < 5.0) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.3.6) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + minitest (5.23.1) + mutex_m (0.2.0) + net-http (0.4.1) + uri + nokogiri (1.16.5-x86_64-linux) + racc (~> 1.4) + octokit (4.25.1) + faraday (>= 1, < 3) + sawyer (~> 0.9) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (5.0.5) + racc (1.8.0) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.2.8) + strscan (>= 3.0.9) + rouge (3.30.0) + rubyzip (2.3.2) + safe_yaml (1.0.5) + sass (3.7.4) + listen (~> 3.0) + sawyer (0.9.2) + addressable (>= 2.3.5) + faraday (>= 0.17.3, < 3) + simpleidn (0.2.3) + strscan (3.1.0) + terminal-table (1.8.0) + unicode-display_width (~> 1.1, >= 1.1.1) + typhoeus (1.4.1) + ethon (>= 0.9.0) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (1.8.0) + uri (0.13.0) + webrick (1.8.1) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + github-pages (~> 231) + jekyll-feed (~> 0.6) + kramdown-parser-gfm + minima (~> 2.0) + tzinfo (~> 1.2) + tzinfo-data + wdm (~> 0.1.0) + webrick + +BUNDLED WITH + 2.3.5 diff --git a/web/_config.yml b/web/_config.yml new file mode 100644 index 0000000..ae9579c --- /dev/null +++ b/web/_config.yml @@ -0,0 +1,41 @@ +# Welcome to Jekyll! +# +# This config file is meant for settings that affect your whole blog, values +# which you are expected to set up once and rarely edit after that. If you find +# yourself editing this file very often, consider using Jekyll's data files +# feature for the data you need to update frequently. +# +# For technical reasons, this file is *NOT* reloaded automatically when you use +# 'bundle exec jekyll serve'. If you change this file, please restart the server process. + +# Site settings +# These are used to personalize your new site. If you look in the HTML files, +# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. +# You can create any custom variable you would like, and they will be accessible +# in the templates via {{ site.myvariable }}. +title: Demos and labs +# email: your-email@example.com +description: >- # this means to ignore newlines until "baseurl:" + Demos of tools and Azure services. +baseurl: "" # the subpath of your site, e.g. /blog +url: "" # the base hostname & protocol for your site, e.g. http://example.com +# twitter_username: jekyllrb +github_username: jmservera + +# Build settings +markdown: kramdown +theme: minima +plugins: + - jekyll-feed + +# Exclude from processing. +# The following items will not be processed, by default. Create a custom list +# to override the default setting. +# exclude: +# - Gemfile +# - Gemfile.lock +# - node_modules +# - vendor/bundle/ +# - vendor/cache/ +# - vendor/gems/ +# - vendor/ruby/ diff --git a/web/_layouts/custom.html b/web/_layouts/custom.html new file mode 100644 index 0000000..8e370a2 --- /dev/null +++ b/web/_layouts/custom.html @@ -0,0 +1,32 @@ +--- +layout: page +--- + + + + + + + +{{ content }} + + + + + \ No newline at end of file diff --git a/web/_site/404.html b/web/_site/404.html new file mode 100644 index 0000000..6c5f259 --- /dev/null +++ b/web/_site/404.html @@ -0,0 +1,87 @@ + + + + + +Demos and labs | Demos of tols and azure services. + + + + + + + + + + + + + + + +
+
+ + +
+

404

+ +

Page not found :(

+

The requested page could not be found.

+
+ +
+
+ + + diff --git a/web/_site/assets/css/sidebar.css b/web/_site/assets/css/sidebar.css new file mode 100644 index 0000000..3112cbf --- /dev/null +++ b/web/_site/assets/css/sidebar.css @@ -0,0 +1,16 @@ +#sidebar-index { + position: fixed; + top: 0; + right: 0; + width: 200px; + height: 100%; + padding: 1em; + background-color: #f9f9f9; + overflow: auto; + border-left: 1px solid #ccc; + } + + #sidebar-index a { + display: block; + margin-bottom: 0.5em; + } \ No newline at end of file diff --git a/web/_site/assets/main.css b/web/_site/assets/main.css new file mode 100644 index 0000000..83b9124 --- /dev/null +++ b/web/_site/assets/main.css @@ -0,0 +1,196 @@ +/** Reset some basic elements */ +body, h1, h2, h3, h4, h5, h6, p, blockquote, pre, hr, dl, dd, ol, ul, figure { margin: 0; padding: 0; } + +/** Basic styling */ +body { font: 400 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; color: #111; background-color: #fdfdfd; -webkit-text-size-adjust: 100%; -webkit-font-feature-settings: "kern" 1; -moz-font-feature-settings: "kern" 1; -o-font-feature-settings: "kern" 1; font-feature-settings: "kern" 1; font-kerning: normal; display: flex; min-height: 100vh; flex-direction: column; } + +/** Set `margin-bottom` to maintain vertical rhythm */ +h1, h2, h3, h4, h5, h6, p, blockquote, pre, ul, ol, dl, figure, .highlight { margin-bottom: 15px; } + +/** `main` element */ +main { display: block; /* Default value of `display` of `main` element is 'inline' in IE 11. */ } + +/** Images */ +img { max-width: 100%; vertical-align: middle; } + +/** Figures */ +figure > img { display: block; } + +figcaption { font-size: 14px; } + +/** Lists */ +ul, ol { margin-left: 30px; } + +li > ul, li > ol { margin-bottom: 0; } + +/** Headings */ +h1, h2, h3, h4, h5, h6 { font-weight: 400; } + +/** Links */ +a { color: #2a7ae2; text-decoration: none; } +a:visited { color: #1756a9; } +a:hover { color: #111; text-decoration: underline; } +.social-media-list a:hover { text-decoration: none; } +.social-media-list a:hover .username { text-decoration: underline; } + +/** Blockquotes */ +blockquote { color: #828282; border-left: 4px solid #e8e8e8; padding-left: 15px; font-size: 18px; letter-spacing: -1px; font-style: italic; } +blockquote > :last-child { margin-bottom: 0; } + +/** Code formatting */ +pre, code { font-size: 15px; border: 1px solid #e8e8e8; border-radius: 3px; background-color: #eef; } + +code { padding: 1px 5px; } + +pre { padding: 8px 12px; overflow-x: auto; } +pre > code { border: 0; padding-right: 0; padding-left: 0; } + +/** Wrapper */ +.wrapper { max-width: -webkit-calc(800px - (30px * 2)); max-width: calc(800px - (30px * 2)); margin-right: auto; margin-left: auto; padding-right: 30px; padding-left: 30px; } +@media screen and (max-width: 800px) { .wrapper { max-width: -webkit-calc(800px - (30px)); max-width: calc(800px - (30px)); padding-right: 15px; padding-left: 15px; } } + +/** Clearfix */ +.wrapper:after, .footer-col-wrapper:after { content: ""; display: table; clear: both; } + +/** Icons */ +.svg-icon { width: 16px; height: 16px; display: inline-block; fill: #828282; padding-right: 5px; vertical-align: text-top; } + +.social-media-list li + li { padding-top: 5px; } + +/** Tables */ +table { margin-bottom: 30px; width: 100%; text-align: left; color: #3f3f3f; border-collapse: collapse; border: 1px solid #e8e8e8; } +table tr:nth-child(even) { background-color: #f7f7f7; } +table th, table td { padding: 10px 15px; } +table th { background-color: #f0f0f0; border: 1px solid #dedede; border-bottom-color: #c9c9c9; } +table td { border: 1px solid #e8e8e8; } + +/** Site header */ +.site-header { border-top: 5px solid #424242; border-bottom: 1px solid #e8e8e8; min-height: 55.95px; position: relative; } + +.site-title { font-size: 26px; font-weight: 300; line-height: 54px; letter-spacing: -1px; margin-bottom: 0; float: left; } +.site-title, .site-title:visited { color: #424242; } + +.site-nav { float: right; line-height: 54px; } +.site-nav .nav-trigger { display: none; } +.site-nav .menu-icon { display: none; } +.site-nav .page-link { color: #111; line-height: 1.5; } +.site-nav .page-link:not(:last-child) { margin-right: 20px; } +@media screen and (max-width: 600px) { .site-nav { position: absolute; top: 9px; right: 15px; background-color: #fdfdfd; border: 1px solid #e8e8e8; border-radius: 5px; text-align: right; } + .site-nav label[for="nav-trigger"] { display: block; float: right; width: 36px; height: 36px; z-index: 2; cursor: pointer; } + .site-nav .menu-icon { display: block; float: right; width: 36px; height: 26px; line-height: 0; padding-top: 10px; text-align: center; } + .site-nav .menu-icon > svg { fill: #424242; } + .site-nav input ~ .trigger { clear: both; display: none; } + .site-nav input:checked ~ .trigger { display: block; padding-bottom: 5px; } + .site-nav .page-link { display: block; padding: 5px 10px; margin-left: 20px; } + .site-nav .page-link:not(:last-child) { margin-right: 0; } } + +/** Site footer */ +.site-footer { border-top: 1px solid #e8e8e8; padding: 30px 0; } + +.footer-heading { font-size: 18px; margin-bottom: 15px; } + +.contact-list, .social-media-list { list-style: none; margin-left: 0; } + +.footer-col-wrapper { font-size: 15px; color: #828282; margin-left: -15px; } + +.footer-col { float: left; margin-bottom: 15px; padding-left: 15px; } + +.footer-col-1 { width: -webkit-calc(35% - (30px / 2)); width: calc(35% - (30px / 2)); } + +.footer-col-2 { width: -webkit-calc(20% - (30px / 2)); width: calc(20% - (30px / 2)); } + +.footer-col-3 { width: -webkit-calc(45% - (30px / 2)); width: calc(45% - (30px / 2)); } + +@media screen and (max-width: 800px) { .footer-col-1, .footer-col-2 { width: -webkit-calc(50% - (30px / 2)); width: calc(50% - (30px / 2)); } + .footer-col-3 { width: -webkit-calc(100% - (30px / 2)); width: calc(100% - (30px / 2)); } } +@media screen and (max-width: 600px) { .footer-col { float: none; width: -webkit-calc(100% - (30px / 2)); width: calc(100% - (30px / 2)); } } +/** Page content */ +.page-content { padding: 30px 0; flex: 1; } + +.page-heading { font-size: 32px; } + +.post-list-heading { font-size: 28px; } + +.post-list { margin-left: 0; list-style: none; } +.post-list > li { margin-bottom: 30px; } + +.post-meta { font-size: 14px; color: #828282; } + +.post-link { display: block; font-size: 24px; } + +/** Posts */ +.post-header { margin-bottom: 30px; } + +.post-title { font-size: 42px; letter-spacing: -1px; line-height: 1; } +@media screen and (max-width: 800px) { .post-title { font-size: 36px; } } + +.post-content { margin-bottom: 30px; } +.post-content h2 { font-size: 32px; } +@media screen and (max-width: 800px) { .post-content h2 { font-size: 28px; } } +.post-content h3 { font-size: 26px; } +@media screen and (max-width: 800px) { .post-content h3 { font-size: 22px; } } +.post-content h4 { font-size: 20px; } +@media screen and (max-width: 800px) { .post-content h4 { font-size: 18px; } } + +/** Syntax highlighting styles */ +.highlight { background: #fff; } +.highlighter-rouge .highlight { background: #eef; } +.highlight .c { color: #998; font-style: italic; } +.highlight .err { color: #a61717; background-color: #e3d2d2; } +.highlight .k { font-weight: bold; } +.highlight .o { font-weight: bold; } +.highlight .cm { color: #998; font-style: italic; } +.highlight .cp { color: #999; font-weight: bold; } +.highlight .c1 { color: #998; font-style: italic; } +.highlight .cs { color: #999; font-weight: bold; font-style: italic; } +.highlight .gd { color: #000; background-color: #fdd; } +.highlight .gd .x { color: #000; background-color: #faa; } +.highlight .ge { font-style: italic; } +.highlight .gr { color: #a00; } +.highlight .gh { color: #999; } +.highlight .gi { color: #000; background-color: #dfd; } +.highlight .gi .x { color: #000; background-color: #afa; } +.highlight .go { color: #888; } +.highlight .gp { color: #555; } +.highlight .gs { font-weight: bold; } +.highlight .gu { color: #aaa; } +.highlight .gt { color: #a00; } +.highlight .kc { font-weight: bold; } +.highlight .kd { font-weight: bold; } +.highlight .kp { font-weight: bold; } +.highlight .kr { font-weight: bold; } +.highlight .kt { color: #458; font-weight: bold; } +.highlight .m { color: #099; } +.highlight .s { color: #d14; } +.highlight .na { color: #008080; } +.highlight .nb { color: #0086B3; } +.highlight .nc { color: #458; font-weight: bold; } +.highlight .no { color: #008080; } +.highlight .ni { color: #800080; } +.highlight .ne { color: #900; font-weight: bold; } +.highlight .nf { color: #900; font-weight: bold; } +.highlight .nn { color: #555; } +.highlight .nt { color: #000080; } +.highlight .nv { color: #008080; } +.highlight .ow { font-weight: bold; } +.highlight .w { color: #bbb; } +.highlight .mf { color: #099; } +.highlight .mh { color: #099; } +.highlight .mi { color: #099; } +.highlight .mo { color: #099; } +.highlight .sb { color: #d14; } +.highlight .sc { color: #d14; } +.highlight .sd { color: #d14; } +.highlight .s2 { color: #d14; } +.highlight .se { color: #d14; } +.highlight .sh { color: #d14; } +.highlight .si { color: #d14; } +.highlight .sx { color: #d14; } +.highlight .sr { color: #009926; } +.highlight .s1 { color: #d14; } +.highlight .ss { color: #990073; } +.highlight .bp { color: #999; } +.highlight .vc { color: #008080; } +.highlight .vg { color: #008080; } +.highlight .vi { color: #008080; } +.highlight .il { color: #099; } diff --git a/web/_site/assets/minima-social-icons.svg b/web/_site/assets/minima-social-icons.svg new file mode 100644 index 0000000..fa7399f --- /dev/null +++ b/web/_site/assets/minima-social-icons.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web/_site/feed.xml b/web/_site/feed.xml new file mode 100644 index 0000000..6fa4424 --- /dev/null +++ b/web/_site/feed.xml @@ -0,0 +1 @@ +Jekyll2024-05-22T15:26:24+02:00http://localhost:4000/feed.xmlDemos and labsDemos of tols and azure services. \ No newline at end of file diff --git a/promptengineering/img/30 answers.png b/web/_site/img/30 answers.png similarity index 100% rename from promptengineering/img/30 answers.png rename to web/_site/img/30 answers.png diff --git a/promptengineering/img/Copilot in desktop.png b/web/_site/img/Copilot in desktop.png similarity index 100% rename from promptengineering/img/Copilot in desktop.png rename to web/_site/img/Copilot in desktop.png diff --git a/promptengineering/img/new topic.png b/web/_site/img/new topic.png similarity index 100% rename from promptengineering/img/new topic.png rename to web/_site/img/new topic.png diff --git a/web/_site/index.html b/web/_site/index.html new file mode 100644 index 0000000..69bb12e --- /dev/null +++ b/web/_site/index.html @@ -0,0 +1,112 @@ + + + + + +Home | Demos and labs + + + + + + + + + + + + + + + +
+
+
+ +
+

Home

+
+ +
+ + + + + + + +

Here’s a list of all the pages on this site:

+ + + + + + + + + +
+ +
+ +
+
+ + + diff --git a/web/_site/prompt-engineering.html b/web/_site/prompt-engineering.html new file mode 100644 index 0000000..c2ecef0 --- /dev/null +++ b/web/_site/prompt-engineering.html @@ -0,0 +1,454 @@ + + + + + +Prompt Engineering Hands on Lab | Demos and labs + + + + + + + + + + + + + + + +
+
+
+ +
+

Prompt Engineering Hands on Lab

+
+ +
+ + + + + + + +

Prompt Engineering Hands-on Lab: An Introduction

+ +

Welcome to the Prompt Engineering Hands-on Lab! This guide is designed to assist you in understanding and utilizing Microsoft’s AI companion, Copilot, in a practical and engaging manner.

+ +

Throughout this lab, we will delve into the world of AI-powered chat, explore various types of prompts, and learn how to guide an AI language model to generate desired content. The exercises are designed to be hands-on, allowing you to learn by doing and apply your newfound skills in real-time.

+ +

Our goal is to equip you with the skills and understanding to effectively use AI tools like Copilot in your own projects, whether they be for business, education, or personal use.

+ +

In the first exercise, you’ll get to know how Copilot works by using simple prompts. In the second exercise, you’ll use Copilot to create different things for a made-up space startup. This will involve generating a company name, mission statement, logo, and even a business plan, all using different prompting techniques.

+ +

By the end of this lab, you will have a comprehensive understanding of how to interact with and guide AI language models, and how to use them as a powerful tool in your own projects.

+ +

Now, let’s dive in and get started with our first exercise!

+ +

Exercise 1 – Warmup & Basic prompts

+ +

For this exercise we are going to use Microsoft Copilot, your everyday AI companion, providing AI-powered chat for the web. Open it at https://www.bing.com/chat and configure the conversation style to “More creative”, because today we are going to have an ideation session and, as Linus Pauling said once, the best way to have a good idea is to have lots of ideas.

+ +

Screenshot showing Copilot in the web

+ +

Write the following prompt in the “Ask me anything…” textbox:

+ +

The space is

+ +

This is the most basic prompt and is called a seed text prompt. A seed text prompt is a simple, open-ended statement or question that serves as a starting point for AI-generated content.

+ +

What was the output that Copilot generated? Depending on the day, it can generate a long dissertation about the vastness and complexity of space. It is just filling the emptiness…

+ +

If we want a specific answer, we need to ask a specific question. The more detailed our question, the better the answer.

+ +

Before starting with the new prompt, click on New topic button, this will clear the context to start from scratch.

+ +

New Topic button in Copilot

+ +

If you write this more explicit prompt:

+ +
Complete this sentence:
+
+The space is
+
+ +

You will get a shorter more concise answer.

+ +

Next, we have conditional prompts. You use these to tell the AI to create content based on certain rules or conditions. Try this one:

+ +
Write a story about a new company building a spaceship to fly to Mars, founded by an astronaut, a few former NASA and ESA engineers, and an awarded cook.
+
+ +

In multiple choice prompts you present the AI with several options from which it must choose or recommend the most appropriate one based on the context or criteria provided.

+ +
What do we need to fly to Mars?
+
+A) a giant Mars chocolate bar
+
+B) a DeLorean
+
+C) a spaceship
+
+D) a private jet
+
+ +

The previous examples are simple Zero-shot prompts. In these prompts we do not provide any example, we directly instruct the model to answer a question and we rely on the training data to obtain the answer. (Keep in mind that nowadays Bing chat has access to the internet, and it is also using some other techniques like meta-prompting, function calling, content filtering and RAG, so this is not completely true, but for this exercise we will just ignore this).

+ +
Classify the text into neutral, negative or positive.
+
+Text: I think the space is cool.
+
+Sentiment:
+
+ +

This should give you a positive sentiment, but you can challenge the LLM to fix its answer if you feel it is not the right one:

+ +
Are you sure? What if the word cool was factual in this sentence?
+
+ +

Now Copilot must have given this a second thought and understood the nuances.

+ +
+

Great job on completing the first exercise! Remember, there’s no ‘one-size-fits-all’ approach to using AI. Feel free to experiment with different types of prompts to see what results you get. The more you experiment, the more you’ll understand how to guide Copilot effectively. If you need some more examples for each type of prompt, check the example guide at the end of this document.

+
+ +

Exercise 2 – Create your own space startup

+ +
+

As we dive into the second exercise, keep in mind that this is your opportunity to get creative and experiment. Try different prompt techniques, adjust your instructions, and see how Copilot responds. Remember, there’s no right or wrong way to do this – the goal is to learn and have fun!

+
+ +

Introduction

+ +

You may have noticed by now that Copilot can give you up to 30 answers in a session:

+ +

The Copilot detail showing a max of 30 responses

+ +

This means that after iterating 30 times you will need to start again from scratch. So, before starting this second exercise, click on the “New topic” button to start a new session.

+ +

In this exercise, you will use Copilot to generate various elements of your own space startup, such as the name, the mission statement, the logo, and the business plan. You will also learn how to use different prompting techniques, such as few-shot prompts, chain-of-thought prompts, and tree-of thought-prompts, to guide the generation process and produce high-quality results.

+ +

Step 1: Set the context

+ +

Usually, Large Language Model (LLM) chat apps use a System Message and some templates to set the rules of the generation. We cannot change the system message for Copilot, but we can provide our own context for the session as a first message.

+ +
In this exercise, we want you to be the CEO of a new spaceship startup, so Copilot will be your executive assistant that will help you shape your ideas. Write a prompt like this to set the context:
+
+You are an executive assistant to an awarded cook that now is the CEO of a cutting-edge spaceship startup; your role is multifaceted and pivotal. You possess a deep understanding of aerospace engineering, which allows you to contribute significantly to the design and logistics of human spaceships bound for Mars. Your strategic planning skills enable you to assist in setting long-term goals, allocating resources effectively, and ensuring that every project milestone aligns with the company’s ambitious vision.
+
+Your creative input is crucial in ideating innovative solutions and designing a corporate image that encapsulates the startup’s spirit. You’re adept at translating complex engineering concepts into comprehensive strategies, facilitating effective communication across departments. Your project management expertise ensures that all initiatives are executed flawlessly, reflecting the company’s commitment to pioneering space exploration.
+
+Above all, your personal traits are what make you extraordinary. Your passion for space, visionary outlook, and proactive nature equips you to anticipate challenges and address them with resilience. Detail-oriented and adaptable, you maintain composure under pressure, making you an indispensable asset to the CEO and the entire organization as you collectively strive to achieve the monumental task of shipping a human spaceship to Mars.
+
+ +

This was again a zero-Shot prompt, but we are just establishing the context.

+ +

Step 2: Generate a name for your space startup

+ +

To generate a name for your space startup, you can use a few-shot prompt, which is a type of prompt that provides some examples of the desired output, followed by an empty line where Bing Chat will fill in a new output based on the examples. For example, you can write:

+ +
Some possible names for a space startup are:
+
+- SpaceX
+- Blue Origin
+- Virgin Galactic
+- Clearspace
+
+Generate three names for our space startup that builds and sends human spaceships to Mars and show the special background of our CEO:
+
+ +

You can try different examples or add more details to the prompt, such as the type of service or product your startup offers, to get different results.

+ +

Step 3: Assess the costs

+ +

Sending a spaceship with humans is tough. But as a startup, we must show investors that we’ve done our math. You can use chain-of-thought prompting to enforce the model to think about all the details. It involves guiding the AI to think through the problem step-by-step, leading it to the desired output:

+ +
Calculate the costs of shipping a spaceship to Mars with a crew of 6, this first mission is a one-way trip, so we need to consider the travel time and how to send all the materials needed to survive on Mars. Let’s think step by step.
+
+This part of the project is called Budget.
+
+ +

Now that you’ve calculated the costs of the mission, you might want to experiment with different scenarios. What if the crew size changed? Or the distance to Mars varied? Feel free to play around with these variables and see how the costs change.

+ +

Step 4: Generate a business plan

+ +

As you will be challenged by the investors when you present your plan, you can use a tree-of-thought prompting technique. This technique helps the model generate different ideas and choose the best one from them.

+ +
I have selected the name for the startup: [PUT THE NAME YOU SELECTED HERE].
+Imagine our top three engineers are discussing three different ideas for our startup's business plan. Generate them and pick the best one.
+
+ +

Prompt refinement and iteration: ask for additional improvements to the content generated. For example, generate the full plan based on that idea:

+ +
Now, based on the executive summary and budget, please complete the business plan with the following sections: the executive summary, the market analysis, the service description, the sales strategy and the operations plan.
+
+This part of the project work is called Business Plan.
+
+ +

Step 5: Generate a mission statement for your space startup

+ +

Now that we have a lot of content, we can generate a mission statement for your space startup. For example, you can write:

+ +
This part of the project work is called Mission Statement.
+
+Write a mission statement that reflects our objectives and the values of the company.
+
+ +

Step 6: Create a logo for your company

+ +

Microsoft Copilot in Bing is a multimodal model, this means that it can also generate and understand pictures and audio. In this case the LLM has already a lot of information to work with, so we don’t need to provide lots of details, just indicate what we want in a clear statement. Let’s ask Copilot to generate a logo for our company:

+ +
This part of the project is called Company Branding
+
+Create a monochromatic logo in red for our company that reflects the mission and values of our company.
+
+ +
+

Did you notice that the prompt for DALL·E was crafted by Copilot? You didn’t need to explain again that it was a spaceship company going to Mars, because it used the chains it already had. You can also go directly to https://www.bing.com/images/create to generate images with your own prompts.

+
+ +

Step 7: pulling it all together

+ +

In this step, you will use the AI to review and summarize all the content generated during the previous exercises. This step is crucial in ensuring that all the elements of your project are coherent and aligned with your objectives.

+ +

Here’s how to proceed:

+ +
    +
  1. +

    Review: Start by asking the AI to review the text generated during the previous exercises. This will allow you to see all the content in one place and assess its overall quality and coherence.

    +
  2. +
  3. +

    Summarize: Next, instruct the AI to generate a summary of all the content. The summary should highlight the key points from each part of the project, such as the business plan, budget, and company branding.

    +
  4. +
  5. +

    Format: Finally, ask the AI to format the content in a specific way. For instance, you might want each part of the project to be presented as a separate section with its own title and description. This will make the content easier to read and understand.

    +
  6. +
+ +

Remember, as with all AI interactions, you may need to refine your prompts or ask for additional improvements to get the desired output. Don’t be afraid to experiment and iterate until you get the results you’re looking for.

+ +

Here’s the suggested prompt:

+ +
Let's review all the text we wrote for the project. Can you give me the last edited copy for these parts of the project:
+
+* Business Plan
+* Budget
+* Company Branding
+
+And add a summary at the beginning.
+
+Can you format it like this:
+
+## Title ##
+
+Description
+
+ +

Conclusion

+ +

Congratulations on completing this lab! Remember, the key to mastering AI is practice and experimentation. Don’t be afraid to try new things, make mistakes and learn from them. Keep experimenting with different prompts and techniques, and see where your creativity takes you with AI!

+ +

Throughout this lab, you’ve gained hands-on experience in crafting and refining prompts, guiding AI language models to generate desired content, and using AI tools for practical applications.

+ +

In particular, you’ve learned about various types of prompts, including seed text prompts, conditional prompts, multiple choice prompts, zero-shot prompts, and few-shot prompts. You’ve seen how these prompts can guide the AI model in different ways, from generating creative ideas to making detailed calculations.

+ +

By creating elements for a fictional space startup, you’ve also seen how these techniques can be applied to real-world scenarios. Whether you’re generating a company name, mission statement, business plan, or logo, you now have the skills to use AI tools effectively in your own projects.

+ +

We hope you found this lab engaging and insightful. We encourage you to continue exploring and experimenting with AI tools like Copilot in your future projects. Remember, the possibilities are as vast as space itself.

+ +

Happy prompting!

+ +

Glossary

+ +
    +
  1. +

    AI Companion: An artificial intelligence system designed to assist users in various tasks.

    +
  2. +
  3. +

    Prompt: A command or statement that guides the AI in generating content.

    +
  4. +
  5. +

    Seed Text Prompt: A simple, open-ended statement or question that serves as a starting point for AI-generated content.

    +
  6. +
  7. +

    Conditional Prompt: A type of prompt where you guide the AI to generate content based on certain conditions or criteria.

    +
  8. +
  9. +

    Multiple Choice Prompts: Prompts where the AI is presented with several options from which it must choose or recommend the most appropriate one.

    +
  10. +
  11. +

    Zero-shot Prompts: These prompts do not provide any example, they directly instruct the model to answer a question and rely on the training data to obtain the answer.

    +
  12. +
  13. +

    Few-shot Prompt: A type of prompt that provides some examples of the desired output, followed by an empty line where the AI will fill in a new output based on the examples.

    +
  14. +
  15. +

    Chain-of-thought Prompting: A technique that involves guiding the AI to think through the problem step-by-step, leading it to the desired output.

    +
  16. +
  17. +

    Tree-of-thought Prompting: A technique that helps the AI generate different ideas and choose the best one from them.

    +
  18. +
  19. +

    Multimodal Model: An AI model capable of understanding and generating different types of data, such as text, images, and audio.

    +
  20. +
  21. +

    System Message: A message that sets the rules for the generation process in AI chat apps.

    +
  22. +
  23. +

    Templates: Predefined formats or structures that guide the generation process in AI chat apps.

    +
  24. +
  25. +

    Context: The information that precedes the prompt and influences the AI’s response.

    +
  26. +
  27. +

    Session: A sequence of interactions with the AI model.

    +
  28. +
+ +

These definitions are specific to this lab guide and the usage of Microsoft’s AI companion, Copilot. The definitions might vary slightly in different contexts or with different AI systems.

+ +

Some more example prompts

+ +

Here are a few more examples for each type of prompt mentioned in the guide:

+ +
    +
  1. Seed Text Prompt: +
      +
    • “Artificial Intelligence is”
    • +
    • “The future of space exploration lies in”
    • +
    +
  2. +
  3. Conditional Prompt: +
      +
    • “Describe a day in the life of an astronaut training for a mission to Mars.”
    • +
    • “Imagine a scenario where an AI becomes the president of a country. Write a short story based on this.”
    • +
    +
  4. +
  5. Multiple Choice Prompts: +
      +
    • “Which of the following programming languages is most suitable for data science?
      +A) JavaScript
      +B) Python
      +C) C++
      +D) Swift”
    • +
    • “What’s the best way to travel to work?
      +A) Walking
      +B) Cycling
      +C) Driving
      +D) Public transport”
    • +
    +
  6. +
  7. Zero-shot Prompts: +
      +
    • “Translate the following sentence into French: ‘The sky is clear today.’”
    • +
    • “Solve the following equation: 2x + 3 = 9.”
    • +
    +
  8. +
  9. Few-shot Prompts: +
      +
    • “Some possible names for a fitness app are: +
        +
      • FitBuddy
      • +
      • HealthTrack
      • +
      • WorkoutPal
        +Generate three names for our fitness app that focuses on home workouts:”
      • +
      +
    • +
    • “Here are some slogans for a bakery: +
        +
      • ‘Freshness you can taste’
      • +
      • ‘Baked with love’
      • +
      • ‘Your daily bread’
        +Generate three slogans for our bakery that specializes in gluten-free products:”
      • +
      +
    • +
    +
  10. +
  11. Chain-of-thought Prompting: +
      +
    • “Let’s plan a 3-day trip to New York. Start with choosing the places to visit, then decide the best order to visit them to save travel time.”
    • +
    • “We need to plan a surprise birthday party for our friend. Start by listing out what we need, then decide the order in which we should arrange everything.”
    • +
    +
  12. +
  13. Tree-of-thought Prompting: +
      +
    • “Three of our best chefs are creating a new menu for our restaurant. They are discussing the main dish and have three different ideas. Generate them and select the best one based on your expertise.”
    • +
    • “Our marketing team is brainstorming ideas for our next ad campaign. They have three different concepts. Generate them and choose the best one.”
    • +
    +
  14. +
+ +

Remember to tailor the prompts to your specific needs and goals, and don’t be afraid to experiment with different formats and styles to get the best results.

+ + + + + + +
+ +
+ +
+
+ + + diff --git a/web/assets/css/sidebar.css b/web/assets/css/sidebar.css new file mode 100644 index 0000000..3112cbf --- /dev/null +++ b/web/assets/css/sidebar.css @@ -0,0 +1,16 @@ +#sidebar-index { + position: fixed; + top: 0; + right: 0; + width: 200px; + height: 100%; + padding: 1em; + background-color: #f9f9f9; + overflow: auto; + border-left: 1px solid #ccc; + } + + #sidebar-index a { + display: block; + margin-bottom: 0.5em; + } \ No newline at end of file diff --git a/web/img/30 answers.png b/web/img/30 answers.png new file mode 100644 index 0000000..cde0d82 Binary files /dev/null and b/web/img/30 answers.png differ diff --git a/web/img/Copilot in desktop.png b/web/img/Copilot in desktop.png new file mode 100644 index 0000000..92f0d60 Binary files /dev/null and b/web/img/Copilot in desktop.png differ diff --git a/web/img/new topic.png b/web/img/new topic.png new file mode 100644 index 0000000..597e465 Binary files /dev/null and b/web/img/new topic.png differ diff --git a/web/index.md b/web/index.md new file mode 100644 index 0000000..c893049 --- /dev/null +++ b/web/index.md @@ -0,0 +1,15 @@ +--- +# Feel free to add content and custom Front Matter to this file. +# To modify the layout, see https://jekyllrb.com/docs/themes/#overriding-theme-defaults + +layout: custom +title: Home +--- + +Here's a list of all the pages on this site: + +{% for p in site.pages %} + {% if p.title and p.url != page.url %} + - [{{ p.title }}]({{ p.url | relative_url }}) + {% endif %} +{% endfor %} \ No newline at end of file diff --git a/promptengineering/promptlab.md b/web/promptlab.md similarity index 94% rename from promptengineering/promptlab.md rename to web/promptlab.md index b28a62e..39e6760 100644 --- a/promptengineering/promptlab.md +++ b/web/promptlab.md @@ -1,12 +1,12 @@ -| | | -| - | - | -| Title: | Prompt Engineering Hands on Lab | -| SubTitle: | HSG Alumni | -| Authors: | Florian Follonier - Microsoft, Juan Manuel Servera - Microsoft | +--- +layout: custom +title: "Prompt Engineering Hands on Lab" +subTitle: "HSG Alumni" +authors: "Florian Follonier - Microsoft, Juan Manuel Servera - Microsoft" +permalink: /prompt-engineering +--- - - -# Prompt Engineering Hands-on Lab: An Introduction +## Prompt Engineering Hands-on Lab: An Introduction Welcome to the Prompt Engineering Hands-on Lab! This guide is designed to assist you in understanding and utilizing Microsoft's AI companion, Copilot, in a practical and engaging manner. @@ -21,7 +21,7 @@ By the end of this lab, you will have a comprehensive understanding of how to in Now, let's dive in and get started with our first exercise! -# Exercise 1 – Warmup & Basic prompts +## Exercise 1 – Warmup & Basic prompts For this exercise we are going to use Microsoft Copilot, your everyday AI companion, providing AI-powered chat for the web. Open it at and configure the conversation style to “**More creative**”, because today we are going to have an ideation session and, as Linus Pauling said once, the best way to have a good idea is to have lots of ideas. @@ -91,11 +91,11 @@ Now Copilot must have given this a second thought and understood the nuances. > Great job on completing the first exercise! Remember, there's no 'one-size-fits-all' approach to using AI. Feel free to experiment with different types of prompts to see what results you get. The more you experiment, the more you'll understand how to guide Copilot effectively. If you need some more examples for each type of prompt, check the [example guide](#some-more-example-prompts) at the end of this document. -# Exercise 2 – Create your own space startup +## Exercise 2 – Create your own space startup > As we dive into the second exercise, keep in mind that this is your opportunity to get creative and experiment. Try different prompt techniques, adjust your instructions, and see how Copilot responds. Remember, there's no right or wrong way to do this – the goal is to learn and have fun! -## Introduction +### Introduction You may have noticed by now that Copilot can give you up to 30 answers in a session: @@ -105,7 +105,7 @@ This means that after iterating 30 times you will need to start again from scrat In this exercise, you will use Copilot to generate various elements of your own space startup, such as the name, the mission statement, the logo, and the business plan. You will also learn how to use different prompting techniques, such as few-shot prompts, chain-of-thought prompts, and tree-of thought-prompts, to guide the generation process and produce high-quality results. -## Step 1: Set the context +### Step 1: Set the context Usually, Large Language Model (LLM) chat apps use a System Message and some templates to set the rules of the generation. We cannot change the system message for Copilot, but we can provide our own context for the session as a first message. @@ -121,7 +121,7 @@ Above all, your personal traits are what make you extraordinary. Your passion fo This was again a zero-Shot prompt, but we are just establishing the context. -## Step 2: Generate a name for your space startup +### Step 2: Generate a name for your space startup To generate a name for your space startup, you can use a **few-shot prompt**, which is a type of prompt that provides some examples of the desired output, followed by an empty line where Bing Chat will fill in a new output based on the examples. For example, you can write: @@ -138,7 +138,7 @@ Generate three names for our space startup that builds and sends human spaceship You can try different examples or add more details to the prompt, such as the type of service or product your startup offers, to get different results. -## Step 3: Assess the costs +### Step 3: Assess the costs Sending a spaceship with humans is tough. But as a startup, we must show investors that we've done our math. You can use **chain-of-thought prompting** to enforce the model to think about all the details. It involves guiding the AI to think through the problem step-by-step, leading it to the desired output: @@ -150,7 +150,7 @@ This part of the project is called Budget. Now that you've calculated the costs of the mission, you might want to experiment with different scenarios. What if the crew size changed? Or the distance to Mars varied? Feel free to play around with these variables and see how the costs change. -## Step 4: Generate a business plan +### Step 4: Generate a business plan As you will be challenged by the investors when you present your plan, you can use a [**tree-of-thought**](https://www.promptingguide.ai/techniques/tot) prompting technique. This technique helps the model generate different ideas and choose the best one from them. @@ -167,7 +167,7 @@ Now, based on the executive summary and budget, please complete the business pla This part of the project work is called Business Plan. ``` -## Step 5: Generate a mission statement for your space startup +### Step 5: Generate a mission statement for your space startup Now that we have a lot of content, we can generate a mission statement for your space startup. For example, you can write: @@ -177,7 +177,7 @@ This part of the project work is called Mission Statement. Write a mission statement that reflects our objectives and the values of the company. ``` -## Step 6: Create a logo for your company +### Step 6: Create a logo for your company Microsoft Copilot in Bing is a **multimodal** model, this means that it can also generate and understand pictures and audio. In this case the LLM has already a lot of information to work with, so we don’t need to provide lots of details, just indicate what we want in a clear statement. Let’s ask Copilot to generate a logo for our company: @@ -189,7 +189,7 @@ Create a monochromatic logo in red for our company that reflects the mission and > Did you notice that the prompt for DALL·E was crafted by Copilot? You didn’t need to explain again that it was a spaceship company going to Mars, because it used the **chains** it already had. You can also go directly to to generate images with your own prompts. -## Step 7: pulling it all together +### Step 7: pulling it all together In this step, you will use the AI to review and summarize all the content generated during the previous exercises. This step is crucial in ensuring that all the elements of your project are coherent and aligned with your objectives. @@ -221,7 +221,7 @@ Can you format it like this: Description ``` -# Conclusion +## Conclusion Congratulations on completing this lab! Remember, the key to mastering AI is practice and experimentation. Don't be afraid to try new things, make mistakes and learn from them. Keep experimenting with different prompts and techniques, and see where your creativity takes you with AI! @@ -235,7 +235,7 @@ We hope you found this lab engaging and insightful. We encourage you to continue Happy prompting! -# Glossary +## Glossary 1. **AI Companion**: An artificial intelligence system designed to assist users in various tasks. @@ -267,7 +267,7 @@ Happy prompting! *These definitions are specific to this lab guide and the usage of Microsoft's AI companion, Copilot. The definitions might vary slightly in different contexts or with different AI systems.* -# Some more example prompts +## Some more example prompts Here are a few more examples for each type of prompt mentioned in the guide: