Sử dụng miễn phí mô hình ngôn ngữ lớn (LLM) tương thích ChatGPT API

Sử dụng miễn phí mô hình ngôn ngữ lớn (LLM) tương thích ChatGPT API

Tin ngắn hàng ngày dành cho bạn
  • Từ lâu rồi suy nghĩ làm thế nào để tăng sự hiện diện thương hiệu, cũng như người dùng cho blog. Nghĩ đi nghĩ lại thì chỉ có cách chia sẻ lên mạng xã hội hoặc trông chờ họ tìm kiếm, cho đến khi...

    In cái áo này được cái tắc đường khỏi phải lăn tăn, càng đông càng vui vì hàng trăm con mắt nhìn thấy cơ mà 🤓

    (Có tác dụng thật nha 🤭)

    » Xem thêm
  • Một vòng của sự phát triển nhiều dự án khá là thú vị. Tóm tắt lại trong 3 bước: Thấy một cái gì đó phức tạp -> Làm cho nó đơn giản đi -> Thêm thắt tính năng cho đến khi nó phức tạp... -> Quay trở lại vòng lặp mới.

    Tại sao lại như vậy? Để mình lấy 2 ví dụ cho các bạn thấy.

    Markdown ra đời với mục tiêu tạo ra một định dạng văn bản thô "dễ viết, dễ đọc, dễ dàng chuyển thành một dạng gì đó như HTML". Vì thời đó chẳng ai đủ kiên nhẫn mà vừa ngồi viết vừa thêm định dạng cho văn bản hiển thị ở trên web như thế nào. Ấy vậy mà giờ đây người ta đang "nhồi nhét" hoặc tạo ra các biến thể dựa trên markdown để bổ sung thêm nhiều định dạng mới đến mức... chẳng nhớ nổi hết cú pháp.

    React cũng là một ví dụ. Từ thời PHP, việc khát khao tạo ra một cái gì đó tách biệt hẳn giao diện người dùng và phần xử lý logic chính của ứng dụng thành 2 phần riêng biệt cho dễ đọc, dễ viết. Kết quả là các thư viện UI/UX phát triển rất mạnh mẽ, mang lại khả năng tương tác với người dùng rất tốt, còn phần logic ứng dụng thì nằm ở một máy chủ riêng biệt. Bộ đôi Front-end, Back-end cũng từ đấy mà thịnh hành, không thể thiếu anh bồi bàn REST API. Ấy vậy mà giờ đây React trông cũng không khác biệt gì so với PHP là mấy, kéo theo là cả Vue, Svelte... lại cùng quy tất cả về một mối.

    Cơ mà không phải vòng lặp là xấu, ngược lại vòng lặp này mang tính tiến hoá nhiều hơn là "cải lùi". Nhiều khi lại tạo ra được cái hay hơi cái cũ thế là người ta lại dựa trên cái hay đó để tiếp tục lặp. Nói cách khác là chắc lọc tinh hoa từng tí một tí một á 😁

    » Xem thêm
  • Song song với các dự án chính thức thì thi thoảng mình vẫn thấy các dự án "bên lề" nhằm tối ưu hoặc cải tiến ngôn ngữ theo khía cạnh nào đó. Ví dụ nature-lang/nature là một dự án hướng tới cải tiến Go, mang lại một số thay đổi nhằm giúp cho việc sử dụng Go trở nên thân thiện hơn.

    Nhìn lại mới thấy hao hao JavaScript 😆

    » Xem thêm

Vấn đề

Các mô hình ngôn ngữ lớn (LLM) là các mô hình học sâu rất lớn, được đào tạo trước dựa trên một lượng dữ liệu khổng lồ. Các mô hình ngôn ngữ lớn vô cùng linh hoạt. Một mô hình có thể thực hiện các tác vụ hoàn toàn khác nhau, ví dụ như trả lời câu hỏi, tóm tắt tài liệu, dịch ngôn ngữ và hoàn thành câu. Một trong những LLM rất phổ biến là của ChatGPT.

