2727

چگونه از هوش مصنوعی برای طراحی API استفاده می‌شود؟

ابزارهای هوش مصنوعی (AI) از زمان راه‌اندازی ChatGPT در نوامبر ۲۰۲۲ در دنیای فناوری سر و صدا ایجاد کرده‌اند. این ابزارها از نظر شکل و عملکرد بسیار متفاوت هستند، اما یک ویژگی ثابت میان آنها این است که هدفشان بهبود جریان کاری و افزایش بهره‌وری کاربران است.

با این حال، استفاده مؤثر از این ابزارها بدون درک نحوه عملکرد و بهترین شیوه تعامل با آنها می‌تواند چالش‌برانگیز باشد. بیشتر این ابزارها – به ویژه آنهایی که بر اساس مدل‌های Generative Pretrained Transformer (GPT) اوپن‌ای‌آی ساخته شده‌اند – مدل‌های زبان بزرگ (LLM) هستند که اساساً با دریافت یک متن ورودی و پیش‌بینی محتمل‌ترین متن بعدی براساس داده‌هایی که روی آن آموزش دیده‌اند، کار می‌کنند.

مدل‌های اوپن‌ای‌آی روی حجم عظیمی از داده‌ها آموزش دیده‌اند، شامل اطلاعات مهندسی نرم‌افزار، کدنویسی و طراحی سیستم. بنابراین، هوش مصنوعی ساخته شده با این مدل‌ها می‌تواند به سوالات شما در این زمینه‌ها و بسیاری زمینه‌های دیگر پاسخ دهد.

ابزارهای هوش مصنوعی مانند GitHub Copilot، که بر اساس مدل OpenAI Codex ساخته شده، و ChatGPT توسط توسعه‌دهندگان برای کمک به نوشتن کد و حل مشکلات فنی به طور گسترده استفاده می‌شوند. با این حال، این ابزارها محدودیت‌هایی در مواجهه با چالش‌های بزرگ طراحی نرم‌افزار دارند به دلیل محدودیت‌های زمینه‌ای.

ابزارهای پیشرفته مانند smol developer

در اینجا ابزارهای پیشرفته‌ای مانند smol developer وارد عمل می‌شوند. Smol developer ابزاری است که بر اساس GPT-3.5 و GPT-4 ساخته شده و هدف آن ارائه جریان کاری بهینه‌شده با هوش مصنوعی برای طراحی نرم‌افزار سطح بالاتر است، به طوری که می‌توانید از یک متن ورودی کل یک پایگاه کد را تولید کنید.

آیا این همان راه‌حل نهایی است که توسعه‌دهندگان منتظر آن بوده‌اند؟ در این مقاله خودتان خواهید دید. شما یاد خواهید گرفت چگونه با استفاده از smol developer به صورت تکراری یک مشخصات برای یک API ساده RESTful CRUD ایجاد کنید تا هوش مصنوعی از آن برای تولید پایگاه کد استفاده کند. شما خواهید توانست نقاط قوت و محدودیت‌های این رویکرد را مشاهده کرده و با هر مشکلی که قبل از وارد کردن این نوع هوش مصنوعی به جریان کاری خود باید از آن آگاه باشید، آشنا شوید.

نحوه استفاده از هوش مصنوعی برای طراحی API

چند نکته وجود دارد که قبل از شروع این آموزش باید به آنها توجه کنید.

می‌توانید کد منبع این پروژه را در این مخزن GitHub پیدا کنید. اگر README مخزن را بررسی کنید، می‌بینید که می‌توانید آن را به دو روش اجرا کنید. روش پیش‌فرض از Modal برای منابع محاسباتی درخواستی استفاده می‌کند. با این حال، این آموزش نسخه غیر Modal را استفاده می‌کند، که در آن اسکریپت‌های پایتون را به‌صورت محلی روی دستگاه خود اجرا می‌کنید. این بدان معناست که تنها وابستگی‌هایی که برای همراهی نیاز دارید به شرح زیر است:

– Git
– Python
– pip (https://pypi.org/project/pip/)
– حساب OpenAI و کلید API
– یک ویرایشگر کد (VS Code انتخاب خوبی است اگر ترجیحی ندارید)

همچنین باید مطمئن شوید حساب OpenAI شما اعتبار دارد یا روش پرداخت تنظیم شده است. هر بار که هوش مصنوعی را فراخوانی می‌کنید، هزینه آن به حساب OpenAI شما تعلق می‌گیرد. هزینه هر بار اجرا نسبتاً کم است. برای مثال، همه اجراهای لازم برای نوشتن و اشکال‌زدایی این مقاله حدود ۱ پوند (GBP) هزینه داشت.

راه‌اندازی

با نصب پیش‌نیازها، می‌توانید پروژه را راه‌اندازی کنید. فرمان زیر را در ترمینال خود اجرا کنید تا smol developer را روی کامپیوتر خود کلون کنید و وارد دایرکتوری آن شوید:

git clone https://github.com/smol-ai/developer
cd developer

سپس فرمان زیر را برای نصب وابستگی‌های پایتون با استفاده از pip اجرا کنید:

pip install -r requirements.txt

پس از اتمام این فرمان، باید کلید API OpenAI خود را به عنوان یک متغیر محیطی ترمینال صادر کنید تا اسکریپت بتواند به آن دسترسی داشته باشد. این کار را با اجرای فرمان زیر انجام دهید و کلید API خود را جایگزین کنید:

export OPENAI_API_KEY=<YOUR API KEY>

نکته: اگر از Modal استفاده می‌کردید، فایلی با نام ENV وجود داشت که کلید API شما در آن قرار داشت، اما کد به نظر نمی‌رسد برای خواندن از این فایل آماده باشد اگر ابزار را به‌صورت محلی اجرا می‌کنید. در این حالت، باید کلید API را به صورت دستی صادر کنید.

پس از صادر کردن کلید API، می‌توانید بررسی کنید همه چیز به‌درستی کار می‌کند یا خیر با اجرای فرمان زیر:

python3 main_no_modal.py "a simple hello world application written in nodejs"

نکته: بسته به سیستم عامل و نحوه نصب پایتون، اجرایی شما ممکن است python3 یا فقط python باشد. بلوک‌های کد در این آموزش از python3 استفاده می‌کنند، بنابراین ممکن است بسته به تنظیمات خود نیاز به تغییر داشته باشید.

اجرای این فرمان ابزار smol developer را فراخوانی می‌کند، که متن ورودی شما را دریافت کرده و آن را از طریق چند مرحله مقدماتی برای ایجاد یک متن پیشرفته‌تر برای هوش مصنوعی عبور می‌دهد. این ابزار ابتدا از متن ورودی شما برای ایجاد فهرستی از فایل‌هایی که هوش مصنوعی معتقد است برای ایجاد پروژه نیاز است، استفاده می‌کند.

hldjig8 imgur 934x638

سپس هر یک از این نام فایل‌ها همراه با متن اصلی به هوش مصنوعی داده می‌شود و از آن خواسته می‌شود محتوای مورد انتظار فایل را تولید کند. این فرایند برای تمام فایل‌هایی که هوش مصنوعی پیشنهاد داده تکرار می‌شود و در نهایت، اگر همه چیز درست پیش برود، یک پایگاه کد کامل ایجاد می‌شود.

تعریف API

قبل از درخواست از هوش مصنوعی برای ساخت برنامه خود، باید ایده روشنی از آنچه می‌خواهید داشته باشید. همانطور که به زودی خواهید دید، این امر هنگام کار با ابزارهای مبتنی بر هوش مصنوعی بسیار مهم است. هوش مصنوعی می‌تواند هرگونه خلأ در مشخصات را پر کند، که می‌تواند به سرعت منجر به خروجی‌های غیرمنتظره شود.

تلاش برای مشخص کردن همه چیز به‌طور کامل یکباره نیز منطقی نیست. رویکردی معتدل‌تر شامل ایجاد مشخصات به‌صورت تکراری و اجرای آن از طریق هوش مصنوعی پس از هر اضافه و تغییر برای بررسی اینکه آیا تغییرات شما اثرات مطلوب دارد، است.

به‌عنوان پایه، باید بدانید چه چیزی می‌سازید. در این مورد، از هوش مصنوعی می‌خواهید یک API ساده RESTful برای Node.js بسازد. این API مدل ساده‌ای از یک سیستم مدیریت تیکت با اسکیمایی شبیه به این است:

si7xd3k imgur

ساخت API

برای شروع ساخت API، باید یک فایل Markdown جدید در مخزن ایجاد کنید تا مشخصات شما را نگه دارد. در حالی که می‌توانید متن ورودی خود را مستقیماً در خط فرمان ارائه دهید، همانند مثال قبلی، ابزار همچنین فایل‌های Markdown را می‌پذیرد که با رشد اندازه و پیچیدگی مشخصات شما، کار با آنها آسان‌تر است.

تکرار ۱

یک فایل در ریشه مخزن با نام my-prompt.md ایجاد کنید و محتوای زیر را به آن بدهید:

"""
Create a RESTful CRUD API using express.js.
## Resources

The API has the following resources and fields:

### User
id
name

### Ticket
id
summary
description
author_id

### Comment
– id
– content
– author_id
ticket_id
– parent_
id
“””

نکته: علامت‌های ””” در اولین و آخرین خط معمولاً لازم هستند، زیرا بدون آنها اسکریپت به صورت گاه‌به‌گاه کرش می‌کند، بسته به خروجی تولید شده توسط هوش مصنوعی. اضافه کردن این علامت‌ها به کاهش این مشکل کمک می‌کند.

این کد تا حد ممکن مینیمال است و جزئیات کلیدی آنچه می‌خواهید هوش مصنوعی بسازد را پوشش می‌دهد. برای اجرای این مشخصات توسط هوش مصنوعی، فرمان زیر را اجرا کنید:

python3 main_no_modal.py my-prompt.md

این فرمان خروجی زیادی چاپ می‌کند که نشان می‌دهد هوش مصنوعی در حال انجام چه کاری است، اما همان مراحل کلی مثال قبلی را دنبال می‌کند. ابتدا تصمیم می‌گیرد چه فایل‌ها و وابستگی‌هایی نیاز دارد و سپس فایل‌ها را یکی یکی ایجاد می‌کند.

اگر همراهی کنید، کدی که تولید می‌شود احتمالاً با کدی که اینجا نشان داده شده متفاوت خواهد بود. این نشان‌دهنده یکی از مسائل ابزارهای مبتنی بر هوش مصنوعی است. به طور خاص، این ابزارها غیرقطعی هستند و تضمینی وجود ندارد که هر بار با یک ورودی، خروجی یکسانی دریافت کنید.

پس از اتمام تولید کد، می‌توانید به دایرکتوری generated/ در مخزن نگاه کنید تا ببینید هوش مصنوعی چه چیزی ایجاد کرده است. در این مورد، چند فایل تولید شده‌اند که به نظر غیر مرتبط با متن ورودی اصلی هستند، مانند middleware احراز هویت و اعتبارسنجی و فایل پیکربندی پایگاه داده.

برای فایل index.js، محتوای زیر تولید شده است:

// Importing required modules
const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
const cors = require('cors');
const config = require('config');
// Importing routes
const userRoutes = require(‘./routes/user’);
const ticketRoutes = require(‘./routes/ticket’);
const commentRoutes = require(‘./routes/comment’);

// Initializing the app
const app = express();

// Middleware
app.use(bodyParser.json());
app.use(cors());

// Routes
app.use(‘/api/users’, userRoutes);
app.use(‘/api/tickets’, ticketRoutes);
app.use(‘/api/comments’, commentRoutes);

// Database connection
mongoose.connect(config.get(‘dbConfig.url’), {
useNewUrlParser: true,
useUnifiedTopology: true,
useCreateIndex: true,
useFindAndModify: false,
})
.then(() => console.log(‘Connected to database’))
.catch((err) => console.log(`Error connecting to database: ${err}`));

// Starting the server
const port = process.env.PORT || ۵۰۰۰;
app.listen(port, () => console.log(`Server started on port ${port}`));

هوش مصنوعی به نظر می‌رسد از Mongoose برای اتصال به یک نمونه MongoDB فرضی استفاده کرده است. جالب اینجاست که هیچ نشانه‌ای از middleware اعتبارسنجی از ساختار فایل‌ها استفاده نشده است. بررسی فایل validationMiddleware.js، محتوای زیر تولید شده است:

//middlewares/validationMiddleware.js
const { body, validationResult } = require('express-validator');
const validateUser = () => {
return [
body('name').notEmpty().withMessage('Name is required'),
];
};
const validateTicket = () => {
return [
body('summary').notEmpty().withMessage('Summary is required'),
body('description').notEmpty().withMessage('Description is required'),
body('author_id').notEmpty().withMessage('Author ID is required'),
];
};
const validateComment = () => {
return [
body('content').notEmpty().withMessage('Content is required'),
body('author_id').notEmpty().withMessage('Author ID is required'),
body('ticket_id').notEmpty().withMessage('Ticket ID is required'),
body('parent_id').optional(),
];
};
const validationMiddleware = (req, res, next) => {
const errors = validationResult(req);
if (errors.isEmpty()) {
return next();
}
const extractedErrors = [];
errors.array().map((err) => extractedErrors.push({ [err.param]: err.msg }));
return res.status(۴۲۲).json({
errors: extractedErrors,
});
};
module.exports = {
validateUser,
validateTicket,
validateComment,
validationMiddleware,
};

این کد از نگاه اول منطقی به نظر می‌رسد، اما جستجوی هر یک از این توابع در کد تولید شده نشان می‌دهد که در هیچ جایی استفاده نشده‌اند. این مسئله دوم با این نوع ابزار را نشان می‌دهد: محدودیت زمینه‌ای. زیرا هر فایل به‌صورت جداگانه تولید می‌شود، معمولاً پیش می‌آید که هوش مصنوعی توابعی تولید کند که هرگز استفاده نمی‌شوند یا توابع را ایجاد کرده و سپس به اشتباه یا با پارامترهای نادرست فراخوانی می‌کند.

anfnx9p imgur 934x638

فعلاً بهترین کار این است که جزئیات بیشتری به مشخصات اضافه کنید و دوباره امتحان کنید.

تکرار ۲

مسائل اصلی که در این تکرار باید حل شوند شامل حذف کدهای اعتبارسنجی و پایگاه داده غیرضروری است. این کار را با به‌روزرسانی مشخصات به شرح زیر انجام دهید و بخش “Adjustments” را برای دستورالعمل‌های اضافی برای هوش مصنوعی اضافه کنید:

"""
Create a RESTful CRUD API using express.js.
## Resources

The API has the following resources and fields:

### User
id
name

### Ticket
id
summary
description
author_id

### Comment
– id
– content
– author_id
ticket_id
– parent_
id

## Adjustments
Do not validate requests or responses
Do not use a database, just use an array as a datastore for now
“””

پس از اجرای این متن توسط هوش مصنوعی، فایل‌های زیر تولید می‌شوند.

vns0v3i imgur 934x638

نکته: هر بار که ابزار را اجرا می‌کنید، تمام فایل‌های موجود در دایرکتوری generated/ حذف می‌شوند اما دایرکتوری‌ها باقی می‌مانند. هر دایرکتوری خالی که مشاهده می‌کنید، بقایای اجراهای قبلی است.

این با مشخصات جدید هماهنگ است. دوباره، برای index.js، کد تولید شده به شرح زیر است:

const express = require('express');
const bodyParser = require('body-parser');
const uuid = require('uuid');
const userRoutes = require('./routes/user');
const ticketRoutes = require('./routes/ticket');
const commentRoutes = require('./routes/comment');
const userController = require('./controllers/userController');
const ticketController = require('./controllers/ticketController');
const commentController = require('./controllers/commentController');
const userModel = require('./models/userModel');
const ticketModel = require('./models/ticketModel');
const commentModel = require('./models/commentModel');
const app = express();
const PORT = process.env.PORT || ۳۰۰۰;

app.use(bodyParser.json());

// User routes
app.get(‘/users’, userRoutes.getAllUsers);
app.get(‘/users/:id’, userRoutes.getUserById);
app.post(‘/users’, userRoutes.createUser);
app.put(‘/users/:id’, userRoutes.updateUser);
app.delete(‘/users/:id’, userRoutes.deleteUser);

// Ticket routes
app.get(‘/tickets’, ticketRoutes.getAllTickets);
app.get(‘/tickets/:id’, ticketRoutes.getTicketById);
app.post(‘/tickets’, ticketRoutes.createTicket);
app.put(‘/tickets/:id’, ticketRoutes.updateTicket);
app.delete(‘/tickets/:id’, ticketRoutes.deleteTicket);

// Comment routes
app.get(‘/comments’, commentRoutes.getAllComments);
app.get(‘/comments/:id’, commentRoutes.getCommentById);
app.post(‘/comments’, commentRoutes.createComment);
app.put(‘/comments/:id’, commentRoutes.updateComment);
app.delete(‘/comments/:id’, commentRoutes.deleteComment);

app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});

