+51

Tôi đã hoàn thành Viblo Mayfest bằng ChatGPT như thế nào?

Editors' Choice Mayfest2023

Một ghi chép về quá trình ứng dụng thành quả của cuộc cách mạng công nghệ kinh khủng nhất thế kỷ 21 (cho đến hiện tại) - trí tuệ nhân tạo - vào những công việc nhỏ nhoi hàng ngày.

First things first

Xin chào các bạn, mình đã trở lại và lợi hại hơn xưa rồi đây. Sự lợi hại này đến từ một trợ lý đắc lực mà anh em chắc cũng không còn xa lạ nữa - ChatGPT. Chuyện là trong những ngày tháng 5 nhàm chán vì vừa hết đợt nghỉ lễ dài ngày thì mình cũng đã kịp dấn thân vào một cuộc phiêu lưu mới lạ, không kém phần hấp dẫn đến thế giới của trí tuệ nhân tạo (AI).

Tất nhiên là bây giờ mới dấn thân thì cũng kiểu muộn muộn rồi khi mà ChatGPT cũng đã ra đời một thời gian, người ta cũng dùng nó để tạo ra vô vàn thứ hay ho khác trên nó rồi. Tuy nhiên vì mình là một trong những người có tư tưởng kỳ thị số đông, tức là nếu có cái gì đó nổi lên và có quá nhiều người sử dụng thì mặc nhiên mình sẽ đi chọn một cái khác. Những lựa chọn kỳ thị số đông này có thể kể đến việc cố chấp không dùng tiktok, ít mua đồ shopee, không thèm xài react mà xài vue,... Đơn giản là mình không thích việc người ta quá hype một thứ gì đó, vậy thôi.

Mới đây thì mình còn được phỏng vấn lên VTV24 về việc: Là một developer, bạn có lo sợ AI sẽ thay thế công việc của mình hay không?. Mình đã trả lời là không, bởi vì hiện tại thì nó còn xơi mới bằng được anh em cốt đờ =))) Tất nhiên là dù khá coi thường khả năng AI (cụ thể là ChatGPT) hiện tại thay thế được con người nhưng mình cũng vẫn theo dõi sự phát triển của nó để xem khi nào thì tận thế của Terminator trở thành hiện thực.

image.png

Nhưng thôi, trước mắt là mình đã dùng được nó vào việc gì, thu hoạch được gì và rút ra điều gì trước đã nhé.

Viblo Mayfest và cơ hội để trợ lý ảo thể hiện

Thật ra hiện tại thì mình đã sử dụng AI vào công việc hàng ngày rồi, đấy chính là việc sử dụng Github Copilot (với engine OpenAI Codex) chứ không phải là chưa nghĩ ra việc gì cho nó làm. Và thực tế là thằng Copilot đang làm rất tốt (nếu không nói là tốt hơn mong đợi của mình rất nhiều) việc viết code hỗ trợ mình. Còn ChatGPT thì thực tế là mới chỉ đăng ký chơi chơi tí xíu chứ chưa thực sự dùng nó vào việc gì cả.

Cho đến khi có Mayfest. Mình xin dành lời cảm ơn sâu sắc đến Viblo khi đã tạo cơ hội thực tế để mình thử sức với những khả năng của ChatGPT (và cũng xin lỗi các bạn nếu như việc mình đăng bài viết này dẫn đến nhà nhà hoàn thành người người hoàn thành challenge). Mayfest đúng là đã cho mình (à con AI) một mục đích, một sứ mệnh để hoàn thành và thể hiện khả năng. Đây là điều mà một người lười biếng như mình không tự nhiên mà làm được.

À mình cũng không chịu trách nhiệm cho những hệ lụy có thể xảy đến từ việc sử dụng công cụ sai mục đích đâu nhé các bạn.

Quảng cáo cho chủ xị: Nếu các bạn chưa biết Mayfest là gì thì có thể truy cập ở đây: https://mayfest.viblo.asia/ để biết thêm chi tiết về các stage và cách tham dự các thử thách. Tóm tắt cho bạn là Mayfest gồm 3 Stage với các thử thách sau:

  • Stage 1: 2 bài viết công khai trên Viblo
  • Stage 2: Chọn 2 trong 3: Đóng góp 20 câu hỏi + 10 câu trả lời cho Viblo Interview, Đạt 3 chứng chỉ Viblo Learning, Thắng được 3 bot hard trong Viblo Battle.
  • Stage 3: Chọn 2 trong 3: Đạt 1500 điểm Viblo Code, Đạt 1000 điểm Viblo CTF, Code thắng 3 bot medium trong Viblo Battle

