messenger_logo
Liên hệ qua Messenger
SciEco

Tận dụng các mô hình ai trong stata: chạy chatgpt, claude, gemini và grok

I
IEFPA
Ngày viết: 27/05/2026

Bài viết này khám phá cách cập nhật và tạo các lệnh Stata để tích hợp với những mô hình AI phổ biến như ChatGPT, Claude, Gemini và Grok. Sau khi bài đăng trước về lệnh Stata để chạy ChatGPT trở nên phổ biến, những thay đổi trong mã API của OpenAI đã khiến lệnh đó không còn hoạt động. Mục tiêu của chúng tôi là hướng dẫn bạn cách điều chỉnh mã API và viết các lệnh Stata tương tự để tận dụng sức mạnh của các công cụ AI khác nhau trực tiếp từ môi trường Stata.

Trọng tâm của bài viết này, cũng như bài trước, là minh họa mức độ dễ dàng để tận dụng các tính năng của PyStata nhằm kết nối với ChatGPT và các công cụ AI khác, thay vì đưa ra lời khuyên về cách sử dụng các công cụ AI để trả lời các câu hỏi cụ thể của Stata. Do đó, các ví dụ chỉ đơn giản là yêu cầu một bài haiku về Stata. Tuy nhiên, bạn có thể truyền bất kỳ yêu cầu nào mà bạn thấy hữu ích trong quy trình làm việc của mình với Stata.

Tổng Quan Về Tích Hợp Stata/Python

Chúng tôi giả định rằng bạn đã quen thuộc với tích hợp Stata/Python và cách viết lệnh chatgpt ban đầu. Nếu các chủ đề này còn lạ lẫm, bạn nên đọc các bài đăng trên blog dưới đây:

* Tích hợp Stata/Python phần 1: Thiết lập Stata để sử dụng Python

* Tích hợp Stata/Python phần 2: Ba cách sử dụng Python trong Stata

* Tích hợp Stata/Python phần 3: Cách cài đặt các gói Python

* Tích hợp Stata/Python phần 4: Cách sử dụng các gói Python

* Tích hợp Stata/Python phần 6: Làm việc với các API và dữ liệu JSON

* Tích hợp Stata/Python phần 8: Sử dụng Giao diện Hàm Stata để sao chép dữ liệu từ Stata sang Python

Cập Nhật Lệnh ChatGPT

Để sử dụng đoạn mã dưới đây, bạn sẽ cần một tài khoản người dùng OpenAI và khóa API OpenAI riêng của mình. Khóa API cũ từ năm 2023 có thể không còn dùng được, do đó bạn có thể cần tạo khóa mới.

Bạn cũng cần nhập lệnh `shell pip install openai` vào cửa sổ Lệnh của Stata để cài đặt gói Python `openai`. Nếu bạn đang sử dụng Python như một phần của nền tảng như Anaconda, bạn có thể cần một phương pháp khác để cài đặt gói `openai`. Tác giả đã phải gõ `shell pip uninstall openai` để gỡ bỏ phiên bản cũ và `shell pip install openai` để cài đặt phiên bản mới hơn.

Tiếp theo, chúng ta cần thay thế mã Python cũ bằng mã mới hơn sử dụng cú pháp API hiện đại. Tìm kiếm "python function to prompt chatgpt through api" đã dẫn đến trang hướng dẫn nhanh dành cho nhà phát triển trên trang web OpenAI. Sau một thời gian đọc và thử nghiệm, mã Python dưới đây đã được hoàn thành. Hàm Python `query_openai()` gửi lời nhắc qua API, sử dụng mô hình "gpt-4.1-mini" và nhận phản hồi. Các tùy chọn cho các mô hình khác không được đưa vào, nhưng bạn có thể thay đổi mô hình nếu muốn.

Phần còn lại của mã Python thực hiện ba việc với phản hồi. Thứ nhất, nó in phản hồi trong cửa sổ Kết quả của Stata. Thứ hai, nó ghi phản hồi vào một tệp có tên `chatgpt_output.txt`. Và thứ ba, nó sử dụng module SFI của Stata để chuyển phản hồi từ Python sang một macro cục bộ trong Stata. Bước thứ ba này hoạt động tốt đối với các phản hồi đơn giản, nhưng có thể dẫn đến lỗi đối với các phản hồi dài bao gồm các ký tự không chuẩn hoặc nhiều dấu ngoặc đơn hoặc kép. Bạn có thể đặt ký tự `#` ở đầu dòng “`Macro.setLocal(…`” để chú thích dòng đó và ngăn lỗi xảy ra.

