Function calling (LLM) (VI)

From Systems analysis Wiki
Jump to navigation Jump to search

Function Calling (Gọi hàm) — là một cơ chế trong các mô hình ngôn ngữ lớn (LLM), cho phép mô hình tương tác với các công cụ bên ngoài và API bằng cách tạo ra dữ liệu có cấu trúc (thường là JSON) để gọi các hàm thay vì trả lời trực tiếp bằng văn bản[1].

Nói cách khác, dựa trên yêu cầu của người dùng, mô hình xác định hàm nào trong tập hợp đã cho cần được gọi và với những tham số nào. Cơ chế này mở rộng phạm vi ứng dụng của LLM, cho phép chúng đóng vai trò là giao diện giữa ngôn ngữ tự nhiên và các hành động thực tế. Điều này mở ra khả năng tích hợp AI với các hệ thống bên ngoài: mô hình có thể truy vấn dữ liệu cập nhật, thực hiện các thao tác hoặc sử dụng các dịch vụ, điều này đặc biệt có giá trị khi xây dựng các trợ lý thông minh và các tác nhân tự trị. Việc sử dụng các công cụ bên ngoài cũng giảm thiểu nguy cơ ảo giác (các sự kiện bịa đặt) nhờ việc tham chiếu đến các nguồn đáng tin cậy[2].

Lịch sử và các phương pháp triển khai

Các phương pháp ban đầu (prompting và Toolformer)

Ý tưởng dạy các mô hình ngôn ngữ gọi công cụ được hình thành vào các năm 2022–2023. Các phương pháp ban đầu dựa trên kỹ thuật prompting phức tạp. Vào năm 2022, sơ đồ ReAct được đề xuất, trong đó mô hình trong quá trình hội thoại xen kẽ giữa suy luận và hành động (gọi công cụ), được mã hóa trong một văn bản duy nhất.

Bước đột phá quan trọng là sự xuất hiện của mô hình Toolformer, được các nhà nghiên cứu của Meta giới thiệu vào đầu năm 2023. Toolformer đã chứng minh rằng LLM có thể được fine-tuning đặc biệt để tự gọi các công cụ bên ngoài (máy tính, công cụ tìm kiếm, lịch) dựa trên các gợi ý văn bản, chèn các token gọi API đặc biệt vào văn bản được tạo ra[3].

Hỗ trợ chính thức và phát triển

Một mốc quan trọng được đánh dấu bởi OpenAI, công ty vào tháng 6 năm 2023 đã chính thức tích hợp hỗ trợ Function Calling vào API của mình cho các mô hình GPT-3.5 và GPT-4[4]. Các phiên bản mô hình mới được fine-tuning để nhận biết các tình huống khi yêu cầu của người dùng ngụ ý việc gọi một hàm bên ngoài, và tạo ra một đối tượng JSON được cấu trúc chính xác với các đối số. OpenAI gọi khả năng này là "cách mới để kết nối GPT đáng tin cậy với các công cụ và API bên ngoài".

Các sáng kiến mã nguồn mở

Sau các triển khai thương mại, các mô hình mã nguồn mở được fine-tuning để tạo ra các lời gọi hàm chính xác đã xuất hiện.

  • Gorilla: Dự án của UC Berkeley, một phiên bản fine-tuning của LLaMA, có khả năng tạo ra các lời gọi tới hàng nghìn API khác nhau. Để đánh giá các mô hình như vậy, benchmark Berkeley Function-Calling Leaderboard đã được tạo ra[5].
  • ToolAlpaca, ToolLLaMA, Hermes: Các dòng mô hình mã nguồn mở được fine-tuning trên các ví dụ tổng hợp về lời gọi hàm, thường được tạo ra bởi các mô hình mạnh hơn.

Cơ chế hoạt động

Quá trình sử dụng Function Calling thường bao gồm một số bước:

  1. Định nghĩa hàm. Nhà phát triển xác định trước tập hợp các hàm có sẵn cho mô hình (ví dụ: các API bên ngoài) và mô tả chữ ký cũng như mục đích của chúng, thường ở định dạng JSON Schema.
  2. Phân tích yêu cầu. Trong quá trình hội thoại, mô hình phân tích ý định của người dùng và tự quyết định xem có nên gọi một trong các hàm đã định nghĩa để trả lời hay không.
  3. Tạo lời gọi. Nếu cần thực hiện một hành động, LLM thay vì văn bản thông thường sẽ tạo ra một đầu ra có cấu trúc đặc biệt (ví dụ: JSON với tên hàm và các đối số). Nếu không cần gọi, mô hình trả về phản hồi văn bản thông thường.
  4. Thực thi hàm. Chương trình bên ngoài (vỏ bọc chatbot hoặc tác nhân) nhận JSON, thực hiện lời gọi thực tế đến hàm được chỉ định với các tham số đề xuất và truyền kết quả trở lại mô hình.
  5. Tạo phản hồi cuối cùng. Mô hình sử dụng dữ liệu nhận được để tạo ra câu trả lời cuối cùng cho người dùng[4].

