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}