Bạn có thể lưu mã dưới đây vào một tệp có tên `chatgpt.ado`, đặt tệp này vào thư mục ado cá nhân của bạn và sử dụng nó như bất kỳ lệnh Stata nào khác. Bạn có thể gõ `adopath` để tìm thư mục ado cá nhân của mình.

1capture program drop chatgpt
2program chatgpt, rclass
3  version 19.5 // (hoặc version 19 nếu bạn không có StataNow)
4  args InputText
5  display ""
6  python: query_openai("`InputText'", "gpt-4.1-mini")
7  return local OutputText = `"`OutputText'"'

python:

import os

from openai import OpenAI

from sfi import Macro

def query_openai(prompt: str, model: str = "gpt-4.1-mini") -> str:

# Truyền chuỗi đầu vào từ một macro cục bộ của Stata sang Python

inputtext = Macro.getLocal('InputText')

# Nhập khóa API của bạn

client = OpenAI(api_key=" PASTE YOUR API KEY HERE ")

# Gửi lời nhắc qua API và nhận phản hồi

response = client.chat.completions.create(

model= model,

messages=[

{"role": "user", "content": inputtext}

]

)

# In phản hồi trong cửa sổ Kết quả

print(response.choices[0].message.content)

# Ghi phản hồi vào một tệp văn bản

f = open("chatgpt_output.txt", "w")

f.write(response.choices[0].message.content)

f.close()

# Truyền chuỗi phản hồi từ Python trở lại một macro cục bộ của Stata

Macro.setLocal("OutputText", response.choices[0].message.content)

end

end

Bây giờ chúng ta có thể chạy lệnh `chatgpt` của mình và xem phản hồi trong cửa sổ Kết quả.

1. chatgpt "Write a haiku about Stata."
2Data flows with ease,
3Stata charts the silent truths,
4Insights bloom in code.

Chúng ta có thể gõ `return list` để xem phản hồi được lưu trữ trong macro cục bộ `r(OutputText)`.

1. return list
2macros:
3         r(OutputText) : "Data flows with ease, Stata charts the silent truths, Insights bloom .."

Và chúng ta có thể gõ `type chatgpt_output.txt` để xem phản hồi được lưu trong tệp `chatgpt_output.txt`.

1. type chatgpt_output.txt
2Data flows with ease,
3Stata charts the silent truths,
4Insights bloom in code.

Nó đã hoạt động! Hãy xem liệu chúng ta có thể sử dụng một chiến lược tương tự để tạo lệnh Stata cho một mô hình AI khác hay không.

Lệnh Stata Để Dùng Claude

Claude là một mô hình AI phổ biến được phát triển bởi Anthropic. Claude bao gồm một giao diện API, và bạn sẽ cần thiết lập một tài khoản người dùng và lấy khóa API trên trang web của nó. Sau khi có được khóa API, tìm kiếm "python function to query claude api" đã dẫn đến trang web "Get started with Claude". Một lần nữa, sau một thời gian đọc và thử nghiệm, mã Python dưới đây đã được hoàn thành. Bạn sẽ cần gõ `shell pip install anthropic` vào cửa sổ Lệnh của Stata để cài đặt gói `anthropic`.

Hãy chú ý xem mã Python dưới đây tương tự như mã Python trong lệnh `chatgpt` của chúng ta đến mức nào. Sự khác biệt lớn duy nhất là mã gửi lời nhắc qua API và nhận phản hồi. Mọi thứ khác gần như giống hệt nhau.

Bạn có thể lưu mã dưới đây vào một tệp có tên `claude.ado`, đặt tệp này vào thư mục ado cá nhân của bạn và sử dụng nó giống như bất kỳ lệnh Stata nào khác.

1capture program drop claude
2program claude, rclass
3  version 19.5 // (hoặc version 19 nếu bạn không có StataNow)
4  args InputText
5  display ""
6  python: query_claude()
7  return local OutputText = `"`OutputText'"'

python:

import os

from sfi import Macro

from anthropic import Anthropic

def query_claude():

# Truyền chuỗi đầu vào từ một macro cục bộ của Stata sang Python

inputtext = Macro.getLocal('InputText')

# Nhập khóa API của bạn

client = Anthropic(

api_key=' PASTE YOUR API KEY HERE '

)

# Gửi lời nhắc qua API và nhận phản hồi

response = client.messages.create(

model="claude-3-haiku-20240307",

max_tokens=1000,

messages=[

{"role": "user", "content": inputtext}

]

)

