Pisanie serwera

https://aie24.pl/

Postanowiłem napisać serwer Node.js, aby komunikować się z API OpenAI, aby nie musieć przechowywać klucza API w mojej aplikacji klienckiej. Utworzyłem nowy katalog dla mojego serwera, zainicjowałem katalog jako pakiet Node.js (używając npm init) i utworzyłem plik o nazwie server.js. Aby rozpocząć pisanie server.js, kliknąłem przycisk Wyświetl kod w prawym górnym rogu placu zabaw i wybrałem Node.js jako moją bibliotekę. Otworzyło się okno Wyświetl kod z niezbędnym kodem do wysyłania bieżących ustawień i monitów do API oraz pobierania następnego uzupełnienia. Skopiowałem ten kod z placu zabaw i wkleiłem go do server.js. Dodałem również kod do importowania klucza API z pliku .env. Plik .env jest używany w Node.js do przechowywania zmiennych środowiskowych poza programem głównym. Zmienne środowiskowe przechowują informacje, które są specyficzne dla instalacji oprogramowania (takie jak klucze API) i nie powinny być dystrybuowane wraz z oprogramowaniem (ponieważ nie chcesz, aby inne osoby używały Twojego klucza API). Początek mojego serwera pokazany jest na rysunku .

Następnym krokiem było stworzenie własnego serwera API, który pobiera wyniki z OpenAI i zwraca je do mojej aplikacji klienckiej. Ponieważ pisanie serwera API jest dość standardowym zadaniem, postanowiłem użyć Copilot Chat, aby go wygenerować. Zacząłem od następującego monitu:

Chcę przekształcić kod w server.js w serwer API, do którego mogę wysłać nową wiadomość i dodać ją do tablicy messages przed przesłaniem jej do API OpenAI. Serwer powinien zwrócić odpowiedź z API OpenAI.

Kod wygenerowany przez Copilot był dobrym początkiem. Cały kod jest pokazany w Listingu .

import express from ‘express’;

import OpenAI from ‘openai’;

import ‘dotenv/config’;

const app = express();

const openai = new OpenAI({

apiKey: process.env.OPENAI_API_KEY,

});

app.use(express.json());

app.post(‘/chat’, async (req, res) => {

const { message } = req.body;

const response = await openai.chat.completions.create({

model: ‘gpt-4’,

messages: [

{

role: ‘system’,

content:

“You are an AI tic-tac-toe player. You are always ‘O’ and

I’m always ‘X’.\n\nI’ll provide you with my move as a number

on this grid:\n\n0 | 1 | 2\n3 | 4 | 5\n6 | 7 | 8\n\nYou’ll

respond with only an array with an X in the position of my

move, followed by your move, followed by an array with an O

in the position of your move.\n\nIf one of us wins or it’s a

draw, tell me ‘you win’, ‘I win’, or ‘draw’.\n\nWhen I say

‘new(10)’ start a new game and set the difficulty level to

10, meaning that you will always choose the best move. If I

set the difficulty to a lower level, you will sometimes make

random moves. At difficulty 1, you will always choose

randomly from the available squares.”,

},

{

role: ‘user’,

content: message,

},

],

});

res.json({ response });

});

app.listen(3000, () => {

console.log(‘Server listening on port 3000’);

});

Wysyłanie monitów kontynuacyjnych

Na dole odpowiedzi Copilot wyjaśnił wygenerowany kod i zasugerował monit kontynuacyjny:

J

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *