Xây Dựng AI Assistant Cá Nhân: Kết Nối Mô Hình Ngôn Ngữ Với Các Công Cụ Thực Tế
API & SDK AI

Xây Dựng AI Assistant Cá Nhân: Kết Nối Mô Hình Ngôn Ngữ Với Các Công Cụ Thực Tế

Giới Thiệu AI Assistant Cá Nhân: Kết Nối Mô Hình Ngôn Ngữ Với Các Công Cụ Thực Tế

Trong kỷ nguyên số hóa, AI Assistant cá nhân không còn là viễn cảnh xa vời mà đang trở thành một phần không thể thiếu trong cuộc sống và công việc của chúng ta. Từ việc lên lịch hẹn, gửi email, đến phân tích dữ liệu phức tạp, khả năng của các trợ lý AI ngày càng được mở rộng. Tuy nhiên, để một AI Assistant thực sự hữu ích, nó cần vượt ra ngoài việc chỉ trả lời câu hỏi hay tạo văn bản; nó phải có khả năng tương tác với thế giới thực thông qua các công cụ. Bài viết về AI công cụ này sẽ đi sâu vào cách chúng ta có thể kết nối sức mạnh của các mô hình ngôn ngữ lớn (LLMs) với các API và dịch vụ bên ngoài, biến chúng thành những tác nhân thông minh, có khả năng thực hiện hành động. Chúng ta sẽ cùng khám phá kiến trúc, các thách thức và những giải pháp thực tế để xây dựng một AI Assistant cá nhân mạnh mẽ, biến ý tưởng thành hiện thực.

Xây Dựng AI Assistant Cá Nhân: Kết Nối Mô Hình Ngôn Ngữ Với Các Công Cụ Thực Tế
Minh họa: Xây Dựng AI Assistant Cá Nhân: Kết Nối Mô Hình Ngôn Ngữ Với Các Công Cụ Thực Tế (Nguồn ảnh: i.pinimg.com)

Sức Mạnh Của Mô Hình Ngôn Ngữ Kết Hợp Công Cụ (Tool-Augmented LLMs)

Mô hình ngôn ngữ lớn (LLMs) như GPT-4 hay Claude đã chứng minh khả năng vượt trội trong việc hiểu, tạo và xử lý ngôn ngữ tự nhiên. Chúng có thể viết thơ, tóm tắt tài liệu, thậm chí lập trình. Tuy nhiên, một hạn chế cố hữu của LLMs là chúng chỉ "biết" những gì đã được huấn luyện cho đến thời điểm cắt dữ liệu của chúng. Chúng không thể truy cập internet theo thời gian thực, thực hiện các phép tính phức tạp một cách chính xác tuyệt đối, hay tương tác trực tiếp với các ứng dụng bên ngoài như hệ thống quản lý email, lịch, hoặc cơ sở dữ liệu. Đây chính là lúc khái niệm "Tool-Augmented LLMs" (LLMs được tăng cường công cụ) ra đời và phát huy sức mạnh.

AI coding tools
Công cụ AI coding hiện đại (Nguồn ảnh: preview.redd.it)

Tool-Augmented LLMs là một kiến trúc mà trong đó, mô hình ngôn ngữ được trang bị khả năng sử dụng các "công cụ" (tools) bên ngoài để mở rộng khả năng của mình. Các công cụ này có thể là bất kỳ thứ gì, từ một API tìm kiếm web, một máy tính, một công cụ dịch thuật, đến một API gửi email hoặc một cơ sở dữ liệu. Khi nhận được một yêu cầu từ người dùng, LLM không chỉ cố gắng tự trả lời mà còn phân tích xem liệu có công cụ nào có thể giúp nó thực hiện nhiệm vụ một cách hiệu quả hơn hay không. Nếu có, nó sẽ gọi công cụ đó, xử lý kết quả trả về, và sử dụng thông tin đó để đưa ra phản hồi cuối cùng.

Ví dụ, nếu bạn hỏi một AI Assistant cá nhân "Thời tiết ở Hà Nội ngày mai thế nào?", một LLM thuần túy có thể chỉ đưa ra câu trả lời chung chung hoặc từ dữ liệu cũ. Nhưng một LLM được tăng cường công cụ thời tiết sẽ nhận ra cần sử dụng API thời tiết, gửi yêu cầu đến API đó với thông số "Hà Nội" và "ngày mai", nhận kết quả (ví dụ: "có mưa, 25 độ C"), sau đó tổng hợp thành câu trả lời tự nhiên. Khả năng này biến LLM từ một "bộ não" chỉ có kiến thức tĩnh thành một "tác nhân" có thể tương tác và thực hiện hành động trong thế giới số.

