Sử dụng miễn phí gpt-4 với Github Copilot

Sử dụng miễn phí gpt-4 với Github Copilot

Những mẩu tin ngắn hàng ngày dành cho bạn
  • Hẳn là nhiều người ở đây đã nghe đến kiểu tấn công bảo mật Clickjacking rồi nhỉ. Kẻ tấn công thường nhúng một website (thường là mục tiêu) vào trong một iframe trên website của chúng, sau đó làm mờ hoặc ẩn nó đi rồi đặt vào vị trí các nút bấm trên web, ví dụ "Bấm vào để nhận quà". Đâu ai ngờ rằng phía trên nút bấm đó là một nút bấm khác trong iframe. Khá nguy hiểm!

    Nhưng trình duyệt đã có cách ngăn chặn kiểu tấn công này bằng các quy tắc như tiêu đề X-Frame-Options, frame-ancestors của CSP và SameSite: Lax/Strict của Cookies...

    Mới đây, đã xuất hiện thêm kiểu tấn công mới - "DoubleClickjacking" 😨. Đại ý là "hắn" lợi dụng hành động double click để lừa người dùng bấm vào một nút mà hắn muốn. Chi tiết hơn trong bài viết này: DoubleClickjacking: A New Era of UI Redressing.

    » Xem thêm
  • Mọi người đã nghe nói đến Jujutsu - jj - một dạng quản lý phiên bản cho mã nguồn (version control system) chưa? Có vẻ như nó đang nhận được nhiều sự quan tâm.

    Chờ xíu! Chẳng phải git đã quá tốt rồi sao? Thế thì chế ra thằng jj để làm gì nữa? Cũng hơi khó trả lời nhỉ? Mỗi công cụ sinh ra chắc chắn phải cải thiện hoặc khắc phục được nhược điểm của cái trước. Cho nên jj ắt hẳn phải làm được điều gì đó mà git chưa làm được nên mới nổi lên như vậy.

    Thật ra mình đã nghe nói đến jj từ vài tháng trước rồi, nhưng vào đọc thì toàn kiến thức cao siêu. Hoặc là đang mang nặng cái lối suy nghĩ của git vào trong đầu rồi nên chưa lĩnh hội ra được điều gì cả.

    Mình hay có kiểu cái gì đọc lần 1 mà không hiểu thì đọc tiếp lần 2, lần 2 không hiểu thì đọc tiếp lần 3... đến lần thứ n mà vẫn không hiểu thì bỏ. Cơ mà không phải là từ bỏ mà một thời gian sau đó quay lại đọc tiếp. Đến một lúc nào đó khả năng mình sẽ hiểu ra một ít vấn đề, thế mới tài 😆.

    Thì cái jj này có vẻ như nó đang mở ra được tính linh hoạt trong việc "cam kết" mã. Tưởng tượng bạn đang làm việc trên một dự án, đang ở nhánh này, muốn sang nhánh khác để sửa, nhưng mà lại đang viết dở ở nhánh này, thế là phải stash, rồi checkout, rồi commit, rồi merge hoặc rebase lại vào nhánh cũ... nhìn chung quá trình làm việc với git nghiêm ngặt đến mức cứng nhắc, cần nhiều thao tác để giải quyết một vấn đề, chưa kể cái cây commit (commit-tree) nữa thì ôi thôi, khỏi xem cho đỡ nhức mắt. Thế nên ông jj này đang làm cách nào đó để bạn khỏi cần phải quan tâm đến các nhánh luôn, sửa trực tiếp vào commit. Nghe ảo nhỉ 😂.

    Đấy mới lĩnh hội được đến đấy, hy vọng sau n lần đọc lại nữa mình sẽ viết được một bài chi tiết hơn về công cụ này.

    » Xem thêm
  • Gòi gòi tới công chiện gòi 🤤🤤🤤

    » Xem thêm

Vấn đề

Xin chào các độc giả của 2coffee.dev! Vậy là chỉ còn có vài ngày nữa thôi, năm Quý Mão sẽ chính thức khép lại nhường chỗ cho một năm mới Giáp Thìn với hy vọng có nhiều khởi sắc hơn. Đây cũng có thể là bài viết cuối cùng trong năm cũ mà tôi muốn dành tặng cho tất cả bạn của tôi.

