Вызов функции

Пользовательские функции могут быть определены и предоставлены генеративной модели ИИ с помощью вызова функций. Модель не вызывает эти функции напрямую, а вместо этого генерирует структурированные выходные данные, в которых указывается имя функции и предлагаемые аргументы. Эти выходные данные позволяют вызывать внешние API, а полученные выходные данные API можно затем включить обратно в модель, что позволяет получать более полные ответы на запросы. Вызов функций дает LLM возможность взаимодействовать с информацией в реальном времени и различными услугами, такими как базы данных, системы управления взаимоотношениями с клиентами и хранилища документов, повышая их способность предоставлять актуальные и контекстуальные ответы.

Как работает вызов функций

Функции описываются с помощью объявлений функций . После того как вы передаете список объявлений функций в запросе к языковой модели, модель возвращает объект в формате схемы, совместимом с OpenAPI , который включает имена функций и их аргументы, и пытается ответить на запрос пользователя с помощью одной из возвращаемых функций. Языковая модель понимает назначение функции путем анализа ее объявления. Модель на самом деле не вызывает функцию. Вместо этого разработчик использует в ответе объект схемы, совместимый с OpenAPI, для вызова функции, возвращаемой моделью.

При реализации вызова функций вы создаете одно или несколько объявлений функций , а затем добавляете объявления функций в объект tools , который передается в модель. Каждое объявление функции содержит информацию об одной функции, которая включает в себя следующее:

  • Имя функции
  • Параметры функции в формате схемы, совместимом с OpenAPI . Поддерживается выбранное подмножество . При использовании Curl схема указывается с помощью JSON.
  • Описание функции (необязательно). Для достижения наилучших результатов мы рекомендуем добавить описание.

Этот документ включает примеры Curl, которые выполняют вызовы REST с помощью класса GenerativeModel и его методов.

Поддерживаемые модели

Следующие модели поддерживают вызов функций:

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

Режим вызова функций

Вы можете использовать режим вызова функции, чтобы определить поведение выполнения вызова функции. Доступны три режима:

  • AUTO : поведение модели по умолчанию. Модель решает предсказать либо вызов функции, либо ответ на естественном языке.
  • ANY : модель ограничена тем, что всегда прогнозирует вызов функции. Если allowed_function_names не указаны, модель выбирает из всех доступных объявлений функций. Если указано allowed_function_names , модель выбирает из набора разрешенных функций.
  • NONE : модель не будет прогнозировать вызов функции. В этом случае поведение модели такое же, как если бы вы не передавали никаких объявлений функций.

Вы также можете передать набор allowed_function_names , которые, если они предоставлены, ограничивают функции, которые будет вызывать модель. Вы должны включать allowed_function_names только в том случае, если выбран режим ANY . Имена функций должны соответствовать именам объявлений функций. Если для режима установлено ANY и заданы allowed_function_names , модель будет прогнозировать вызов функции на основе предоставленного набора имен функций.

Вот часть примера запроса , который устанавливает режим ANY и указывает список разрешенных функций:

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

Функция, вызывающая образцы cURL

Когда вы используете cURL, информация о функциях и параметрах включается в элемент tools . Каждое объявление функции в элементе tools содержит имя функции, ее параметры, указанные с использованием схемы, совместимой с OpenAPI , и описание функции. В следующих примерах показано, как использовать команды Curl с вызовом функций:

Образец одновиткового завитка

Однооборотный — это когда вы вызываете языковую модель один раз. При вызове функций однооборотным вариантом использования может быть предоставление модели запроса на естественном языке и списка функций. В этом случае модель использует объявление функции, которое включает имя функции, параметры и описание, чтобы предсказать, какую функцию вызывать и с какими аргументами ее вызывать.

Следующий пример Curl представляет собой пример передачи описания функции, которая возвращает информацию о том, где воспроизводится фильм. В запрос включены несколько объявлений функций, например find_movies и find_theaters .

Однооборотная функция, вызывающая запрос примера Curl

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"
            ]
          }
        }
      ]
    }
  ]
}'
    

Ответ на этот пример с завитками может быть примерно таким.

Однооборотная функция, вызывающая пример ответа 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
  }
}]
    

Пример однооборотного режима с использованием режима ЛЮБОЙ

Следующий пример скручивания аналогичен примеру с одним витком , но в нем устанавливается режим ANY :

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

Однооборотный вызов функции в режиме ЛЮБОЙ (запрос)

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"
    },
  }
}'
    

Ответ может быть примерно следующим:

Однооборотный вызов функции в режиме ЛЮБОЙ (ответ)

{
  "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"
      }
    ]
  }
}
    

Пример однооборотного режима с использованием ЛЮБОГО режима и разрешенных функций

Следующий пример скручивания аналогичен примеру с одним оборотом , но в нем устанавливается режим ANY и включается список разрешенных функций:

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

Однооборотный вызов функции в режиме ЛЮБОЙ и разрешенные функции (запрос)

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"]
    },
  }
}'
    