Việc tích hợp AI công cụ không chỉ nâng cao độ chính xác và tính cập nhật của thông tin mà còn mở ra cánh cửa cho các tác vụ phức tạp hơn. AI Assistant có thể tự động đặt lịch hẹn, gửi báo cáo, phân tích dữ liệu tài chính, quản lý dự án, hoặc thậm chí điều khiển các thiết bị IoT. Đây là một bước tiến lớn trong việc hiện thực hóa tầm nhìn về AI tổng quát (AGI) - một AI có thể thực hiện mọi nhiệm vụ mà con người có thể làm.

Xây Dựng Kiến Trúc Cơ Bản Cho AI Assistant Cá Nhân Với Công Cụ

Để xây dựng một AI Assistant cá nhân có khả năng sử dụng công cụ, chúng ta cần một kiến trúc bao gồm các thành phần chính sau:

Vibe coding workflow
Vibe coding trong thực tế (Nguồn ảnh: thumbs.dreamstime.com)
  1. Mô Hình Ngôn Ngữ Lớn (LLM): Là "bộ não" của trợ lý, chịu trách nhiệm hiểu yêu cầu, lập kế hoạch và đưa ra quyết định sử dụng công cụ nào.
  2. Bộ Công Cụ (Tool Library): Một tập hợp các hàm hoặc API được đóng gói, mỗi hàm thực hiện một tác vụ cụ thể (ví dụ: tìm kiếm web, gửi email, truy vấn cơ sở dữ liệu).
  3. Bộ Điều Phối (Orchestrator/Agent): Thành phần trung gian, nhận yêu cầu từ người dùng, chuyển tiếp đến LLM, nhận quyết định từ LLM về việc sử dụng công cụ, thực thi công cụ, và đưa kết quả trở lại LLM để tổng hợp phản hồi cuối cùng.

Ví dụ về cách LLM tương tác với công cụ:

Giả sử chúng ta muốn xây dựng một AI Assistant có thể tra cứu thông tin sản phẩm và gửi email. Chúng ta sẽ định nghĩa hai công cụ:

  • search_product_info(product_name: str) -> str: Tra cứu thông tin sản phẩm từ một cơ sở dữ liệu hoặc API.
  • send_email(recipient: str, subject: str, body: str) -> str: Gửi email đến người nhận.

Khi người dùng nói: "Tìm thông tin về iPhone 15 và gửi email cho John ([email protected]) với tiêu đề 'Thông tin iPhone 15' và nội dung là thông tin tìm được."

  1. Người dùng gửi yêu cầu: "Tìm thông tin về iPhone 15 và gửi email cho John ([email protected]) với tiêu đề 'Thông tin iPhone 15' và nội dung là thông tin tìm được."
  2. Orchestrator chuyển yêu cầu đến LLM.
  3. LLM phân tích yêu cầu:
    • Bước 1: Cần tìm thông tin về "iPhone 15". Công cụ phù hợp: search_product_info.
    • Bước 2: Sau khi có thông tin, cần gửi email. Công cụ phù hợp: send_email.
    LLM sẽ tạo ra một chuỗi hành động (plan) hoặc trực tiếp output một lệnh gọi công cụ.
  4. Orchestrator nhận lệnh gọi công cụ đầu tiên từ LLM: search_product_info("iPhone 15").
  5. Orchestrator thực thi search_product_info. Giả sử nó trả về: "iPhone 15 là mẫu điện thoại mới nhất của Apple, với chip A17 Bionic, camera 48MP..."
  6. Orchestrator gửi kết quả của công cụ trở lại LLM.
  7. LLM nhận kết quả và tiếp tục kế hoạch: Bây giờ nó có thông tin sản phẩm. Nó sẽ cấu trúc lệnh gọi công cụ thứ hai: send_email("[email protected]", "Thông tin iPhone 15", "iPhone 15 là mẫu điện thoại mới nhất của Apple, với chip A17 Bionic, camera 48MP...").
  8. Orchestrator thực thi send_email.
  9. Orchestrator gửi kết quả (ví dụ: "Email đã được gửi thành công") trở lại LLM.
  10. LLM tổng hợp phản hồi cuối cùng cho người dùng: "Tôi đã tìm thấy thông tin về iPhone 15 và đã gửi email cho John với tiêu đề 'Thông tin iPhone 15'."

