AI coding 2025: Tự triển khai AI trong tầm tay
Ollama chạy mô hình ngôn ngữ lớn ngay trên máy cá nhân, không lo chi phí hay rủi ro bảo mật. Bài viết sẽ hướng dẫn cách sử dụng và tích hợp Ollama vào VS Code, biến AI thành trợ thủ đắc lực cho các lập trình viên trong năm 2025.
Mô hình ngôn ngữ lớn và lập trình viên
Trong thời gian gần đây, mô hình ngôn ngữ lớn (LLM) đã trở thành một trong những công nghệ tiên tiến và quan trọng nhất trong lĩnh vực trí tuệ nhân tạo (AI). ChatGPT của OpenAI, Grok-3 của xAI cũng như nhiều mô hình ngôn ngữ khác đã chứng minh khả năng xử lý ngôn ngữ tự nhiên mượt mà với độ chính xác và hiệu quả cao.
Sự phát triển mạnh mẽ của các mô hình này không chỉ mở ra nhiều cơ hội mới trong các lĩnh vực như dịch thuật, tóm tắt văn bản và tạo nội dung, mà còn thúc đẩy sự đổi mới trong nhiều ngành công nghiệp khác, đặc biệt là ngành công nghệ phần mềm. Với khả năng học hỏi và hiểu biết ngôn ngữ tự nhiên, LLM đang dần thay đổi cách chúng ta tương tác và làm việc với công nghệ.
Nhiều lập trình viên đã sử dụng LLM như một thói quen để tăng năng suất. Chúng hỗ trợ tự động hoàn thành code, phát hiện lỗi, tạo kiểm thử, gợi ý giải pháp tối ưu và cải thiện chất lượng code. Nhờ khả năng hiểu ngữ cảnh, các mô hình này là trợ thủ đắc lực trong việc hỗ trợ viết tài liệu, tạo bài kiểm tra tự động, từ đó, giúp lập trình viên tiết kiệm thời gian cho các tác vụ hàng ngày để tập trung vào các nhiệm vụ thiết kế cao cấp và phức tạp hơn.
Nhiều ích lợi là thế, nhưng việc sử dụng ChatGPT hoặc Copilot cũng đi kèm với một số hạn chế như chi phí cao và nguy cơ vô tình tiết lộ thông tin nhạy cảm.
Vậy, nên lựa chọn công cụ nào cho hợp lý?
Để giảm thiểu rủi ro này, chúng ta có thể trải nghiệm các công cụ chat bằng cách tự thiết lập LLM trên máy cá nhân. Một trong những công cụ nổi bật chính là nền tảng mã nguồn mở Ollama, giúp quản lý và triển khai các mô hình học sâu một cách dễ dàng.
Tại sao lại là Ollama?
Với Ollama, bạn có thể tận dụng sức mạnh của các mô hình AI tiên tiến mà không cần lo việc cài đặt và cấu hình phức tạp. Ngoài ra, Ollama còn cung cấp các API tương tự như ChatGPT, giúp lập trình viên dễ dàng tương tác với các mô hình ngôn ngữ lớn thông qua các công cụ lập trình.
Trong bài viết này, chúng ta sẽ tìm hiểu cách ứng dụng Ollama để sử dụng các mô hình ngôn ngữ lớn ngay trên máy tính của mình và các API của Ollama. Ngoài ra chúng ta cũng sẽ tích hợp Ollama vào VS Code, một IDE quen thuộc của các lập trình viên.
Cài đặt Ollama và lựa chọn mô hình ngôn ngữ cần thiết
Đầu tiên, bạn cần download phiên bản thích hợp với hệ điều hành của bạn tại trang chủ của Ollama.
Sau khi cài đặt, khởi tạo Ollama bằng lệnh ollama serve
.
Tiếp theo, chúng ta cần chọn mô hình ngôn ngữ để cài đặt. Trong bài hướng dẫn này, chúng ta sẽ chọn mô hình ngôn ngữ Llama của Meta. Đây là một mô hình ngôn ngữ miễn phí để sử dụng cho các mục đích như học tập, nghiên cứu. Ollama hỗ trợ nhiều mô hình Llama khác nhau dựa theo phiên bản và số lượng tham số.
Ở đây, ta sẽ chọn bản Llama v3.2 với 3 tỉ tham số bằng lệnh ollama run llama3.2
. Mô hình này sau khi cài đặt sẽ cần khoảng 2GB lưu trữ và khoảng 1GB bộ nhớ lúc xử lý. Các bạn cũng có thể chọn các mô hình ngôn ngữ khác tùy theo cấu hình máy tính của mình tại đây.
Sau khi cài đặt, bạn có thể viết prompt ngay trong màn hình terminal. Ví dụ giải thích về explain SOLID principal
, kết quả trả về tương tự như sau:
Tương tự như OpenAI, Ollama cũng hỗ trợ các API để phục vụ cho việc tương tác với các mô hình ngôn ngữ. Các bạn có thể gọi api/generate
để tạo yêu cầu prompt:
curl -X POST 'http://localhost:11434/api/generate' \
--data '{
"model": "llama3.2",
"prompt": "What is the largest mammal?"
}'
Ollama sẽ trả một loạt kết quả, bao gồm các token
liên tiếp:
{"model":"llama3.2","created_at":"2025-03-18T02:04:13.6349018Z","response":"The","done":false}
{"model":"llama3.2","created_at":"2025-03-18T02:04:13.7025359Z","response":" largest","done":false}
{"model":"llama3.2","created_at":"2025-03-18T02:04:13.7699367Z","response":" mamm","done":false}
{"model":"llama3.2","created_at":"2025-03-18T02:04:13.8376036Z","response":"al","done":false}
{"model":"llama3.2","created_at":"2025-03-18T02:04:13.9069498Z","response":" is","done":false}
...
{"model":"llama3.2","created_at":"2025-03-18T02:04:19.3414915Z","response":"","done":true,"done_reason":"stop","context":[128006,9125,128007,271,38766,1303,33025,2696,25,6790,220,2366,18,271,128009,128006,882,128007,271,3923,374,7928,36041,278,30,128009,128006,78191,128007,271,791,7928,36041,278,374,279,6437,51119,320,33,6181,268,113547,3167,42449,570,1952,5578,11,459,6822,6437,51119,649,3139,709,311,220,6086,7693,320,914,20645,8,304,3160,323,17988,2212,220,3965,12,8258,20181,320,9795,11,931,12,9756,11,931,85402,570,4452,11,1063,57749,617,1027,12715,439,1317,439,220,6640,7693,320,1644,20645,8,323,47826,709,311,220,8848,20181,320,10828,11,931,85402,570],"total_duration":5796413400,"load_duration":21135600,"prompt_eval_count":31,"prompt_eval_duration":67000000,"eval_count":85,"eval_duration":5707000000}
Ở token cuối cùng, các bạn có thể thấy cờ "done":true
được bật cho biết kết quả đã hoàn thành.
Chúng ta có thể bỏ chức năng stream của Ollama bằng cách thêm điều kiện "stream": false
để nhận được 1 kết quả tổng hợp duy nhất.
curl -X POST 'http://localhost:11434/api/generate' \
--data '{
"model": "llama3.2",
"stream": false,
"prompt": "What is the largest mammal?"
}'
Kết quả trả về như sau:
{"model":"llama3.2","created_at":"2025-03-18T03:43:37.0569954Z","response":"The blue whale (Balaenoptera musculus) is the largest mammal known to exist. On average, an adult blue whale can grow up to 82 feet (25 meters) in length and weigh around 150-170 tons (136,000-152,000 kg). However, some individuals have been recorded to reach lengths of over 100 feet (30 meters) and weigh as much as 200 tons (181,000 kg).","done":true,"done_reason":"stop","context":[128006,9125,128007,271,38766,1303,33025,2696,25,6790,220,2366,18,271,128009,128006,882,128007,271,3923,374,7928,36041,278,30,128009,128006,78191,128007,271,791,6437,51119,320,33,6181,268,113547,3167,42449,8,374,279,7928,36041,278,3967,311,3073,13,1952,5578,11,459,6822,6437,51119,649,3139,709,311,220,6086,7693,320,914,20645,8,304,3160,323,17988,2212,220,3965,12,8258,20181,320,9795,11,931,12,9756,11,931,21647,570,4452,11,1063,7931,617,1027,12715,311,5662,29416,315,927,220,1041,7693,320,966,20645,8,323,17988,439,1790,439,220,1049,20181,320,10562,11,931,21647,570],"total_duration":7204242000,"load_duration":19040500,"prompt_eval_count":31,"prompt_eval_duration":919000000,"eval_count":92,"eval_duration":6264000000}
Ngoài ra Ollama cũng hỗ trợ API để chat qua API /api/chat
. Cách sử dụng cũng tương tự như trên:
curl -X POST 'http://localhost:11434/api/chat' \
--data '{
"model": "llama3.2",
"stream": false,
"messages": [
{
"role": "user",
"content": "What is the largest mammal?"
}
]
}'
Các bạn cần chú ý thêm phần thông tin "role"
là "user"
hoặc "assistant"
trong phần "messages"
.
Tuy nhiên, các mô hình ngôn ngữ lớn này khá kém trong việc giải toán. Các bạn có thể kiểm chứng bằng cách yêu cầu giải bài toán đơn giản 2^2^2^2
, kết quả trả về là 16^2 = 256
trong khi kết quả đúng là 2^16=65536
. Đây gọi là hiện tượng ảo giác (hallucination) trong các mô hình ngôn ngữ lớn khi nó tạo ra các kết quả không chính xác từ yêu cầu của người dùng.
Kết quả giải toán với Llama
Đối với các yêu cầu giải toán, bạn có thể sử dụng mô hình DeepSeek-R1. Đây là một mô hình ngôn ngữ lớn mã nguồn mở của công ty khởi nghiệp Trung Quốc DeepSeek, được tinh chỉnh bằng thuật toán học tăng cường (reinforcement learning) để nâng cao khả năng suy luận logic. Nhờ vậy, mô hình có thể giải chính xác các bài toán từ cơ bản đến phức tạp một cách dễ dàng.
Bạn có thể sử dụng lệnh ollama run deepseek-r1:7b
. Tuy nhiên, mô hình này cũng có nhược điểm là thời gian phản hồi lâu hơn đáng kể so Llama và tốn nhiều tài nguyên để sử dụng hơn. Kết quả của DeepSeek khi giải bài toán tương tự:
Kết quả giải toán với DeepSeek
Ở phần tiếp theo, chúng ta sẽ tích hợp Ollama vào VS Code thông qua phần mở rộng Continue.
Tích hợp Ollama vào VS Code
Cài đặt và cấu hình
Đầu tiên, ta vào VS Code Extensions Market Place, tìm kiếm và cài đặt plugin Continue
. Bạn cũng có thể cài đặt plugin này trực tiếp tại đây.
Mở file config.json
của plugin, bạn có thể tìm thấy file này trong thư mục mặc định Continue tại %USERPROFILE%/.continue/
Ở thiết lập mặc định, Continue sử dụng mô hình Claude của Anthropic. Để sử dụng Ollama, bạn chỉnh lại file config.json
như sau:
"models": [
{
"title": "llama3.2",
"provider": "ollama",
"model": "llama3.2"
}
],
"tabAutocompleteModel": {
"title": "qwen2.5 coder",
"provider": "ollama",
"model": "qwen2.5-coder:latest"
},
"embeddingsProvider": {
"provider": "ollama",
"model": "nomic-embed-text"
},
...
Ở đây, bạn cần sử dụng 3 mô hình khác nhau để phục vụ cho việc gợi ý và tạo code:
- Mô hình chung
llama3.2
để tương tác và tạo code - Mô hình gợi ý mã
qwen2.5-coder
- Mô hình tạo embedding
nomic-embed-text
. Embeddings là những đoạn code ngắn đã được biến đổi thành các vector để phục vụ cho việc đánh chỉ mục và tìm kiếm trong các mô hình ngôn ngữ.
Đọc thêm: Tìm hiểu về cơ sở dữ liệu vector và ứng dụng (Phần 1)
Thử nghiệm tính năng tạo code
Sau khi cài đặt xong, chúng ta có thể sử dụng Ollama trực tiếp trong VS Code để trò chuyện, yêu cầu tạo code dựa vào prompt hoặc bật chức năng tự động thêm code bằng cách nhấn <Tab>
.
Ở đây ta sẽ yêu cầu mô hình tạo một đoạn code Python đơn giản sử dụng library ollama-python
để nhận câu hỏi từ người dùng và trả lại kết quả từ Ollama.
Kết quả khá ưng ý, tuy nhiên có một lỗi nhỏ là đoạn code sử dụng mô hình llama3
thay vì llama3.2
. Sau khi sửa xong, chúng ta có thể chạy đoạn code này và trò chuyện cùng chatbot vừa tạo.
Các bạn nhớ chú ý cài đặt gói thư viện ollama-python
bằng lệnh pip install ollama
như trong hướng dẫn nhé. Dưới đây là toàn bộ mã nguồn của đoạn code Python sau khi chỉnh sửa:
import ollama
def main():
model = 'llama3.2'
while True:
# Get user input
user_input = input("User: ")
# Create a message for the Ollama API
message = {'role': 'user', 'content': user_input}
# Send the message to the Ollama API and get the response
response = ollama.chat(model=model, messages=[message])
# Print the user's input and the generated response
print(f"\nUser: {user_input}\nOllama: {response['message']['content']}")
# Ask the user if they want to continue
cont = input("Continue? (y/n): ")
if cont.lower() != 'y':
break
if __name__ == "__main__":
main()
Như vậy, chúng ta đã có thể tích hợp Ollama vào VS Code và thử nghiệm khả năng tự động tạo code của ứng dụng này. Ngoài ra, phần mở rộng Continue cũng hỗ trợ một số tính năng như sử dụng các tài liệu tham chiếu, tạo chỉ mục trên kho mã nguồn của bạn,... Tham khảo thêm tài liệu của Continue tại đây.
Kết luận
Vậy là qua bài viết này, các bạn đã có thể tích hợp Ollama để cài đặt và sử dụng các mô hình ngôn ngữ lớn trên máy cá nhân một cách dễ dàng. Ngoài Ollama các bạn cũng có thể tìm hiểu thêm về LMStudio, một giải pháp khác để quản lý các mô hình ngôn ngữ lớn.
Chúc bạn thành công và tận dụng được sức mạnh của các mô hình AI để làm việc ngày càng hiệu quả hơn!
Tài liệu tham khảo