Przejdź do głównej zawartości

Techniki Rozumowania AI - Tree of Thoughts, Self-Consistency, ReAct

Podstawowe techniki promptowania (zero-shot, few-shot, CoT) sprawdzają się w większości sytuacji, ale część problemów się im wymyka. Zebrałem tu sześć podejść na takie właśnie przypadki - każde z nich rozwiązuje inny rodzaj kłopotu, więc zwróć uwagę nie tylko na to, jak działają, ale i kiedy je stosować.

Self-Consistency to technika zaproponowana przez Wang et al. (2022), która zastępuje standardowe generowanie odpowiedzi próbkowaniem wielu ścieżek rozumowania.

Pytanie: “Gdy miałem 6 lat, moja siostra miała połowę mojego wieku. Teraz mam 70 lat. Ile lat ma moja siostra?”

Odpowiedź 1:
Gdy miałem 6 lat, siostra miała 6/2 = 3 lata.
Różnica wieku: 6 - 3 = 3 lata.
Teraz mam 70 lat, więc siostra ma: 70 - 3 = 67 lat.
Odpowiedź 2:
W wieku 6 lat siostra miała 3 lata (połowa z 6).
Siostra jest 3 lata młodsza.
Mam 70 lat, siostra ma 70 - 3 = 67 lat.
Odpowiedź 3:
Połowa z 6 to 3. Teraz mam 70, więc siostra
też ma 70/2 = 35 lat. (BŁĘDNE rozumowanie!)

Finalna odpowiedź: 67 lat (wybrana przez głosowanie większościowe - 2 z 3 odpowiedzi)

Kiedy stosować Self-Consistency? Zadania arytmetyczne i matematyczne, rozumowanie zdroworozsądkowe, problemy z wieloma możliwymi ścieżkami rozwiązania, gdy zależy Ci na wysokiej dokładności.

Tree of Thoughts to framework zaproponowany przez Yao et al. (2023), który utrzymuje drzewo myśli jako pośrednie kroki rozwiązywania problemów. To rozszerzenie Chain-of-Thought, które pozwala na eksplorację wielu ścieżek jednocześnie.

Jak działa ToT? 1. Generowanie myśli - każdy krok rozumowania to węzeł w drzewie. 2. Ewaluacja - model ocenia każdą myśl (np. “pewne/możliwe/niemożliwe”). 3. Eksploracja - algorytmy przeszukiwania (BFS, DFS) eksplorują obiecujące ścieżki. 4. Backtracking - możliwość cofnięcia się i wybrania innej ścieżki.

Przykład: Gra w 24. Cel: użyj 4 liczb i operacji matematycznych (+, -, *, /), aby uzyskać 24. Liczby: 4, 9, 10, 13.

Poziom 1 - pierwsze operacje:
├── 13 - 9 = 4 → mamy: 4, 4, 10 [możliwe]
├── 9 - 4 = 5 → mamy: 5, 10, 13 [możliwe]
├── 10 + 4 = 14 → mamy: 14, 9, 13 [możliwe]
└── 4 * 9 = 36 → mamy: 36, 10, 13 [możliwe]
Poziom 2 - dla gałęzi (13 - 9 = 4):
├── 10 - 4 = 6 → mamy: 4, 6 [możliwe]
│ └── 4 * 6 = 24 ✓ [ROZWIĄZANIE!]
├── 4 + 4 = 8 → mamy: 8, 10 [możliwe]
└── 4 * 4 = 16 → mamy: 16, 10 [możliwe]
Rozwiązanie: (13 - 9) * (10 - 4) = 4 * 6 = 24

Praktyczne zastosowanie ToT w promptach:

Rozwiąż problem używając drzewa myśli.
Na każdym etapie:
1. Wygeneruj 2-3 możliwe kolejne kroki
2. Oceń każdy krok jako: pewny, możliwy, lub niemożliwy
3. Wybierz najlepszy krok i kontynuuj
4. Jeśli utkniesz, cofnij się i wybierz inną ścieżkę
Problem: [Twój problem]
Drzewo myśli:

Generate Knowledge to technika, w której model najpierw generuje wiedzę potrzebną do odpowiedzi, a następnie wykorzystuje ją do wsparcia predykcji: 1. Generowanie wiedzy - model tworzy fakty związane z pytaniem. 2. Integracja - wiedza łączy się z pytaniem. 3. Odpowiedź - model odpowiada wspierany faktami.

Pytanie: “Czy w golfie chodzi o uzyskanie wyższej punktacji niż inni?”

Bez generowania wiedzy:
Pytanie: Czy w golfie chodzi o uzyskanie wyższej punktacji niż inni?
Odpowiedź: Tak
(BŁĘDNA odpowiedź!)
Z generowaniem wiedzy:
Najpierw wygeneruj wiedzę związaną z pytaniem,
a następnie odpowiedz.
Pytanie: Czy w golfie chodzi o uzyskanie wyższej punktacji niż inni?
Wiedza: Golf to sport, w którym gracze uderzają piłkę kijem,
starając się wbić ją do dołka. Celem golfa jest ukończenie
każdego dołka (i całej rundy) jak najmniejszą liczbą uderzeń.
W przeciwieństwie do większości sportów, w golfie wygrywa
gracz z NAJNIŻSZĄ, nie najwyższą liczbą punktów.
Odpowiedź: Nie. W golfie wygrywa osoba z najniższą punktacją.
(POPRAWNA odpowiedź!)

