TTBC2024

TTBC2024


Cùng học GenAI Phần 5: thành phần của prompt, các tham số khi làm việc với LLM, quy trình prompting

ND Minh Đức
25/6/2024 10:37Phản hồi: 18
Cùng học GenAI Phần 5: thành phần của prompt, các tham số khi làm việc với LLM, quy trình prompting
Trong bài viết này, chúng ta hãy cùng xem qua những thành phần có thể xuất hiện trong một prompt khi làm việc với LLM. Đồng thời, bên cạnh việc xài nhanh các LLM qua chatbot như ChatGPT hay Gemini thì chúng ta còn có một cách nghịch khác sâu hơn là dùng GPT Playground và Google AI Studio,… trong đó cho phép chúng ta chỉnh nhiều tham số hơn để điều khiển đầu ra. Bên dưới mình sẽ mô tả kỹ hơn các tham số đó và ý nghĩa của chúng nha.

Đây là nội dung trong chuỗi các bài viết về GenAI của mình, anh em có thể tham khảo các bài viết trước đây ở link bên dưới. Đừng quên cùng mình hóng thêm các bài về tự build chatbot, tự train data, rồi các ứng dụng cụ thể khác của AI, AI Agent sắp tới nhé anh em. Chúc vui.


Các thành phần có thể có trong một prompt


Chúng ta đã biết prompt chính là input đầu vào để hướng dẫn LLM phản hồi lại câu trả lời có giá trị đối với chúng ta. Việc tạo ra một prompt đúng và hiệu quả sẽ giúp chúng ta đạt được ý muốn, bắt LLM trả về kết quả có giá trị đối với chúng ta. Và để làm được chuyện đó, chúng ta cần phân chia rõ các thành phần của một prompt để tối ưu từng cái, kết quả cuối cùng là tạo ra một prompt hiệu quả, rõ ràng, để LLM "hiểu" được ý định của chúng ta.

Các thành phần của một prompt có thể được phân chia phụ thuộc vào tác vụ, ứng dụng và kết quả đầu ra. Bên dưới đây là một số thành phần quan trọng thường xuất hiện trong prompt hiệu quả.


Các thành phần có thể có trong một prompt.png

Mô tả nhiệm vụ


Đây là thành phần tối quan trọng của một prompt. Chúng ta cần một hoặc vài câu để miêu tả chi tiết và rõ ràng nhiệm vụ muốn model làm. Thường thì phần này sẽ là các chỉ dẫn, một câu hỏi hoặc một câu xác định mục đích (thí dụ như tóm tắt một đoạn văn, dịch một văn bản, trả lời một truy vấn,...)

Thí dụ:
Prompt: Tóm tắt nội dung bài viết sau trong 2 câu.

Ngữ cảnh


Việc nêu rõ ngữ cảnh trong prompt giúp model hiểu rõ phạm vi, các ràng buộc và các thông tin cơ bản liên quan tới tác vụ muốn LLM thực hiện. Ngữ cảnh có thể bao gồm thuật ngữ, đưa ra các thí dụ / giải thích thêm trong một lĩnh vực đặc thù nào mà người dùng đang muốn làm việc với LLM. Prompt có chứa thông tin ngữ cảnh sẽ giúp định hướng, điều chỉnh trọng tâm của model và đảm bảo rằng kết quả đầu ra sẽ tuân thủ theo một định dạng / một kiểu thông tin cụ thể.

Thí dụ: Bạn là một giáo viên vật lý ở cấp phổ thông với khả năng giải thích vấn đề một cách rõ ràng, giọng văn dể hiểu. Bạn đang cần giải thích cho một đứa bé 7 tuổi hiểu được trọng lực là gì. Hãy giải thích và đưa ra thí dụ thực tế và hài hước.

Data đầu vào


Đây là những nội dung mà chúng ta đưa vào để model xử lý và tạo ra những phản hồi dựa trên hiểu biết của nó về các thông tin có chứa trong đó. Data đầu vào có thể là một câu, một đoạn văn, một chuỗi những câu hỏi hoặc cả một file tài liệu, văn bản, bảng tính, số liệu,... Dữ liệu đầu vào nên được rõ ràng, chứa thông tin có liên quan tới tác vụ người dùng đang muốn yêu cầu LLM thực hiện, nếu là dữ liệu cần được tổ chức để model dễ dàng phân tích và hiểu được.

