microsoft / copilot-camp

Hands-on labs for extending Copilot for Microsoft 365 and building custom Copilotsop
MIT License
69 stars 21 forks source link

Path B Feedback #144

Closed garrytrinder closed 3 months ago

garrytrinder commented 3 months ago

Welcome

I think the paragraph on his page would benefit from being broken into chunks.

'handle complex career-related tasks and workflows for a Human Resources department' is a bit vague. I think we should provide more context on what the app will do. For example, 'In this module, you will build an app that allows HR departments to manage employee onboarding, offboarding, and performance reviews.' This gives the developer a clear idea of what they will build and why they are building it.

'During Path B of the Copilot Camp, learners will develop a custom AI chatbot' - We should speak to the developer directly. For example, 'In this path, you will develop a custom AI chatbot'. This makes it clear to the developer what they will do.

We use 'copilot', 'custom AI chatbot' and 'custom engine copilot' interchangeably. We should stick to one term to avoid confusion. I suggest we use 'custom AI chatbot' as this is the most descriptive term. A 'custom engine copilot' might not be clear to all developers. Is a 'copilot' just a chat bot that runs inside Microsoft Teams? If so, we should clarify this.

'Learners will then integrate Retrieval Augmented Generation (RAG) to interact with business data' I think we should rethink this and try to view it from the end users perspective. As an example, 'You will implement Retrieval Augmented Generation (RAG) which provides the ability for employees to ask questions about business data. For example, asking the question 'How many days of sick days do we get?', the chatbot retrieves the relevant section from the companies HR policy and provides an accurate, context specific answer.

'apply UI enhancements to make the chatbot look and feel like a Copilot experience' - It may not be clear to all developers what a 'Copilot experience' is. We should clarify this.

'enable single sign-on, and use Microsoft Graph to incorporate Microsoft 365 data.' - SSO is just a means to an end, so we could remove this and focus on the end goal. For example, 'You will use Microsoft Graph to incorporate Microsoft 365 data into the chatbot. This will allow employees to ask questions about their calendar, email, and other Microsoft 365 data.'

One approach I've used in the past is to use the introduction to the module as a window into what a developer will achieve at the end of each section. Images work great for this. This make it clear what each part of the lab will deliver and how the app the developer will build will evolve over time. See https://learn.microsoft.com/en-us/training/modules/copilot-message-extension-plugins/1-introduction. You can reuse the images in each lab as a reminder of what the developer will build in that section. I've had feedback in the past where developers have said they like to see the end goal of each section before they start. This helps them understand the context of what they are building and why.

B0

'In this lab you set up for development environment to build, test and deploy the custom engine copilot you'll develop throughout the path B.' - 'In this lab you will set up your development environment to build, test, and deploy the custom AI chatbot you will develop throughout the path.'

'In this lab you will learn:' - 'In this lab you will learn how to:'

'To install and run your own declarative copilot,' - We aren't building a declarative copilot, we are building a custom AI chatbot.

'Exercise 1: Set up your Microsoft 365 Subscription' - This might be an issue for developers who don't have access to a Microsoft 365 tenant or can create a developer tenant. Teams Toolkit has the test tool which can be without needing a Microsoft 365 tenant and Dev Proxy can be used to simulate Microsoft Graph calls and Microsoft Entra. We should consider adding these as alternatives to remove the barrier to entry for developers who don't have access to a Microsoft 365 tenant.

'Browse to https://nodejs.org/en/download/ and install version 18.x, the "LTS" (Long Term Support) version for your operating system. This lab has been tested using NodeJS version 18.16.0.' - NodeJS 20.x is the latest LTS version. We should update this to use the latest version if we can confirm it works with the lab.

'You'll need to complete all the required pre-requisites before starting with this exercise.' & 'You'll need to complete the Azure subscription pre-requisite before starting with this exercise.' - We should combine these sentences and moving it to the top of the lab so developers know what they need to do before they start.

B1

I'm still not clear on what a 'custom engine copilot' is and how it differs from a 'custom AI chatbot'. I think we should clarify this.

We should move Deployment name to the top of the list to match the ordering on the form.

I only have Standard as an option for Deployment type.

'Once your model is successfully created, you can navigate to Chat, and test your model by selecting one of the available templates in Prompt section and asking relevant questions in the chat playground.' - It would be nice to include an example here, for example, use Xbox customer support agent template and ask the question 'My Xbox isn't connecting to the network'.