این کد به ظاهر بهتر است، زیرا middleware غیرضروری ندارد. با این حال، چند واردات استفاده نشده وجود دارد:

– uuid
– userController
– ticketController
– commentController
– userModel
– ticketModel
– commentModel

علاوه بر این، به نظر می‌رسد در اعلام مسیرها مشکلی وجود دارد، زیرا توابعی که به آنها اشاره شده‌اند هیچ امضای تابعی را ارائه نمی‌دهند. مشکل وقتی واضح است که یکی از فایل‌های مسیر مانند routes/user.js را باز کنید:

// Import necessary modules
const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
router.get(‘/users’, userController.getAllUsers);
router.get(‘/users/:id’, userController.getUserById);
router.post(‘/users’, userController.createUser);
router.put(‘/users/:id’, userController.updateUser);
router.delete(‘/users/:id’, userController.deleteUser);

module.exports = router;

فایل‌های مسیر توابعی که index.js سعی دارد استفاده کند را صادر نمی‌کنند (اگرچه کنترلرها توابعی با همان نام‌ها صادر می‌کنند). بنابراین این کد اجرا نخواهد شد، زیرا ناسازگاری بین الگوهای استفاده شده در فایل‌ها وجود دارد. رفع این مشکل با مشخص کردن دقیق‌تر مشخصات ممکن است.

