Giới thiệu về Function Calling - Mở rộng khả năng của LLM

Huy Võ
function calling
function_calling
generative ai
llm
chatbot
tri tue nhan tao
ung dung ai
Giới thiệu về Function Calling - Mở rộng khả năng của LLM

Nhuợc điểm cơ bản của LLM

Như chúng ta đã biết, mặc dù LLM rất thông minh, nhưng nó có giới hạn về kiến thức, không giỏi toán, cũng như… không có khả năng tương tác với thế giới bên ngoài. Nó giống nhu một bộ não, có mắt để nhìn, miệng để nói, nhưng không có tay chân để cầm nắm, làm việc.

Vậy ta cần làm gì để mở rộng khả năng của LLM? Nếu nó không có tay chân, có thể… gắn tay chân cho nó, hoặc đơn giản hơn, dựa theo kết quả của LLM để tương tác với thế giới bên ngoài.

Ở đây, tay chân của LLM chính là function (hàm)/ tool (công cụ). Những hàm này có thể là hàm làm toán, hàm gọi API lấy dữ liệu thời tiết, gọi API dể đặt hàng online, v.v.

title

Kĩ thuật sử dụng LLM để phân tích câu hỏi, yêu cầu từ ngôn ngữ tự nhiên, để gọi các hàm/công cụ bên ngoài gọi là Function Calling/Tool Use.

Vậy Function Calling hoạt động như thế nào?

Để đơn giản, từ giờ cho tới cuối bài bọn mình sẽ dùng khái niệm Function Calling để chỉ kĩ thuật sử dụng LLM để gọi các hàm/công cụ bên ngoài. Các ban search trên Google thì 2 từ khoá này cũng khá giống nhau, nên có thể dùng từ nào cũng được.

Function-calling là khả năng để LLM hiểu một câu hỏi/yêu cầu từ ngôn ngữ tự nhiên, và đưa ra quyết định để gọi hàm, dựa trên các mô tả được cung cấp.

lifetime

Quá trình này bao gồm một số bước như hình trên.

  1. Đầu tiên, client (code của bạn) cung cấp cho LLM một danh sách các function có sẵn, mỗi hàm đi kèm với một mô tả chi tiết và các tham số cần thiết.

  2. Khi LLM nhận được một prompt, nó sẽ phân tích câu hỏi bằng ngôn ngữ tự nhiên để hiểu ý định của người dùng.

    Tiếp theo, LLM sẽ xem xét danh sách các hàm có sẵn và mô tả của chúng để xác định hàm nào phù hợp nhất với câu hỏi.

  3. LLM sau đó sẽ tạo ra một câu trả lời, chỉ định hàm nào cần gọi và tham số của hàm đó.

  4. Code của bạn sẽ gọi hàm đó với các tham số được chỉ định.

  5. Đưa prompt và toàn bộ kết quả cho LLM, để nó hiển thị kết quả về cho người dùng

Nói nôm na, function calling/tool use giúp bạn tích hợp sự thông minh của LLM để chuyển đổi yêu cầu từ trong prompt thành tên hàm + tham số để tích hợp với các hệ thống/API khác. Việc tích hợp sẽ do bạn tự code, còn việc hiểu yêu cầu thì do LLM lo.

Ví dụ về Function Calling

Ví dụ, nếu bạn có câu hỏi là “Thời tiết ở Hà Nội hôm nay thế nào?”, LLM sẽ… bó tay, vì điều đó không có trong dữ liệu đã học, mà LLM cũng không có khả năng tìm kiếm trên internet.

Thay vì làm vậy, với function calling ta sẽ làm như sau:

  1. Đưa cho LLM câu hỏi Thời tiết ở Hà Nội hôm nay thế nào?

    Đưa cho nó thêm danh sách function có thể dùng:

    • get_current_weather(location: string, unit: 'celsius' | 'fahrenheit')
    • get_stock_price(symbol: string)
    • view_website(url: string)
  2. Lúc này, LLM sẽ đọc, phân tích câu hỏi và ngữ cảnh.

  3. Sau đó, LLM hiểu là người dùng muốn biết thông tin thời tiết. Trong số các hàm đưa vào, có 1 hàm để lấy thông tin thời tiết. Nó sẽ trả về kết quả: Dùng hàm get_current_weather, với các arguments là (location: 'Hà Nội', unit: 'celsius').

  4. Ta sẽ viết code giúp LLM gọi hàm này, lấy được thời tiết ở Hà Nội là Trời rét vãi nôi, 7 độ C.

  5. Tiếp tục gửi kết quả này cho LLM, để nó trả về kết quả cho người dùng là

Thời tiết ở Hà Nội hôm nay.
Trời rét vãi nôi, 7 độ C.
Nhưng các em gái vẫn diện quần đùi váy ngắn tung tăng dạo phố!

example

Tầm quan trọng của Function Calling

Function Calling giúp mở rộng khả năng của LLM rất nhiều. Nó cải thiện những vấn đề như hallucination, giúp LLM trở thành bộ não, tích hợp đuợc với nhiều hệ thống, chứ không chỉ là chatbot đơn thuần.

Function-calling cho phép ta làm những việc như:

  • Sử dụng hiệu quả các công cụ bên ngoài để lấy dữ liệu, cải thiện độ tin cậy và giảm sự ảo tưởng.
  • Chuyển đổi ngôn ngữ tự nhiên thành tool/API call.
    • Ví dụ, bạn có thể dùng function calling kết hợp với API để lưu note, đặt lịch hẹn, mua hàng…
    • Bản thân app ChatGPT cũng có rât nhiều tool như: Draw tool để vẽ bằng Dall-E. Note tool để lưu và tóm tắt hội thoại.
    • Do vậy, bạn thấy ChatGPT có thể vẽ hình, nhớ nội dung trò chuyện.
  • Sử dụng LLM để trích xuất dữ liệu, biến dữ liêu phi cấu trúc (Ảnh, văn bản) thành dữ liệu có cấu trúc. Ví dụ như trích xuất tên/kinh nghiệm từ CV thành dạng JSON để lưu trữ.

Tạm kết

Túm cái quần lại, Function Calling là một kĩ thuật mạnh mẽ để mở rộng khả năng của LLM, giúp nó tương tác với thế giới bên ngoài một cách hiệu quả hơn.

Facebook Messenger

fb.com/toidicodedao

Email Support

[email protected]

Telegram

t.me/hoccodeai