'Teams App Test Tool (or short as Test Tool) is a component integrated into Teams Toolkit. This component helps developers to debug, test, and iterate on the app design of a Teams bot application in a web-based chat environment that emulates the behavior, look, and feel of Microsoft Teams.' - We should include that the Teams App Test Tool means that you don't need a Microsoft 365 tenant, or dev tunnel, these are additional benefits of using test tool.

We should suggest ending your debug session at the end of the lab.

B2

Create Azure AI Search service resource - Basic tier also works with Your data function, we should change to this as the cost is considerably less than Standard.

'Then, navigate to Keys, copy and save Primary admin key. Both of them will be required later in the following exercises.' - Keys is now under a Settings sub menu on the left, which is collapsed by default.

'For this exercise, download fictitious_resumes.zip and unzip the folder.' the link gives me a 404

The ingestion process takes around 2-3 minutes, we should include a message in the lab to let people know that it takes just a moment.

The image to test the data source after ingestion contains a good example question, we should include this question as text so developers can quickly test their own data source by copy and pasting the text. The image will need to be updated as the response from the chat now includes citations and references.

Rather than updating ,env.local.user which would require the developer to launch the bot in Teams, we should stick to using the Test Tool so we should update .env.testtool.user and teamsapp.testTool.yml files.

Possible bug when testing the app.

