Praktyczne tworzenie promptów dla mniejszych modeli LLM

Skuteczność dużego modelu językowego w dużej mierze zależy od instrukcji, które mu przekazujemy. Inżynieria promptów to proces tworzenia pytań w taki sposób, aby uzyskać najlepsze wyniki z modelu LLM. To kluczowy krok we wdrażaniu funkcji opartej na LLM.

Inżynieria promptów to proces iteracyjny. Jeśli eksperymentujesz z różnymi LLM-ami, prawdopodobnie zauważysz, że aby uzyskać lepszy wynik, musisz dostosować prompt.

Dotyczy to również modeli o różnych rozmiarach.

Interfejsy czatu oparte na dużych modelach językowych, takich jak Gemini czy ChatGPT, często dają zadowalające wyniki przy minimalnym wysiłku związanym z promptowaniem. Jeśli jednak pracujesz z domyślnym, mniejszym modelem LLM, który nie jest dostrojony, musisz dostosować swoje podejście.

Mniejsze modele LLM mają mniejszą moc i mniejszy zasób informacji, z którego mogą korzystać.

Co rozumiemy przez „mniejsze LLM”?

Określenie rozmiarów LLM jest skomplikowane, a producenci nie zawsze je ujawniają.

W tym dokumencie „mniejsze modele LLM” oznaczają modele z mniej niż 30 mld parametrów. Obecnie modele z kilkoma milionami lub miliardami parametrów można realistycznie uruchamiać w przeglądarce na urządzeniach konsumenckich.

Gdzie są używane mniejsze LLM?

  • Generatywna AI na urządzeniu lub w przeglądarce, na przykład jeśli używasz modelu Gemma 2B z interfejsem LLM Inference API od MediaPipe (nawet na urządzeniach z procesorem CPU) lub DistilBert w przeglądarce z Transformers.js. Pobieranie modelu i przeprowadzanie wnioskowania na urządzeniu użytkownika jest możliwe tylko w przypadku mniejszych modeli LLM, aby pobieranie z internetu było rozsądne i dostosowane do ograniczeń pamięci i procesora GPU/CPU urządzenia.
  • Niestandardowa generatywna AI po stronie serwera. Małe modele otwarte, takie jak Gemma 2B, Gemma 7B czy Gemma 27B, możesz uruchamiać na własnym serwerze (i opcjonalnie dostrajać).

Rozpocznij

Interfejsy czatu oparte na dużych modelach językowych, takich jak Gemini czy ChatGPT, często dają zadowalające wyniki przy minimalnym wysiłku związanym z promptowaniem. Jednak w przypadku mniejszych modeli LLM musisz dostosować swoje podejście. Mniejsze modele LLM mają mniejszą moc i mniejszy zasób informacji, z którego mogą korzystać.

Podaj kontekst i dokładne instrukcje dotyczące formatu.

Aby uzyskać optymalne wyniki w przypadku małych modeli LLM, twórz bardziej szczegółowe i konkretne prompty.

Na przykład:

Based on a user review, provide a product rating as an integer between 1 and 5. \n
Only output the integer.

Review: "${review}"
Rating:
Dane wejściowe (opinia) Dane wyjściowe (ocena)
  Większy LLM (Gemini 1.5) Mniejszy model LLM (Gemma 2B)
Bardzo podoba mi się dopasowanie. Dobrze rozkłada ciężar i jest zaskakująco wygodny nawet podczas całodziennych wędrówek. Polecam. 5 4 na 5 gwiazdek**
Paski są cienkie i przy dużym obciążeniu zaczęły wrzynać się w ramiona. 1 2/5

Gemini 1.5 generuje pożądane dane wyjściowe na podstawie tego prostego prompta, ale dane wyjściowe Gemy nie są zadowalające:

  • Format jest nieprawidłowy. Poprosiliśmy o liczbę całkowitą jako ocenę.
  • Ocena wydaje się niezbyt dokładna. Pierwsza opinia jest na tyle entuzjastyczna, że wskazuje na 5 gwiazdek.

Aby to naprawić, musimy zastosować techniki inżynierii promptów, takie jak prompty typu „one-shot”, „few-shot” i „multi-shot” oraz wykorzystanie w prompcie łańcucha myśli. Musimy też podać jasne instrukcje dotyczące formatu i nalegać, aby model korzystał z pełnego zakresu ocen.

Na przykład:

`Analyze a product review, and then based on your analysis give me the
corresponding rating (integer). The rating should be an integer between 1 and
5. 1 is the worst rating, and 5 is the best rating. A strongly dissatisfied
review that only mentions issues should have a rating of 1 (worst). A strongly
satisfied review that only mentions positives and upsides should have a rating
of 5 (best). Be opinionated. Use the full range of possible ratings (1 to
5). \n\n
    \n\n
    Here are some examples of reviews and their corresponding analyses and
    ratings:
    \n\n
    Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor
    use, but it's perfect for urban exploring.'
    Analysis: The reviewer appreciates the product's style and basic
    functionality. They express some uncertainty about its ruggedness but
    overall find it suitable for their intended use, resulting in a positive,
    but not top-tier rating.
    Rating (integer): 4
    \n\n
    Review: 'It's a solid backpack at a decent price. Does the job, but nothing
    particularly amazing about it.'
    Analysis: This reflects an average opinion. The backpack is functional and
    fulfills its essential purpose. However, the reviewer finds it unremarkable
    and lacking any standout features deserving of higher praise.
    Rating (integer): 3
    \n\n
    Review: 'The waist belt broke on my first trip! Customer service was unresponsive too. Would not recommend.'
    Analysis: A serious product defect and poor customer service experience naturally warrants the lowest possible rating. The reviewer is extremely unsatisfied with both the product and the company.
    Rating (integer): 1
    \n\n
    Review: 'Love how many pockets and compartments it has. Keeps everything organized on long trips. Durable too!'
    Analysis: The enthusiastic review highlights specific features the user loves (organization and durability), indicating great satisfaction with the product. This justifies the highest rating.
    Rating (integer): 5
    \n\n
    Review: 'The straps are a bit flimsy, and they started digging into my shoulders under heavy loads.'
    Analysis: While not a totally negative review, a significant comfort issue leads the reviewer to rate the product poorly. The straps are a key component of a backpack, and their failure to perform well under load is a major flaw.
    Rating (integer): 1
    \n\n
    Now, here is the review you need to assess:
    \n
    Review: "${review}" \n`;