تکرار ۳

برای اضافه کردن جزئیات بیشتر به مشخصات و دریافت خروجی پایدارتر، بخش‌های زیر را بعد از سرصفحه ### Comment و قبل از ## Adjustments اضافه کنید:

## Module structure

Each module (users, tickets, and comments) should use the following structure. “User” is used as an example, and the name should be changed appropriately for each given module.

modules
users
userRoutes.js
userController.js
userService.js

### userRoutes.js
This file should be used in the `index.js` like so:
// index.js
app.use(‘/users’, userRoutes);
The file itself should contain mappings between a given endpoint and the controller method that serves it.

### userController.js
This file should serve as an HTTP adapter, and should invoke business logic from the `userService`. This file should declare the following functions:
getAllUsers
getUserById
createUser
updateUser
deleteUser
Each of these

l72fhnt imgur 934x638

userController.js

این فایل به‌عنوان یک رابط HTTP عمل می‌کند و باید منطق کسب‌وکار را از userService فراخوانی کند. این فایل باید توابع زیر را تعریف کند:

  • getAllUsers

  • getUserById

  • createUser

  • updateUser

  • deleteUser

هر یک از این توابع باید تابع هم‌نام خود از سرویس مربوطه را فراخوانی کند.

userService.js

این فایل منطق کسب‌وکار ماژول را در خود جای می‌دهد. این فایل باید توابع زیر را تعریف کند:

  • getAllUsers

  • getUserById

  • createUser

  • updateUser

  • deleteUser