# In phản hồi vào cửa sổ Kết quả

print(response.content[0].text)

# Ghi phản hồi vào một tệp văn bản

f = open("claude_output.txt", "w")

f.write(response.content[0].text)

f.close()

# Truyền chuỗi phản hồi từ Python trở lại một macro cục bộ của Stata

Macro.setLocal("OutputText", response.content[0].text)

end

end

Bây giờ chúng ta có thể chạy lệnh `claude` của mình và xem phản hồi.

1. claude "Write a haiku about Stata."
2Here is a haiku about Stata:
3Stata, my old friend
4Analyzing data with ease
5Insights ever found

Chúng ta có thể gõ `return list` để xem phản hồi được lưu trữ trong macro cục bộ `r(OutputText)`.

1. return list
2macros:
3         r(OutputText) : "Here is a haiku about Stata: Stata, my old friend Analyzing data with ea.."

Và chúng ta có thể gõ `type claude_output.txt` để xem phản hồi được lưu trong tệp `claude_output.txt`.

1. type claude_output.txt
2Here is a haiku about Stata:
3Stata, my old friend
4Analyzing data with ease
5Insights ever found

Đôi khi bạn có thể thấy một lỗi như dưới đây. Điều này không cho thấy vấn đề với mã của bạn. Nó cho biết rằng dịch vụ API hoặc mạng đã hết thời gian hoặc bị gián đoạn. Đơn giản là chờ và thử lại.

1File "C:\Users\ChuckStata\AppData\Local\Programs\Python\Python313\Lib\site-packages\anthropic\
2> _base_client.py", line 1065, in request
3    raise APITimeoutError(request=request) from err
4anthropic.APITimeoutError: Request timed out or interrupted. This could be due to a network timeout,
5> dropped connection, or request cancellation. See https://docs.anthropic.com/en/api/errors#long-requests
6> for more details.
7r(7102);

Lệnh Stata Để Dùng Gemini

Gemini là một mô hình AI phổ biến được phát triển bởi Google. Gemini cũng bao gồm một giao diện API và bạn sẽ cần thiết lập một tài khoản người dùng và lấy khóa API trên trang web của nó. Sau khi có được khóa API, tìm kiếm "python function to query gemini api" đã dẫn đến trang web Gemini API quickstart. Một lần nữa, sau một thời gian đọc và thử nghiệm, mã Python dưới đây đã được hoàn thành. Bạn sẽ cần gõ `shell pip install -q -U google-genai` vào cửa sổ Lệnh của Stata để cài đặt gói `google-genai`.

Một lần nữa, bạn có thể lưu mã dưới đây vào một tệp có tên `gemini.ado`, đặt tệp này vào thư mục ado cá nhân của bạn và sử dụng nó giống như bất kỳ lệnh Stata nào khác.

1capture program drop gemini
2program gemini, rclass
3  version 19.5 // (hoặc version 19 nếu bạn không có StataNow)
4  args InputText
5  display ""
6  python: query_gemini()
7  return local OutputText = `"`OutputText'"'

python:

import os

from sfi import Macro

from google import genai

def query_gemini():

# Truyền chuỗi đầu vào từ một macro cục bộ của Stata sang Python

inputtext = Macro.getLocal('InputText')

# Nhập khóa API của bạn

client = genai.Client(api_key=" PASTE YOUR API KEY HERE ")

# Gửi lời nhắc qua API của Claude và nhận phản hồi

response = client.models.generate_content(

model="gemini-2.5-flash",

contents=inputtext

)

# In phản hồi vào cửa sổ Kết quả

print(response.text)

# Ghi phản hồi vào một tệp văn bản

f = open("gemini_output.txt", "w")

f.write(response.text)

f.close()

# Truyền chuỗi phản hồi từ Python trở lại một macro cục bộ của Stata

Macro.setLocal("OutputText", response.text)

end

end

Bây giờ chúng ta có thể chạy lệnh `gemini` của mình và xem phản hồi.

1. gemini "Write a haiku about Stata."
2Commands flow so fast,
3Data shaped, models defined,
4Insights now appear.

Chúng ta có thể gõ `return list` để xem phản hồi được lưu trữ trong macro cục bộ `r(OutputText)`.

1. return list
2macros:
3         r(OutputText) : "Commands flow so fast, Data shaped, models defined, Insights now appea.."

Và chúng ta có thể gõ `type gemini_output.txt` để xem phản hồi được lưu trong tệp `gemini_output.txt`.

1. type gemini_output.txt
2Commands flow so fast,
3Data shaped, models defined,
4Insights now appear.