Cách đây vài hôm, tôi có viết một bài Biến ChatGPT thành một "chuyên gia", trong đó có nhắc đến vấn đề sử dụng API của ChatGPT thì mới có thể sử dụng được "chuyên gia" vì chỉ trong API mới cho chúng ta thiết lập role system, từ đó giúp ChatGPT thu hẹp được ngữ cảnh xuống và trả lời câu hỏi một cách chuẩn xác hơn.

Các cuộc gọi API đến ChatGPT là mất phí, tùy theo model GPT mà bạn đang sử dụng. Thú thật trước đó tôi cũng tìm đủ mọi cách để sử dụng miễn phí API nhưng mọi nỗ lực đều không đạt được.

Hôm qua, khi tình cờ "dạo" trên Github thì phát hiện ra một kho lưu trữ mã nguồn cho phép chúng ta sử dụng miễn phí gpt-4 thông qua Github Copilot. Vâng, bạn không nghe nhầm đâu, hoàn toàn miễn phí chỉ cần bạn có tài khoản Github Copilot.

Cho những ai chưa biết thì Github Copilot là một con AI của Github, nó sẽ giúp chúng ta trong vấn đề viết mã. Cá nhân tôi đã sử dụng Copilot được hơn một năm và nhận ra lợi ích của nó tương xứng với giá 10$ một tháng. Đúng rồi! Ý tôi là bạn cần bỏ ra 10$ hàng tháng để sử dụng Copilot. Nếu bạn đọc có hứng thú, có thể tôi sẽ viết một bài về Copilot trong tương lai.

Vì vậy, điều kiện tiên quyết để sử dụng gpt-4 miễn phí là phải có Github Copilot. Tiếp theo, hãy xem cách khai thác gpt-4 từ Copilot như thế nào nhé!

Copilot và Copilot Chat

Nếu tôi nhớ không nhầm, Copilot được Github giới thiệu trước khi mô hình ChatGPT được công bố rộng rãi trên toàn thế giới. Khi nghe tin Copilot sắp ra mắt, tôi đã tò mò vào xem nó có gì, họ mô tả Copilot như một trợ lý viết mã thực thụ, nghĩa là thay vì viết một mình thì nó sẽ cũng viết cùng, dựa trên những gì bạn đã viết hoặc muốn viết.

Sau khi OpenAI công bố mô hình GPT, như một làn sóng, các nhà phát triển bắt đầu tích hợp nó vào trong sản phẩm để khiến ứng dụng của họ trở nên thông mình và có tính tương tác cao hơn. Thay vì ngồi bấm nút, chọn tính năng thì giờ đây, chỉ cần giao tiếp tực tiếp với sản phẩm thông qua văn bản hoặc lời nói thì ngay lập tức nó sẽ hiểu và giúp chúng ta làm công việc đó.

Copilot cũng không ngoại lệ, tính năng Copilot Chat Beta đã được giới thiệu sau một khoảng thời gian ngắn từ khi có ChatGPT. Về cơ bản, nó được tích hợp trong trình Editor/IDE, mà chúng là trình soạn thảo mã nguồn cho nên Copilot Chat có ngữ cảnh mã mà bạn đang viết, từ đó giúp cho nó hiểu hơn về bối cảnh và đưa ra câu trả lời chính xác cho điều mà bạn đang hỏi.

Ví dụ đây là một đoạn mã nguồn cho hàm mounted trang tìm kiếm của tôi:

  async mounted() {
    await this.fetchResult();

    if (!this.isHasResult) {
      this.resetLimitOffset();
      await this.fetchOtherResult();
    }

    process.nextTick(() => {
      this.isMounted = true;

      setTimeout(() => {
        window.lazyload();
      }, 1500);
    });
  },  

Thử nhờ Copilot giải thích mounted là làm cái gì, chúng ta có kết quả:

Thử nhờ Copilot giải thích