Quảng cáo



"Chỗ trống"


Trong một số trường hợp, chúng ta cần "đục lỗ" sẵn các vị trí trong prompt (có thể xem đây là các biến) để báo cho model biết nó sẽ phải chèn các phản hồi của nó vào đó. Các "chỗ trống" này có thể đảm bảo cấu trúc và định dạng của phản hồi đầu ra mà model trả về, đặc biệt khi muốn kết quả model trả về tuân theo một trình tự hoặc bố cục cụ thể nào đó.

Thí dụ: Prompt
Hãy tưởng tượng bạn đang đi tới [thanh_pho] lần đầu tiên. Bạn có [so_ngay] để khám phá thành phố và trải nghiệm văn hóa, ẩm thực tại đó. Đâu là top [so_diem] điểm đến hoặc hoạt động bạn muốn làm khi bạn ở đó? Cung cấp miêu tả sơ lược của mỗi điểm đến và giải thích tại sao nó thú vị
thanh_pho: Đà Nẵng
so_ngay: 3
so_diem: 5


Phản hồi
Screenshot 2024-07-04 at 6.40.05 PM.jpg

Quảng cáo



Có thể thấy với prompt này, chỉ cần đổi các "biến", người dùng có thể hỏi lại lần nữa với cùng một thành phố, số ngày hoặc các điểm đến, hoặc thành phố khác,... Tới đây thì chúng ta thấy rõ hơn các hướng sử dụng LLM, chỉ với prompt này là có thể hoàn thành được cực nhanh rất nhiều việc rồi. Đồng thời, chúng ta có thể dùng cách tiếp cận này để xử lý những việc lặp đi lặp lại, cùng format nhưng với các biến khác nhau.

Cung cấp thí dụ cho LLM


Trong Prompt, chúng ta cũng có thể đưa các thí dụ vào. Cách làm này đặc biệt hiệu quả khi cần LLM giúp xử lý những tình huống ngách, đặc biệt mà có thể nó chưa được huấn luyện chuyên môn trước đó. Ngoài ra, việc đưa thí dụ vào còn có hiệu quả trong việc xử lý các task phức tạp hoặc cần LLM cho đầu ra có cấu trúc đặc biệt, cụ thể.

Để đưa các thí dụ cho LLM, chúng ta có thể làm theo cách "cầm tay chỉ việc", đưa cho nó đầu vào và cả đầu ra minh họa để nó làm theo.

Thí dụ: Prompt
Chiếc loa này có thể tái tạo âm thanh rất rõ ràng, bass đánh sâu, cách cài đặt nhanh và đơn giản. Tổng thể thì đây là một sản phẩm tuyệt vời, khuyên mọi người nên mua. Output: Tích cực
Chiếc tai nghe này nhẹ và đeo thoải mái, nhưng chất lượng âm thanh nhỏ và thiếu bass. Tính năng chống ồn bình thường. Output: Tiêu cực
Hãy phân loại đánh giá sản phẩm sau theo tích cực, tiêu cực hoặc trung tính.
Chiếc tai nghe này nhẹ, đeo dễ chịu. Chất lượng âm thanh tốt, rõ, bass sâu. Output:


Phản hồi
Screenshot 2024-07-04 at 6.34.40 PM.jpg

Các ràng buộc


Đôi khi, trong prompt cần phải có các ràng buộc để LLM trả về phản hồi đáp ứng các yêu cầu cụ thể, tuân thủ các nguyên tắc hoặc tránh những nội dung mà người dùng không mong muốn. Các ràng buộc cần được chỉ định rõ ràng trong prompt hoặc cũng có thể ngầm định thông qua việc mô tả chi tiết nhiệm vụ và ngữ cảnh.

Thí dụ:
Prompt:
Tạo một bài thơ ngắn về chủ đề mùa hè. Bài thơ có 3 khổ thơ, viết theo thể loại thơ 4 chữ, có áp dụng gieo vần.

Phản hồi:
Screenshot 2024-07-04 at 6.34.10 PM.jpg

Giọng điệu và phong cách (Tone and Style)


Prompt cũng nên đề cập tới giọng điệu và phong cách của đầu ra mong muốn. Người dùng cần miêu tả rõ giọng văn mong muốn, thí dụ như trang trọng, giản dị, dễ hiểu, chặt chẽ, vui tươi,... Dựa vào các từ khóa này, model sẽ tạo ra văn bản gần với ý định, phù hợp với mục đích và đối tượng mà người dùng hướng tới.