Quá trình này có thể lặp lại nhiều lần tùy thuộc vào độ phức tạp của yêu cầu và số lượng công cụ cần sử dụng. Đây là một ví dụ điển hình về cách AI công cụ hoạt động.

Thực Hành: Tích Hợp Công Cụ Với LangChain Để Xây Dựng AI Assistant

LangChain là một framework mạnh mẽ giúp đơn giản hóa việc xây dựng các ứng dụng dựa trên LLM, đặc biệt là các ứng dụng yêu cầu tích hợp công cụ. Chúng ta sẽ sử dụng LangChain để minh họa cách tạo một AI Assistant đơn giản có khả năng tìm kiếm web.

AI-assisted programming
Lập trình với sự hỗ trợ của AI (Nguồn ảnh: img.freepik.com)

Bước 1: Cài đặt LangChain và các thư viện cần thiết

pip install langchain openai google-search-results

Bạn cần có API key của OpenAI cho LLM và API key của Google Search cho công cụ tìm kiếm.

Bước 2: Định nghĩa các công cụ

LangChain cung cấp nhiều công cụ có sẵn. Ở đây, chúng ta sẽ sử dụng công cụ tìm kiếm của Google (SerpApi).

import os
from langchain.agents import AgentExecutor, create_json_agent
from langchain.agents.agent_toolkits import JsonToolkit
from langchain.tools import Tool
from langchain.llms import OpenAI
from langchain.utilities import SerpAPIWrapper

# Đặt biến môi trường cho API keys
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
os.environ["SERPAPI_API_KEY"] = "YOUR_SERPAPI_API_KEY"

# Khởi tạo công cụ tìm kiếm
search = SerpAPIWrapper()

# Tạo một LangChain Tool từ SerpAPIWrapper
tools = [
    Tool(
        name="Current Search",
        func=search.run,
        description="useful for when you need to answer questions about current events or the current state of the world."
    )
]

Bước 3: Khởi tạo LLM và Agent

Chúng ta sẽ sử dụng một LLM của OpenAI (ví dụ: text-davinci-003 hoặc gpt-3.5-turbo) và kết hợp nó với các công cụ đã định nghĩa để tạo ra một Agent.

# Khởi tạo LLM
llm = OpenAI(temperature=0) # temperature=0 để mô hình ít sáng tạo hơn, tập trung vào thông tin thực tế

# Tạo Agent từ LLM và các công cụ
# Chúng ta có thể sử dụng create_react_agent hoặc initialize_agent tùy theo kiến trúc mong muốn
# Ví dụ đơn giản với create_json_agent (cần JsonToolkit nếu muốn xử lý JSON)
# Để đơn giản hóa, chúng ta sẽ dùng initialize_agent với agent_type="zero-shot-react-description"
from langchain.agents import initialize_agent, AgentType

agent = initialize_agent(
    tools,
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, # Một loại agent phổ biến có khả năng lập luận và sử dụng công cụ
    verbose=True # Hiển thị quá trình suy luận của agent
)

Bước 4: Sử dụng AI Assistant

Bây giờ chúng ta có thể gửi các yêu cầu đến AI Assistant của mình.

# Gửi yêu cầu đến agent
print(agent.run("Thời tiết ở Thành phố Hồ Chí Minh ngày mai thế nào?"))

print(agent.run("Ai là người sáng lập SpaceX?"))

Giải thích về cách Agent hoạt động (khi verbose=True):

Khi bạn chạy đoạn code trên, console sẽ hiển thị quá trình suy luận của Agent. Đối với câu hỏi "Thời tiết ở Thành phố Hồ Chí Minh ngày mai thế nào?", bạn sẽ thấy đại loại như sau:

> Entering new AgentExecutor chain...
I need to find out the current weather in Ho Chi Minh City for tomorrow.
Action: Current Search
Action Input: weather Ho Chi Minh City tomorrow
Observation: ... (Kết quả từ Google Search API về thời tiết) ...
Thought: I have the weather information. Now I can answer the question.
Final Answer: Theo thông tin tìm được, thời tiết ở Thành phố Hồ Chí Minh ngày mai sẽ là ... (dựa trên Observation).