Để quản lý quá trình nhiều bước này trong quá trình huấn luyện mô hình, các định dạng hội thoại đặc biệt được sử dụng, ví dụ: đánh dấu ChatML từ OpenAI, trong đó ngoài các vai trò "người dùng" và "trợ lý", vai trò "hàm" được giới thiệu để truyền kết quả lời gọi.

Ứng dụng và lợi ích

Khả năng gọi hàm mở rộng đáng kể phạm vi các tác vụ có thể giải quyết bằng LLM.

  • Tích hợp với các API bên ngoài. Mô hình có thể trả lời các yêu cầu cần thông tin cập nhật bằng cách gọi các dịch vụ bên ngoài (ví dụ: để lấy thời tiết, tỷ giá ngoại tệ, tin tức).
  • Tự động hóa các hành động của người dùng. LLM có thể thực hiện các tác vụ thường xuyên: gửi email, tạo sự kiện trong lịch, đặt hàng tại các cửa hàng trực tuyến.
  • Truy cập cơ sở dữ liệu và phân tích. Các yêu cầu bằng ngôn ngữ tự nhiên có thể được chuyển đổi thành lời gọi API nội bộ hoặc truy vấn SQL để trích xuất và phân tích dữ liệu.
  • Trích xuất thông tin có cấu trúc. LLM có thể tự trích xuất các sự kiện từ văn bản dài (ví dụ: tên, ngày tháng, địa chỉ) và trả về chúng dưới dạng mảng JSON có cấu trúc, thuận tiện cho việc xử lý lập trình tiếp theo.

Các vấn đề bảo mật

Khi mở rộng khả năng của mô hình, Function Calling đồng thời mang lại các rủi ro mới.

  • Đầu ra chưa được xác minh. Sự tương tác của mô hình với các công cụ bên ngoài phải được bảo vệ cẩn thận. Nếu mô hình nhận được giá trị độc hại hoặc sai lệch từ API, nó có thể đưa giá trị đó vào câu trả lời hoặc gọi một hàm khác dựa trên nó, dẫn đến các hậu quả khó lường.
  • Tấn công thông qua đối số hàm. Các nhà nghiên cứu đã phát hiện ra các lỗ hổng đặc thù của chế độ Function Calling. Vào năm 2025, một cuộc tấn công được mệnh danh là "Mặt tối của Function Calling" đã được trình diễn. Bản chất của nó là đề xuất cho mô hình một "hàm" đặc biệt, bên trong các đối số của nó ẩn chứa một lệnh bị cấm (jailbreak payload). Mô hình, tuân theo nguyên tắc gọi hàm, tạo ra các đối số chứa nội dung vi phạm quy tắc và do đó vượt qua các bộ lọc kiểm duyệt. Thử nghiệm cho thấy cuộc tấn công thành công trong hơn 90% trường hợp trên sáu mô hình hiện đại, bao gồm GPT-4 và Claude[2].

Để ngăn chặn các sự cố như vậy, khuyến nghị chỉ cung cấp cho mô hình các công cụ đáng tin cậy, triển khai xác nhận của người dùng trước khi thực hiện các hành động quan trọng, cũng như sử dụng các prompt "phòng thủ" đặc biệt và kiểm tra nghiêm ngặt các đối số để phát hiện nội dung nguy hiểm.

Liên kết

  • Thông báo chính thức về Function Calling từ OpenAI
  • Trang dự án Gorilla LLM
  • Apideck (2024). An Introduction to Function Calling and Tool Use. Apideck Blog.
  • LangChain (2025). Tool Calling (Documentation). LangChain Docs.
  • Mistral AI (2025). Function Calling – Documentation. Mistral Docs.
  • Hopsworks (2024). What is Function Calling with LLMs?. Hopsworks Dictionary.
  • Hopsworks (2024). Unlocking the Power of Function Calling with LLMs. Hopsworks Blog.
  • University of California, Berkeley (2025). Berkeley Function Calling Leaderboard V3. Online Resource.

Tài liệu tham khảo

  • Wu, Z. et al. (2025). The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models. ACL 2025.
  • OpenAI (2023). Function Calling and Other API Updates. OpenAI Blog.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
  • Liu, W. et al. (2024). ToolACE: Winning the Points of LLM Function Calling. arXiv:2409.00920.
  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.

Chú thích

  1. «What is Function Calling with LLMs?». Hopsworks. [1]
  2. 2.0 2.1 Wu, Z. et al. «The Dark Side of Function Calling: Pathways to Jailbreaking Large Language Models». Proceedings of the 2025 Conference on Empirical Methods in Natural Language Processing, 2025. [2]
  3. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv:2302.04761, 2023. [3]
  4. 4.0 4.1 «Function calling and other API updates». OpenAI, 2023. [4]
  5. «Gorilla: Large Language Model Connected to Massive APIs». University of California, Berkeley. [5]