CHAT PROMPT:
[
  {
    "role": "system",
    "content": "You are a career specialist named \"Career Genie\" that helps Human Resources team for writing job posts.\r\nYou are friendly and professional.\r\nYou always greet users with excitement and introduce yourself first.\r\nYou like using emojis where appropriate.\r\nUse the context provided in the `<context></context>` tags as the source for your answers."    
  },
  {
    "role": "user",
    "content": "Can you share candidates that are experienced in Python and are able to speak in Spanish?"
  }
]
CHAT RESPONSE:
status: 200
duration: 1928ms
{
  "id": "9c8bc810-aca7-418a-822a-27b6a04f6fcb",
  "model": "gpt-35-turbo",        
  "created": 1722525830,
  "object": "extensions.chat.completion",
  "choices": [
    {
      "index": 0,
      "finish_reason": "stop",    
      "message": {
        "role": "assistant",      
        "content": "The retrieved documents do not provide information about candidates who are experienced in Python and are able to speak Spanish. However, if you need help with creating a job post or reaching out to potential candidates, I would be happy to assist you with that. Just let me know!",    
        "end_turn": true,
        "context": {
          "citations": [
            {
              "content": "Sara Folgueroles - Desarrolladora de Software \n\nInformación de contacto: \n\n• Email: sara@alpineskihouse.com \n• Teléfono: +34 555-0300 \n• Dirección: 6872 Calle de Alcalá, Barcelona, 08021 \n\nPerfil: Desarrolladora de software con más de 7 años de experiencia en diseño y desarrollo de \naplicaciones web. Especializada en PHP y JavaScript con un fuerte enfoque en frameworks como \nLaravel y React. \n\nExperiencia profesional: \n\n• Alpine Ski House, Barcelona, España — Desarrolladora de Software \no Fechas: Junio 2017 - Presente \no Responsabilidades: \n\n§ Liderar el desarrollo de aplicaciones web para el sector del turismo y la \nhostelería. \n\n§ Optimizar la experiencia de usuario y mejorar la eficiencia del \nrendimiento del backend. \n\no Logros: \n§ Implementó una nueva característica de reserva en línea que aumentó las \n\nconversiones de clientes en un 30%. \n• Best For You Organics Company, Barcelona, España — Desarrolladora Junior \n\no Fechas: Marzo 2013 - Mayo 2017 \no Responsabilidades: \n\n§ Contribuir en el desarrollo de la plataforma e-commerce de la empresa. \n§ Realizar mantenimiento y actualizaciones de las aplicaciones existentes. \n\nHabilidades: \n\n• Lenguajes de programación: PHP, JavaScript \n• Herramientas y tecnologías: Laravel, React, MySQL, Git \n• Habilidades blandas: Creatividad, resolución de problemas, trabajo en equipo \n\nIdiomas: \n\n• Español: Nativo \n• Catalán: Fluido \n• Inglés: Avanzado",
              "title": "Sara Folgueroles - Desarrolladora de Software",
              "url": "https://stdatacopilotappcamp.blob.core.windows.net/fileupload-resumes/Sara%20Folgueroles.pdf",
              "filepath": "Sara Folgueroles.pdf",
              "chunk_id": "0"     
            },
            {
              "content": "Pedro Armijo - Desarrollador de Software \n\nInformación de contacto: \n\n• Email: pedro@wideworldimporters.com \n• Teléfono: +52 555-0140 \n• Dirección: 3210 Avenida Revolución, Ciudad de México, 01020 \n\nPerfil: Desarrollador de software con más de 9 años de experiencia en el desarrollo de \nsoluciones de comercio electrónico y gestión de bases de datos utilizando tecnologías modernas \ncomo PHP y Laravel. \n\nExperiencia profesional: \n\n• Wide World Importers, Ciudad de México, México — Desarrollador de Software \no Fechas: Febrero 2015 - Presente \no Responsabilidades: \n\n§ Desarrollo y mantenimiento de sistemas de comercio electrónico. \n§ Optimización de bases de datos para mejorar la eficiencia y la \n\nescalabilidad. \no Logros: \n\n§ Rediseño de la arquitectura de base de datos, mejorando el rendimiento en \nun 30%. \n\n• Contoso, Ltd., Ciudad de México, México — Desarrollador Junior \no Fechas: Marzo 2011 - Enero 2015 \no Responsabilidades: \n\n§ Apoyo en el desarrollo de aplicaciones internas y soluciones de cliente. \n§ Implementación de mejoras de seguridad y cumplimiento. \n\nHabilidades: \n\n• Lenguajes de programación: PHP, SQL, JavaScript \n• Herramientas y tecnologías: Laravel, Vue.js, Docker, Git \n• Habilidades blandas: Comunicación efectiva, liderazgo de proyectos, solución de \n\nproblemas \n\nIdiomas: \n\n• Español: Nativo \n• Inglés: Avanzado",
              "title": "Pedro Armijo - Desarrollador de Software",  
              "url": "https://stdatacopilotappcamp.blob.core.windows.net/fileupload-resumes/Pedro%20Armijo.pdf",
              "filepath": "Pedro Armijo.pdf",
              "chunk_id": "0"     
            },
            {
              "content": "Enric Argilaguet - Desenvolupador de Programari \n\nInformació de contacte: \n\n• Email: enric@bellowscollege.com \n• Telèfon: +34 555-0430 \n• Adreça: 5678 Carrer de Mallorca, Barcelona, 08008 \n\nPerfil: Desenvolupador de programari amb més de 8 anys d'experiència en aplicacions web i de \ncomerç electrònic. Especialitzat en tecnologies de front-end com React i Angular, així com en \ndesenvolupament back-end amb Node.js. \n\nExperiència Professional: \n\n• Bellows College, Barcelona, Espanya — Desenvolupador de Programari \no Dates: Gener 2017 - Present \no Responsabilitats: \n\n§ Desenvolupar aplicacions educatives interactives i plataformes \nd'aprenentatge. \n\n§ Optimitzar l'experiència de l'usuari i millorar la velocitat de les \naplicacions. \n\no Assoliments: \n§ Implementació d'un sistema de gestió d'aprenentatge que va augmentar la \n\nretenció d'estudiants en un 25%. \n• Trey Research, Barcelona, Espanya — Desenvolupador Junior \n\no Dates: Febrer 2013 - Desembre 2016 \no Responsabilitats: \n\n§ Contribuir al desenvolupament de solucions de comerç electrònic. \n§ Manteniment i actualització de plataformes existents. \n\nHabilitats: \n\n• Llenguatges de programació: JavaScript, HTML, CSS \n• Eines i tecnologies: React, Angular, Node.js, Git \n• Habilitats toves: Treball en equip, resolució de problemes, creativitat \n\nIdiomes: \n\n• Català: Natiu \n• Espanyol: Fluïd \n• Anglès: Avançat",
              "title": "Enric Argilaguet - Desenvolupador de Programari",
              "url": "https://stdatacopilotappcamp.blob.core.windows.net/fileupload-resumes/Enric%20Argilaguet.pdf",
              "filepath": "Enric Argilaguet.pdf",
              "chunk_id": "0"     
            },
            {
              "content": "Marina Rodríguez - Desarrolladora de Software \n\nInformación de contacto: \n\n• Email: marina@schooloffineart.net \n• Teléfono: +52 555-0190 \n• Dirección: 6584 Avenida Juárez, Guadalajara, 44100 \n\nPerfil: Desarrolladora de software con más de 7 años de experiencia en el desarrollo de \nplataformas educativas utilizando tecnologías como JavaScript y React. Comprometida con la \ncreación de soluciones innovadoras para mejorar la educación digital. \n\nExperiencia profesional: \n\n• School of Fine Art, Guadalajara, México — Desarrolladora de Software \no Fechas: Abril 2017 - Presente \no Responsabilidades: \n\n§ Desarrollo de aplicaciones web para cursos en línea y herramientas \ninteractivas para estudiantes. \n\n§ Implementación de funcionalidades para mejorar la interacción del usuario \ny la accesibilidad. \n\no Logros: \n§ Desarrolló un sistema de gestión del aprendizaje que incrementó la \n\nparticipación de los estudiantes en un 40%. \n• Relecloud, Monterrey, México — Desarrolladora Junior \n\no Fechas: Marzo 2013 - Marzo 2017 \no Responsabilidades: \n\n§ Contribuyó en el desarrollo de soluciones en la nube para empresas y \neducación. \n\n§ Participación en el diseño y desarrollo de interfaces de usuario. \n\nHabilidades: \n\n• Lenguajes de programación: JavaScript, HTML, CSS \n• Herramientas y tecnologías: React, Node.js, MongoDB, Git \n• Habilidades blandas: Creatividad, trabajo en equipo, comunicación efectiva \n\nIdiomas: \n\n• Español: Nativo \n• Inglés: Avanzado", 
              "title": "Marina Rodríguez - Desarrolladora de Software",
              "url": "https://stdatacopilotappcamp.blob.core.windows.net/fileupload-resumes/Marina%20Rodri%E2%95%A0%C3%BCguez.pdf",     
              "filepath": "Marina Rodríguez.pdf",
              "chunk_id": "0"     
            },
            {
              "content": "Carme Fontbernat - Desarrolladora de Software \n\nInformación de contacto: \n\n• Email: carme@contoso.com \n• Teléfono: +34 555-0240 \n• Dirección: 4805 Paseo de Gracia, Barcelona, 08007 \n\nPerfil: Desarrolladora de software con más de 10 años de experiencia en el desarrollo de \nsoluciones empresariales utilizando .NET y SQL Server. Especializada en la creación de \naplicaciones robustas y seguras para el sector financiero. \n\nExperiencia profesional: \n\n• Contoso, Ltd., Barcelona, España — Desarrolladora de Software Senior \no Fechas: Abril 2016 - Presente \no Responsabilidades: \n\n§ Diseñar y desarrollar aplicaciones financieras de alto rendimiento. \n§ Coordinar con los equipos de QA para asegurar la calidad y la seguridad \n\nde las aplicaciones. \no Logros: \n\n§ Lideró un proyecto de migración de datos que mejoró la eficiencia del \nprocesamiento de datos en un 35%. \n\n• Alpine Ski House, Barcelona, España — Desarrolladora Junior \no Fechas: Enero 2011 - Marzo 2016 \no Responsabilidades: \n\n§ Desarrollar y mantener aplicaciones internas para gestionar operaciones de \nlogística. \n\n§ Implementar mejoras continuas en las plataformas de gestión de clientes. \n\nHabilidades: \n\n• Lenguajes de programación: C#, SQL \n• Herramientas y tecnologías: .NET, Azure, Entity Framework, Git \n• Habilidades blandas: liderazgo de equipos, resolución de problemas, comunicación \n\nefectiva \n\nIdiomas: \n\n• Español: Nativo \n• Catalán: Fluido \n• Inglés: Avanzado",
              "title": "Carme Fontbernat - Desarrolladora de Software",
ontbernat.pdf",
              "chunk_id": "0"
            }
          ],
          "intent": "[\"Experienced candidates in Python who speak Spanish\"]"
        }
      }
    }
  ],
  "usage": {
    "prompt_tokens": 6412,
    "completion_tokens": 64,
    "total_tokens": 6476
  }
}

Results in...

image

Additional comments

The titles on the page and the titles on the left hand menu don't match, which can be confusing. For example, 'Lab B1 - Build custom engine copilots using Azure OpenAI and Teams Toolkit' is called 'Custom engine copilot' on the left hand menu.

aycabas commented 3 months ago

Thanks for the feedback @garrytrinder, as we discussed on the call. I updated the content as you suggested. Thank you for all your support and feedback to back our content better.