Tùy chỉnh Amazon Q Developer cho C# và C++

Tác giả: Brian Beach 

Ngày đăng: 01/04/2025

Chuyên mục: Amazon Q, Amazon Q Developer, Launch

Amazon Q Developer gần đây đã bổ sung hỗ trợ tùy chỉnh các gợi ý cho C# và C++ dựa trên kho mã nguồn của công ty. Bài viết này sẽ khám phá cách các nhà phát triển có thể tùy chỉnh trợ lý AI để cung cấp các gợi ý trực tiếp trong code (inline suggestions) và hiểu ngữ cảnh mã nguồn một cách chính xác cho các dự án C# và C++ của họ. Bạn sẽ học được cách tận dụng các tính năng tùy chỉnh để nâng cao năng suất, hợp lý hóa quá trình phát triển và khai thác toàn bộ tiềm năng của Amazon Q Developer trên toàn bộ kho mã nguồn (codebase) của bạn.

Tổng quan

Giống như nhiều nhà phát triển khác, tôi đã học lập trình với ngôn ngữ C. Ba mươi năm sau, C# và C++ vẫn nằm trong top 10 ngôn ngữ lập trình được sử dụng nhiều nhất. Tuy nhiên, phần lớn code viết bằng các ngôn ngữ này là mã nguồn độc quyền và được lưu trữ trong các kho chứa riêng tư (private repositories), trong khi Python, JavaScript, và Java chiếm ưu thế trên các kho chứa công khai (public repositories). Do đó, điều quan trọng là tôi có thể điều chỉnh trợ lý AI của mình với các mã nguồn riêng tư, độc quyền của mình. Amazon Q Developer đã mở rộng khả năng tùy chỉnh của mình để bao gồm hỗ trợ cho C#, C++, ngoài Python, JavaScript và TypeScript mà họ đã hỗ trợ.

Nếu bạn đã tham dự phiên trình bày của tôi tại re:Invent 2024, Best practices for customizing Amazon Q Developer, bạn có thể nhớ tôi đã trình bày cách tùy chỉnh Amazon Q Developer bằng một ví dụ về kho phim sử dụng ngôn ngữ Python làm ví dụ. Với phản hồi tích cực từ nhiều nhà phát triển Python, tôi muốn mang đến mức độ tùy chỉnh tương tự cho các nhà phát triển C# và C++. Vì thế, không chậm trễ nữa, cùng nhau đi vào và thấy cái cách mà bạn có thể tận dụng tối đa Amazon Q Developer tương tự trong các dự án C# và C++.

Đề xuất theo dòng

Hãy bắt đầu bằng cách xem Amazon Q Developer có thể cung cấp các gợi ý trực tiếp trong code (inline suggestions) như thế nào. Tôi sẽ dùng C# cho ví dụ này. Hãy xem qua phương thức Insert của lớp MovieRepository. Lớp MovieRepository hỗ trợ các thao tác tạo, đọc, cập nhật, và xóa (CRUD). 

/// <summary>

/// Adds a movie to the table.

/// </summary>

/// <param name="title">The title of the movie.</param>

/// <param name="year">The release year of the movie.</param>

/// <param name="plot">The plot summary of the movie.</param>

/// <param name="rating">The quality rating of the movie.</param>

public async Task Insert(string title, int year, string plot, decimal rating)

{ ... }

Khi tôi sử dụng mặc định, không tùy chỉnh, phiên bản của Amazon Q Developer, nó cố gắng hết sức để giúp tôi. Tuy nhiên, bạn có thể nhận thấy một vài lỗi trong dòng đề xuất 17 của màn hình ngay bên dưới. Đầu tiên, Amazon Q Developer đã đề xuất tham chiếu đến một phương thức được đặt tên AddMovie,  phương thức thực tế trong lớp MovieRepository có tên là Insert. Thứ hai, Amazon Q Developer đã đoán chính xác ba trong số bốn tham số – tiêu đề, năm và xếp hạng, nhưng lại gợi ý một đạo diễn thay vì cốt truyện. Thứ ba, thứ tự của các thông số không chính xác.

Tất nhiên, tôi không thể đổ lỗi cho Amazon Q Developer về những sai lầm này. Nó chưa bao giờ thấy MovieRepository, được lưu trữ trong một kho lưu trữ riêng. Bây giờ, hãy chuyển sang phiên bản Amazon Q Developer tùy chỉnh của tôi. Lưu ý rằng tôi đã tạo tùy chỉnh theo hướng dẫn trong Hướng dẫn sử dụng nhà phát triển Amazon Q và các phương pháp hay nhất được thảo luận trong bài nói chuyện re:Invent của tôi. Tôi chỉ cần kích hoạt tùy chỉnh trong IDE của mình.

