Gọi hàm

Các hàm tuỳ chỉnh có thể được xác định và cung cấp cho một mô hình AI tạo sinh bằng cách sử dụng lệnh gọi hàm. Mô hình này không trực tiếp gọi các hàm này mà tạo dữ liệu đầu ra có cấu trúc chỉ định tên hàm và các đối số đề xuất. Kết quả này cho phép gọi các API bên ngoài và đầu ra API thu được sau đó có thể được tích hợp trở lại mô hình, cho phép phản hồi truy vấn toàn diện hơn. Lệnh gọi hàm cho phép các LLM tương tác với thông tin theo thời gian thực và nhiều dịch vụ, chẳng hạn như cơ sở dữ liệu, hệ thống quản lý quan hệ khách hàng và kho lưu trữ tài liệu, nâng cao khả năng đưa ra câu trả lời phù hợp và theo ngữ cảnh.

Cách hoạt động của tính năng gọi hàm

Các hàm được mô tả bằng cách khai báo hàm. Sau khi bạn truyền danh sách các nội dung khai báo hàm trong truy vấn đến mô hình ngôn ngữ, mô hình đó sẽ trả về một đối tượng ở định dạng giản đồ tương thích với OpenGL bao gồm tên các hàm và đối số của các hàm đó, đồng thời cố gắng trả lời truy vấn của người dùng bằng một trong các hàm được trả về. Mô hình ngôn ngữ tìm hiểu mục đích của một hàm bằng cách phân tích nội dung khai báo hàm. Mô hình này không thực sự gọi hàm này. Thay vào đó, nhà phát triển sử dụng đối tượng giản đồ tương thích OpenAPI trong phản hồi để gọi hàm mà mô hình trả về.

Khi triển khai lệnh gọi hàm, bạn sẽ tạo một hoặc nhiều nội dung khai báo hàm, sau đó thêm các nội dung khai báo hàm vào đối tượng tools đã được truyền đến mô hình. Mỗi phần khai báo hàm chứa thông tin về một hàm bao gồm các thông tin sau:

  • Tên chức năng
  • Các tham số hàm ở định dạng giản đồ tương thích với OpenAPI. Một tập hợp con chọn lọc được hỗ trợ. Khi sử dụng curl, giản đồ này được chỉ định bằng JSON.
  • Mô tả hàm (không bắt buộc). Để đạt được kết quả tốt nhất, bạn nên thêm nội dung mô tả.

Tài liệu này bao gồm các ví dụ về lệnh curl để thực hiện lệnh gọi REST bằng lớp GenerativeModel và các phương thức của lớp đó.

Mô hình được hỗ trợ

Các mô hình sau đây hỗ trợ gọi hàm:

  • gemini-1.0-pro
  • gemini-1.0-pro-001
  • gemini-1.5-pro-latest

Chế độ gọi hàm

Bạn có thể sử dụng chế độ gọi hàm để xác định hành vi thực thi cho lệnh gọi hàm. Có 3 chế độ:

  • AUTO: Hành vi mặc định của mô hình. Mô hình này quyết định dự đoán một lệnh gọi hàm hoặc phản hồi bằng ngôn ngữ tự nhiên.
  • ANY: Mô hình này bị buộc phải luôn dự đoán một lệnh gọi hàm. Nếu allowed_function_names không được cung cấp, mô hình sẽ chọn từ tất cả các nội dung khai báo hàm hiện có. Nếu allowed_function_names được cung cấp, mô hình sẽ chọn từ tập hợp các hàm được phép.
  • NONE: Mô hình này sẽ không dự đoán lệnh gọi hàm. Trong trường hợp này, hành vi của mô hình giống như khi bạn không truyền bất kỳ nội dung khai báo hàm nào.

Bạn cũng có thể truyền một tập hợp allowed_function_names mà khi được cung cấp sẽ giới hạn các hàm mà mô hình sẽ gọi. Bạn chỉ nên đưa vào allowed_function_names khi chế độ này là ANY. Tên hàm phải khớp với tên khai báo hàm. Khi chế độ được đặt thành ANYallowed_function_names được đặt, mô hình này sẽ dự đoán lệnh gọi hàm từ tập hợp tên hàm đã cung cấp.

Dưới đây là một phần của yêu cầu mẫu sẽ đặt chế độ thành ANY và chỉ định danh sách các hàm được phép:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

Hàm gọi mẫu cURL

Khi bạn sử dụng cURL, thông tin về hàm và tham số sẽ được đưa vào phần tử tools. Mỗi nội dung khai báo hàm trong phần tử tools đều chứa tên hàm, các tham số của hàm được chỉ định bằng giản đồ tương thích OpenAPI và nội dung mô tả hàm. Các mẫu sau đây minh hoạ cách sử dụng lệnh curl khi gọi hàm:

Mẫu curl một vòng

Lượt một vòng là khi bạn gọi cho mô hình ngôn ngữ một lần. Với lệnh gọi hàm, trường hợp sử dụng một lượt có thể là khi bạn cung cấp cho mô hình một truy vấn ngôn ngữ tự nhiên và danh sách hàm. Trong trường hợp này, mô hình sẽ sử dụng phần khai báo hàm, bao gồm tên, tham số và nội dung mô tả hàm, để dự đoán hàm nào cần gọi và các đối số cần gọi.

Mẫu curl sau đây là một ví dụ về cách truyền nội dung mô tả về một hàm trả về thông tin về vị trí đang chiếu phim. Một số nội dung khai báo hàm được đưa vào yêu cầu, chẳng hạn như find_moviesfind_theaters.

Yêu cầu mẫu curl gọi hàm một lượt quay

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "Which theaters in Mountain View show Barbie movie?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ]
}'
    

Phản hồi cho ví dụ về lệnh curl này có thể tương tự như sau.

Phản hồi mẫu gọi hàm một lượt gọi curl

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "movie": "Barbie",
                "location": "Mountain View, CA"
              }
            }
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 9,
    "totalTokenCount": 9
  }
}]
    

Ví dụ về một ngã rẽ ở chế độ BẤT KỲ

Ví dụ về lệnh curl sau đây tương tự như ví dụ về một lượt, nhưng nó đặt chế độ thành ANY:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY"
  },
}

Gọi hàm một lượt bằng chế độ BẤT KỲ (yêu cầu)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY"
    },
  }
}'
    

Câu trả lời có thể tương tự như sau:

Gọi hàm một lượt bằng chế độ BẤT KỲ (phản hồi)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "",
                "location": "North Seattle, WA"
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

Ví dụ về một lượt sử dụng chế độ BẤT KỲ và hàm được phép nào

Ví dụ về lệnh curl sau đây tương tự như ví dụ về một lượt, nhưng nó đặt chế độ thành ANY và bao gồm danh sách các hàm được cho phép:

"tool_config": {
  "function_calling_config": {
    "mode": "ANY",
    "allowed_function_names": ["find_theaters", "get_showtimes"]
  },
}

Gọi hàm một lượt bằng chế độ BẤT KỲ và các hàm được cho phép (yêu cầu)

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": {
      "role": "user",
      "parts": {
        "text": "What movies are showing in North Seattle tonight?"
    }
  },
  "tools": [
    {
      "function_declarations": [
        {
          "name": "find_movies",
          "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "description": {
                "type": "string",
                "description": "Any kind of description including category or genre, title words, attributes, etc."
              }
            },
            "required": [
              "description"
            ]
          }
        },
        {
          "name": "find_theaters",
          "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              }
            },
            "required": [
              "location"
            ]
          }
        },
        {
          "name": "get_showtimes",
          "description": "Find the start times for movies playing in a specific theater",
          "parameters": {
            "type": "object",
            "properties": {
              "location": {
                "type": "string",
                "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
              },
              "movie": {
                "type": "string",
                "description": "Any movie title"
              },
              "theater": {
                "type": "string",
                "description": "Name of the theater"
              },
              "date": {
                "type": "string",
                "description": "Date for requested showtime"
              }
            },
            "required": [
              "location",
              "movie",
              "theater",
              "date"
            ]
          }
        }
      ]
    }
  ],
  "tool_config": {
    "function_calling_config": {
      "mode": "ANY",
      "allowed_function_names": ["find_theaters", "get_showtimes"]
    },
  }
}'
    

Mô hình này không thể dự đoán hàm find_movies vì hàm này không có trong danh sách các hàm được phép, vì vậy, mô hình này dự đoán một hàm khác. Phản hồi có thể tương tự như sau:

Gọi hàm một lượt bằng chế độ BẤT KỲ và các hàm được cho phép (phản hồi)

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_theaters",
              "args": {
                "location": "North Seattle, WA",
                "movie": null
              }
            }
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HARASSMENT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
        "probability": "NEGLIGIBLE"
      }
    ]
  }
}
    

Ví dụ về cuộn mình nhiều vòng

Bạn có thể triển khai tình huống gọi hàm nhiều lượt bằng cách làm như sau:

  1. Nhận phản hồi cho lệnh gọi hàm bằng cách gọi mô hình ngôn ngữ. Đây là ngã rẽ đầu tiên.
  2. Gọi mô hình ngôn ngữ bằng cách sử dụng phản hồi lệnh gọi hàm từ lượt đầu tiên và phản hồi của hàm bạn nhận được khi gọi hàm đó. Đây là ngã rẽ thứ hai.

