Sprawdzone metody

Agent w Android Studio działa jako współpracownik, który przyspiesza proces programowania, generując kod, podsumowując złożone tematy, znajdując konkretne zasoby i wykonując inne zadania. Skuteczna komunikacja jest kluczem do wykorzystania pełnego potencjału agenta.

W tym przewodniku znajdziesz strategie konfigurowania środowiska programistycznego i pisania promptów, które dają przydatne i wiarygodne odpowiedzi. W przypadku wielu strategii podaliśmy przykładowe prompty dla różnych przypadków użycia. Więcej przykładowych promptów znajdziesz w galerii promptów.

Unikaj ogólników

Agent działa najlepiej, gdy ma jasne i konkretne instrukcje. Jeśli chcesz użyć określonych bibliotek, interfejsów API lub metod, uwzględnij je w pytaniu lub w pliku AGENTS.md w głównym katalogu projektu, aby zachować je między interakcjami. Można to porównać do zgłaszania błędu: im więcej informacji podasz, tym szybciej i skuteczniej uda się rozwiązać problem.

Wdrażanie nowych funkcji:

Jak dodać obsługę aparatu do aplikacji za pomocą CameraX? Uwzględnij wszystkie zależności i uprawnienia, których potrzebuję, aby korzystać z biblioteki.
Jak dodać obsługę kamery do aplikacji?

Generowanie kodu:

Napisz funkcję zawieszenia w języku Kotlin, która używa biblioteki Coil do pobierania obrazu z podanego ciągu adresu URL.

Funkcja powinna mieć nazwę fetchImageAsBitmap. Powinna ona przyjmować jako argumenty adresy URL Context i String oraz zwracać obiekt Bitmap, który może mieć wartość null. Jeśli wystąpi błąd sieci lub dekodowania, powinien on przechwycić wyjątek, zarejestrować go i zwrócić null.

Napisz funkcję pobierania obrazu.

Wyjaśnianie pojęć:

Tworzę aplikację odtwarzacza muzyki i muszę kontynuować odtwarzanie, gdy aplikacja działa w tle.

Jakie mam opcje, aby aplikacja działała, gdy użytkownik wykonuje inne czynności na urządzeniu? Jakie są wymagania dotyczące poziomu interfejsu API i jakie są konsekwencje dla żywotności baterii w przypadku każdego podejścia?

Wyjaśnij, czym są usługi Androida.

Opisz strukturę odpowiedzi

Domyślnie agent udziela odpowiedzi w formie konwersacyjnej, w postaci akapitów. Jest to często przydatne w przypadku wyjaśnień, ale możesz uzyskać skuteczniejsze i od razu przydatne wyniki, jeśli określisz, jak ma wyglądać odpowiedź. Określenie formatu danych wyjściowych powoduje, że model porządkuje informacje w jasny i przewidywalny sposób, co pozwala zaoszczędzić czas na samodzielne formatowanie.

Jeśli chcesz wstawić kod wygenerowany przez agenta do aplikacji i potrzebujesz go w określonym formacie, aby móc go od razu użyć, podaj agentowi jasne instrukcje dotyczące generowania i formatowania kodu.

Układanie odpowiedzi:

Utwórz encję pokoju dla profilu użytkownika. Powinien zawierać pola id, userName, email i memberSince. Pole id powinno być generowane automatycznie. Pole memberSince powinno reprezentować sygnaturę czasową.

Utwórz element Room dla profilu użytkownika.

Jeśli zadajesz pytanie otwarte, poproś o x opcji.

Ograniczanie odpowiedzi:

Jakie narzędzia są dostępne do optymalizacji wydajności aplikacji? Podaj mi listę 3 najlepszych.
Jakie narzędzia są dostępne do optymalizacji wydajności aplikacji?

Podziel skomplikowane prośby na mniejsze zadania

Jeśli podejście agenta nie jest zgodne z Twoimi oczekiwaniami, możesz spróbować poprowadzić go za pomocą serii mniejszych, sekwencyjnych promptów, zamiast prosić o wszystko naraz. To podejście zapewnia większą kontrolę i umożliwia weryfikację każdego kroku przed przejściem do następnego.