Nhờ có API của ChatGPT mà có thể tích hợp nó vào trong ứng dụng của mình, tạo ra nhiều tính năng thông minh và đột phá. Ví dụ như làm công cụ dịch văn bản, làm chatbot, hoặc tạo ra các nghiệp vụ xử lý logic bằng ngôn ngữ tự nhiên.

Tuy nhiên các cuộc gọi API đến ChatGPT là mất tiền. Cần phải trả một số tiền tương ứng với lượng ký tự đầu vào và đầu ra. Nếu nhập vào quá nhiều ký tự hoặc ChatGPT phản hồi quá nhiều chữ, chúng ta phải trả số tiền luỹ tiến.

Trước đây tôi đã có một bài viết nói về cách sử dụng miễn phí gpt4 thông qua Github Copilot, đồng thời cảnh báo bạn đọc rằng đây là một thủ thuật cho nên có thể gây ảnh hưởng đến tài khoản Copilot. Tôi đã sử dụng cách này trong một thời gian dài cho đến khi bị Github gửi email nhắc nhở thì buộc phải ngưng sử dụng.

Sau đó, tôi đi tìm một giải pháp khác nhằm thay thế được API của ChatGPT nhưng đều thất bại, vì đa số các dịch vụ LLM miễn phí chỉ cho tương tác qua giao diện web. Cũng có một số thư viện nguồn mở trên Github giới thiệu là cho phép sử dụng miễn phí gpt API nhưng có vẻ nó vẫn chưa hoạt động ổn định.

Thực tế, có nhiều gã công nghệ đã "nguồn mở" các mô hình ngôn ngữ lớn của họ. Tiêu biểu như Gemma của Google, Llama của Facebook hay mô hình Mistral cũng rất nổi tiếng. Có nhiều bài viết của các bên cho ra nhiều nghiên cứu và so sánh hiệu năng giữa các mô hình này, chúng đều có kết quả tương đối tốt ở một khía cạnh nào đó (gọi là tốt vì nó không bằng với nhiều mô hình yêu cầu chúng ta cần trả tiền như gpt4). Bạn đọc có thể tham khảo thêm tại Comparison of Models: Quality, Performance & Price Analysis.

Một điểm bất lợi nữa là mỗi một mô hình có cách cài đặt và sử dụng khác nhau. Hầu hết các mô hình đều ở dạng cung cấp hay triển khai các API rất thô. Tưởng tưởng như nếu khởi chạy, chỉ có thể tương tác với nó qua dòng lệnh. Nếu may mắn hơn, bạn sẽ tìm được các thư viện viết bằng ngôn ngữ lập trình quen thuộc hơn như Python, Go, JavaScript...

Như vậy, các mô hình ngôn ngữ có vẻ đang bị phân mảnh và buộc chúng ta phải triển khai lại API nếu muốn tương tác với chúng thuận lợi hơn.

Tưởng mọi chuyện không có tiến triển gì thêm thì thật tình cờ, tôi biết đến một công cụ có tên là Ollama. Ollama giúp cài đặt và sử dụng các mô hình ngôn ngữ mở miễn phí chỉ với 1 dòng lệnh. Ollama hiện đang hỗ trợ cả MacOS, Window và Linux.

Để cài đặt Ollama, sử dụng lệnh:

curl -fsSL https://ollama.com/install.sh | sh

Chờ một lúc để quá trình cài đặt hoàn tất. Bây giờ bạn muốn sử dụng mô hình Gemma của Google đúng không? Hãy gõ tiếp một lệnh:

ollama run gemma:7b

Gemma có 2 mô hình 2 tỉ tham số (2B Parameters) và 7 tỉ tham số (7B Parameters). Lệnh trên cài đặt mô hình 7B. Để xem đầy đủ danh sách Ollama hỗ trợ, bạn đọc tham khảo Ollama library. Lưu ý rằng mô hình càng lớn thì đòi hỏi khả năng xử lý cũng như dung lượng RAM lớn.