Lệnh Stata Để Dùng Grok

Thêm một lệnh nữa cho vui. Grok là một mô hình AI phổ biến khác được phát triển bởi xAI. Bạn sẽ cần thiết lập một tài khoản người dùng và lấy khóa API trên trang web của nó. Sau khi có được khóa API, tìm kiếm "python function to query grok api" đã dẫn đến trang web Hitchhiker’s Guide to Grok. Một lần nữa, sau một thời gian đọc và thử nghiệm, mã Python dưới đây đã được hoàn thành. Bạn sẽ cần gõ `shell pip install xai_sdk` vào cửa sổ Lệnh của Stata để cài đặt gói `xai_sdk`.

Một lần nữa, bạn có thể lưu mã dưới đây vào một tệp có tên `grok.ado`, đặt tệp này vào thư mục ado cá nhân của bạn và sử dụng nó giống như bất kỳ lệnh Stata nào khác.

1capture program drop grok
2program grok, rclass
3  version 19.5 // (hoặc version 19 nếu bạn không có StataNow)
4  args InputText
5  display ""
6  python: query_grok("`InputText'", "grok-4")
7  return local OutputText = `"`OutputText'"'

python:

import os

from sfi import Macro

from xai_sdk import Client

from xai_sdk.chat import user, system

def query_grok(prompt: str, model: str = "grok-4") -> str:

# Truyền chuỗi đầu vào từ một macro cục bộ của Stata sang Python

inputtext = Macro.getLocal('InputText')

# Nhập khóa API của bạn

client = Client(api_key=" PASTE YOUR API KEY HERE ")

# Gửi lời nhắc qua API của Claude và nhận phản hồi

chat = client.chat.create(model=model)

chat.append(user(inputtext))

response = chat.sample()

# In phản hồi vào cửa sổ Kết quả

print(response.content)

# Ghi phản hồi vào một tệp văn bản

f = open("grok_output.txt", "w")

f.write(response.content)

f.close()

# Truyền chuỗi phản hồi từ Python trở lại một macro cục bộ của Stata

Macro.setLocal("OutputText", response.content)

end

end

Bây giờ chúng ta có thể chạy lệnh `grok` của mình và xem phản hồi trong cửa sổ Kết quả.

1. grok "Write a haiku about Stata."
2Data streams unfold,
3Stata weaves the threads of truth,
4Insights bloom in code.

Chúng ta có thể gõ `return list` để xem phản hồi được lưu trữ trong macro cục bộ `r(OutputText)`.

1. return list
2macros:
3         r(OutputText) : "Data streams unfold, Stata weaves the threads of truth,  Insights b.."

Và chúng ta có thể gõ `type grok_output.txt` để xem kết quả trong tệp `grok_output.txt`.

1. type grok_output.txt
2Data streams unfold,
3Stata weaves the threads of truth,
4Insights bloom in code.

✨ Giá Trị Đắt Giá ✨

Những ví dụ trên đã chứng minh rằng việc viết và cập nhật các lệnh Stata để chạy các mô hình AI là tương đối dễ dàng. Các ví dụ được đưa ra một cách đơn giản và chỉ mang tính chất giáo dục. Tuy nhiên, bạn có thể dễ dàng tưởng tượng ra nhiều tùy chọn khác để sử dụng các mô hình khác nhau cho các loại lời nhắc khác, chẳng hạn như âm thanh hoặc hình ảnh. Đây là một bước tiến quan trọng giúp các nhà khoa học dữ liệu và nhà nghiên cứu tận dụng tối đa sức mạnh của AI mà không cần rời khỏi môi trường Stata quen thuộc.

Có một lưu ý quan trọng dành cho những ai đọc bài này trong tương lai: cú pháp API có thể thay đổi và mã trên có thể không còn hoạt động. Đây là bản chất của việc sử dụng API; chúng thay đổi và bạn sẽ phải tự tìm hiểu để cập nhật mã của mình. Tuy nhiên, có rất nhiều tài nguyên sẵn có trên internet để giúp bạn cập nhật mã hoặc viết các lệnh mới. Chúc may mắn và hãy tận hưởng quá trình khám phá!

Câu Hỏi Tư Duy Hoặc Bài Tập Ứng Dụng

1. **Mở Rộng Chức Năng**: Hãy sửa đổi một trong các lệnh `.ado` trên để cho phép người dùng chọn mô hình AI khác nhau (ví dụ: `gpt-3.5-turbo` thay vì `gpt-4.1-mini`) thông qua một tùy chọn trong lệnh Stata.

