Linuks to niezwykle potężny system operacyjny, ale jego pełne możliwości często są ukryte za setkami komend i skryptów. Dlaczego więc nie stworzyć inteligentnego asystenta, który nie tylko podpowie, jakie polecenie wykonać, ale też sam je uruchomi? W tym artykule opisuję krok po kroku, jak stworzyłem takiego asystenta nauki Linuksa, korzystając z języka C oraz API ChatGPT.
Wymagania początkowe
- Środowisko programistyczne na Linuksie (kompilator GCC i terminal).
- Dostęp do API OpenAI – wymagany klucz API, który można wygenerować na platformie OpenAI.
- Zainstalowane biblioteki
libcurl
icJSON
– używane do komunikacji z API i przetwarzania odpowiedzi w formacie JSON.
Cel projektu
Naszym celem było stworzenie asystenta, który:
- Rozumie naturalny język: Użytkownik wpisuje opis zadania, np. „wylistuj pliki w katalogu domowym”.
- Generuje polecenie Linuksa: Korzystamy z modelu ChatGPT, aby przekształcić opis w konkretne polecenie, np.
ls -la ~
. - Automatycznie wykonuje polecenie: Program pyta użytkownika o zgodę na uruchomienie wygenerowanego polecenia, a następnie je wykonuje.
Realizacja projektu krok po kroku
1. Podstawowy skrypt w języku C
Zaczęliśmy od stworzenia programu, który komunikuje się z API OpenAI za pomocą biblioteki libcurl
. Odpowiedzi w formacie JSON parsujemy przy użyciu biblioteki cJSON
.
snprintf(post_data, sizeof(post_data),
"{\"model\": \"gpt-3.5-turbo\", \"max_tokens\": 20, \"messages\": [{\"role\": \"system\", \"content\": \"Generuj jedno polecenie linuksowe na podstawie opisu. Bez wyjaśnień.\"}, {\"role\": \"user\", \"content\": \"%s\"}]}",
prompt);
2. Potwierdzenie wykonania polecenia
Program pyta użytkownika, czy chce wykonać wygenerowane polecenie:
printf("Czy chcesz je wykonać? (wciśnij Enter dla 'tak', wpisz 'nie', aby anulować): ");
if (strlen(confirm) == 0 || strcmp(confirm, "tak") == 0) {
system(command);
}
Wynik końcowy
Gotowy program działa w następujący sposób:
- Użytkownik uruchamia program z opisem zadania, np.:
ce "zaktualizuj system linux"
. - Program generuje polecenie:
apt update && apt upgrade -y
. - Użytkownik potwierdza wykonanie polecenia.
- System zostaje zakutalizowany.
Podsumowanie
Tworzenie asystenta nauki Linuksa pozwala łączyć nowoczesne technologie (API OpenAI) z praktyczną wiedzą o Linuksie i programowaniu w języku C. Taki asystent może być niezwykle przydatny zarówno dla początkujących, jak i bardziej zaawansowanych użytkowników.