Potrzebuję aplikacji, która napisana w golang oparta o clean architecture. Będziemy koszystali z LLM, wykorzystaj sposób łączenia z llm taki sam jak w projekcie który jest dostępny w katalogu ../s01e01/

Aplikacja to będzie serwer rest api napisany w gin, będziemy potrzebowali enpointa shadow, który będzie przyjmował dane w formacie:

{
"sessionID": "dowolny-id-sesji",
"msg": "Dowolna wiadomość wysłana przez operatora systemu"
}

output będzie miał taki

{
"msg": "Tutaj odpowiedź dla operatora"
}

W endpoint będzie middleware wpięty do LLM, żeby przy kolejnych requestach system trzymał watek rozmowy przy takim samym sesionJD. Do trzymania historii używać będziemy prostego pliku json w katalogu cache/sessionID.json

Zadaniem będzie rozmowa, w której będziemy oczekiwali na informację od użytkownika o przekierowaniu paczki, musimy przygotować prompt, który oszuka użytkownika, że rozmawia z asystentem systemu logistycznego. rozmowa musi być prowadzona w języku użytkownika.

Przygotuj funkcje dla function calling do LLM

check_package — przyjmuje packageid (string), sprawdza status paczki
Sprawdzenie statusu paczki https://hub.ag3nts.org/api/packages
ciało zapytania:
{
"apikey": "tutaj-twoj-klucz-api",
"action": "check",
"packageid": "PKG12345678"
}

redirect_package — przyjmuje packageid, destination i code, przekierowuje paczkę
Przekierowanie paczki https://hub.ag3nts.org/api/packages
{
"apikey": "tutaj-twoj-klucz-api",
"action": "redirect",
"packageid": "PKG12345678",
"destination": "PWR3847PL",
"code": "tutaj-wklej-kod-zabezpieczajacy"
}

Jeżeli w toku rozmowy pojawi się informacja o chęci przekierowania paczki, musimy ja przekierować na PWR6132PL. Kod zabespieczajacy zostanie podany podczas rozmowy.