Модель не может предсказать функцию find_movies , поскольку ее нет в списке разрешенных функций, поэтому вместо этого она прогнозирует другую функцию. Ответ может быть примерно следующим:

Однооборотный вызов функции в режиме ЛЮБОЙ и разрешенные функции (ответ)

{
  "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"
      }
    ]
  }
}
    

Примеры многооборотной завивки

Вы можете реализовать сценарий многооборотного вызова функции, выполнив следующие действия:

  1. Получите ответ на вызов функции, вызвав языковую модель. Это первый поворот.
  2. Вызовите языковую модель, используя ответ на вызов функции с первого поворота и ответ функции, который вы получаете от вызова этой функции. Это второй поворот.

Ответ второго этапа либо суммирует результаты для ответа на ваш запрос в первом раунде, либо содержит второй вызов функции, который вы можете использовать для получения дополнительной информации для вашего запроса.

Этот раздел включает в себя два примера многооборотных завихрений:

Пример завитка, в котором используется ответ предыдущего хода

В следующем примере Curl вызывается функция и аргументы, возвращенные предыдущим примером с одним поворотом, чтобы получить ответ. Метод и параметры, возвращаемые примером с одним оборотом, находятся в этом JSON.

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

Многооборотная функция, вызывающая запрос примера Curl

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"]
      }
    }]
  }]
}'
    

Ответ на этот пример скручивания включает результат вызова метода find_theaters . Ответ может быть примерно следующим:

Многооборотная функция, вызывающая пример ответа Curl

{
  "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
  }
}
    

Пример Curl, который вызывает языковую модель несколько раз

Следующий пример Curl вызывает языковую модель несколько раз для вызова функции. Каждый раз, когда модель вызывает функцию, она может использовать другую функцию для ответа на другой запрос пользователя в запросе.

Многооборотная функция, вызывающая запрос примера Curl

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"]
      }
    }]
  }]
}'
    

Многооборотная функция, вызывающая пример ответа Curl

[{
  "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
  }
}
]
    

Лучшие практики

Следуйте этим рекомендациям, чтобы повысить точность и надежность вызовов функций.

Поля функциональных клавиш

Точное определение функций имеет важное значение при их интеграции в ваши запросы. Каждая функция опирается на определенные параметры, которые определяют ее поведение и взаимодействие с моделью. Вот разбивка ключевых параметров, используемых в массиве functions_declarations .

function_declarations (массив) :

  • Содержит один или несколько объектов, каждый из которых представляет отдельную функцию.

Внутри каждого объекта function_declarations :

  • name (строка) : уникальный идентификатор функции в вызове API.
    • Рекомендации : используйте понятные, описательные имена без пробелов, точек ( . ) и тире ( - ). Вместо этого используйте символы подчеркивания ( _ ) или верблюжий регистр.
  • description (строка) : подробное объяснение назначения и возможностей функции.
    • Рекомендации : будьте подробными, ясными и конкретными в описаниях функций, при необходимости приводя примеры. Например, вместо find theaters используйте find theaters based on location and optionally movie title that is currently playing in theaters. Избегайте слишком широких или двусмысленных описаний.
  • parameters (объект) : определяет входные данные, необходимые функции.
    • type (строка) : определяет общий тип данных (например, object ).
    • properties (объект) :
      • Перечисляет отдельные параметры, каждый из которых имеет:
        • type (строка) : тип данных параметра (например, string , integer , boolean ).
          • Рекомендации : используйте строго типизированные параметры, чтобы уменьшить галлюцинации модели. Например, если значения параметров взяты из конечного набора, используйте поле enum вместо перечисления значений в описании (например, "type": "enum", "values": ["now_playing", "upcoming"] ). . Если значение параметра всегда является целым числом, установите тип integer , а не number .
        • description (строка) : четкое объяснение назначения параметра и ожидаемого формата.
          • Лучшая практика : Приведите конкретные примеры и ограничения. Например, вместо the location to search используйте The city and state, eg San Francisco, CA or a zip code eg 95616 .
    • required (массив) :
      • Массив строк, в котором перечислены имена параметров, которые являются обязательными для работы функции.

Подсказка пользователя

Для получения наилучших результатов добавьте к пользовательскому запросу следующую информацию:

  • Дополнительный контекст для модели. Например, You are a movie API assistant to help users find movies and showtimes based on their preferences.
  • Подробности или инструкции о том, как и когда использовать функции. Например, Don't make assumptions on showtimes. Always use a future date for showtimes.
  • Инструкция задавать уточняющие вопросы, если запросы пользователей неоднозначны. Например, Ask clarifying questions if not enough information is available to complete the request.

Параметры выборки

Для параметра температуры используйте 0 или другое низкое значение. Это дает модели возможность генерировать более уверенные результаты и уменьшает галлюцинации.

вызов API

Если модель предлагает вызов функции, которая отправит заказ, обновит базу данных или иным образом повлечет за собой серьезные последствия, проверьте вызов функции у пользователя перед ее выполнением.