Thí dụ:
Prompt: Viết một bài viết dài 100 chữ để đánh giá sản phẩm, chế giễu các tính năng thừa thãi và vô dụng, thiết kế yếu đuối và mỏng manh của một chiếc tủ bếp, nhưng lại có giá bán đắt vô lý. Sử dụng giọng điệu mỉa mai, châm biếm.

Phản hồi
Screenshot 2024-07-04 at 6.33.16 PM.jpg

Thí dụ:
Prompt: Tạo ra một đoạn nhật ký của một tên thuyền trưởng cướp biển, kể lại 1 tuần đi săn tìm kho báu trên một hòn đảo bí ẩn, nguy hiểm nằm ở giữa Thái Bình Dương. Sử dụng tiếng lóng và ngôn ngữ của cướp biển.

Phản hồi:
[​IMG]
Screenshot 2024-07-04 at 6.32.19 PM.jpg

Trên đây là những thành phần quan trọng có thể có trong một prompt được tính toán kỹ lưỡng khi viết lệnh cho LLM nhằm thu được kết quả đúng nhu cầu sử dụng nhất. Một prompt có thể có một vài hoặc toàn bộ các yếu tố trên, tùy theo mục đích của task mà chúng ta muốn LLM làm.

Các yếu tố như mô tả chi tiết nhiệm vụ, ngữ cảnh, data đầu vào, giọng điệu và phong cách giúp model hiểu được ý định của người dùng rõ hơn.

Các thí dụ về định dạng đầu ra mà người dùng đưa vào prompt sẽ đảm bảo LL trả về các nội dung phù hợp với định dạng mà người dùng muốn, có thể dễ dùng được ngay, không cần phải đi định dạng lại.
Việc "đục lỗ" để LLM điền vào chỗ trống sẽ đảm bảo LLM trả về định dạng đầu ra đúng theo cái mà người dùng muốn, thích hợp với các task đòi hỏi lặp đi lặp lại, chỉ cần thay đổi các biến sẽ tạo ra các kết quả khác nhau.

Tìm hiểu các tham số của của LLM


Thường thì chúng ta sẽ chủ yếu làm việc với các sản phẩm có sẵn của các nhà phát triển LLM như ChatGPT của OpenAI, Gemini của Google hay Claude của Anthropic,... Ở mức độ cơ bản nhất, các dịch vụ này đã là sản phẩm cuối cùng, cho phép chúng ta chỉ cần chat với LLM và nhận được câu trả lời là xong. Anh em nào muốn nghịch nhiều hơn, điều khiển được các tùy chọn nhiều hơn thì có thể dùng các studio của những bên này để điều khiển các tham số của LLM trong quá trình làm việc. Hiểu ý nghĩa của các tham số này để điều chỉnh phù hợp sẽ giúp các prompt và quá trình làm việc với LLM được hiệu quả hơn, kết quả trả về chính xác, phù hợp với ngữ cảnh hơn.

Với Google anh em có thể vào link: Google AI Studio
https://aistudio.google.com/app/prompts/new_chat
Sign in - Google Accounts
accounts.google.com


Với OpenAI anh em có thể dùng link OpenAI Playground
https://platform.openai.com/playground/chat?models=gpt-3.5-turbo-1106

Cách bố trí giao diện của cả 2 có thể khác nhau nhưng sẽ đều có các thông số như sau:

Screenshot 2024-07-04 at 6.37.10 PM.jpg
ChatGPT

Screenshot 2024-07-04 at 6.41.17 PM.jpg
Google AI Studio

Kích thước của model


Kích thước của model chính là số lượng các neural hoặc các tham số của model đó. Đại khái là model càng lớn, số lượng tham số càng lớn thì model càng mạnh mẽ và càng có khả năng tạo ra các phản hồi chính xác. Tuy nhiên, các model càng lớn cũng đòi hỏi nhiều nguồn lực tính toán hơn khi chạy và quá trình xử lý cũng lâu hơn. Người dùng nên hiểu rõ nhu cầu để cân bằng giữa việc lựa chọn kích thước model và hiệu quả tính toán để tối ưu quá trình sử dụng.

Max token