Sau khi tải xong mô hình, bạn sẽ thấy dấu nhắc lệnh nhập văn bản, hãy thử gõ vào bất kỳ điều gì.

Ollama dấu nhắc lệnh

Đó chính là Gemma phản hồi. Giờ đây bạn đã có thể sử dụng được mô hình này ngay trong máy tính của mình.

Bạn có thể thoát ra bằng cách dùng lệnh /bye. Ollama vẫn chạy ngầm trong máy. Để xem mô hình ngôn ngữ nào đang được chạy, dùng lệnh ollama ps. Để xem tất cả mô hình đã tải về, dùng lệnh ollama ls. Để chạy một mô hình ngôn ngữ, dùng lệnh ollama run <tên_mô_hình>.

Chưa hết, bạn còn có thể gọi Rest API để tương tác với các mô hình ngôn ngữ một cách đơn giản.

Ví dụ tạo cuộc trò chuyện với các role tương tự như ChatGPT.

curl http://localhost:11434/api/chat -d '{
  "model": "llama3",  
  "messages": [
    { "role": "user", "content": "why is the sky blue?" }
  ]
}'

Điều thú vị là Ollama có một lớp để tương thích với API của ChatGPT. Mặc dù chưa tương thích hết nhưng tính năng cơ bản nhất là Chat Completions đã được hỗ trợ. Hãy nhìn vào cuộc gọi API này, bạn có thấy nó quen thuộc?

curl http://localhost:11434/v1/chat/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "gemma:7b",  
        "messages": [
            {
                "role": "system",  
                "content": "You are a helpful assistant."
            },  
            {
                "role": "user",  
                "content": "Hello!"
            }
        ]
    }'

http://localhost:11434 là địa chỉ cục bộ mà Ollama tạo ra để tương tác với API.

Bạn còn nhớ NextChat chứ? Hãy tích hợp API mới này vào NextChat để quản lý các cuộc hội thoại.

Ollama tích hợp nextchat

Tại ô "OpenAI Endpoint" nhập http://localhost:11434, OpenAI API Key là ollama, Custom Models nhập tên mô hình ngôn ngữ hiện tại đang chạy, ví dụ gemma:7b nếu đang sử dụng Gemma 7B của Google. Model thì chọn tên tương ứng với Custom Models đã chọn ở trên.

Hãy thử API mới ngay nào.

Ollama thử sử dụng

Tổng kết

Ollama là một công cụ giúp chúng ta dễ dàng cài đặt và sử dụng các mô hình ngôn ngữ lớn. Ollama hỗ trợ rất nhiều mô hình mở miễn phí phổ biến và điều tuyệt vời là nó cung cấp API tương thích với ChatGPT, từ đó trở thành công cụ tuyệt vời để thay thế ChatGPT làm những công việc đơn giản thường ngày.

Cao cấp
Hello

5 bài học sâu sắc

Mỗi sản phẩm đi kèm với những câu chuyện. Thành công của người khác là nguồn cảm hứng cho nhiều người theo sau. 5 bài học rút ra được đã thay đổi con người tôi mãi mãi. Còn bạn? Hãy bấm vào ngay!

Mỗi sản phẩm đi kèm với những câu chuyện. Thành công của người khác là nguồn cảm hứng cho nhiều người theo sau. 5 bài học rút ra được đã thay đổi con người tôi mãi mãi. Còn bạn? 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 (1)

Nội dung bình luận...
Avatar
Le Tho11 tháng trước

Bác cho em hỏi xíu về con này với: em có tải ollama.exe bản windowns trên trang chủ của nó do không dùng được curl thì khi host api vào Nextchat như cách bác nói thì bị lỗi "Failed to fetch", không biết có cách nào sửa không ạ.

Trả lời
Avatar
Xuân Hoài Tống11 tháng trước

E trả lời bác bên fb rồi đúng ko 😅