image.png

Tôi là một coder chính hiệu

Việc đầu tiên mà mình làm với ChatGPT là tham gia vào thử thách Viblo Code ở Stage 3. Mình vốn là một người không có base về giải thuật. Điều này phần vì mình không phải là người học ngành IT, phần vì mình cũng không thích lắm mấy cái lập trình thi đấu (vì cảm thấy không có ý nghĩa mấy như làm sản phẩm thực tế). Trình độ về giải thuật của mình chỉ ở mức gọi là đủ xài, và kém hơn rất nhiều so với các anh em chăm luyện leetcode để đầu quân cho thung lũng túi nâng rồi.

Mình bắt đầu với 1 số thử thách cơ bản như Distinctive, Last digit of a Fibonacci number,... ở hạng E, F với số sao 20-100. Những thử thách này không khó và là cách tốt nhất để bắt đầu làm quen với việc hướng dẫn ChatGPT thực hiện yêu cầu. Các bạn sẽ mất khoảng 1-2 lần thử để nhận ra những prompt cần thiết cho việc thực hiện bài toán như:

  • Chỉ dẫn việc sử dụng một ngôn ngữ cụ thể để giải bài toán
  • Chỉ dẫn việc lấy dữ liệu từ stdin, bao gồm việc mô tả dữ liệu từ stdin gồm những gì, có thể seed cho ChatGPT bằng chính đoạn code được gợi ý trong Viblo Code (đối với 1 số ngôn ngữ Viblo Code có để sẵn 1 đoạn code lấy data từ stdin cho mình)
  • Mô tả yêu cầu của bài toán và output kết quả. Với những bài toán đơn giản, đề ngắn thì ChatGPT có thể hiểu luôn được đề bài

Đối với các bài toán ở rank F thì ChatGPT dư sức giải hoàn chỉnh chỉ với 1 prompt. Tuy nhiên đấy là khi các bạn chuẩn bị prompt của mình rất kỹ càng. Còn nếu chưa quen thì sẽ mất khoảng 3-5 câu chat để ChatGPT sửa lại giải pháp cho đúng ý. Một số vấn đề các bạn có thể sẽ gặp (và cần bảo ChatGPT cải thiện) là:

  • Đoạn code chạy bị lỗi. Thường thì nó sẽ ít khi lỗi cú pháp mà chủ yếu là sai kết quả. Lúc này các bạn có thể bảo lại ChatGPT sửa lại đoạn code vì kết quả sai và đáng lẽ với input này thì phải ra kết quả này,...
  • Input, output bị sai, điều này thường do bạn chưa quen với prompt và đưa yêu cầu cụ thể liên quan đến input, output.

Với hạng E, F thì thường rất dễ, sau 1-2 câu chat là xong. Các thử thách ở hạng C, D thì khó khăn hơn 1 chút, lúc này đề bài cũng không còn là những yêu cầu ngắn nữa mà sẽ có lời văn tương đối dài. Điều này có thể làm ChatGPT bị rối trí 1 chút. Mình đã thử các prompt tương tự các bài ở hạng E, F và cho ChatGPT đọc trực tiếp đề, tuy nhiên kết quả thường là nó sẽ không hiểu thật sự bài toán muốn tối ưu điều gì.

Lúc này việc các bạn cần làm là rút gọn lại đề bài thành những yêu cầu rõ ràng, dễ hiểu. Ví dụ thay vì 1 đoạn văn nói về ô bàn cờ, tìm đường đi ngắn nhất từ A tới B,... thì hãy chuyển hóa nó thành các yêu cầu trực tiếp và đơn giản hơn kiểu: tìm a, b sao cho a+b=c và a*b lớn nhất (kiểu kiểu vậy).

