Khóa học
Gần đây, OpenAI giới thiệu dòng GPT-4.1, bao gồm ba biến thể: GPT-4.1, GPT-4.1 Mini và GPT-4.1 Nano. Các mô hình này được thiết kế để vượt trội trong các tác vụ lập trình và tuân thủ hướng dẫn, mang lại những cải tiến đáng kể so với thế hệ trước.
Một trong những điểm nổi bật là cửa sổ ngữ cảnh mở rộng hỗ trợ tới 1 triệu token—hơn tám lần dung lượng của GPT-4. Nâng cấp này cho phép mô hình xử lý đầu vào lớn, như toàn bộ kho mã hoặc quy trình nhiều tài liệu.
Trong hướng dẫn này, chúng ta sẽ khám phá khả năng của GPT-4.1 bằng cách xây dựng một dự án cho phép người dùng tìm kiếm toàn bộ kho mã bằng các từ khóa trong lời nhắc. Nội dung liên quan từ kho sẽ được cung cấp cho mô hình GPT-4.1 cùng với lời nhắc của người dùng.
Kết quả là, chúng ta sẽ tạo một ứng dụng tương tác cho phép người dùng trò chuyện với kho mã của họ và dùng GPT-4.1 để phân tích và cải thiện toàn bộ mã nguồn.
Chúng tôi cập nhật cho độc giả những thông tin mới nhất về AI qua The Median, bản tin thứ Sáu miễn phí tóm lược các câu chuyện chính trong tuần. Đăng ký để bắt kịp chỉ trong vài phút mỗi tuần:
Bắt đầu với các mô hình GPT-4.1
Trước khi bắt tay xây dựng dự án, điều quan trọng là thử nghiệm các phiên bản khác nhau của mô hình GPT-4.1 và khám phá API responses mới. API nâng cao này cho phép tương tác có trạng thái bằng cách dùng đầu ra trước làm đầu vào, hỗ trợ đa phương thức như văn bản và hình ảnh, và mở rộng khả năng của mô hình với các công cụ tích hợp để tìm kiếm tệp, tìm kiếm web, và tích hợp hệ thống bên ngoài qua function calling.
Để bắt đầu, hãy đảm bảo bạn đã cài phiên bản mới nhất của OpenAI Python client. Bạn có thể chạy lệnh sau trong terminal:
$ pip install -U openai -q
1. Dùng mô hình GPT-4.1 Nano để sinh văn bản
Trong ví dụ này, chúng ta sẽ dùng mô hình GPT-4.1 Nano, tối ưu cho tốc độ và chi phí, để tạo văn bản.
Trước hết, chúng ta khởi tạo OpenAI client và dùng nó để truy cập response API nhằm tạo phản hồi.
from openai import OpenAI
from IPython.display import Markdown, display
client = OpenAI()
response = client.responses.create(
model="gpt-4.1-nano",
input= "Write a proper blog on getting rich."
)
Markdown(response.output_text)
Mô hình GPT-4.1 Nano đã đưa ra phản hồi trình bày tốt và súc tích.

2. Dùng mô hình GPT-4.1 Mini để hiểu hình ảnh
Tiếp theo, chúng ta sẽ thử mô hình GPT-4.1 Mini bằng cách cung cấp URL hình ảnh và yêu cầu mô tả theo phong cách triết gia.
response = client.responses.create(
model="gpt-4.1-mini",
input=[{
"role": "user",
"content": [
{"type": "input_text", "text": "Please describe the image as a philosopher would."},
{
"type": "input_image",
"image_url": "https://thumbs.dreamstime.com/b/lucha-de-dos-vacas-56529466.jpg",
},
],
}],
)
print(response.output_text)
Mô hình GPT-4.1 Mini đã đưa ra mô tả chi tiết và sáng tạo về hình ảnh, thể hiện khả năng diễn giải nội dung thị giác.