Tham số Max Token sẽ giới hạn số token tối đa (số từ hoặc "nửa từ") của văn bản đầu ra do LLM trả về. Việc điều chỉnh tham số này cho phép người dùng quy định được độ dài của văn bản đầu ra. Số này càng nhỏ thì câu trả lời càng súc tích, càng cao thì ngược lại sẽ có nhiều chi tiết và trau chuốt hơn.

Temperature


Nhiệt độ😄 Đây là tham số mà anh em sẽ luôn thấy xuất hiện khi làm việc trong các studio. Nôm na, nó là tham số kiểm soát tính ngẫu nhiên của kết quả đầu ra do LLM trả về. Temperature có giá trị càng cao thì phản hồi càng đa dạng và sáng tạo, ngược lại Temperature càng thấp thì kết quả sẽ tập trung và tất định hơn. Việc điều chỉnh tham số Temperature cho phép người dùng tối ưu sự cân bằng giữa tính sáng tạo và tính nhất quán trong kết quả đầu ra của model.

Top P


Trong các LLM thì Top P (Nucleus Sampling) là một phương pháp lấy mẫu để kiểm soát mức độ đa dạng và sáng tạo của văn bản đầu ra. Cách hoạt động của Top P là chọn ra một tập hợp các từ có xác suất dồn tích đạt đến một ngưỡng xác suất là P. Ngoài ra còn có một phương pháp lấy mẫu khác là Top K. Cách hoạt động của Top K là trong mỗi bước tạo ra văn bản, model sẽ xem xét K từ có xác suất cao nhất và chọn ngẫu nhiên một từ trong đó ra.

Top P càng cao thì văn bản đầu ra có tính đa dạng nhưng đổi lại, có thể kém mạch lạc hơn, trong khi đó Top P càng thấp thì văn bản sẽ mạch lạc nhưng đôi khi sẽ dễ đoán trước, lặp đi lặp lại. Đối với Top K, K càng thấp thì model sẽ luôn chọn từ có xác suất cao nhất và do đó có thể sẽ dễ đoán, trong khi K càng cao, thí dụ bằng 5, thì model sẽ chọn ra 5 từ có xác suất cao nhất, dẫn tới kết quả cuối cùng văn bản sẽ có tính đa dạng hơn trong mỗi lần tạo.

Frequency Penalty và Presence Penalty


Đây là 2 tham số giúp kiểm soát sự lặp lại của từ và cụm từ trong văn bản đầu ra của LLM.

Đối với Frequency Penalty, chúng ta cứ hình dung là áp dụng một hình phạt bằng cách giảm xác suất cho các từ đã xuất hiện nhiều lần trong văn bản sinh ra. Tham số này giúp giảm thiểu sự lặp lại không cần thiết của các cụm từ phổ biến, giúp văn bản tự nhiên hơn. Giá trị này càng cao thì hình phạt càng nặng, nghĩa là từ / cụm từ càng xuất hiện nhiều thì sau đó xác suất xuất hiện của nó càng thấp

Đối với Presence Penalty, chúng sẽ áp dụng một hình phạt cho bất kỳ từ nào xuất hiện trong văn bản sinh ra, bất kể tần suất xuất hiện. Tham số này sẽ khuyến khích model dùng các từ mới và tránh lặp lại bất kỳ từ nào đã sử dụng trước đó. Tham số này càng lớn thì "hình phạt" càng nặng, nghĩa là từ đã dùng sẽ càng hiếm được lặp lại.

Việc phối hợp 2 tham số này cần phải tự thử và sai nhiều lần để chúng ta chọn ra cặp tham số cho văn bản đầu ra mà chúng ta hài lòng nhất, sao cho vừa tự nhiên, vừa không lặp từ, vừa sáng tạo,...

Độ dài của prompt


Thực chất đây không phải là một tham số tác động trực tiếp, nhưng độ dài của một prompt đầu vào có thể quyết định hiệu quả của LLM. Một prompt dài, chi tiết sẽ cung cấp cho LLM đủ ngữ cảnh, chỉ dẫn, từ đó giúp nó tạo ra được các phản hồi đúng ý hơn. Tuy nhiên, nếu dùng prompt quá dài, lan man sẽ khiến kết quả không như ý, lại tốn nhiều tài nguyên sử dụng.

Các bước chi tiết để tạo ra một prompt


