openai-struct 0.0.4

利用openai的openapi生成的rust结构体
Documentation
/*
 * OpenAI API
 *
 * The OpenAI REST API. Please see pub https:///platform.openai.com/docs/api-reference for more details.
 *
 * OpenAPI spec pub version: 2.3.0
 *
 * Generated pub by: https:///github.com/swagger-api/swagger-codegen.git
 */

#[allow(unused_imports)]
use serde_json::Value;

/// # on openapi.yaml
///
/// ```yaml
/// CreateEmbeddingRequest:
///   type: object
///   additionalProperties: false
///   properties:
///     input:
///       description: |
///         Input text to embed, encoded as a string or array of tokens. To embed multiple inputs in a single request, pass an array of strings or array of token arrays. The input must not exceed the max input tokens for the model (8192 tokens for `text-embedding-ada-002`), cannot be an empty string, and any array must be 2048 dimensions or less. [Example Python code](https:///cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken) for counting tokens. Some models may also impose a limit on total number of tokens summed across inputs.
///       example: The quick brown fox jumped over the lazy dog
///       oneOf:
///         - type: string
///           title: string
///           description: The string that will be turned into an embedding.
///           default: ""
///           example: This is a test.
///         - type: array
///           title: array
///           description: The array of strings that will be turned into an embedding.
///           minItems: 1
///           maxItems: 2048
///           items:
///             type: string
///             default: ""
///             example: "['This is a test.']"
///         - type: array
///           title: array
///           description: The array of integers that will be turned into an embedding.
///           minItems: 1
///           maxItems: 2048
///           items:
///             type: integer
///           example: "[1212, 318, 257, 1332, 13]"
///         - type: array
///           title: array
///           description:
///             The array of arrays containing integers that will be turned into an
///             embedding.
///           minItems: 1
///           maxItems: 2048
///           items:
///             type: array
///             minItems: 1
///             items:
///               type: integer
///           example: "[[1212, 318, 257, 1332, 13]]"
///     model:
///       description: >
///         ID of the model to use. You can use the [List
///         models](/docs/api-reference/models/list) API to see all of your
///         available models, or see our [Model overview](/docs/models) for
///         descriptions of them.
///       example: text-embedding-3-small
///       anyOf:
///         - type: string
///         - type: string
///           enum:
///             - text-embedding-ada-002
///             - text-embedding-3-small
///             - text-embedding-3-large
///       x-oaiTypeLabel: string
///     encoding_format:
///       description:
///         The format to return the embeddings in. Can be either `float` or
///         [`base64`](https:///pypi.org/project/pybase64/).
///       example: float
///       default: float
///       type: string
///       enum:
///         - float
///         - base64
///     dimensions:
///       description: >
///         The number of dimensions the resulting output embeddings should
///         have. Only supported in `text-embedding-3` and later models.
///       type: integer
///       minimum: 1
///     user:
///       type: string
///       example: user-1234
///       description: >
///         A unique identifier representing your end-user, which can help
///         OpenAI to monitor and detect abuse. [Learn
///         more](/docs/guides/safety-best-practices#end-user-ids).
///   required:
///     - model
///     - input
/// ```
#[derive(Debug, Serialize, Deserialize)]
pub struct CreateEmbeddingRequest {
    /// The number of dimensions the resulting output embeddings should have. Only supported in `text-embedding-3` and later models.
    #[serde(rename = "dimensions")]
    pub dimensions: Option<i32>,
    /// The format to return the embeddings in. Can be either `float` or [`base64`](https:///pypi.org/project/pybase64/).
    #[serde(rename = "encoding_format")]
    pub encoding_format: Option<String>,
    /// Input text to embed, encoded as a string or array of tokens. To embed multiple inputs in a single request, pass an array of strings or array of token arrays. The input must not exceed the max input tokens for the model (8192 tokens for `text-embedding-ada-002`), cannot be an empty string, and any array must be 2048 dimensions or fewer. [Example Python code](https:///cookbook.openai.com/examples/how_to_count_tokens_with_tiktoken) for counting tokens. Some models may also impose a limit on total number of tokens summed across inputs.
    #[serde(rename = "input")]
    pub input: CreateEmbeddingRequestInput,
    /// ID of the model to use. You can use the [List models](/docs/api-reference/models/list) API to see all of your available models, or see our [Model overview](/docs/models) for descriptions of them.
    ///
    /// - text-embedding-ada-002
    /// - text-embedding-3-small
    /// - text-embedding-3-large
    #[serde(rename = "model")]
    pub model: String,
    /// A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. [Learn more](/docs/guides/safety-best-practices#end-user-ids).
    #[serde(rename = "user")]
    pub user: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
#[serde(untagged)]
pub enum CreateEmbeddingRequestInput {
    /// The string that will be turned into an embedding. example: This is a test.
    Text(String),
    /// The array of strings that will be turned into an embedding. example: "['This is a test.']"
    Texts(Vec<String>),
    /// The array of integers that will be turned into an embedding. example: "[1212, 318, 257, 1332, 13]"
    Embedding(Vec<isize>),
    /// The array of arrays containing integers that will be turned into an embedding. example: "[[1212, 318, 257, 1332, 13]]"
    Embeddings(Vec<Vec<isize>>),
}