Mặc dù đoạn code về lý thuyết là vẫn đúng yêu cầu, tuy nhiên nó sẽ thường không tối ưu. Thông thường giải pháp đầu tiên mà ChatGPT đưa ra thường là cách hiểu đơn giản nhất để giải bài toán, có thể là lặp qua mọi đáp án, tính toán mọi khả năng,... Do đó nó thường sẽ không đạt yêu cầu về giới hạn bộ nhớ hay thời gian tính toán. Mình có thể thêm yêu cầu về giải pháp tối ưu trong prompt đầu tiên để nó cố đưa giải pháp tối ưu luôn, tuy nhiên mình thường không làm vậy mà muốn ChatGPT đưa được giải pháp nông dân (nhưng kết quả đúng trước) để đảm bảo là nó hiểu được yêu cầu. Sau đó mình sẽ bảo nó: Hãy tối ưu thuật toán này để giảm thời gian thực hiện. ChatGPT sẽ thay đổi thuật toán (có thể là vài lần) và giải thích nó đã thay đổi ra sao để cải thiện thời gian thực hiện.

Điều quan trọng nhất thì làm các thử thách hạng C, D là diễn đạt lại bài toán để ChatGPT hiểu nó cần làm gì, và 1 vài chỉ dẫn liên quan đến tối ưu. Ở level này thì nó vẫn có khả năng tối ưu khá tốt và cho ra kết quả đúng.

Các thử thách hạng B, A (mình chưa thử hạng S vì đã đủ điểm rồi) thì sẽ mất thời gian hơn nhiều chút. Lúc này đề bài thường dài vì nó phức tạp thôi chứ không văn hoa dài dòng như các hạng trước. Một số lỗi phổ biến khi ChatGPT giải các bài toán ở hạng này là:

  • Lỗi liên quan đến input dài. Có nhiều bài toán dù mình đã tối ưu được giải thuật với ChatGPT (và cho ra kết quả đúng), tuy nhiên khi nộp bài thì thường dính những test case ẩn bị fail. Mặc dù đã rà soát khá nhiều lần, cũng bảo chính ChatGPT tự phân tích xem nó có lỗi tiềm ẩn nào không tuy nhiên đều không tìm được. Chính việc fail ngay ở những bài test ngay đầu (còn nhiều bài test phía sau lại pass) khiến mình có suy nghĩ liệu có phải do input không chính xác hay không. Kết quả là ở 1 số ngôn ngữ việc đọc stdin quá dài sẽ được tách thành nhiều lần, và việc mình chỉ handle 1 lần dẫn đến thiếu input và lỗi. Ok phát hiện lỗi rồi thì bảo ChatGPT sửa phát 1.
  • Lỗi liên quan đến constraint. Lúc đầu thì mình không để ý đến constraint cho lắm, tuy nhiên khi tới các bài toán ở hạng này thì cái dải số lại rất quan trọng. ChatGPT thường bỏ qua constraint (dù mình có cho vào prompt) và sử dụng các kiểu dữ liệu số thường do đó khi gặp các số lớn trong input sẽ lỗi.

Để giải quyết những lỗi trên thì mình thường bảo ChatGPT thay đổi lại kiểu dữ liệu cho các biến, hoặc đổi code sang ngôn ngữ khác để dễ dàng xử lý kiểu dữ liệu hơn (mình thường bảo nó convert qua lại giữa NodeJS và Golang). Việc convert 1 đoạn code sang ngôn ngữ khác khá dễ dàng, tuy nhiên các bạn cũng nên lưu ý rằng khi convert ChatGPT có thể thay đổi 1 số chỗ mà bạn không nhận ra. Mình đã thấy nó tự động reset biến counter của mình về 0 trước vòng lặp (trong khi mình muốn giữ nguyên) khiến cho code ở ngôn ngữ này thì đúng còn ngôn ngữ khác thì sai, nhưng cũng hãn hữu thôi.

Logic của các thử thách hạng B, A thì có khó hơn, có 1 số bài toán ChatGPT chỉ có thể đưa ra được đến 60-70% giải pháp, chủ yếu là ở cái khung sườn thuật toán, còn các điểm tiểu tiết ví dụ như tính điểm ô này ra sao, ô tiếp theo thế nào thì lại dễ bị nhầm lẫn. Lúc này một câu lệnh rất hữu ích mà mình thường dùng đó là: Hãy giải thích chi tiết thuật toán trên. Lúc này ChatGPT sẽ giải thích lại từng dòng code dùng để làm gì, tại sao lại vậy và mình sẽ dễ dàng nhìn ra chi tiết bị tính nhầm.

