# Function calling

## 1. Mô tả tính năng

Tính năng function calling cho phép người dùng có thể kết nối với dữ liệu từ bên ngoài hoặc lấy thông tin người dùng sử dụng chatbot

## 2. Cách sử dụng

### 1. Truy cập https://mindmaid.ai và đăng nhập tài khoản của bạn

<figure><img src="https://2689032055-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6blRTHwND7G0Pnu8iqQq%2Fuploads%2F4AA5qW4WpYqHAaG6y54g%2Fimage.png?alt=media&#x26;token=a8afec98-b69d-4e86-a1bb-68862cbf7c98" alt=""><figcaption></figcaption></figure>

### 2. Chọn vào bot muốn sử dụng

<figure><img src="https://2689032055-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6blRTHwND7G0Pnu8iqQq%2Fuploads%2FALWEHjDwnX1vnuIwV3VV%2Fimage.png?alt=media&#x26;token=82e5985f-93fd-4d78-ad16-cf1d9b9e527e" alt=""><figcaption></figcaption></figure>

### 3. Chọn vào tính năng "Function calling"

**Function tool**

* Trong menu cài đặt "Function tool" gọi tắt là FT có thể tùy chọn tạo một FT hoặc nhiều FT để thực hiện các tác vụ đặc biệt ví dụ như: Lấy số điện thoại, email người dùng nhập vào, ...
* Một FT có thể viết như sau:

```
{
  "name": "mindmaid_phone_email", # Tên của Function
  "description": "Get name or phone number or email address of the user", # Mô tả Function
  "parameters": {
    "type": "object", # Loại parameter nên để mặc định object
    "required": [ # Yêu cầu các trường nào bắt buộc phải có dữ liệu ở đây là location
      "location"
    ],
    "properties": { # Chi tiết các trường thông tin cần lấy
      "name": { # Tên (Cần viết tiếng anh không dấu và cách nhau bằng _)
        "type": "string", # Loại dữ liệu của trường ở đây là string
        "description": "the name of the user" # Mô tả trường dữ liệu này là gì (càng chi tiết càng tốt và nên có ví dụ)
      },
      "email": { 
        "type": "string",
        "description": "the email address of the user"
      },
      "phone": {
        "type": "string",
        "description": "The phone number of Vietnamese"
      }
    }
  }
}
```

* Lưu ý name của function tool không nên viết trùng nhau khi function calling cho một bot

**Actions**

* Action là một tính năng giúp chatbot có thể dựa vào Function tool để từ đó tương tác với dữ liệu bên ngoài qua API
* Để Action hoạt động bắt buộc bạn phải có Function tool trước đó
*   Nhập các thông tin cần thiết của Action:

    * Tên hàm: Ở đây cần chọn tên hàm là một trong các function calling đã tạo trước đó
    * Địa chỉ API: Là địa chỉ API bên ngoài của bạn mà gpts sẽ sử dụng
    * Phương thức call API: Là phương thức gọi API của bạn ví dụ: GET hoặc POST
    * API Key: Là Key của API nếu có (có thể để trống nếu API không yêu cầu)
    * Loại xác thực: Là loại xác thực API của bạn ở đây hỗ trợ 2 kiểu là Bearer/API Key nếu có (có thể để trống nếu API không yêu cầu)
    * Template trả lời: Là mẫu hướng dẫn gpts trả lời mặc định nếu không muốn sử dụng dữ liệu đầu ra của API làm context trả lời

    <figure><img src="https://2689032055-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F6blRTHwND7G0Pnu8iqQq%2Fuploads%2FL2e2L4LP71lvx0A0pd7T%2Fimage.png?alt=media&#x26;token=a1538500-bbee-4b45-8b71-8ef39d701e43" alt=""><figcaption></figcaption></figure>



Sau khi điền xong, bấm **Xác nhận** để lưu lại cài đặt của bot về Function calling

### Lúc này bạn chat với bot sẽ dựa vào Function tool và Actions tương ứng để lấy dữ liệu từ API của Action để trả lời



\


> Lưu ý:
>
> * Nếu action không hoạt động thì mặc định dữ liệu đầu ra của action sẽ là template trả về nếu có cài đặt hoặc nếu không có template trả lời thì sẽ mặc định là dữ liệu trống.