RAG to metoda łącząca wyszukiwanie informacji z generowaniem tekstu. Model ma dostęp do zewnętrznej bazy wiedzy, z której może pobierać aktualne i specjalistyczne informacje.

Jak działa RAG? 1. Pytanie użytkownika → “Jaka jest aktualna cena akcji Apple?”. 2. Wyszukiwanie → system wyszukuje odpowiednie dokumenty/dane. 3. Kontekst → znalezione informacje są dołączane do prompta. 4. Generowanie → model generuje odpowiedź na podstawie kontekstu.

Odpowiedz na pytanie bazując WYŁĄCZNIE na poniższym kontekście.
Jeśli kontekst nie zawiera odpowiedzi, powiedz "Nie wiem".
Kontekst:
"""
[Artykuł pobrany z bazy wiedzy]
Apple Inc. ogłosiło wyniki za Q4 2024. Przychody wyniosły
94.9 miliarda dolarów, co oznacza wzrost o 6% rok do roku.
iPhone pozostaje głównym źródłem przychodów z 46.2 mld USD.
"""
Pytanie: Jakie były przychody Apple w Q4 2024?
Odpowiedź:

Zalety RAG: aktualność (dostęp do najnowszych informacji), dokładność (odpowiedzi oparte na faktach, nie domysłach), transparentność (można wskazać źródło informacji), elastyczność (łatwa aktualizacja bazy wiedzy bez przetrenowywania modelu).

ReAct to framework łączący rozumowanie z działaniem. Model nie tylko “myśli”, ale również podejmuje akcje (np. wyszukiwanie, obliczenia) i obserwuje ich wyniki.

Cykl ReAct: 1. Thought (Myśl) - model analizuje sytuację i planuje. 2. Action (Akcja) - model wykonuje działanie (np. wyszukiwanie). 3. Observation (Obserwacja) - model otrzymuje wynik akcji. 4. Repeat - cykl powtarza się aż do uzyskania odpowiedzi.

Pytanie: Kto jest twórcą języka, w którym napisano Django?
Thought 1: Muszę najpierw sprawdzić, w jakim języku napisano Django.
Action 1: Search[Django framework programming language]
Observation 1: Django to framework webowy napisany w Pythonie.
Thought 2: Django jest napisane w Pythonie. Teraz muszę znaleźć
twórcę Pythona.
Action 2: Search[Python programming language creator]
Observation 2: Python został stworzony przez Guido van Rossuma.
Thought 3: Mam odpowiedź. Twórcą języka Python, w którym
napisano Django, jest Guido van Rossum.
Action 3: Finish[Guido van Rossum]

Zastosowania ReAct: odpowiadanie na pytania wymagające wielu źródeł, weryfikacja faktów, zadania wymagające obliczeń, interakcja z zewnętrznymi narzędziami i API.

PAL to technika, w której model generuje kod (np. Python) zamiast bezpośredniego rozumowania tekstowego. Kod jest następnie wykonywany, co gwarantuje dokładność obliczeń.

Problem: “Roger ma 5 piłek tenisowych. Kupuje jeszcze 2 puszki po 3 piłki każda. Ile piłek ma teraz Roger?”

# Początkowa liczba piłek
poczatkowe_pilki = 5
# Kupione puszki
liczba_puszek = 2
pilki_w_puszce = 3
# Obliczenie
kupione_pilki = liczba_puszek * pilki_w_puszce
wszystkie_pilki = poczatkowe_pilki + kupione_pilki
print(wszystkie_pilki) # Wynik: 11

Kiedy używać PAL? Problemy matematyczne i arytmetyczne, obliczenia dat i czasu, zadania wymagające precyzyjnych operacji numerycznych, symulacje i modelowanie.

Technika Główna idea Najlepsze zastosowanie
Self-Consistency Wiele odpowiedzi, głosowanie Zwiększenie dokładności
Tree of Thoughts Eksploracja wielu ścieżek Złożone problemy, planowanie
Generate Knowledge Najpierw wiedza, potem odpowiedź Pytania nieintuicyjne
RAG Wyszukiwanie + generowanie Aktualne informacje, fakty
ReAct Rozumowanie + działanie Zadania wieloetapowe z narzędziami
PAL Generowanie kodu Obliczenia, matematyka
  • Self-Consistency - generuj wiele odpowiedzi, wybierz najczęstszą
  • Tree of Thoughts - eksploruj i oceniaj wiele ścieżek rozumowania
  • Generate Knowledge - najpierw wiedza, potem odpowiedź
  • RAG - wyszukuj informacje, generuj odpowiedź na ich podstawie
  • ReAct - myśl, działaj, obserwuj, powtarzaj
  • PAL - generuj kod zamiast obliczeń tekstowych

Częste pytania

Czym jest Tree of Thoughts?

Tree of Thoughts to zaawansowana technika promptowania, w której AI rozważa wiele ścieżek rozumowania jednocześnie, ocenia je i wybiera najlepszą.

made with ❤️ by aitomate.pl - Łukasz Podgórski