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:
Tak
Czego nie robić
Generowanie kodu:
Tak
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.
Czego nie robić
Wyjaśnianie pojęć:
Tak
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?
Czego nie robić
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:
Tak
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ą.
Czego nie robić
Jeśli zadajesz pytanie otwarte, poproś o x opcji.
Ograniczanie odpowiedzi:
Tak
Czego nie robić
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:
Tak
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ę.
Czego nie robić
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.