Đến đây coi như chúng ta đã biết được toàn bộ các thông tin về hoạt động của LLM, đặc biệt là đặc tính của Prompt, các mục đích cơ bản, các thành phần của nó,... Bây giờ sẽ tới lúc lắp ghép tất cả mọi thứ lại để tạo ra cái mà chúng ta muốn. Mọi thứ sẽ xuất phát từ workflow ban đầu của chúng ta và hình dung trong đầu về đầu ra mà chúng ta muốn LLM tạo ra. Để thực hiện việc đó dễ hơn, bên dưới đây là một số bước để thực hành cái mà người ta vẫn gọi là prompt engineering.

  1. Xác định mục tiêu: Chúng ta định hình rõ ràng mục tiêu khi bắt đầu làm việc với LLM. Việc xác định này rất quan trọng bởi nó yêu cầu chúng ta cân nhắc tới các yếu tố thông tin cụ thể, định dạng và ngữ cảnh để nhập vào LLM>
  2. Lắp ghép ra một prompt cơ bản: Bây giờ chúng ta sẽ sử dụng các "viên gạch" chính là những thành phần có thể có trong prompt như ngữ cảnh, chỉ dẫn, vai trò, có cần đưa thí dụ cho prompt hay không, pattern đầu ra là gì,... Ở đoạn này, chúng ta đã có được một cái khung cơ bản của một prompt rõ ràng và rành mạch để yêu cầu LLM thực hiện.
  3. Điều chỉnh các tham số của LLM: Trước khi chạy, chúng ta sẽ điều chỉnh các tham số của LLM (khi làm việc với AI Studio hay OpenAI Playground,...), điều chỉnh những thứ như số token tối đa, temperature, top P,.... sao cho phù hợp với nhu cầu lúc dó.
  4. Chạy thử và đánh giá: Rồi, tới đây thì bấm enter cho model nó chạy thôi. Lúc này LLM sẽ sớm trả về kết quả. Chúng ta đánh giá xem đầu ra như thế nào, có đúng với kỳ vọng hay không, nếu chưa thì chưa đúng ở yếu tố nào, định dạng có sai không, giọng văn có ok không, văn có rành mạch hay không, có giải quyết được cái mà chúng ta đã hình dung trong đầu bắt nó làm hay không.
  5. Tinh chỉnh prompt: Dựa trên đầu ra ở bucows trên và những nhận định của chúng ta, chúng ta sẽ xác định xem cần điều chỉnh ở phần nào của prompt, có cần dùng ngôn từ khác hay không, có cần thay đổi pattern đầu ra không,... Đặc biệt nếu có điều chỉnh tham số thì bước này cũng cần phải test luôn cả các tham số khác.
  6. Lặp đi lặp lại: thực ra tới đây, một số ý kiến nói rằng chúng ta hãy phản hồi lại với LLM bằng một prompt nối tiếp. Cách làm đó thực ra không sai, nhưng nó sẽ chỉ phù hợp với các task đơn giản, sử dụng "bộ nhớ" của LLM trong phiên làm việc đó để hỏi nối tiếp, bắt nó làm lại,... tuy nhiên ở đây chúng ta đang tối ưu prompt, và nếu có hỏi nối tiếp thì đó cũng nằm trong ý định ban đầu của chúng ta để có mức độ kiểm soát cao nhất.
  7. Lưu lại những prompt thành công: thực ra các thí dụ trong series này của mình đưa vào các bài cũng là kết quả của những lần điều chỉnh dù ít hay nhiều. Sau khi có được một kết quả đầu ra do LLM trả về ưng ý, chúng ta nên lưu lại các prompt đó trong phiên làm việc để lần sau có cần dùng thì có thể xài lại. mặt khác, cách làm này cũng sẽ giúp mình lưu lại các nội dung đã trả về, đồng thời cũng tạo tiền đề cho những nhu cầu tự động hóa sau này đỡ phải làm lại prompt.
  8. Mở đường cho các tác vụ tự động hóa: mình nghĩ prompt trong một workflow đôi khi chỉ ngang với một cú click chuột. Việc làm ra các prompt tốt sẽ mở đường cho chúng ta xây dựng những hệ thống tự động hóa, xây một workflow xài LLM cho một công việc nào đó,... Cái này mình sẽ bàn ở những bài viết sau ha.