Dane wejściowe (opinia) Dane wyjściowe z mniejszego modelu LLM (Gemma 2B)

Bardzo podoba mi się dopasowanie. Dobrze rozkłada ciężar i jest zaskakująco wygodny nawet podczas całodziennych wędrówek. Polecam.

Analiza: ta opinia jest bardzo pozytywna i podkreśla dopasowanie i wygodę produktu, co wskazuje na duże zadowolenie z produktu. To uzasadnia wysoką ocenę.

Ocena (liczba całkowita): 5

Paski są cienkie i przy dużym obciążeniu zaczęły wrzynać się w ramiona.

**Analiza:** w opinii podkreślono poważny problem z wygodą związany z paskami. Sugeruje to również, że produkt może nie być odpowiedni do przenoszenia ciężkich ładunków ani na dłuższe wycieczki.

**Ocena:** 1 (najgorsza)

Bardziej rozbudowany prompt w połączeniu z technikami tworzenia promptów few-shot i wykorzystania w prompcie łańcucha myśli zapewnia dokładniejsze oceny.

Oczekuj ręcznego parsowania danych wyjściowych

Chociaż zawsze należy ręcznie porządkować i interpretować dane wyjściowe LLM, jest to szczególnie ważne w przypadku mniejszych modeli LLM, które mogą generować mniej dopracowane wyniki i wymagać wykorzystania w prompcie łańcucha myśli.

W pierwszym przykładzie użyliśmy wykorzystania w prompcie łańcucha myśli, więc dane wyjściowe zawierały zarówno analizę, jak i ocenę, a ocenę musieliśmy przeanalizować ręcznie. Zwróć też uwagę na niespójne formatowanie w danych wyjściowych w poprzedniej sekcji: model czasami generuje kod Markdown, ale nie zawsze.

// Use try/catch to catch (parsing) errors
try {
  // Parse the output for a rating
  const int = /[1-5]/;
  const ratingAsString = llmOutput.match(int)[0];
  // Parse as int
  const ratingAsInt = parseInt(ratingAsString);
  // `checkRating` checks the rating is a number between 1 and 5, since the
  // regEx may catch a number like "100"
  const finalRating = checkRating(ratingAsInt);
} catch (e) {
  console.error('Error', e);
}

Różnice między interfejsami Mind API

Interfejsy API LLM w chmurze, takie jak Gemini API czy OpenAI, które są zwykle punktem wyjścia do większych modeli LLM, oferują przydatne funkcje promptów. Na przykład Gemini 1.5 Pro oferuje instrukcje systemowetryb JSON.

Obecnie te funkcje nie zawsze są dostępne w przypadku korzystania z modeli niestandardowych ani mniejszych modeli LLM, do których dostęp uzyskuje się za pomocą interfejsów AI API w przeglądarce, takich jak MediaPipe LLM Inference API czy Transformers.js. Nie jest to co prawda ograniczenie techniczne, ale interfejsy API AI w przeglądarce są zwykle bardziej uproszczone.

Limity tokenów Mind

Ponieważ prompt dla mniejszych modeli LLM musi zawierać przykłady lub bardziej szczegółowe instrukcje, prawdopodobnie będzie dłuższy i zajmie więcej miejsca w limicie tokenów wejściowych, jeśli taki limit istnieje.

Mniejsze modele mają też zwykle mniejszy limit tokenów wejściowych. Na przykład Gemini 1.5 Pro ma limit 1 mln tokenów wejściowych, a modele Gemma mają okno kontekstu o wielkości 8 tys. tokenów.

Aby uniknąć przekroczenia limitu, użyj funkcji zliczania tokenów.

Dostosowywanie szacowanego czasu

Uwzględnij w szacunkach czasu pracy inżynierów projektowanie i testowanie promptów.

Ze względu na różnice w interfejsach API i limitach tokenów przygotowanie promptu dla mniejszego modelu LLM będzie prawdopodobnie wymagać więcej czasu i wysiłku niż w przypadku większego modelu. Testowanie i weryfikowanie wyników modelu LLM może być też bardziej pracochłonne.

Tworzenie promptów a dostrajanie

W przypadku deweloperów stron internetowych inżynieria promptów jest naszym preferowanym sposobem wykorzystania generatywnej AI zamiast niestandardowego trenowania i dostrajania. Jednak nawet zaawansowane inżynieria promptów może nie wystarczyć w niektórych przypadkach, zwłaszcza jeśli używasz mniejszego modelu LLM.

Dostrajanie jest przydatne, gdy:

  • Potrzebujesz najwyższej dokładności i wydajności w przypadku konkretnego zadania. Dostrajanie bezpośrednio dostosowuje wewnętrzne parametry modelu, aby uzyskać optymalne wyniki.
  • Masz dobrze wyselekcjonowane dane, które są istotne dla Twojego zadania i mają już etykiety z preferowanymi wynikami. Te dane są potrzebne do skutecznego dostrajania.
  • Model jest wielokrotnie używany w tym samym celu. Dostrajanie można przeprowadzić raz i ponownie wykorzystać w przypadku konkretnego zadania.