Phản hồi ở lượt thứ hai tóm tắt kết quả để trả lời truy vấn của bạn trong lượt đầu tiên hoặc chứa lệnh gọi hàm thứ hai mà bạn có thể sử dụng để biết thêm thông tin cho truy vấn của mình.

Chủ đề này bao gồm hai ví dụ về curl nhiều lượt:

Ví dụ về Curl sử dụng câu trả lời từ ngã rẽ trước

Mẫu curl sau đây gọi hàm và các đối số mà ví dụ một lượt trả về trước đó để nhận phản hồi. Phương thức và tham số mà ví dụ một lượt trả về sẽ có trong tệp JSON này.

"functionCall": {
  "name": "find_theaters",
  "args": {
    "movie": "Barbie",
    "location": "Mountain View, CA"
  }
}

Yêu cầu mẫu curl gọi hàm nhiều lượt quay

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "function",
    "parts": [{
      "functionResponse": {
        "name": "find_theaters",
        "response": {
          "name": "find_theaters",
          "content": {
            "movie": "Barbie",
            "theaters": [{
              "name": "AMC Mountain View 16",
              "address": "2000 W El Camino Real, Mountain View, CA 94040"
            }, {
              "name": "Regal Edwards 14",
              "address": "245 Castro St, Mountain View, CA 94040"
            }]
          }
        }
      }
    }]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "find_movies",
      "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "description": {
            "type": "STRING",
            "description": "Any kind of description including category or genre, title words, attributes, etc."
          }
        },
        "required": ["description"]
      }
    }, {
      "name": "find_theaters",
      "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          }
        },
        "required": ["location"]
      }
    }, {
      "name": "get_showtimes",
      "description": "Find the start times for movies playing in a specific theater",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          },
          "theater": {
            "type": "STRING",
            "description": "Name of the theater"
          },
          "date": {
            "type": "STRING",
            "description": "Date for requested showtime"
          }
        },
        "required": ["location", "movie", "theater", "date"]
      }
    }]
  }]
}'
    

Phản hồi cho ví dụ về lệnh curl này bao gồm kết quả của việc gọi phương thức find_theaters. Câu trả lời có thể tương tự như sau:

Phản hồi mẫu khi gọi hàm nhiều lượt quay

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
          }
        ]
      }
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 9,
    "candidatesTokenCount": 27,
    "totalTokenCount": 36
  }
}
    

Ví dụ về Curl gọi một mô hình ngôn ngữ nhiều lần

Ví dụ về lệnh curl sau đây gọi mô hình ngôn ngữ nhiều lần để gọi một hàm. Mỗi lần gọi hàm, mô hình này có thể sử dụng một hàm khác để trả lời một truy vấn khác của người dùng trong yêu cầu.

Yêu cầu mẫu curl gọi hàm nhiều lượt quay

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$API_KEY \
  -H 'Content-Type: application/json' \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [{
        "text": "Which theaters in Mountain View show Barbie movie?"
    }]
  }, {
    "role": "model",
    "parts": [{
      "functionCall": {
        "name": "find_theaters",
        "args": {
          "location": "Mountain View, CA",
          "movie": "Barbie"
        }
      }
    }]
  }, {
    "role": "function",
    "parts": [{
      "functionResponse": {
        "name": "find_theaters",
        "response": {
          "name": "find_theaters",
          "content": {
            "movie": "Barbie",
            "theaters": [{
              "name": "AMC Mountain View 16",
              "address": "2000 W El Camino Real, Mountain View, CA 94040"
            }, {
              "name": "Regal Edwards 14",
              "address": "245 Castro St, Mountain View, CA 94040"
            }]
          }
        }
      }
    }]
  },
  {
    "role": "model",
    "parts": [{
      "text": " OK. Barbie is showing in two theaters in Mountain View, CA: AMC Mountain View 16 and Regal Edwards 14."
    }]
  },{
    "role": "user",
    "parts": [{
      "text": "Can we recommend some comedy movies on show in Mountain View?"
    }]
  }],
  "tools": [{
    "functionDeclarations": [{
      "name": "find_movies",
      "description": "find movie titles currently playing in theaters based on any description, genre, title words, etc.",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "description": {
            "type": "STRING",
            "description": "Any kind of description including category or genre, title words, attributes, etc."
          }
        },
        "required": ["description"]
      }
    }, {
      "name": "find_theaters",
      "description": "find theaters based on location and optionally movie title which is currently playing in theaters",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          }
        },
        "required": ["location"]
      }
    }, {
      "name": "get_showtimes",
      "description": "Find the start times for movies playing in a specific theater",
      "parameters": {
        "type": "OBJECT",
        "properties": {
          "location": {
            "type": "STRING",
            "description": "The city and state, e.g. San Francisco, CA or a zip code e.g. 95616"
          },
          "movie": {
            "type": "STRING",
            "description": "Any movie title"
          },
          "theater": {
            "type": "STRING",
            "description": "Name of the theater"
          },
          "date": {
            "type": "STRING",
            "description": "Date for requested showtime"
          }
        },
        "required": ["location", "movie", "theater", "date"]
      }
    }]
  }]
}'
    