با اضافه شدن این جزئیات درباره ساختار ماژول‌ها، دوباره هوش مصنوعی را اجرا کنید. این بار فایل‌های تولید شده مطابق با مشخصات خواهند بود. بررسی index.js نشان می‌دهد تغییرات دلخواه اعمال شده‌اند:

const express = require('express');
const app = express();
const userRoutes = require('./modules/users/userRoutes');
const ticketRoutes = require('./modules/tickets/ticketRoutes');
const commentRoutes = require('./modules/comments/commentRoutes');
app.use(express.json());
app.use(‘/users’, userRoutes);
app.use(‘/tickets’, ticketRoutes);
app.use(‘/comments’, commentRoutes);

const PORT = process.env.PORT || ۳۰۰۰;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));

متأسفانه، دو مشکل اساسی در این تکرار وجود دارد. ماژول Tickets عمدتاً صحیح است، اما ماژول‌های User و Comment به‌طور نادرست Router اکسپرس را در هر دو فایل routes و controllers فراخوانی می‌کنند:

// modules/users/userRoutes.js
const express = require('express');
const router = express.Router();
const userController = require('./userController');
router.get('/', userController.getAllUsers);
router.get('/:id', userController.getUserById);
router.post('/', userController.createUser);
router.put('/:id', userController.updateUser);
router.delete('/:id', userController.deleteUser);
module.exports = router;
// modules/users/userController.js
const express = require(‘express’);
const router = express.Router();
const userService = require(‘./userService’);
router.get(‘/’, (req, res) => {
const users = userService.getAllUsers();
res.send(users);
});
router.get(‘/:id’, (req, res) => {
const user = userService.getUserById(req.params.id);
res.send(user);
});
router.post(‘/’, (req, res) => {
const user = req.body;
userService.createUser(user);
res.send(‘User created successfully’);
});
router.put(‘/:id’, (req, res) => {
const user = req.body;
userService.updateUser(req.params.id, user);
res.send(‘User updated successfully’);
});
router.delete(‘/:id’, (req, res) => {
userService.deleteUser(req.params.id);
res.send(‘User deleted successfully’);
});
module.exports = router;

