Skip to main content

outfox_openai/spec/shared/
function_object.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3
4use crate::error::OpenAIError;
5
6#[derive(Clone, Serialize, Default, Debug, Deserialize, Builder, PartialEq)]
7#[builder(name = "FunctionObjectArgs")]
8#[builder(pattern = "mutable")]
9#[builder(setter(into, strip_option), default)]
10#[builder(derive(Debug))]
11#[builder(build_fn(error = "OpenAIError"))]
12pub struct FunctionObject {
13    /// The name of the function to be called. Must be a-z, A-Z, 0-9, or contain underscores and
14    /// dashes, with a maximum length of 64.
15    pub name: String,
16    /// A description of what the function does, used by the model to choose when and how to call
17    /// the function.
18    #[serde(skip_serializing_if = "Option::is_none")]
19    pub description: Option<String>,
20    /// The parameters the functions accepts, described as a JSON Schema object. See the [guide](https://platform.openai.com/docs/guides/text-generation/function-calling) for examples, and the [JSON Schema reference](https://json-schema.org/understanding-json-schema/) for documentation about the format.
21    ///
22    /// Omitting `parameters` defines a function with an empty parameter list.
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub parameters: Option<serde_json::Value>,
25
26    /// Whether to enable strict schema adherence when generating the function call. If set to true, the model will follow the exact schema defined in the `parameters` field. Only a subset of JSON Schema is supported when `strict` is `true`. Learn more about Structured Outputs in the [function calling guide](https://platform.openai.com/docs/guides/function-calling).
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub strict: Option<bool>,
29}