Trong bài viết trực tuyến này, người ta đã đề cập rằng Mô hình Phind, một mô hình trí tuệ nhân tạo dựa trên CodeLlama-34B, có khả năng trả lời các câu hỏi kỹ thuật. Nó tự hào với tốc độ, dung lượng và độ chính xác cao, và có khả năng nâng cao khả năng của mình bằng cách sử dụng nguồn lực internet. Tác giả tuyên bố rằng nó đã vượt trội hơn GPT-4 trong bài kiểm tra HumanEval, và hữu ích hơn GPT-4 trong các vấn đề thực tế. Ngoài ra, Mô hình Phind nhanh hơn GPT-4 gấp năm lần và hỗ trợ đầu vào lên đến 16k ký tự.
Tuy nhiên, nó cũng có nhược điểm của mình. Tác giả cho rằng nó có thể không đủ nhất quán trên một số câu hỏi khó, cần phải tạo ra nhiều lần để có được câu trả lời chính xác. Hơn nữa, nó chưa trải qua quá trình đánh giá đồng nghiệp hoặc xác nhận từ các nhà nghiên cứu khác.
Vì vậy, tôi cũng rất tò mò về việc so sánh Phind và GPT-4 về mặt lập trình. Dưới đây là lời nhắc mà tôi đã sử dụng, và tôi đã so sánh trực tiếp các sự khác biệt bằng cách trích xuất các tệp mà chúng đã tạo ra cho OrderController.java:
"Bạn có thể tạo một dự án Spring Boot để gọi một nguồn tài nguyên API có tên là '/v1/orders/' với định dạng JSON là '{"order_no":"123", "total_price":123}', và sau đó phản hồi với định dạng JSON là '{"status":"done"}'? Chúng tôi cần cập nhật trường trạng thái trong bảng đặt hàng, nơi cột khóa chính là order_no. Vui lòng cung cấp nhóm, mã Java, tên tệp Java và tất cả các tệp khác cần thiết."
- Phind
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/v1/orders")
public class OrderController {
@Autowired
private OrderService orderService;
@PutMapping
public ResponseEntity updateOrderStatus(@RequestBody Order order) {
orderService.updateOrderStatus(order.getOrderNo(), order.getStatus());
return ResponseEntity.ok("{\"status\":\"done\"}");
}
} - GPT-4
package com.example.demo.controller;
import com.example.demo.service.OrderService;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/v1/orders")
public class OrderController {
private final OrderService orderService;
public OrderController(OrderService orderService) {
this.orderService = orderService;
}
@PutMapping("/{orderNo}")
public ResponseEntity updateOrder(@PathVariable String orderNo,
@RequestParam Double totalPrice) {
orderService.updateOrderStatus(orderNo, totalPrice);
return ResponseEntity.ok().body(new StatusResponse("done"));
}
private static class StatusResponse {
private String status;
public StatusResponse(String status) {
this.status = status;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
}Mã GPT-4 tuân theo các phương pháp được khuyến nghị của Spring nhiều hơn, như là việc tiêm phụ thuộc thông qua hàm tạo và các kiểu trả về linh hoạt. Nó cũng xử lý các tham số URL một cách tinh tế hơn thông qua @PathVariable và @RequestParam.
Mã Phind, ngược lại, đơn giản và trực tiếp hơn, nhưng nó sử dụng tiêm phụ thuộc trường và tự tạo chuỗi JSON cho giá trị trả về. Nó cũng thu thập toàn bộ phần thân của yêu cầu một cách nhanh chóng với @RequestBody.
Lựa chọn phương pháp triển khai phụ thuộc vào nhu cầu cụ thể và sở thích cá nhân. Nếu bạn cần xử lý lỗi hoặc xử lý tham số linh hoạt hơn, GPT-4 có thể phù hợp hơn. Nếu bạn thích mã nguồn đơn giản và trực quan, Phind có thể là lựa chọn tốt hơn.
Ngoài ra, trong OrderService.java, GPT-4 bao gồm một đoạn mã Transactional, điều mà tôi cho rằng thêm một mức độ nghiêm ngặt, có vẻ như làm cho GPT-4 hơi vượt trội trong khía cạnh này.
Bạn thích cái nào hơn?

Không có nhận xét nào:
Đăng nhận xét