این بدان معناست که این ماژول‌ها کار نمی‌کنند و هنگام اجرا برنامه کرش می‌کند. بخش عجیب این است که ماژول Tickets مطابق با مشخصات ساخته شده است. این احتمالاً به محدودیت زمینه‌ای هوش مصنوعی مربوط است.

گام‌های بعدی

این فرایند ممکن است مدت زیادی طول بکشد تا چیزی کاملاً درست و قابل اجرا ایجاد شود. حتی در تست‌ها، خروجی‌های امیدوارکننده هنوز نیاز به اصلاح دستی داشتند.

اگر همراهی کرده‌اید، سعی کنید متن ورودی را دقیق‌تر کنید تا خروجی بهتری دریافت کنید. با این حال، سرعت تولید می‌تواند بسیار سریع، کند یا متوسط باشد.

یافته‌ها و مشاهدات

Smol developer ابزاری چشمگیر فراتر از سایر ابزارهای کدنویسی AI است. بیشتر ابزارهای دیگر مانند Copilot محدود به تولید خطوط یا بلوک‌های کوچک کد هستند، نه کل پایگاه کد. با این حال، هنوز جوان است و مسائل خاصی هنگام ارزیابی کارایی و بهره‌وری دارد.

غیرقطعی بودن

یکی از بزرگ‌ترین چالش‌ها با ابزارهای AI مبتنی بر LLM، عدم قطعی بودن آن‌ها است. در ابزارهایی مانند Copilot، معمولاً این مسئله مشکل‌ساز نیست، زیرا فقط قطعات کوچک کد تولید می‌شود و توسعه‌دهنده مسئولیت استفاده صحیح را دارد.

اما هنگام تولید یک پایگاه کد کامل، این موضوع بیشتر مشکل‌ساز است. غیرقطعی بودن یعنی کدی که تولید می‌شود ممکن است هرگز به همان شکل دوباره تولید نشود، که برای تغییر مکرر مشخصات و بازتولید کد چالش‌برانگیز است.

این همچنین ارزش و نقش مشخصات را زیر سوال می‌برد. همانطور که دیدید، هوش مصنوعی حتی در مورد مواردی که به‌وضوح در مشخصات ذکر شده‌اند نیز ممکن است خطا کند. خروجی حاصل از یک مشخصات ممکن است تغییر کند و مشخصات بیشتر به یک پیشنهاد شباهت دارد تا منبع حقیقت.

کمبود زمینه

ابزارهای هوش مصنوعی معمولاً مشکل زمینه‌ای دارند. ابزارها از دامنه کسب‌وکار یا بخش اعظم کد اطراف اطلاع ندارند. به همین دلیل، ابزارهایی مانند Copilot اغلب پیشنهاداتی می‌دهند که منطقی نیستند و شما باید مراقب باشید کدام پیشنهادات را قبول می‌کنید.

در مقایسه، smol developer کل پایگاه کد را از صفر ایجاد می‌کند و ممکن است تصور کنید که به کل زمینه دسترسی دارد. با این حال، smol developer فایل‌ها را یکی یکی تولید می‌کند و بنابراین همچنان ممکن است اشتباهات مشابه رخ دهد. برای مثال، حتی در تکرار ۳، امضاهای توابع در سرویس‌ها با جایی که فراخوانی می‌شوند مطابقت نداشتند.

Smol developer می‌تواند از GPT-3.5-turbo یا GPT-4 استفاده کند. متأسفانه، GPT-4 هنوز در بتای بسته است و GPT-3.5-turbo در دسترس است. GPT-3.5-turbo معمولاً در حفظ زمینه مشکل بیشتری دارد. نویسنده smol developer اشاره می‌کند عملکرد GPT-4 بهتر است، بنابراین در صورت دسترسی، بهتر است از آن استفاده کنید.

ثبات

مشکلات مربوط به زمینه، گاهی باعث ناپایداری نیز می‌شود. به طور خاص، در تکرار ۳، ماژول tickets طبق مشخصات تولید شد، اما دو ماژول دیگر چنین نبودند. این مشکل باعث دشواری در اشکال‌زدایی می‌شود.

استانداردسازی

برخلاف کدنویسی سنتی که به استانداردهای دقیق متکی است، هوش مصنوعی مبتنی بر LLM ورودی متنی بدون محدودیت می‌پذیرد. هیچ زبان استانداردی برای انتقال نیت دقیق شما وجود ندارد. خروجی به تعبیر غیرقطعی هوش مصنوعی از کلمات شما بستگی دارد. این یک پایه دشوار برای ساخت برنامه ایجاد می‌کند و کیفیت کد تا حدی به مشخصات و تا حدی به شانس بستگی دارد.

جمع‌بندی

این مقاله نشان می‌دهد چگونه ابزارهای LLM می‌توانند برای طراحی و توسعه API استفاده شوند. ابزارهایی مانند smol developer می‌توانند به سرعت حجم زیادی کد بر اساس مشخصات شما تولید کنند و شما می‌توانید با تغییر تکراری مشخصات، خروجی را به سمت نتیجه دلخواه هدایت کنید. ابزارهای هوش مصنوعی در ابزارهای توسعه‌دهندگان جای پای محکمی پیدا کرده‌اند و به زودی از بین نخواهند رفت.

با این حال، ابزارهایی که وعده تولید کل پایگاه کد را می‌دهند، هنوز برای استفاده در تولید آماده نیستند. نسل فعلی ابزارهای AI نیاز به مبانی مهمی مانند قطعی بودن، ثبات و استانداردسازی دارد. این جنبه‌ها احتمالاً با گذر زمان بهبود خواهند یافت، بنابراین ابزارهایی مانند smol developer از نظر فنی چشمگیر هستند و ارزش توجه دارند. تمام متن‌های ورودی و کدهای تولید شده در این مقاله در یک مخزن عمومی GitHub موجود است.

ابزارهای AI تنها راه بهبود بهره‌وری توسعه API نیستند. ابزارهایی مانند Tyk، یک دروازه API متن‌باز، راهی قابل اعتماد برای بهبود جریان‌های کاری API ارائه می‌دهد. Tyk همه چیزهایی که برای یک دروازه API متن‌باز نیاز دارید، از احراز هویت و محدودیت نرخ تا کنترل دسترسی جزئی، لاگ‌گیری و امکانات بیشتر ارائه می‌دهد. اگر API توسعه می‌دهید و به دنبال پایه‌ای پایدار برای یکپارچه‌سازی همه چیز هستید، حتماً آن را امتحان کنید.

امنیت GraphQL چیست؟
توسعه‌دهندگان API چه مهارت‌های ضروری بایستی داشته باشند؟

دیدگاهتان را بنویسید

سبد خرید
علاقه‌مندی‌ها
مشاهدات اخیر
دسته بندی ها