2. **Xử Lý Phản Hồi Phức Tạp Hơn**: Thử nghiệm gửi một lời nhắc dài hơn hoặc phức tạp hơn cho một mô hình AI (ví dụ: yêu cầu tóm tắt một đoạn văn bản nghiên cứu). Quan sát cách Stata xử lý phản hồi và xem xét cách bạn có thể cải thiện việc lưu trữ hoặc hiển thị phản hồi đó, đặc biệt là khi nó chứa các ký tự đặc biệt hoặc nhiều dấu ngoặc.

3. **Tích Hợp Dữ Liệu Thực**: Hãy thử viết một lệnh Stata để gửi dữ liệu từ một biến trong Stata đến một mô hình AI, yêu cầu nó phân tích hoặc tạo ra một bản tóm tắt dựa trên dữ liệu đó, và sau đó đưa phản hồi trở lại Stata.


Bài viết khác
Trong lập trình các lệnh ước lượng tùy chỉnh trong Stata, việc đảm bảo chức năng `predict` hoạt động chính xác sau khi chạy mô hình là một yếu tố quan trọng để người dùng có thể trích xuất các dự đoán hiệu quả. Bài viết này sẽ hướng dẫn cách xây dựng một ado-command riêng biệt để tính toán các giá trị dự đoán và tích hợp nó vào lệnh ước lượng chính, từ đó mở rộng khả năng phân tích dữ liệu. Một Lệnh Ado Để Tính Toán Dự Đoán Theo quy ước, một ado-command dùng để tính toán các dự đoán cho lệnh ước lượng `mytest` sẽ được đặt tên là `mytest_p`. Trong trường hợp này, chúng ta sẽ xem xét `mypoisson5_p`, ado-command chịu trách nhiệm tính toán dự đoán sau khi chạy lệnh `mypoisson5`. Cú pháp của `mypoisson5_p` được định nghĩa như sau:
Trong thế giới khoa học dữ liệu hiện đại, việc phân tích các bộ dữ liệu khổng lồ và phức tạp là một thách thức không ngừng. Các nhà nghiên cứu thường phải làm việc với nhiều bộ dữ liệu liên quan cùng một lúc, đòi hỏi các công cụ quản lý dữ liệu hiệu quả và linh hoạt. Stata, với lịch sử lâu đời trong việc xử lý và phân tích dữ liệu, đã liên tục đổi mới để đáp ứng những nhu cầu này. Stata 18, ra mắt vào năm 2023, tiếp tục nâng cao khả năng này bằng cách giới thiệu hai tính năng đột phá: framesets và biến số bí danh giữa các frames. Những cải tiến này cho phép người dùng quản lý và tương tác với nhiều bộ dữ liệu, có thể rất lớn, một cách hiệu quả và thuận tiện hơn bao giờ hết. Framesets cho phép bạn nhóm, lưu trữ trên ổ đĩa và tải vào bộ nhớ một tập hợp các frames chứa bộ dữ liệu liên quan. Biến số bí danh cho phép bạn truy cập các biến số trong các frames khác như thể chúng là một phần của frame hiện tại, với chi phí bộ nhớ rất thấp. Bài viết này sẽ đi sâu vào cách những tính năng này cách mạng hóa quy trình làm việc dữ liệu trong Stata. Quản Lý Dữ Liệu Trong Stata: Hành Trình Phát Triển Từ khi Stata 1.0 ra đời vào năm 1985, dữ liệu đã được tổ chức dưới dạng bảng với các quan sát (hàng) và biến số (cột), được gọi là bộ dữ liệu. Các bộ dữ liệu này được lưu trữ hoàn toàn trong bộ nhớ và ghi vào ổ đĩa dưới dạng tệp .dta. Các kiểu dữ liệu, như số nguyên, số thực và đặc biệt là chuỗi, được quản lý một cách tiết kiệm. Hầu hết các lệnh ban đầu của Stata, bao gồm generate, replace và list không thể thiếu, đều tập trung vào quản lý dữ liệu.
SciEco
Science for Economics
Định hướng đào tạo phân tích dữ liệu, xây dựng chính sách, tối ưu hoá danh mục tài chính cá nhân và dự báo thị trường.
Liên hệ
Địa chỉ: Số 60, ngõ 41, Phố Thái Hà, Trung Liệt, Đống Đa, Hà Nội (Google Map)
Email: science.for.economics@gmail.com
Hotline: 03.57.94.7680 (Mrs. Hà)
Mạng xã hội