Data & AI

Przygotowanie MVP
(Minimum Viable Product)
Konfiguracja na Sterydach:
twórz, testuj, uprodukcyjniaj!
Asystent o zmiennym
charakterze
Opis zadania
    Proszę o przygotowanie MVP (Minimum Viable Product) Asystenta Analitycznego opartego na danych sprzedażowych z wykorzystaniem modelu językowego LLM oraz innych niezbędnych komponentów z użyciem języka Python. Asystent powinien być zdolny do udzielania odpowiedzi na pytania z zakresu analizy:
  • eksploracyjnej,
  • diagnostycznej,
  • predykcyjnej,
  • w oparciu o dostarczoną bazę danych.
    Kryteria oceny obejmują:
  • jakość koncepcji,
  • efektywność działania,
  • standardy pisania kodu.

Wyślij nam zadanie nawet wtedy, gdy nie jest ono w pełni ukończone. Ważne jest też dla nas sprawdzenie,
jak podeszłaś do zadania i jaki miałaś pomysł na jego wykonanie.
Informacja czy dana transakcja jest rentowna dla systemów sprzedażowych jest cenna.
Niejednokrotnie wyzwaniem jest zbudowanie takiego mechanizmu, by jednocześnie był przyjazny dla osób, które będą z nim pracować i spełniał wszystkie ich wymagania odnośnie możliwości konfiguracyjnych systemu.

Wyobraźmy sobie aplikację, która jest konfigurowalna przez przedstawicieli z biznesu działających na pewnych zbiorach danych zwanymi dalej macierzami. Niejednokrotnie przedstawiciele pracują na brudnopisach zanim podejmą decyzje, że system sprzedażowy powinien używać tej konfiguracji jako produkcyjnej.

W momencie, gdy zdecydują się, że ich praca jest skończona, uprodukcyjniają konfigurację i system przenosi ich zmiany z brudnopisu na konfigurację produkcyjną wykorzystywaną przez system.
    Zaprojektuj aplikację backendową, która umożliwi zrealizowanie logiki:
  • tworzenie nowego brudnopisu w oparciu o konfigurację produkcyjną - założenie nowego brudnopisu, inicjuje go konfiguracja produkcyjna,
  • edycja konfiguracji brudnopisu
  • podgląd konfiguracji w ramach brudnopisu,
  • przechowywanie konfiguracji produkcyjnej,
  • uprodukcyjnienie konfiguracji - przeniesienie konfiguracji z brudnopisu do miejsca, gdzie system będzie przechowywał konfigurację produkcyjną,
  • audyt zmian jakie zostały wykonane w konfiguracji produkcyjnej w ramach przenoszenia konfiguracji brudnopisu.

    Założenia:
  • brudnopis składa się z kompletu danych 3 macierzy (struktura biznesowa macierzy + przykładowa konfiguracja + ograniczenia walidacyjne w załączniku Macierze),
  • aplikacja wystawia interfejs REST do tworzenia brudnopisu i zarządzania jego konfiguracją,
  • aplikacja wystawia interfejs REST do podglądu konfiguracji brudnopisu,
  • aplikacja wystawia interfejs REST do zlecenia uprodukcyjnienia konfiguracji,
  • aplikacja wystawia interfejs REST do podglądu konfiguracji produkcyjnej,
  • Macierz1 i Macierz2 powinny umożliwiać załadowanie konfiguracji kopii roboczej w ramach pliku CSV.

Pamiętaj, by ze względu na duże woluminy danych uwzględnić aspekt wydajnościowy aplikacji.
    Glosariusz:
  • macierz - tabela lub wiele tabel w relacji zawierających jakąś konfigurację biznesową,
  • konfiguracja produkcyjna - konfiguracja wszystkich 3 macierzy, która jest wykorzystywana przez system do weryfikacji,
  • brudnopis - konfiguracja wszystkich 3 macierzy, która nie jest wykorzystywana przez system do weryfikacji - istnieje na potrzeby edycji konfiguracji na potrzeby przedstawiciela biznesowego,
  • uprodukcyjnianie konfiguracji - moment, w którym przepisujemy konfigurację z brudnopisu na konfigurację produkcyjną (tzn. chcemy, by system w ramach weryfikacji zaczął używać tej konfiguracji),
  • audytowalność - umożliwienie sprawdzenia, jak konfiguracja produkcyjna zmieniała się w czasie.

    Jury oceniać będzie:
  • właściwą interpretację wymagań - 10 pkt
  • poprawną implementację aplikacji - 30 pkt
  • jakość dostarczonego kodu - 15 pkt
  • jakość testów jednostkowych - 5 pkt
  • jakość testów integracyjnych - 15 pkt
  • jakość promptów AI - 10 pkt
  • umiejętność obsługi błędów - 5 pkt
  • podejście do wydajności aplikacji - 10 pkt

Wyślij nam zadanie nawet wtedy, gdy nie jest ono w pełni ukończone. Ważne jest też dla nas sprawdzenie, jak podeszłaś do zadania i jaki miałaś pomysł na jego wykonanie.
Twoim zadaniem jest stworzenie inteligentnego asystenta (tekstowego lub głosowego) opartego na wybranym przez Ciebie dużym modelu językowym open-source* (Bielik, LLama, BLOOM). Kluczowym elementem jest dostosowywanie się asystenta do indywidualnych potrzeb użytkownika. Przykładowo, gdy użytkownik prosi o pomoc w rozwiązaniu problemu technicznego, asystent powinien odpowiadać krótko, rzeczowo i w formalnym tonie. W przypadku rozmów o codziennych sprawach, odpowiedzi asystenta powinny być swobodniejsze i pogodne. Jeśli użytkownik odczuwa silne negatywne emocje, takie jak złość, strach, czy frustracja, asystent powinien zaoferować wsparcie poprzez empatyczne odpowiedzi czy uspokajający ton.