Thật ra còn 2 ý nữa chính là việc cập nhật các điểm mới của LLM. Chúng ta đang ở giai đoạn khá sớm trong sự phát triển của LLM. Mình quan sát 2 năm qua thì càng ngày, tốc độ và sự đa dạng của các LLM cùng các ứng dụng của nó càng phát triển nhanh, cứ đâu đó 2 tuần là lại có một report quan trọng phát hiện hoặc cải thiện các LLM. Lắm khi có nhiều cái mình tổng hợp hoặc chia sẻ với anh em ở đây không lâu nữa nó sẽ bị lạc hậu,... bởi thế nên việc cập nhật các tiến bộ của LLM cũng là cần thiết để có thể tận dụng tối đa những lợi thế của nó theo một cách dễ dàng hơn.

Cuối cùng thì như mình đã nói ở trên, prompt dù là một công cụ mạnh mẽ để giao tiếp với LLM, nhưng việc ứng dụng nó vào trong các việc của chúng ta làm mới thực sự quan trọng. Lúc đó LLM mới phát huy tác dụng của nó. Trong các bài viết tới, mình sẽ chia sẻ một số workflow và kinh nghiệm mà mình đã dùng, hoặc đã build cho những người bạn của mình dùng. Coi đó như use case để anh em tham khảo.

Tạm kết


Tuy nhiên, quan trọng nhất thì mỗi người đều đã có một workflow làm việc riêng từ trước tới giờ. Mình nghĩ mỗi người nên vẽ ra cái workflow đó, và coi xem LLM sẽ giúp được cái gì nhanh hơn, làm hàng loạt lẹ hơn, ít tốn thời gian và công sức hơn,... Cái này nếu không ngại anh em có thể chia sẻ, mình và các anh em khác sẽ cùng nhau thảo luận xem tối ưu bằng LLM có hiệu quả hơn không, nếu có thì dùng cái gì, dùng ra sao ha. Cám ơn anh em.

Đây là nội dung trong chuỗi các bài viết về GenAI của mình, anh em có thể tham khảo các bài viết trước đây ở link bên dưới. Đừng quên cùng mình hóng thêm các bài về tự build chatbot, tự train data, rồi các ứng dụng cụ thể khác của AI, AI Agent sắp tới nhé anh em. Chúc vui.

18 bình luận
Chia sẻ

Xu hướng

Mình nghe rằng mục đích của việc giao tiếp là nói, trình bày sao cho dễ hiểu chứ nói năng, trình bày vòng vo, màu mè chị cho mắc công cả người nghe và người nói. Ra lệnh cho A.I. thì cứ nói thẳng “những điểm du lịch ở đà nẵng” , còn bày đặt ngữ cảnh “bạn là một giáo viên vật lý, bạn là một thư ký riêng, đưa ra ví dụ hài hước….” chi cho màu mè.
@Methylamine oh, cám ơn bạn nhé, mình bày vẽ vớ vẩn rồi.
Cười vô mặt
Cho em hỏi mấy bộ môn này mình tìm hiểu sao ad nhỉ mong được ad rep cháu cảm ơn ad
@Namlvlee Cái này chắc lụm trên mạng rồi xài Google dịch, cái “temperature” có thấy giải thích gì đâu.
@Namlvlee mình thấy dễ nhất là tự trải nghiệm rồi rút ra cho mình một cách chuẫn chỉnh ấy bạn
@arbre em tra google thì temperature là nhiệt độ đó bác. còn có ý nghĩa khác là mức độ sáng tạo mà GenAI trả ra trong câu trả lời. Temperature càng cao thì nhiệt độ càng cao, hay mức độ sáng tạo cũng cao theo.
@nickez Ok bạn nhưng người viết bài này không có giải thích 👍
Quá tuyệt vời !!!! Biết ơn bạn rất nhiều về kiến thức quá hữu ích cho cộng đồng !!!!
Cảm ơn bác rất nhiều. Mình sẽ áp dụng thử vào dự án sắp tới. Hóng các phần tiếp theo của bác
dài dòng, xài mà cũng mệt mỏi vl
Khi có các cú pháp thành công thì có đóng gói được thành các plguin ko bác nhỉ?
@accazure Được, nhưng "đóng gói" với genAI thì nó gấu lắm luôn á bạn hihihi
@ND Minh Đức Bác viết thêm món này đi

Xu hướng

Bài mới










  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019