Stosowanie promptów sekwencyjnych:

Prompt 1. Model danych
Najpierw utwórz klasę danych Kotlin o nazwie User. Powinien mieć 3 właściwości: id (liczba całkowita), name (ciąg znaków) i email (ciąg znaków).

Prompt 2: Warstwa sieciowa
Teraz utwórz interfejs Retrofit API o nazwie ApiService. Wymaga pojedynczego elementu suspend fun o nazwie getUsers(), który zwraca List<User>.

Prompt 3: zarządzanie stanem
Następnie napisz UsersViewModel, który przyjmuje ApiService jako zależność. UsersViewModel powinien udostępniać StateFlow zapieczętowanej klasy UiState, która może reprezentować stany Loading, Success(users: List) i Error(message: String). Utwórz funkcję w ViewModel, aby pobierać użytkowników i aktualizować stan. Napisz testy jednostkowe dla nowej funkcji.

Prompt 4: warstwa interfejsu
Na koniec napisz funkcję Jetpack Compose o nazwie UserListScreen, która przyjmuje UiState jako parametr. Użyj instrukcji when, aby wyświetlić element CircularProgressIndicator dla stanu wczytywania, element LazyColumn z nazwami użytkowników dla stanu powodzenia i element Text z komunikatem o błędzie dla stanu błędu. Dodaj testy, które zweryfikują nową funkcję.

Utwórz ekran Jetpack Compose, który pobiera listę użytkowników z interfejsu JSON API i wyświetla ich na liście. Powinien zawierać ViewModel, który używa Retrofit i rutyn, repozytorium do obsługi logiki danych, klasę danych User oraz powinien wyświetlać stany wczytywania i błędu.

Zarządzanie kontekstem

Ważną częścią pracy z agentem jest podanie mu odpowiedniego kontekstu. Aby uzyskać jak najbardziej pomocne odpowiedzi, podaj odpowiednie fragmenty kodu, zawartość plików i informacje o strukturze projektu. Być może trzeba będzie kilka razy spróbować, aby znaleźć właściwą równowagę: zbyt wiele informacji może wprowadzić agenta w błąd, a zbyt mało nie zapewni mu wystarczającego kontekstu, aby mógł pomóc. Użyj dostępnych funkcji, aby zapewnić agentowi dostęp do niezbędnego kontekstu:

  • Dołącz obrazy, aby przedstawić wizualnie interfejs, który chcesz utworzyć, lub architekturę aplikacji, którą chcesz zrozumieć.
  • Załącz pliki, aby wyróżnić odpowiednie części bazy kodu.
  • Użyj plików .aiexclude, aby agent ignorował określone części bazy kodu.
  • Używaj plików AGENTS.md, aby przekazywać instrukcje dotyczące konkretnych projektów i udostępniać je zespołowi. Podczas korzystania z plików AGENTS.md używaj nagłówków i formatowania Markdown, aby instrukcje były jasne.
  • Podczas korzystania z trybu agenta skonfiguruj serwery MCP, aby rozszerzyć wiedzę i możliwości agenta o środowisko zewnętrzne.

Poproś o wyjaśnienia

Jeśli nie rozumiesz odpowiedzi agenta, poproś o wyjaśnienie. To świetny sposób na naukę i sprawdzenie, czy proponowane rozwiązanie jest odpowiednie dla Twojego przypadku użycia. Jeśli odpowiedź nie jest taka, jakiej oczekujesz, może to oznaczać, że agent się pomylił. Poproszenie o wyjaśnienie da mu możliwość poprawienia się.

Ulepszanie instrukcji

Podobnie jak w przypadku współpracy z współpracownikiem, praca z agentem czasami wymaga wymiany informacji, aby wyjaśnić zadanie i oczekiwany wynik. Jeśli początkowa odpowiedź agenta jest niewystarczająca, odpowiedz na nią, podając opinię i sugestie dotyczące ulepszeń. Jeśli odpowiedź poprawi się na podstawie Twoich sugestii, uwzględnij tę sugestię w oryginalnym prompcie, aktualizując wpis w bibliotece promptów lub aktualizując pliki AGENTS.md.