> Finished chain.

Đây là minh chứng rõ ràng về cách LLM (Thought) quyết định sử dụng công cụ (Action), thực thi công cụ và xử lý kết quả (Observation) để đưa ra câu trả lời (Final Answer). Khả năng này biến LLM từ một "bộ não thụ động" thành một "tác nhân chủ động". Đây là một ví dụ cơ bản về AI công cụ.

Các Lưu Ý Quan Trọng Khi Phát Triển AI Assistant Với Công Cụ

  • Định nghĩa công cụ rõ ràng: Mỗi công cụ cần có một mô tả (description) rõ ràng, súc tích và chính xác. LLM dựa vào mô tả này để quyết định khi nào và làm thế nào để sử dụng công cụ. Tên công cụ (name) cũng phải dễ hiểu.
  • Xử lý lỗi và phản hồi: Các API bên ngoài có thể trả về lỗi hoặc dữ liệu không mong muốn. AI Assistant cần có cơ chế để xử lý các trường hợp này một cách duyên dáng, thông báo cho người dùng hoặc thử lại.
  • Quản lý API Key và bảo mật: Không bao giờ hardcode API keys trực tiếp vào code. Sử dụng biến môi trường hoặc các dịch vụ quản lý bí mật (secret management services) để bảo mật.
  • Chi phí và giới hạn API: Việc gọi các công cụ bên ngoài (đặc biệt là API có trả phí như OpenAI, Google Search) có thể phát sinh chi phí. Cần giám sát và tối ưu hóa số lượng cuộc gọi API.
  • Tính nhất quán của dữ liệu: Khi tích hợp nhiều công cụ, đảm bảo rằng dữ liệu giữa chúng có thể tương thích và nhất quán.
  • Khả năng giải thích và kiểm soát: Với các hệ thống phức tạp, việc hiểu tại sao AI lại đưa ra một quyết định hoặc sử dụng một công cụ cụ thể là rất quan trọng. Chế độ verbose=True trong LangChain là một ví dụ về cách theo dõi quá trình suy luận.
  • Tối ưu hóa Prompts: Prompt engineering đóng vai trò quan trọng trong việc hướng dẫn LLM sử dụng công cụ hiệu quả. Các prompt cần đủ chi tiết để LLM hiểu rõ mục đích và cách thức hoạt động của từng công cụ.
  • Xử lý trạng thái (Statefulness): Đối với các cuộc hội thoại kéo dài, AI Assistant cần duy trì trạng thái để nhớ các thông tin trước đó, giúp các hành động tiếp theo có ngữ cảnh.

So Sánh Các Phương Pháp Tích Hợp Công Cụ

Có nhiều cách để tích hợp công cụ với LLMs, mỗi cách có ưu và nhược điểm riêng:

  1. Hardcoded Logic (Logic được mã hóa cứng):
    • Ưu điểm: Đơn giản để triển khai cho các tác vụ cụ thể, hoàn toàn kiểm soát được.
    • Nhược điểm: Không linh hoạt, khó mở rộng. Nếu yêu cầu thay đổi, phải sửa code. LLM chỉ đóng vai trò xử lý ngôn ngữ đầu vào/đầu ra, không tham gia vào logic quyết định sử dụng công cụ.
    • Khi nào dùng: Khi bạn có một tập hợp rất nhỏ các tác vụ đã biết trước và không mong đợi sự linh hoạt cao.
  2. Function Calling (Tích hợp chức năng):
    • Ưu điểm: Một số LLM (như các mô hình của OpenAI) có khả năng "gọi hàm" tích hợp. Bạn mô tả các hàm có sẵn và LLM sẽ tự động tạo ra các đối số JSON để gọi hàm đó. Điều này giúp đơn giản hóa đáng kể quá trình điều phối.
    • Nhược điểm: Phụ thuộc vào khả năng của LLM cụ thể, có thể không đủ linh hoạt cho mọi trường hợp phức tạp.
    • Khi nào dùng: Khi sử dụng các LLM hỗ trợ chức năng gọi hàm và muốn một cách tiếp cận hiệu quả để LLM tự quyết định gọi công cụ.
  3. Agent Frameworks (LangChain, LlamaIndex):
    • Ưu điểm: Cung cấp một kiến trúc trừu tượng, linh hoạt để định nghĩa công cụ, lập kế hoạch và thực thi. Hỗ trợ nhiều loại Agent (ReAct, Plan-and-Execute, v.v.) cho các chiến lược suy luận khác nhau. Dễ dàng mở rộng với các công cụ tùy chỉnh.
    • Nhược điểm: Có thể phức tạp hơn để học và cấu hình ban đầu. Đôi khi có overhead về hiệu suất do quá trình suy luận phức tạp.
    • Khi nào dùng: Khi bạn muốn xây dựng một AI Assistant có khả năng cao, linh hoạt, có thể xử lý các yêu cầu đa bước và phức tạp, và dễ dàng mở rộng trong tương lai. Đây là cách tiếp cận được khuyến nghị cho hầu hết các dự án AI Assistant cá nhân.