Zmiana osobowości powinna wynikać z zaprojektowanej przez Ciebie logiki, a nie być wbudowana w model LLM. Model ma jedynie generować treści odpowiedzi, natomiast styl wypowiedzi (formatowanie, długość, itp.) oraz charakter asystenta, powinny zmieniać się w zależności od zaprojektowanych przez Ciebie reguł, które oprzesz na analizie wiadomości użytkownika. Możesz analizować na przykład kontekst wypowiedzi, sentyment lub obecność określonych zwrotów. To, co zdecydujesz się analizować oraz liczba i rodzaj reguł, zależy wyłącznie od Ciebie.

Wyślij nam zadanie nawet wtedy, gdy nie jest ono w pełni ukończone. Ważne jest też dla nas sprawdzenie jak podeszłaś do zadania i jaki miałaś pomysł na jego wykonanie.

Kryteria oceny:
    Kreatywność - 25%
  • Jak twórczo podeszłaś do zadania?
  • Czy rozwiązanie jest przemyślane i oryginalne?
  • Na ile zróżnicowane są “osobowości” asystentów? Jak dobrze odpowiadają na różne potrzeby użytkowników?

    Innowacyjność - 25%
  • W jak dużym stopniu rozwiązanie jest wynikiem Twojej własnej pracy, a nie odtworzeniem dostępnych rozwiązań?

    Umiejętności analityczne - 20%
  • Jak dokładna i wnikliwa jest przeprowadzona przez Ciebie analiza?
  • Czy uwzględniłaś różne scenariusze i przypadki?

    Współpraca z LLM - 15%
  • Jak swobodnie korzystasz z narzędzi LLM? Czy w efektywny sposób ich używasz?
  • Czy umiesz tworzyć skuteczne prompty i wpływać na odpowiedzi modeli językowych?

    Techniczna poprawność - 15%
  • Czy Twoja implementacja jest klarowna i dobrze zorganizowana?
  • Czy chat działa bez błędów?

*Darmowe modele LLM możesz ściągnąć lokalnie przez stronę https://huggingface.co
Czasochłonność wykonania zadania
80 - 120 godzin
40 godzin
3-5 dni
Forma dostarczenia zadania
Prześlij link do swojego prywatnego repozytorium GitHub i nadaj uprawnienia administracyjne dla adam.wiechecki@orange.com; izabela.ornowska@orange.com; adam.krysztalowicz@orange.com

Dzięki tym uprawnieniom będziemy mogli udostępnić Twoją pracę pozostałym jurorom.
    W ramach realizacji prac dostarcz kod aplikacji:
  • obowiązkowe technologie do wykorzystania: JAVA + SPRING + MAVEN,
  • możesz wykorzystać dowolną bazę danych, dowolną kolejkę, wszystko, co przyjdzie Ci do głowy,
  • wyślij również prompty, które zostały użyte w ramach wykorzystywania AI wraz z odpowiedziami,
  • załącz krótką notatkę opisującą jakie widzisz wady w przygotowanej przez siebie aplikacji.

Prześlij link do swojego prywatnego repozytorium GitHub i nadaj uprawnienia administracyjne dla bartosz.rybak@orange.com; michal.goral@orange.com. Dzięki tym uprawnieniom będziemy mogli udostępnić Twoją pracę pozostałym jurorom.
Rozwiązanie dostarcz w postaci pliku Jupiter notebook w dwóch formatach: .ipynb oraz .html
(możesz wygenerować .html za pomocą opcji "Zapisz jako"/"Download as").
Wartość dodana
Przygotowanie narzędzia, które w naturalny sposób komunikuje się z użytkownikiem, integracja baz danych z LLM, upskiling w zakresie programowania w Pythonie i aplikacjach webowych.
Uczestniczki będą miały okazję zapoznać się z różnymi metodami wersjonowania danych. Ponadto, ze względu na charakter zadania, będą mogły zdobyć wiedzę z zakresu audytu/audytowania danych oraz aspektów wydajnościowych.
Myślenie nieszablonowe, kreatywne podejście do problemu (tzw. "out of the box thinking").
Analiza danych tekstowych.
Współpraca z modelami LLM: tworzenie zapytań, manipulowanie odpowiedziami modelu w zależności od kontekstu.
Formułowanie wniosków na podstawie przeprowadzonej analizy danych.
Wyzwania np. trudności związane z przygotowaniem zadania
Zabezpieczenie systemu przed niepożądanymi działaniami operatora, testy systemu.
Na podstawie zdobytej wiedzy będą musiały podjąć trudną decyzje, czy wykorzystać jedną z istniejących technologii, czy zaimplementować własną logikę aplikacyjną.
Dobór odpowiedniego modelu językowego do danego problemu.
Zaplanowanie rozwiązania na podstawie opisu problemu.
Przejrzyste przedstawienie rozwiązania, dobra organizacja kodu.
Opracowanie sposobu dopasowania „osobowości” chatbota do potrzeb klienta.
Autorzy zadania
Adam Wiechecki, Izabela Ornowska, Adam Kryształowicz
Michał Góral, Bartosz Rybak
Izabella Krzemińska, Alicja Kasicka
Pobierz załącznik do wykonania zadania
Pobierz
Pobierz załącznik do wykonania zadania
Pobierz
Prześlij
rozwiązanie zadania

Loading image

Proszę czekać