Nếu chỗ này ChatGPT không đưa ra được thuật toán tối ưu thì các bạn sẽ phải có sự trợ giúp bằng cách thử chia nhỏ bài toán ra thành các bước nhỏ hơn, bước này cần làm gì, bước sau cần làm gì,... Ở level này thì mình thấy ChatGPT vẫn đủ khả năng đưa ra được một cách làm tổng thể, chỉ bị sai ở phần chi tiết thôi. Tác dụng chủ yếu của nó là giúp mình thấy được cái khung thuật toáný tưởng để giải quyết bài toán, còn sau đó phải chau chuốt, nhào nặn như nào thì là ở mình thôi.

Oke, 1 thanh niên không bao giờ luyện leetcode đã hoàn thành xong 9 thử thách từ A đến F với 2k sao, đạt target rồi rút quân thôi.

Tôi là một security guy

Tiếp tục với thử thách Viblo CTF (capture the flag) - thử tài hacker, bảo mật. Đây là nội dung khiến mình hứng thú hơn cả. Trước thì thi thoảng mình cũng chơi tuy nhiên nó khá tốn thời gian nên lười á. Ok giờ thử xem ChatGPT có giúp gì được mình không.

Một đặc điểm khá đặc thù của CTF là việc vọc vạch, mày mò tìm các lỗ hổng. Nó liên quan nhiều đến khả năng ứng biến và hiểu biết về các loại hình công cụ phục vụ hacking. Chính vì thế nên việc tìm chỗ ứng dụng được ChatGPT khá khó. Thứ duy nhất mà mình nghĩ đến sẽ ứng dụng được ChatGPT (và thật may là nó thành công mỹ mãn) là việc sử dụng ChatGPT để phân tích source code.

Vậy chúng ta sẽ thử sức với các thử thách liên quan tới Web securityCho tải source code trước tiên.

Tuy nhiên vì 1 số vấn đề tế nhị, mình sẽ không public hay mention cụ thể thử thách nào, hay chia sẻ cụ thể prompt mình đã dùng ra sao. Các bạn sẽ phải tự nghĩ phần này. Mình có thể chia sẻ một vài kinh nghiệm như sau:

  • Sử dụng ChatGPT để đọc code và giải thích source code (xem nó làm gì trước đã). Phần này là phần ChatGPT làm cực tốt.
  • Yêu cầu phân tích những rủi ro tiềm ẩn của đoạn code, hoặc phân tích những rủi ro bảo mật,... Phần này mặc dù mình có thể không biết ngôn ngữ của source code, tuy nhiên phân tích của ChatGPT sẽ đưa ra rất nhiều gợi ý, từ việc để secret key trong code, inject từ input của người dùng, sql injection, template injection,... Đây là cơ sở để mình dù không thông thạo 1 ngôn ngữ nhưng vẫn có thể có 1 cái nhìn tổng quát xem đoạn code có thể bị tấn công ở đâu.
  • Sau khi xác định đoạn code có rủi ro bảo mật, bạn có thể yêu cầu ChatGPT cung cấp data để trigger lỗ hổng này. Với 1 số case không nhạy cảm thì ChatGPT rất vui lòng đưa ra từ A-Z cách khai thác lỗ hổng trong phần code trên và cả input sample cho việc khai thác luôn. Chỗ này thật sự là rất đỉnh nhé: nếu như trong code có chứa blacklist input thì bạn có thể yêu cầu ChatGPT đưa ra những input khác có tác dụng tương đương. Ui nó nghĩ ra vô vàn luôn bạn =))) Có những câu lệnh với cú pháp mà mình không thể nào nghĩ tới luôn.
  • Tuy nhiên với 1 số lỗ hổng đặc biệt nhạy cảm như SQL injection hay bypass blacklist để remote execution thì ChatGPT sẽ bị khóa với việc thông báo:

Đây là thông báo về việc ChatGPT không được phép đưa ra các hướng dẫn, hoặc trợ giúp trong việc hacking. Hầy cái này khoai à nha. Tuy nhiên đây là lúc để mình ứng dụng một kỹ thuật jailbreak ChatGPT đã đọc trước đây. Đó là sử dụng DAN prompt https://github.com/0xk1h0/ChatGPT_DAN. Đây là 1 kỹ thuật đưa ra chỉ dẫn để lừa ChatGPT rằng nó có thể làm mọi thứ mà không bị cấm đoán điều gì. Mình đã thử các prompt này và đã có thể tiếp tục yêu cầu ChatGPT gợi ý những kỹ thuật inject hay bypass để thi triển.

  • Một ứng dụng khác cực kỳ to lớn của ChatGPT là nó có khả năng đọc hiểu code kể cả khi bị làm rối. Mình đã sử dụng nó để đọc các đoạn code bị obfuscate (trong các thử thách liên quan đến webshell). Đây là 1 kỹ thuật che giấu mục đích thực sự của đoạn code để tránh chúng ta hiểu được con shell nó làm gì. Trước đây thì để có thể hiểu được những webshell này mình cần rất nhiều thời gian ngồi sửa lại tên các biến, hàm, dịch ngược, debug,... Tuy nhiên giờ với ChatGPT thì bạn chỉ cần đơn giản là bảo nó thay đổi tên hàm, biến cho dễ hiểu rồi giải thích cặn kẽ hoạt động của từng đoạn code là được. Có một số phần bị mã hóa nhiều lớp thì bạn vẫn phải tự chạy để lấy được code ở layer tiếp theo chứ đưa ChatGPT đoạn đã mã hóa gốc thì nó cũng không hiểu đâu.

~> ChatGPT làm khá tốt việc scan code tìm lỗ hổng bảo mật. Đây có thể là một hướng ứng dụng nó trong quy trình triển khai ứng dụng để kiểm thử bảo mật trước khi release.

3 thử thách là đủ hơn 1k điểm, đạt target ta lại rút quân thôi.

Tôi là một thí sinh

Quay trở lại thử thách ở stage 2 với Viblo Learning. Phần này là test kiến thức, giờ ngồi hỏi ChatGPT từng câu thì nó lại dễ quá ai chả nghĩ ra được, nó chỉ nhanh hơn việc hỏi google chút thôi (thật ra là nhanh hơn kha khá). Thế nên mình đã nghĩ đến việc bảo ChatGPT code ra một chương trình để tự động làm bài thi trên Viblo luôn. Ok bắt tay vào nào...

À mà thôi lại vì lý do nhạy cảm, mình cũng không chia sẻ lại đoạn code mình đã làm. Tuy nhiên về cơ bản thì nó làm 3 công việc:

  • Lấy data câu hỏi
  • Hỏi ChatGPT lấy đáp án
  • Submit đáp án

Dễ phải không? Thực tế là ChatGPT cũng rất nhanh chóng viết cho mình 1 phần mềm thực hiện đủ 3 chức năng trên chỉ sau vài lần chat qua lại. Sau khi có khung sườn thì mình cũng thi triển thêm chút ít mắm muối để nó xử lý output data cho đúng các thứ thôi không đáng kể. Sau đấy thì chương trình chạy cũng ok.

Tuy nhiên vấn đề mà mình gặp phải thì nó lại thế này:

  • Mình hết quota cho API trial, do đó không thể gọi được API gợi ý của OpenAI. Mặc dù đã rất mong muốn được mất tiền cho OpenAI, sẵn sàng nhập xong cả thẻ thủng vào thanh toán, thế nhưng rất tiếc là OpenAI lại không chấp nhận thẻ tại Việt Nam.
  • Muốn mất tiền cũng không xong, mình đành tìm kiếm những giải pháp sử dụng được API OpenAI khác, và điều tốt nhất sau khi tìm kiếm là việc sử dụng 1 proxy với ChatGPT token để request gợi ý qua đường chat. Các bạn có thể xem thêm ở đây: https://github.com/transitive-bullshit/chatgpt-api. Cái dở của cách làm này là nó tương tự như việc mình chat trực tiếp trên web, do đó nó sẽ dẫn đến một hệ lụy là vấn đề tiếp theo.
  • Sai format. Có vẻ do prompt của mình chưa đủ mạnh (mặc dù đã có yêu cầu rõ ràng về format output), cho nên response từ ChatGPT thường xuyên bị sai format, lẫn lộn giữa text thường, markdown code,... và việc chạy thường bị dừng giữa chừng do không đọc được response. Mình có thử khá nhiều prompt để chỉ dẫn format response, tuy nhiên nó cũng không xử lý được triệt để, dẫn đến mình vẫn phải xử lý 1 chút khi nhận được data.