Với các tùy chỉnh đã được chọn, Amazon Q Developer bây giờ hiểu chính xác cấu trúc của lớp MovieRepository. Hãy nhìn vào gợi ý ở dòng 17 trong hình ảnh sau. Với việc tùy chỉnh được bật, Amazon Q Developer đã gợi ý chính xác tên phương thức, tên tham số, và thứ tự tham số. Thêm vào đó, nó hiểu rằng MovieRepository đang sử dụng Amazon DynamoDB ngầm bên trong. Cuối cùng, hãy để ý rằng gợi ý này được xuống dòng cho từng tham số, trong khi trong ví dụ trước đó tất cả đều trên một dòng. Amazon Q Developer đang định dạng code để khớp với phong cách ưa thích của nhóm tôi, với mỗi tham số trên một dòng riêng biệt, dựa trên các ví dụ mà nó thấy trong tùy chỉnh của tôi.

Đây là sức mạnh của tùy chỉnh: Amazon Q Developer đang điều chỉnh các đề xuất của mình để phù hợp với code của tôi. Lợi ích của việc tùy chỉnh không chỉ dừng lại ở các gợi ý trực tiếp trong code. Hãy cùng xem Amazon Q Developer có thể hỗ trợ tôi như thế nào trong chat, lần này sử dụng ví dụ C++.

Nói về Code

Ngoài các gợi ý trực tiếp trong code, tính năng tùy chỉnh của tôi cũng có sẵn trong phần chat. Cá nhân tôi sử dụng kết hợp cả hai. Tôi ưu tiên các gợi ý trực tiếp trong code khi tôi đã quen thuộc với code và muốn làm việc nhanh hơn. Tôi thích trò chuyện khi tôi không biết rõ về code và tôi muốn Amazon Q Developer cung cấp thêm ngữ cảnh.

Trong ví dụ sau, tôi hỏi Amazon Q Developer – “Làm thế nào để tôi thêm movies vào C++ Movie Repository”. Tôi nên lưu ý rằng tùy chỉnh vẫn được bật và tùy chỉnh duy nhất hỗ trợ C# và C++, ngoài Python, Java, JavaScript và TypeScript. Tôi không cần bật tùy chỉnh khác nhau cho từng ngôn ngữ.

Một lần nữa, Amazon Q Developer cung cấp thông tin chính xác về cấu trúc của MovieRepository. Ngoài ra, phản hồi bao gồm các hướng dẫn bổ sung và nhiều ví dụ (mặc dù tôi chỉ đưa một ví dụ vào ảnh chụp màn hình). Ngoài ra, bạn có thể nhận thấy rằng Amazon Q Developer là một người hâm mộ khoa học viễn tưởng. Tôi không ngạc nhiên lắm.

Nhưng đợi đã, còn nhiều hơn thế nữa! Amazon Q Developer cũng đã đọc các tệp README của tôi. Do đó, nó có thể trả lời các câu hỏi về cách sử dụng, cài đặt, khắc phục sự cố, v.v. Trong ví dụ cuối cùng này, tôi sẽ yêu cầu Amazon Q Developer trợ giúp khắc phục sự cố. Amazon Q Developer đưa ra nhiều đề xuất (mặc dù tôi chỉ đưa một đề xuất vào ảnh chụp màn hình) về các sự cố tiềm ẩn và cách khắc phục chúng.

Sự kết hợp giữa tác động vào việc tùy chỉnh lên các gợi ý trực tiếp trong code và tính năng chat giúp tôi luôn tập trung và duy trì trạng thái làm việc hiệu quả hơn.

Kết luận

Tôi khá mừng khi Amazon Q Developer có khả năng tùy chỉnh cho các dự án C# và C++ của mình. Dù tôi đang tìm kiếm các gợi ý trực tiếp trong code hay cần trợ giúp để hiểu về code của mình thông qua tính năng trò chuyện, công cụ này đã trở thành một phần vô giá trong quy trình phát triển của tôi. Nếu bạn chưa thử, tôi thực sự khuyến khích bạn xem qua Amazon Q Developer documentation và bắt đầu tận dụng sức mạnh của việc tùy chỉnh cho các dự án của riêng bạn.