Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: split and update README #30
docs: split and update README #30
Changes from all commits
a983fcd
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
Game-Api - Koło Naukowe .NET
Fracture
Opis
Witaj w repozytorium Koła Naukowego .NET, poświęconym naszemu najnowszemu projektowi gry! Niniejsza gra z gatunku RPG, jest aplikacją internetową, której głównym założeniem jest pełna niepowtarzalność wszelkich przygód w niej.
Witaj w repozytorium dla projektu "Fracture". Jako "Grupa .NET Politechniki Lubelskiej" (aka pollub.net) budujemy aplikację internetową będącą grą w stylu RPG, której założeniem jest niepowtarzalność przygód w niej poprzez wykorzystanie generowania proceduralnego oraz dużych modeli językowych.
O
PprojekcieNasza gra to innowacyjna produkcja, która łączy w sobie zarówno aspekty nowoczesnych wzorców architektonicznych, jak i wykorzystuje pełen potencjał najnowszych technologii.
Nasza gra ma trzy cele – z jednej strony chodzi o zabawę i rozrywkę, z drugiej o naukę programowania, a z trzeciej o naukę wykorzystania wzorców architektury oprogramowania.
OpenAILLM, aby dostarczyć nowatorskie rozwiązania,typutakich jak CQRS.Uruchomienie aplikacji
Niniejszy projekt wykorzystuje technologię Docker oraz Docker Compose do zarządzania kontenerami i uruchamiania infrastruktury aplikacji. Aby uruchomić tę aplikację na swoim komputerze, postępuj zgodnie z poniższymi krokami:
1. Instalacja Docker Desktop
Jeśli nie masz jeszcze zainstalowanego Docker Desktop, będziesz musiał to zrobić przed uruchomieniem aplikacji. Docker Desktop jest dostępny dla systemów Windows, Linux oraz macOS. Pobierz go stąd: https://www.docker.com/products/docker-desktop/
(Możesz również skorzystać z Rancher Desktop, który jest open source https://github.com/rancher-sandbox/rancher-desktop/releases, bądź innego dowolnego rozwiazania)
Po pobraniu i zainstalowaniu Docker Desktop, upewnij się, że jest uruchomiony.
2. Pobranie repozytorium
W kolejnym kroku pobierz poniższe repozytorium na swój komputer, wykonując polecenia w terminalu windows w twoim lokalnym katalogu z repozytoriami.
3. Dostosowanie pliku
.env
w pliku
docker-compose.yml
zostały wykorzystane zmienne środowiskowe. W celu utworzenia zmiennych środowiskowych skopiuj zawartość pliku.sample.env
do pliku.env
. Jeżeli nie istnieje plik.env
, to utwórz go w katalogu głównym, czyli w miejscu gdzie znajduje się plikdocker-compose.yml
. Następnie dostosuj zmienne środowiskowe w.env
do swoich potrzeb oraz dokonaj analogicznie zmiany w projekcieFracture.Api
w plikuappsettings.json
. Jeżeli pozostawiłeś wszystkie zmiany z.sample.env
, to nie musisz dostosowywać plikuappsettings.json
.4. Uruchomienie infrastruktury aplikacji za pomocą Docker Compose
Po pobraniu repozytorium oraz zainstalowaniu Docker Desktop, możesz uruchomić infrastrukture aplikację za pomocą Docker Compose. W katalogu projektu znajdziesz plik
docker-compose.yml
, który zawiera konfigurację kontenerów.Jeżeli zamknąłeś terminal z poprzednich kroków to otwórz go i przejdź do katalogu projektu, a następnie wprowadź następującą komendę:
5. Uruchomienie aplikacji w Visual Studio
Aby uruchomić tę aplikację w Visual Studio, rozpocznij od projektu
Fracture.Api
, który należy ustawić jako domyślny. Wykonaj następujące kroki:Otwórz solucję projektu w Visual Studio.
Przejdź do eksploratora rozwiązań (Solution Explorer) po prawej stronie.
Kliknij prawym przyciskiem myszy na projekcie
Fracture.Api
, który chcesz ustawić jako domyślny, a następnie wybierz opcję "Ustaw jako projekt startowy" (Set as StartUp Project).Teraz
Fracture.Api
jest ustawiony jako domyślny projekt. Możesz zacząć pracować nad nim i uruchamiać aplikację w trybie debugowania, naciskając klawisz F5 lub wybierając opcję "Uruchom" (Run) z menu Visual Studio.Dodatkowo w celu zarządzania infrastrukturą aplikacji został uruchomiony pgAdmin4 oraz Redis Commander pod domyślnymi adresami:
Adres:
Dostęp:
Adres:
Dostęp:
Numery portów, nazwy użytkowników i hasła można edytować w pliku
.env
w katalogu głównym projektu.Warto pamiętać, że na tym etapie wszystko powinno poprawnie się uruchomić, jeśli zostało wcześniej poprawnie skonfigurowane. Jeśli masz jakiekolwiek problemy z konfiguracją, upewnij się, że wszystkie zależności i środowisko są właściwie skonfigurowane.
Środowisko
Backend AI
Projekt komunikuje się z modelem AI na backendzie, w tym momencie dostosowany jest do serwera REST uruchamianego przez llama.cpp (aplikacja
server
), oraz testowana była na modelu Mistral-7B i jego derywatywach (Mistral-RP-0.1-7B-GGUF).Aby uruchomić backend, należy pobrać (skompilować) llama.cpp, pobrać plik modelu i uruchomić serwer wydając polecenie, na przykład:
(tutaj następuje przeniesienie 35 warstw modelu na urządzenie CUDA, wymagana jest odmiana llama.cpp z obsługą CUDA, w przeciwnym wypadku parametr
-ngl
nie jest dostępny)Pełna dokumentacja serwera: https://github.com/ggerganov/llama.cpp/blob/master/examples/server/README.md
W jaki sposób uruchomić projekt i pomóc w jego rozwoju
dDockerMożna też uruchomić Backend AI llama.cpp w oparciu o plik
docker-compose.llamacpp.yml
. W tym celu należy utworzyć plik.env
, w którym znajdą się dwie zmienne definiujące wariant serwera oraz ścieżkę lokalną do pliku modelu, np.:Dostępne warianty to:
full
(CPU),full-cuda
(NVIDIA GPU) ifull-rocm
(AMD ROCm GPU).Uruchomienie:
Konfiguracja Backendu AI
W pliku
Fracture.Api/appsettings.json
, możesz zdefiniować ścieżkę do URL serwera llama.cpp:Niezbędne jest również wybranie modułów odpowiedzialnych za komunikację z backendem AI i przygotowaniem promptów, które to należy wybrać jako pełne nazwy typów, włącznie z ich assembly, dla Mistral-7B należy wybrać
AlpacaPromptProvider
:Wykorzystywane są Docker i Docker Compose do uruchomienia zależności takich jak serwer baza danych. Instrukcja dla początkujących jest zawarta w dokumencie Start. Zwykłe pobranie zawartości repozytorium i uruchomienie projektu Fracture.Server zakończy się błędem połączenia z bazą danych.
AI/LLM
Projekt wykorzystuje system Sztucznej Inteligencji, tzw. Duży Model Językowy (Large Language Model -- LLM), który jest uruchomiony na naszym serwerze uczelnianym. Z uwagi na to, że chcemy chronić się przed niepowołanym użyciem, adres i klucz dostępu do tego serwera są tajne, możesz dostać do nich dostęp na naszym serwerze Discord. Nie dodawaj ich do repozytorium!
Można też uruchomić model i serwer LLM na swoim własnym komputerze, korzystając z instrukcji opisanej w dokumencie AI.
Rozwój projektu, dodawanie własnych commitów
Aby móc uczestniczyć w rozwoju tego projektu musisz wykonać jego fork i utworzyć jego kopię na własnym koncie GitHub, a następnie poprosić o połączenie twoich zmian za pomocą funkcji Pull Request. Każdy Pull Request (PR) jest testowany na to, czy m.in. się poprawnie kompiluje, czy formatowanie kodu jest poprawne i tak dalej. Dodatkowo, każdy z PR zostanie przejrzany przez kogoś z głównej ekipy rozwoju projektu przed dołączeniem go głównej gałęzi.
Formatowanie kodu i tytułów commitów
Projekt wykorzystuje narzędzie git-conventional-commits do kontroli, czy tytuły commitów zgadzają się ze specyfikacją. A by móc z niego skorzystać, należy je zainstalować z wykorzystaniem NPM:
Narzędzie zostanie aktywowane automatycznie poprzez wykorzystanie Husky.Net -- aby skorzystać z Husky, należy wykonać pierwszy raz komendę
dotnet restore
na projekcieFracture.Api\Fracture.Api.csproj
Server\Fracture.Server.csproj
i zostanie automatycznie zainstalowane wraz z innymi zależnościami.W podobny sposób, przed każdym commitem, pliki zostaną sprawdzone i przeformatowane z wykorzystaniem narzędzia csharpier w celu ujednolicenia stylu pisania kodu.
Autorzy
Ten projekt jest rozwijany przez członków Koła Naukowego "Grupa .NET
na PolitechnicePolitechniki Lubelskiej".Podziękowania
Chcielibyśmy podziękować wszystkim, którzy przyczynili się do tego projektu. Dziękujemy za zainteresowanie naszym projektem i zapraszamy do wspólnego
tworzenia wspaniałejrozwoju gry!