Sau khi vấn đề sai format được sửa thì mình cũng thành công hoàn thành bài thi và submit. Tuy nhiên bài thi đều rớt cả =))) Với tỷ lệ đúng khoảng 75% thì chưa đủ điểm đạt chứng chỉ =))). Để kiểm chứng việc ChatGPT trả lời sai thì mình copy luôn những câu trả lời sai đó vào chat trên web để xem nó trả lời là gì. Thế nhưng lạ lùng thay, trong những câu nó sai thì khoảng 1 nửa bên web vẫn trả lời đúng. Tại sao vậy?

Lúc này mình phát hiện ra prompt mình input cho API là dạng batch nhiều câu hỏi, và mình đang dùng trực tiếp dữ liệu câu hỏi và yêu cầu ChatGPT đưa ra câu trả lời bằng ID. Việc chỉ đưa 1 danh sách câu hỏi và lấy ID câu trả lời so với việc hỏi trực tiếp 1 câu hỏi và để ChatGPT giải thích câu trả lời chính là sự khác biệt giữa 2 phương án. Việc đưa ChatGPT nhiều câu hỏi cùng lúc cũng dễ làm loạn suy nghĩ của nó và dẫn tới đáp án sai. Đưa từng câu hỏi một sẽ cho đáp án chính xác hơn.

Ngoài ra nếu bạn yêu cầu ChatGPT từ câu hỏi đưa ra ID đáp án mà không để nó giải thích step by step qua các bước trung gian thì nó sẽ có khả năng đưa ra đáp án sai. Đây là điểm rất quan trọng trong việc thiết kế prompt, đó là phải để nó suy luận từng bước một chứ không được nhảy cóc =))) Nhận ra điều này cũng tốn của mình kha khá thời gian thử đó. Nhất là mấy câu hỏi liên quan đến kết quả của đoạn code ấy, nếu nhảy cóc chọn đáp án luôn nó hay sai lắm.

Vấn đề cuối cùng chính là việc đến cả chat web thì ChatGPT cũng giới hạn số lượng hội thoại trong 1 giờ. Mình bị nó chặn nên trong lúc chờ đợi có tạt thử qua bên Google Bard (mới public beta cho cộng đồng xài đó) xem chất lượng ra sao. Khá bất ngờ là độ chính xác khi làm bài thi của Google Bard có vẻ là tốt hơn, và với sự trợ giúp của cả 2 trợ lý, mình cũng đạt target 3 chứng chỉ và rút lui.

Tôi là một người phỏng vấn kiêm ứng viên

Thử thách đóng góp nội dung này được thực hiện trên Viblo Interview. Hầy nhưng riêng cái trò tạo ra nội dung kiểu này thì ChatGPT lại là trùm. Mình có nhờ nó gợi ý 1 số vấn đề nên hỏi và 1 số câu hỏi phỏng vấn cụ thể thì thấy nó gợi ý khá tốt, có nhiều cái hay ho mà chắc chắn lần sau mình phỏng vấn bạn nào đấy thì cũng sẽ thử mang ra hỏi. Tất nhiên là sau khi chọn lọc từ ý tưởng của rất nhiều câu hỏi phỏng vấn thì mình cũng có thể tạo ra được 1 list cho bản thân và đóng góp lên Viblo Interview.

Một vài keynote take away:

  • ChatGPT làm rất tốt trong việc đưa ra câu hỏi. Có rất nhiều câu hỏi hay để tìm hiểu về kiến thức, kỹ năng của ứng viên. Hiểu biết rộng là một lợi thế không thể chối cãi khi sử dụng trợ lý AI.
  • Việc trả lời thì chỉ dừng ở mức gợi ý. Tức là ChatGPT sẽ đóng vai 1 chuyên gia về lý thuyết để gợi ý cho bạn những bước trả lời, những cách xử lý tình huống,... theo cách rất chuyên nghiệp.
  • Thế nhưng câu trả lời này sẽ chỉ dừng ở mức lý thuyết thôi nhé. Câu trả lời của ChatGPT thì rất chuyên nghiệp, formal nhưng bị thiếu kinh nghiệm thực tế. Thế nên mình nghĩ chỉ dừng ở mức gợi ý thôi. Điều quan trọng bạn cần thể hiện bên cạnh sự chuyên nghiệp là màu sắc, kinh nghiệm thực tế của riêng bạn để nhà tuyển dụng hiểu được về bạn hơn.