Việc lựa chọn phương pháp phù hợp phụ thuộc vào độ phức tạp của dự án, các tài nguyên sẵn có và mức độ kiểm soát bạn muốn có đối với quá trình ra quyết định của AI.

Câu Hỏi Thường Gặp

Làm thế nào để AI Assistant biết nên sử dụng công cụ nào?

AI Assistant, đặc biệt là khi sử dụng các framework như LangChain hoặc tính năng Function Calling của LLM, quyết định sử dụng công cụ dựa trên mô tả của công cụ đó và ngữ cảnh của yêu cầu người dùng. Khi bạn định nghĩa một công cụ, bạn cung cấp một description chi tiết về chức năng của nó. LLM sẽ "đọc" mô tả này và, thông qua quá trình suy luận của nó, xác định công cụ nào phù hợp nhất để thực hiện nhiệm vụ được yêu cầu, sau đó tạo ra lệnh gọi công cụ với các tham số thích hợp.

Có thể tích hợp bao nhiêu công cụ vào một AI Assistant?

Về mặt lý thuyết, bạn có thể tích hợp rất nhiều công cụ. Tuy nhiên, số lượng công cụ thực tế mà một LLM có thể quản lý hiệu quả phụ thuộc vào kích thước ngữ cảnh (context window) của LLM và độ phức tạp của các mô tả công cụ. Càng nhiều công cụ, LLM càng cần nhiều "không gian" trong context window để đọc và hiểu tất cả các mô tả, điều này có thể ảnh hưởng đến hiệu suất và chi phí. Quan trọng hơn là chất lượng và sự rõ ràng của mô tả công cụ, không phải số lượng.

Làm cách nào để đảm bảo AI Assistant cung cấp thông tin chính xác?

Độ chính xác của thông tin đầu ra từ AI Assistant được tăng cường công cụ phụ thuộc rất nhiều vào chất lượng của các công cụ mà nó sử dụng. Nếu công cụ tìm kiếm web trả về thông tin sai lệch, hoặc API cơ sở dữ liệu có dữ liệu lỗi thời, thì AI Assistant sẽ sử dụng thông tin đó để tạo phản hồi sai. Do đó, việc lựa chọn các công cụ đáng tin cậy, cập nhật và có khả năng xử lý lỗi tốt là cực kỳ quan trọng. Ngoài ra, việc thiết kế các prompt hiệu quả để khuyến khích LLM kiểm tra chéo thông tin hoặc yêu cầu xác nhận từ người dùng cũng có thể giúp cải thiện độ chính xác.

Việc xây dựng AI Assistant cá nhân có yêu cầu kiến thức lập trình chuyên sâu không?

Để xây dựng một AI Assistant cá nhân có khả năng sử dụng công cụ, bạn cần có kiến thức lập trình cơ bản đến trung cấp, đặc biệt là về Python và cách làm việc với API. Các framework như LangChain giúp trừu tượng hóa nhiều phức tạp, nhưng bạn vẫn cần hiểu về luồng dữ liệu, cách định nghĩa hàm, xử lý lỗi và quản lý biến môi trường. Với sự phát triển của các công cụ no-code/low-code, việc xây dựng các trợ lý đơn giản có thể trở nên dễ tiếp cận hơn trong tương lai, nhưng để tùy chỉnh và mở rộng, kiến thức lập trình vẫn là cần thiết.

Kết Luận

