https://aie24.pl/
Jednym z najczęstszych zadań w dowolnym programie komputerowym jest dostęp do źródła danych i pisanie funkcji do wykonywania operacji na źródle danych. Podstawowe operacje, które możesz wykonać na dowolnym źródle danych, to tworzenie rekordu, odczytywanie rekordu, aktualizowanie rekordu i usuwanie rekordu. Zbiorcza nazwa kodu, który umożliwia te operacje, to cudownie sugestywny akronim CRUD. Większość ludzi nie lubi pisać CRUD. W tej sekcji użyjesz generatywnej AI, aby zmniejszyć ilość pracy potrzebnej do wygenerowania CRUD. Aby rozpocząć to ćwiczenie, musisz mieć dostęp do interfejsu do czatowania z generatywnym modelem AI, takim jak ChatGPT, Google Bard lub Microsoft Bing. Jeśli jeszcze nie masz konta w żadnej z tych usług, postępuj zgodnie z instrukcjami , aby zarejestrować się w ChatGPT. Następnie, gdy zobaczysz przed sobą okno czatu, zacznij od krótkiego żądania do generatywnego modelu, aby zobaczyć, co zrobi. Jeśli usługa, z której korzystasz, nie spełni lub nie będzie w stanie spełnić Twojego żądania, nie stracisz wiele czasu na stworzenie szczegółowego monitu. Na przykład, gdy poprosiłem Binga o wygenerowanie CRUD, zaczął to robić, ale potem kazał mi zapytać o coś innego, jak pokazano na rysunku

Teraz określ, czy odpowiedź jest obiecująca. Jeśli nie otrzymałeś odpowiedzi, spróbuj użyć innego generatywnego modelu AI. Oto początek odpowiedzi, którą otrzymałem na mój początkowy monit („Napisz funkcje JavaScript do wykonywania operacji CRUD dla tabeli bazy danych o nazwie todo-list”) od ChatGPT przy użyciu modelu GPT-3.5:
// Simulated in-memory database for the todo-list
const todoListDB = [];
// Function to Create a new todo item
function createTodoItem(title, description) {
const newItem = {
id: todoListDB.length + 1,
title,
description,
completed: false,
};
todoListDB.push(newItem);
return newItem;
}
Odpowiedź jest odpowiednia, ale ponieważ nie podałem wystarczających informacji o pożądanej aplikacji, ChatGPT użył tablicy, jakby była bazą danych, co raczej nie jest tutaj potrzebne. Jeśli otrzymasz obiecującą odpowiedź na swój początkowy monit, podaj modelowi dodatkowe szczegóły. Na przykład, moim następnym krokiem byłoby poinformowanie ChatGPT, że jest to aplikacja Node.js, która będzie działać z bazą danych MongoDB i że powinna używać Mongoose. Proces udoskonalania instrukcji do modelu GenAI i dostarczania kontekstu i przykładów nazywa się inżynierią monitów. Rysunek pokazuje mój drugi monit.

Tym razem ChatGPT odpowiedział kompletną aplikacją Node.js, która łączy się z lokalną bazą danych i może wykonywać operacje CRUD. Listing pokazuje zregenerowany kod.
const mongoose = require(‘mongoose’);
// Connect to MongoDB
mongoose.connect(‘mongodb://localhost/todo-list’, {
useNewUrlParser: true,
useUnifiedTopology: true,
});
// Define a TodoItem schema
const todoItemSchema = new mongoose.Schema({
title: String,
description: String,
completed: Boolean,
});
// Create a TodoItem model
const TodoItem = mongoose.model(‘TodoItem’, todoItemSchema);
// Function to Create a new todo item
async function createTodoItem(title, description) {
const newItem = new TodoItem({
title,
description,
completed: false,
});
try {
await newItem.save();
return newItem;
} catch (error) {
throw error;
}
}
// Function to Read all todo items
async function getAllTodoItems() {
try {
const todoItems = await TodoItem.find();
return todoItems;
} catch (error) {
throw error;
}
}
// Function to Read a specific todo item by ID
async function getTodoItemById(id) {
try {
const todoItem = await TodoItem.findById(id);
return todoItem || null;
} catch (error) {
throw error;
}
}
// Function to Update a todo item by ID
async function updateTodoItem(id, updatedData) {
try {
const updatedItem = await TodoItem.findByIdAndUpdate(id,
updatedData, { new: true });
return updatedItem;
} catch (error) {
throw error;
}
}
// Function to Delete a todo item by ID
async function deleteTodoItem(id) {
try {
const deletedItem = await TodoItem.findByIdAndRemove(id);
return deletedItem || null;
} catch (error) {
throw error;
}
To wcale nie jest złe. Podoba mi się, że ChatGPT (w większości) używa najnowszej składni JavaScript, prawidłowo obsługuje błędy, które mogą się zdarzyć, i pisze dobre komentarze. Widziałem kod napisany przez ludzi, który jest o wiele gorszy. Prawdziwym testem jest jednak to, czy kod działa. Po wygenerowaniu funkcji CRUD ChatGPT udostępnił kilka przykładów, jak można ich używać. Przykłady te są pokazane w Listingu 2.
Przykładowy kod użycia z ChatGPT
// Example usage:
(async () => {
try {
const newItem = await createTodoItem(“Buy groceries”, “Milk,
eggs, and bread”);
console.log(“Created item:”, newItem);
const allItems = await getAllTodoItems();
console.log(“All items:”, allItems);
const itemToUpdate = await getTodoItemById(newItem._id);
if (itemToUpdate) {
const updatedItem = await updateTodoItem(itemToUpdate._id,
{ completed: true });
console.log(“Updated item:”, updatedItem);
}
const deletedItem = await deleteTodoItem(newItem._id);
console.log(“Deleted item:”, deletedItem);
} catch (error) {
console.error(“Error:”, error);
} finally {
mongoose.disconnect();
}})();
}
Jeśli na komputerze deweloperskim zainstalowano Node.js i MongoDB, możesz wypróbować ten kod, kopiując Listingi 1 i 2 do pliku i zapisując go z rozszerzeniem .js. Przed uruchomieniem aplikacji musisz zainicjować katalog zawierający plik .js jako pakiet Node, wpisując następujące polecenie w oknie terminala:
npm init -y
Następnie zainstaluj Mongoose, wpisując następujące polecenie:
npm install mongoose
Następnie uruchom program, wpisując node, a następnie nazwę pliku, w następujący sposób:
node listing0102.js
Rysunek pokazuje, co się stało, gdy uruchomiłem ten program.

Aby sprawdzić, czy kod ChatGPT działa, zakomentowałem kod, który usuwa utworzony rekord, ponownie uruchomiłem aplikację Node.js, a następnie uruchomiłem powłokę Mongo i przyjrzałem się zawartości kolekcji todo-list, jak pokazano na rysunku .