Phỏng vấn là quá trình tìm hiểu về tính cách, kinh nghiệm cũng như nhu cầu của các bên tham gia phỏng vấn. ChatGPT sẽ phát huy rất tốt trong những câu hỏi về kiến thức, kỹ năng. Nó cũng gợi ý cách giải quyết khá nhiều vấn đề thường gặp trong công việc mà mình có thể tham khảo dù không đi phỏng vấn. Tuy nhiên trợ lý thì chỉ dừng lại ở việc gợi ý mà thôi, câu trả lời của ChatGPT không phải là viên đạn bạc, cũng không có ý nghĩa gì mấy nếu như người tuyển dụng muốn biết đến cái mà ứng viên thực sự đã trải qua.

Tôi là một game player

Một trong các thử thách mà mình chưa hoàn thành là Viblo Battle. Mình thì chưa chơi trò đó bao giờ nên kể cả vào chơi cũng khá bỡ ngỡ. Tuy nhiên mình có đưa cho ChatGPT thử suggest cách chơi thì nó đưa ra những insight khá hay về trò chơi mà người mới như mình chưa nhận ra.

Sau khi phân tích, mình có tiếp tục yêu cầu ChatGPT implement code cho con bot, và nó cũng tạo cho mình code với một chiến lược đơn giản là tính toán tổng điểm trong từng nước đi để tối ưu điểm hiện tại. Trong phân tích chiến lược thì ChatGPT cũng đề cập đến việc cân đối giữa điểm hiện tạiđiểm kỳ vọng tương lai, điều này giúp cho mình hình dung được sơ bộ về những gì mình cần làm trong thuật toán. Nếu tiếp tục phát triển cái này thì mình chắc sẽ yêu cầu ChatGPT thêm vào việc tính toán điểm số kỳ vọng với từng nước đi để cân đối với điểm hiện tại nữa. Tuy nhiên thử thách này chỉ là optional nên mình không tiếp tục làm nữa.

Tổng kết

Nếu các bạn đã xem Iron Man thì chắc hẳn đều nhớ đến J.A.R.V.I.S - con AI phụ tá cho tỷ phú Tony Stark. Điều mà ChatGPT làm được ở đây cũng tương tự như vậy. Nó chưa thay thế được mình trong các công việc ở bên trên mà chỉ đảm nhiệm tốt vai trò Trợ lý, tức là có thể gợi ý ý tưởng, cung cấp thông tin, phân tích yêu cầu, thực hiện implement code chân tay,... giúp cho mình tập trung vào những thứ chính yếu là giải quyết vấn đề chứ không phải đi ngồi đọc doc hay google search cú pháp nữa.

image.png

Sau quá trình đối thoại điên cuồng với ChatGPT thì mình rút ra mấy điều:

  • Kỹ năng đặt câu hỏi và đưa ra yêu cầu rất quan trọng. Nếu như cấp dưới của bạn làm sai, thì đầu tiên hãy xem lại yêu cầu của chính bạn có đủ rõ ràng không đã. Đưa yêu cầu cho ChatGPT cũng phải rõ ràng, dễ hiểu thì nó mới thực hiện được (mà không bị sai)
  • Giá trị của con người nổi bật ở khả năng tư duy tổng hợp. Còn giá trị của ChatGPT thì đang ở khả năng thực hiện chi tiết. Tức là mình thường phải là người ghép những gợi ý của ChatGPT để hình thành một bức tranh tổng thể cho vấn đề.
  • Công cụ thì vẫn chỉ là công cụ. Quan trọng là bạn có nhìn được giá trị mà công cụ mang lại cho bản thân (như mình là việc hoàn thành hết thử thách Viblo trong mấy ngày =))) hay không thôi. Nhìn được giá trị của công cụ thì sẽ nhìn thấy giá trị bản thân nằm ở đâu.
  • ChatGPT hiện tại phù hợp với công việc phân tích, đưa ý tưởng, bootstrap ứng dụng, thực hiện các tác vụ ngắn có kết quả rõ ràng,... Bạn vẫn phải cóp nhặt thông tin từ kết quả của nó để hoàn thành những task lớn hơn.

Hết rồi. Các bạn nhớ upvote cho mình nhé.


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí