https://aie24.pl/
Podczas integrowania odpowiedzi z AI do aplikacji, zastanów się, czy części odpowiedzi z AI można wykonać w kodzie po stronie klienta lub serwera. Jeśli tak, możesz zmniejszyć złożoność instrukcji dla AI, a także liczbę interakcji między aplikacją a AI. Będzie to miało wiele korzyści, w tym niższe koszty korzystania z AI, lepszą wydajność i umożliwienie AI skupienia się na mniejszej liczbie zadań, co może poprawić jej dokładność. Ponieważ poziom trudności po prostu dostosowuje liczbę losowych odpowiedzi, wykonywanie losowych ruchów wydaje się naturalną rzeczą do zdjęcia z talerza AI. Mój pomysł polegał na obsłudze poziomu trudności po stronie klienta, a nawet nie podpowiadaniu AI losowych ruchów. Aby to osiągnąć, wróciłem do całkowicie losowego kodu ruchu kółko i krzyżyk, który wygenerował ChatGPT i zmodyfikowałem go tak, aby wybrany poziom trudności określał, jak często ruchy są generowane losowo. Najpierw poprawiłem monit systemowy, aby wyeliminować opis poziomów trudności. Oto mój nowy monit:
{
rola: ‘system’,
treść:
“Jesteś graczem w kółko i krzyżyk AI. Zawsze jesteś
‘O’, a ja zawsze jestem ‘X’.\n\nPrzekażę ci
mój ruch jako liczbę na tej siatce:\n\n0 | 1 | 2\n3
| 4 | 5\n6 | 7 | 8\n\nOdpowiesz tylko
swoim ruchem, który nie może być liczbą, która
została już zagrana w bieżącej grze.\n\nKiedy powiem
‘new()’, rozpocznij nową grę.”,
}
Następnie, aby rozpocząć pisanie funkcji losowego ruchu, wprowadziłem następujący komentarz na początku funkcji getAIMove():
/*
Użyj wartości trudności, aby zdecydować, czy
zapytać API o ruch, czy użyć ruchu losowego.
Jeśli trudność wynosi 10, zawsze zapytaj API
Jeśli trudność wynosi 0, zawsze użyj ruchu losowego
Jeśli trudność wynosi od 0 do 10, użyj ruchu losowego
10 – procent trudności czasu
i użyj najlepszego ruchu procent trudności czasu
*/
Zmodyfikowana funkcja, którą napisałem przy pomocy Copilota, jest pokazana na Liście 5-4.
Nowa funkcja getAIMove()
async function getAIMove(message) {
/*
Use the value of difficulty to decide whether to
query the API for a move or use a random move.
If difficulty is 10, always query the API
If difficulty is 0, always use a random move
If difficulty is between 0 and 10, use a random move
10 – difficulty percent of the time
and use the best move difficulty percent of the time
*/
let random = Math.random();
if (random < difficulty / 10) {
const response = await fetch(‘http://localhost:3000/chat’, {
method: ‘POST’,
headers: {
‘Content-Type’: ‘application/json’,
},
body: JSON.stringify({
messages: message,
}),
});
const data = await response.json();
document.getElementById(‘message’).innerHTML =
data.response.choices[0].message.content;
return data.response.choices[0].message.content;
}
let move = Math.floor(Math.random() * 8);
while (board[move] !== ”) {
move = Math.floor(Math.random() * 8);
}
document.getElementById(‘message’).innerHTML = move.toString();
return move.toString();
}
Dzięki temu nowemu monitowi i funkcji mogłem ustawić poziom trudności (najpierw w skrypcie, a następnie za pomocą suwaka wejściowego w HTML) i dostosować procent ruchów wykonywanych przez GPT-4 w porównaniu z ruchami generowanymi losowo w aplikacji klienckiej. Jednak AI nadal nie potrafiła grać w kółko i krzyżyk, nawet przy poziomie trudności ustawionym na 10. Możliwe, choć lepsze podpowiedzi, aby sprawić, by GPT-4 był dobry w kółko i krzyżyk.