3. Dùng mô hình GPT-4.1 (Đầy đủ) để sinh mã
Bây giờ, chúng ta sẽ dùng mô hình GPT-4.1 “đầy đủ” để tạo mã.
Trong ví dụ này, chúng ta sẽ cung cấp hướng dẫn hệ thống và lời nhắc của người dùng cho mô hình, đồng thời bật phản hồi dạng stream.
import sys
# Request a streamed response from the model.
stream = client.responses.create(
model="gpt-4.1",
instructions="You are a machine learning engineer, which is an expert in creating model inference.",
input="Create a FastAPI app for image classification",
stream=True,
)
# Iterate over stream events and print text as soon as it's received.
for event in stream:
# Check if the event includes a text delta.
if hasattr(event, "delta") and event.delta:
sys.stdout.write(event.delta)
sys.stdout.flush()
Chúng ta đã dùng đầu ra cấp hệ thống (sys.stdout) để hiển thị phản hồi dạng stream theo thời gian thực.

4. Dùng mô hình GPT-4.1 để sinh mã với đầu vào từ tệp
Cuối cùng, chúng ta sẽ kiểm thử cửa sổ ngữ cảnh lớn của GPT-4.1 bằng cách cung cấp cho nó một tệp Python làm đầu vào. Tệp được mã hóa ở định dạng Base64 và gửi kèm theo hướng dẫn của người dùng.
import base64
from openai import OpenAI
client = OpenAI()
with open("main.py", "rb") as f:
data = f.read()
base64_string = base64.b64encode(data).decode("utf-8")
response = client.responses.create(
model="gpt-4.1",
input=[
{
"role": "user",
"content": [
{
"type": "input_file",
"filename": "main.py",
"file_data": f"data:text/x-python;base64,{base64_string}",
},
{
"type": "input_text",
"text": "Enhance the code by incorporating additional features to improve the user experience.",
},
],
},
]
)
Markdown(response.output_text)
Mô hình GPT-4.1 đã đưa ra các gợi ý cải thiện mã có xét đến ngữ cảnh, thể hiện khả năng xử lý đầu vào lớn.

Nếu bạn gặp bất kỳ vấn đề nào khi chạy mã trên, vui lòng tham khảo sổ tay DataLab: Playing with GPT-4.1 API — DataLab.
Xây dựng Ứng dụng Tìm Kiếm Mã Bằng Từ Khóa
Ứng dụng Tìm Kiếm Mã Bằng Từ Khóa được thiết kế để giúp nhà phát triển tìm kiếm hiệu quả trong codebase các đoạn mã liên quan dựa trên từ khóa cụ thể, rồi dùng GPT-4.1 để cung cấp giải thích hoặc nhận định về mã.
Ứng dụng gồm ba phần chính:
1. Tìm kiếm codebase
Bước đầu tiên trong ứng dụng là tìm trong codebase các đoạn mã phù hợp với truy vấn của nhà phát triển. Điều này được thực hiện bằng hàm search_codebase, quét các tệp trong một thư mục cho trước để tìm các dòng chứa từ khóa chỉ định.
searcher.py:
import os
def search_codebase(directory: str, keywords: list, allowed_extensions: list) -> list:
"""
Search for code snippets in the codebase that match any of the given keywords.
Returns a list of dictionaries with file path, the line number where a match was found,
and a code snippet that includes 2 lines of context before and after the matched line.
"""
matches = []
for root, _, files in os.walk(directory):
for file in files:
if file.endswith(tuple(allowed_extensions)):
file_path = os.path.join(root, file)
try:
with open(file_path, "r", encoding="utf-8", errors="ignore") as f:
lines = f.readlines()
for i, line in enumerate(lines):
# Check if any keyword is in the current line (case insensitive)
if any(keyword in line.lower() for keyword in keywords):
snippet = {
"file": file_path,
"line_number": i + 1,
"code": "".join(lines[max(0, i - 2) : i + 3]),
}
matches.append(snippet)
except Exception as e:
print(f"Skipping file {file_path}: {e}")
return matches
2. Truy vấn GPT 4.1
Khi đã xác định được các đoạn mã liên quan, bước tiếp theo là truy vấn GPT-4.1 để tạo giải thích hoặc nhận định về mã. Hàm query_gpt nhận câu hỏi của nhà phát triển và các đoạn mã khớp làm đầu vào, rồi trả về phản hồi chi tiết.
gpt_explainer.py:
import os
from openai import OpenAI
def query_gpt(question: str, matches: list):
"""
Queries GPT-4.1 with the developer's question and the relevant code snippets,
then returns the generated explanation.
"""
if not matches:
return "No code snippets found to generate an explanation."
# Combine all matches into a formatted string
code_context = "\n\n".join(
[
f"File: {match['file']} (Line {match['line_number']}):\n{match['code']}"
for match in matches
]
)
# Create the GPT-4.1 prompt
system_message = "You are a helpful coding assistant that explains code based on provided snippets."
user_message = f"""A developer asked the following question:
"{question}"
Here are the relevant code snippets:
{code_context}
Based on the code snippets, answer the question clearly and concisely.
"""
# Load API key from environment variable
api_key = os.environ.get("OPENAI_API_KEY")
if not api_key:
return "Error: OPENAI_API_KEY environment variable is not set."
# Create an OpenAI client using the API key
client = OpenAI(api_key=api_key)
try:
# Return the stream object for the caller to process
return client.responses.create(
model="gpt-4.1",
input=[
{"role": "system", "content": system_message},
{"role": "user", "content": user_message},
],
stream=True,
)
except Exception as e:
return f"Error generating explanation: {e}"
3. Ứng dụng trò chuyện tìm kiếm mã theo từ khóa
Phần cuối của ứng dụng là chatbot tương tác, kết hợp mọi thứ. Nó cho phép nhà phát triển đặt câu hỏi về codebase, trích xuất từ khóa từ truy vấn, tìm kiếm codebase các đoạn mã liên quan, và gửi tất cả cùng với câu hỏi của người dùng cho GPT-4.1 để tạo phản hồi.
main.py:
import argparse
from gpt_explainer import query_gpt
from searcher import search_codebase
def print_streaming_response(stream):
"""Print the streaming response from GPT-4.1"""
print("\nGPT-4.1 Response:")
for event in stream:
# Check if the event includes a text delta.
if hasattr(event, "delta") and event.delta:
print(event.delta, end="")
print("\n")
def main():
parser = argparse.ArgumentParser(
description="Keyword-Based Code Search with GPT-4.1"
)
parser.add_argument("--path", required=True, help="Path to the codebase")
args = parser.parse_args()
allowed_extensions = [".py", ".js", ".txt", ".md", ".html", ".css", ".sh"]
print("Welcome to the Code Search Chatbot!")
print("Ask questions about your codebase or type 'quit' to exit.")
while True:
question = input("\nEnter your question about the codebase: ")
if question.lower() == "quit":
print("Exiting chatbot. Goodbye!")
break
# Extract keywords from the question and remove stop words
stop_words = {'a', 'an', 'the', 'and', 'or', 'but', 'is', 'are', 'was', 'were',
'in', 'on', 'at', 'to', 'for', 'with', 'by', 'about', 'like',
'from', 'of', 'as', 'how', 'what', 'when', 'where', 'why', 'who'}
keywords = [word for word in question.lower().split() if word not in stop_words][:5]
print("Searching codebase...")
matches = search_codebase(args.path, keywords, allowed_extensions)
if not matches:
print("No relevant code snippets found.")
continue
print("Querying GPT-4.1...")
stream = query_gpt(question, matches)
print_streaming_response(stream)
if __name__ == "__main__":
main()
Chatbot này mang đến trải nghiệm liền mạch cho nhà phát triển, giúp họ tương tác với codebase và nhận được nhận định từ AI.
Dự án cũng có kho mã (kingabzpro/Keyword-Code-Search) chứa mã nguồn và hướng dẫn sử dụng.
Kiểm thử Ứng dụng Tìm Kiếm Mã Bằng Từ Khóa
Phần này, chúng ta sẽ kiểm thử ứng dụng Tìm Kiếm Mã Bằng Từ Khóa bằng cách chạy trong terminal và khám phá các tính năng của nó.
Để chạy ứng dụng, bạn cần cung cấp đường dẫn đến kho mã muốn phân tích. Trong ví dụ này, chúng ta sẽ dùng “Redis ML project.”
$ python main.py --path C:\Repository\GitHub\Redis-ml-project
Bạn sẽ thấy lời chào mừng và hướng dẫn. Chỉ cần nhập câu hỏi về mã của bạn hoặc yêu cầu cải thiện một phần cụ thể của codebase.
Welcome to the Code Search Chatbot!
Ask questions about your codebase or type 'quit' to exit.
Enter your question about the codebase: help me improve the training script
Ứng dụng sẽ tìm kiếm trong codebase các đoạn mã liên quan và truy vấn GPT-4.1 để tạo phản hồi.
Searching codebase...
Querying GPT-4.1...
GPT-4.1 Response:
Certainly! Based on the provided snippets, here's how you can **improve the training script (`train.py`)** for your phishing email classification proje...........
Bạn có thể đặt câu hỏi tiếp theo để hiểu toàn bộ dự án.
Enter your question about the codebase: help me understand the project
Phần giải thích chi tiết này giúp nhà phát triển hiểu mục tiêu, chức năng và cấu trúc của dự án.
Searching codebase...
Querying GPT-4.1...
GPT-4.1 Response:
Certainly! Here's a concise overview of the project based on your code snippets:
## Project Purpose
**Phishing Email Classification App with Redis**
This project classifies emails as "Phishing" or "Safe" using machine learning and serves predictions via a web API. It also uses Redis for caching predictions to optimize performance…………
Để thoát ứng dụng, chỉ cần gõ ‘quit’:
Enter your question about the codebase: quit
Exiting chatbot. Goodbye!
Ứng dụng Tìm Kiếm Mã Bằng Từ Khóa là một công cụ nhỏ gọn nhưng mạnh mẽ, cho phép nhà phát triển trò chuyện với kho mã của họ. Nó kết hợp tìm kiếm mã theo từ khóa hiệu quả với khả năng của GPT-4.1 trong việc tạo phản hồi có xét đến ngữ cảnh. Dù bạn cần cải thiện một phần cụ thể của codebase hay hiểu tổng thể dự án, ứng dụng này mang lại trải nghiệm trực quan và liền mạch.
Kết luận
Toàn bộ bức tranh AI đang rời xa sự cường điệu và các thước đo bề nổi, thay vào đó tập trung vào việc mang lại giá trị thực thay vì ảo tưởng. Các mô hình GPT4.1 đang cải thiện trải nghiệm của nhà phát triển bằng cách cho phép mô hình ngôn ngữ lớn tạo ra mã có độ chính xác cao và có thể chạy ngay. Ngoài ra, các mô hình này có cửa sổ ngữ cảnh lớn, giúp chúng hiểu toàn bộ kho mã chỉ trong một lần.
Nếu bạn muốn thực hành với OpenAI API, hãy xem khóa học Working with the OpenAI API để bắt đầu phát triển ứng dụng dùng AI. Bạn cũng có thể xem hướng dẫn về Responses API và tìm hiểu thêm về mô hình suy luận o4-mini mới.
Là một nhà khoa học dữ liệu được chứng nhận, tôi đam mê tận dụng công nghệ tiên tiến để tạo ra các ứng dụng học máy đổi mới. Với nền tảng vững chắc về nhận dạng giọng nói, phân tích và báo cáo dữ liệu, MLOps, AI hội thoại và NLP, tôi đã rèn giũa kỹ năng phát triển các hệ thống thông minh có thể tạo ra tác động thực sự. Bên cạnh chuyên môn kỹ thuật, tôi cũng là một người truyền đạt tốt, có khả năng chắt lọc các khái niệm phức tạp thành ngôn ngữ rõ ràng, súc tích. Nhờ đó, tôi trở thành một blogger được nhiều người quan tâm trong lĩnh vực khoa học dữ liệu, chia sẻ góc nhìn và kinh nghiệm với cộng đồng các chuyên gia dữ liệu ngày càng lớn. Hiện tại, tôi tập trung vào sáng tạo và biên tập nội dung, làm việc với các mô hình ngôn ngữ lớn để phát triển nội dung mạnh mẽ và hấp dẫn, giúp doanh nghiệp và cá nhân tận dụng tối đa dữ liệu của mình.