Nhìn chung, Copilot Chat sử dụng "GPT model" để trả lời các câu hỏi của chúng ta. Vì thế nên đã có một "pháp sư" nào đó trên Github tận dụng điều này để mang gpt-4 ra ngoài sử dụng. Tức là ngữ cảnh sử dụng giờ đây không bị bó hẹp trong code nữa, mà bạn có thể hỏi nó bất cứ câu hỏi nào, thậm chí biến nó thành "chuyên gia".

Có người thắc mắc thế sao không chat trực tiếp với Copilot Chat? Thì Github đã cao tay hơn, họ ngăn chặn các câu hỏi không liên quan đến code, chỉ trả lời cho những câu hỏi liên quan.

Bạn còn nhớ NextChat (ChatGPT Next Web) chứ? Sau một vài thiết lập đơn giản thì giờ đây nó đang hoạt động với gpt-4 của Copilot Chat thay vì với API key của OpenAI, tức là không bị tính tiền gọi API nữa.

Đến đây chắc hẳn nhiều bạn đọc đang rất nóng lòng muốn thử. Sở dĩ tôi nói nhiều vậy là chỉ muốn trình bày một cách ngắn gọn về cách mà công cụ copilot-gpt4-service đang khai thác gpt-4.

Thiết lập

copilot-gpt4-service là kho lưu trữ mà tôi nhắc đến ở đầu bài viết. "Convert Github Copilot to ChatGPT" là dòng mô tả rất ngắn gọn mà đi vào đúng vào trọng tâm, nó cho phép tạo ra một máy chủ gpt-4 cục bộ dựa trên Github Copilot của bạn.

Tuy nhiên trước khi sử dụng có một vài lưu ý hết sức quan trọng là chỉ sử dụng cho mục đích cá nhân, chỉ một mình bạn sử dụng thôi thì càng tốt, bởi vì tài khoản Copilot hoặc thậm chí Github có thể bị cấm nếu lạm dụng.

Về cơ bản, khi khởi động mã nguồn này lên, nó sẽ tạo ra một máy chủ proxy đến ChatGPT. Bạn còn nhớ địa chỉ api của ChatGPT chứ? Đó là: https://api.openai.com thì sau triển khai bằng copilot-gpt4-service, một địa chỉ cục bộ (local) được tạo ra để kết nối là http://localhost:8080.

Nếu dùng Docker, cách nhanh nhất để tạo máy chủ là dùng 1 lệnh duy nhất:

$ docker run -d \
  --name copilot-gpt4-service \
  --restart always \
  -p 8080:8080 \
  aaamoon/copilot-gpt4-service:latest

Bạn sẽ cần làm thêm một bước để lấy được GitHub Copilot Plugin Token, sử dụng token đó thay cho OpenAI API key là đã có thể sử dụng được. Cách lấy khá đơn giản, ví dụ dành cho MacOS/Linux:

$ python3 <(curl -fsSL https://raw.githubusercontent.com/aaamoon/copilot-gpt4-service/master/shells/get_copilot_token.py)

Nhưng trước đó cần cài thêm thư viện requests của python:

pip install requests
# hoặc python3
pip3 install requests

Rồi làm theo hướng dẫn chi tiết trong kết quả trả về là xong.

Cuối cùng, vào thiết lập lại cấu hình trong NextChat.

thiết lập lại cấu hình trong NextChat

Hãy thử xem gpt-4 có hoạt động không nào!

thử xem gpt-4 có hoạt động không

Nếu chưa tin model trên là gpt-4, tác giả đã đề xuất một cách kiểm tra là hỏi một câu hỏi: "Why weren't I invited when my parents got married?". gpt-3.5 trả lời có đại ý là "They considered you too young at that time, so they didn't invite you.", còn gpt-4 thì trả lời một cách chính xác: "They got married before you were born".

Bạn cũng có thể triển khai máy chủ GPT này lên mạng internet với một vài thông số cấu hình bảo mật như trong hướng dẫn. Tuy nhiên dù bằng cách nào đi nữa, thì cũng nên nhớ chỉ sử dụng cho mục đích cá nhân thôi nhé!

Cao cấp
Hello

Bí mật ngăn xếp của Blog

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Là một lập trình viên, bạn có tò mò về bí mật công nghệ hay những khoản nợ kỹ thuật về trang blog này? Tất cả bí mật sẽ được bật mí ngay bài viết dưới đây. Còn chờ đợi gì nữa, hãy bấm vào ngay!

Xem tất cả

Đăng ký nhận thông báo bài viết mới

hoặc
* Bản tin tổng hợp được gửi mỗi 1-2 tuần, huỷ bất cứ lúc nào.

Bình luận (7)

Nội dung bình luận...
Avatar
Ẩn danh8 tháng trước
Trong bản cập nhật mới, chỉ còn sử dụng được model 3.5-turbo với model 4 và 4-0613. Các model khác đểu không sử dụng được. Bản cập nhật cũ sử dụng được tất cả model trên nextchat. Ad biết cách fix không ạ?
Trả lời
Avatar
Xuân Hoài Tống7 tháng trước
Dạo này Github đang thắt chặt lắm bạn ạ, tạm thời chưa có cách 🥲
Avatar
Ẩn danh8 tháng trước
Có cách nào để áp dụng API này vào pentestGPT được không?https://github.com/GreyDGL/PentestGPT
Trả lời
Avatar
Xuân Hoài Tống8 tháng trước
Mình thấy có chỗ cấu hình OPENAI_BASEURL='https://api.xxxx.xxx/v1', bạn thay thành http://localhost:8080 với OPENAI_KEY là Token lấy được ở hướng dẫn trong bài viết xem sao.
Avatar
Ẩn danh9 tháng trước
Mình có để model như trên nhưng khi hỏi "Why weren't I invited when my parents got married?" thì nó không trả lời như GPT4 bác ơi :(
Trả lời
Avatar
Xuân Hoài Tống9 tháng trước
Mình vừa kiểm tra lại, giờ nó trả lời như gpt 3.5 rồi, chắc bị fix mất rồi 😕. Cơ mà ít ra vẫn dùng được API miễn phí bạn ạ.
Avatar
Ẩn danh9 tháng trước
Hình như bị github chặt đầu mất rồi =)) Bạn biết giờ tác giả họ move repo qua đâu ko ta
Trả lời
Avatar
Xuân Hoài Tống9 tháng trước
Thế ạ, mình vẫn đang còn session nên vẫn dùng được bình thường từ hồi đó đến giờ. Mình tìm thấy bản fork tương tự repo cũ, bạn thử xem có được không nhé: https://gitlab.com/fatelulu/copilot-gpt4-service
Avatar
Huy Tùng10 tháng trước
Cho mình hỏi mình có thử triển khai trên server docker public ra dạng http://ip:port xong add vào nextchat thì nó lại không hoạt động, còn chạy nội bộ ở localhost thì lại dc nhỉ
Trả lời
Avatar
Xuân Hoài Tống10 tháng trước
Bạn thử truy cập thẳng vào ip:port hoặc ip:port/healthz để xem trạng thái của service có ok không?
Avatar
Ẩn danh11 tháng trước
https://marketplace.visualstudio.com/items?itemName=GitHub.copilot là cái extension link trên này ạ, e thấy ad có để hình trên bài viết hình như là xài đc cái extension này với cái copilot-gpt4-service, e có config http.proxy trong setting của vscode mà k đc, còn xài với nextchat như hướng dẫn thì đc r ạ
Trả lời
Avatar
Xuân Hoài Tống11 tháng trước
Mình cũng chưa hình dung ra tại sao bạn lại muốn triển khai cách đó nhưng thư viện copilot-gpt4-service không làm được như thế đâu bạn. Trong tài liệu họ có mô tả thư viện chỉ cung cấp một vài đầu API cho tương thích với APT Chats của ChatGPT thôi bạn ạ.
Avatar
Ẩn danh11 tháng trước
làm sao để config cái này xài cho copilot extension trong vscode vậy ạ, mình setting http proxy mà k đc như hình trên
Trả lời
Avatar
Xuân Hoài Tống11 tháng trước
Bạn cho mình xin link của extension đó được không ạ?
Bấm hoặc cuộn mạnh để sang bài mới