Phản hồi mẫu khi gọi hàm nhiều lượt quay

[{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "functionCall": {
              "name": "find_movies",
              "args": {
                "description": "comedy",
                "location": "Mountain View, CA"
              }
            }
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE"
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE"
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 48,
    "totalTokenCount": 48
  }
}
]
    

Các phương pháp hay nhất

Hãy làm theo các phương pháp hay nhất này để cải thiện độ chính xác và độ tin cậy của các lệnh gọi hàm.

Trường khoá hàm

Bạn cần xác định chính xác các chức năng khi tích hợp các chức năng đó vào yêu cầu. Mỗi hàm dựa trên các tham số cụ thể để định hướng hành vi và hoạt động tương tác của hàm đó với mô hình. Dưới đây là thông tin chi tiết về các tham số chính được sử dụng trong mảng functions_declarations.

function_declarations (mảng):

  • Chứa một hoặc nhiều đối tượng, mỗi đối tượng đại diện cho một chức năng riêng biệt.

Trong mỗi đối tượng function_declarations:

  • name (chuỗi): Giá trị nhận dạng duy nhất của hàm trong lệnh gọi API.
    • Phương pháp hay nhất: Sử dụng tên rõ ràng, mang tính mô tả, không có ký tự dấu cách, dấu chấm (.) hoặc dấu gạch ngang (-). Thay vào đó, hãy sử dụng dấu gạch dưới (_) ký tự hoặc kiểu viết lạc đà.
  • description (chuỗi): Nội dung giải thích toàn diện về mục đích và khả năng của hàm.
    • Phương pháp hay nhất: Mô tả hàm một cách chi tiết, rõ ràng và cụ thể, cung cấp ví dụ nếu cần. Ví dụ: Thay vì dùng find theaters, hãy dùng find theaters based on location and optionally movie title that is currently playing in theaters. Tránh thông tin mô tả quá rộng hoặc mơ hồ.
  • parameters (đối tượng): Xác định dữ liệu đầu vào mà hàm yêu cầu.
    • type (chuỗi): Chỉ định loại dữ liệu tổng thể (ví dụ: object).
    • properties (đối tượng):
      • Liệt kê từng tham số riêng lẻ, mỗi tham số có:
        • type (chuỗi): Loại dữ liệu của tham số (ví dụ: string, integer, boolean).
          • Phương pháp hay nhất: Sử dụng các tham số được nhập mạnh để giảm tình trạng ảo tưởng mô hình. Ví dụ: nếu các giá trị tham số là từ một tập hợp hữu hạn, hãy sử dụng trường enum thay vì liệt kê các giá trị trong phần mô tả (ví dụ: "type": "enum", "values": ["now_playing", "upcoming"]). Nếu giá trị tham số luôn là số nguyên, hãy đặt loại thành integer thay vì number.
        • description (chuỗi): Nội dung giải thích rõ ràng về mục đích và định dạng dự kiến của tham số.
          • Phương pháp hay nhất: Đưa ra ví dụ và hạn chế cụ thể. Ví dụ: sử dụng The city and state, e.g. San Francisco, CA or a zip code e.g. 95616 thay vì the location to search.
    • required (mảng):
      • Một mảng chuỗi liệt kê tên tham số bắt buộc để hàm hoạt động được.

Lời nhắc cho người dùng

Để có kết quả tốt nhất, hãy thêm các thông tin chi tiết sau vào trước truy vấn của người dùng:

  • Ngữ cảnh bổ sung cho mô hình. Ví dụ: You are a movie API assistant to help users find movies and showtimes based on their preferences.
  • Thông tin chi tiết hoặc hướng dẫn về cách thức và thời điểm sử dụng các hàm đó. Ví dụ: Don't make assumptions on showtimes. Always use a future date for showtimes.
  • Hướng dẫn đặt câu hỏi làm rõ nếu cụm từ tìm kiếm của người dùng không rõ ràng. Ví dụ: Ask clarifying questions if not enough information is available to complete the request.

Tham số lấy mẫu

Đối với tham số nhiệt độ, hãy sử dụng 0 hoặc một giá trị thấp khác. Điều này giúp mô hình tạo ra kết quả đáng tin cậy hơn và giảm tình trạng ảo tưởng.

Lệnh gọi API

Nếu mô hình này đề xuất gọi một hàm để gửi đơn đặt hàng, cập nhật cơ sở dữ liệu hoặc gây ra các hậu quả nghiêm trọng, hãy xác thực lệnh gọi hàm với người dùng trước khi thực thi.