Xây dựng một AI Assistant cá nhân có khả năng tương tác với các công cụ thực tế là một bước tiến quan trọng trong lĩnh vực phát triển AI. Nó biến các mô hình ngôn ngữ từ những "bộ não" thụ động thành những "tác nhân" chủ động, có khả năng thực hiện hành động và giải quyết các vấn đề phức tạp trong thế giới số. Bằng cách kết hợp sức mạnh của LLMs với các API và dịch vụ bên ngoài thông qua các framework như LangChain, chúng ta có thể tạo ra những trợ lý thực sự thông minh, linh hoạt và hữu ích.

Hành trình này đòi hỏi sự hiểu biết về kiến trúc, kỹ năng lập trình và khả năng tối ưu hóa. Tuy nhiên, với các công cụ và tài nguyên hiện có, việc này ngày càng trở nên khả thi hơn cho các nhà phát triển. Hy vọng bài viết này đã cung cấp cho bạn một cái nhìn tổng quan và những bước đi đầu tiên để bắt đầu hành trình xây dựng AI Assistant cá nhân của riêng mình. Hãy tiếp tục khám phá và sáng tạo cùng vibe coding để biến những ý tưởng AI của bạn thành hiện thực!

Chia sẻ:

Câu hỏi thường gặp

Làm thế nào để AI Assistant biết nên sử dụng công cụ nào?
AI Assistant, đặc biệt là khi sử dụng các framework như LangChain hoặc tính năng Function Calling của LLM, quyết định sử dụng công cụ dựa trên mô tả của công cụ đó và ngữ cảnh của yêu cầu người dùng. Khi bạn định nghĩa một công cụ, bạn cung cấp một description chi tiết về chức năng của nó. LLM sẽ "đọc" mô tả này và, thông qua quá trình suy luận của nó, xác định công cụ nào phù hợp nhất để thực hiện nhiệm vụ được yêu cầu, sau đó tạo ra lệnh gọi công cụ với các tham số thích hợp.
Có thể tích hợp bao nhiêu công cụ vào một AI Assistant?
Về mặt lý thuyết, bạn có thể tích hợp rất nhiều công cụ. Tuy nhiên, số lượng công cụ thực tế mà một LLM có thể quản lý hiệu quả phụ thuộc vào kích thước ngữ cảnh (context window) của LLM và độ phức tạp của các mô tả công cụ. Càng nhiều công cụ, LLM càng cần nhiều "không gian" trong context window để đọc và hiểu tất cả các mô tả, điều này có thể ảnh hưởng đến hiệu suất và chi phí. Quan trọng hơn là chất lượng và sự rõ ràng của mô tả công cụ, không phải số lượng.
Làm cách nào để đảm bảo AI Assistant cung cấp thông tin chính xác?
Độ chính xác của thông tin đầu ra từ AI Assistant được tăng cường công cụ phụ thuộc rất nhiều vào chất lượng của các công cụ mà nó sử dụng. Nếu công cụ tìm kiếm web trả về thông tin sai lệch, hoặc API cơ sở dữ liệu có dữ liệu lỗi thời, thì AI Assistant sẽ sử dụng thông tin đó để tạo phản hồi sai. Do đó, việc lựa chọn các công cụ đáng tin cậy, cập nhật và có khả năng xử lý lỗi tốt là cực kỳ quan trọng. Ngoài ra, việc thiết kế các prompt hiệu quả để khuyến khích LLM kiểm tra chéo thông tin hoặc yêu cầu xác nhận từ người dùng cũng có thể giúp cải thiện độ chính xác.
Việc xây dựng AI Assistant cá nhân có yêu cầu kiến thức lập trình chuyên sâu không?
Để xây dựng một AI Assistant cá nhân có khả năng sử dụng công cụ, bạn cần có kiến thức lập trình cơ bản đến trung cấp, đặc biệt là về Python và cách làm việc với API. Các framework như LangChain giúp trừu tượng hóa nhiều phức tạp, nhưng bạn vẫn cần hiểu về luồng dữ liệu, cách định nghĩa hàm, xử lý lỗi và quản lý biến môi trường. Với sự phát triển của các công cụ no-code/low-code, việc xây dựng các trợ lý đơn giản có thể trở nên dễ tiếp cận hơn trong tương lai, nhưng để tùy chỉnh và mở rộng, kiến thức lập trình vẫn là cần thiết.
MỤC LỤC
MỤC LỤC