objectiveai_sdk/vector/completions/vector_responses.rs
1//! Vector responses type for vector completions.
2//!
3//! A vector response is a single option that LLMs can vote for in a vector
4//! completion. Each response can be plain text or multimodal content (images,
5//! audio, video, files).
6
7use crate::agent::completions::message::RichContent;
8use schemars::JsonSchema;
9use serde::{Deserialize, Serialize};
10
11/// The list of response options in a vector completion request.
12///
13/// Each element is a [`RichContent`] value that an LLM can vote for.
14/// Responses can be plain text strings or multi-part content containing
15/// text, images, audio, video, or files.
16///
17/// # Minimum Length
18///
19/// A vector completion requires at least 2 responses to vote between.
20///
21/// # Examples
22///
23/// Plain text responses:
24/// ```json
25/// ["Yes", "No", "Maybe"]
26/// ```
27///
28/// Multimodal responses:
29/// ```json
30/// [
31/// [{"type": "text", "text": "Option A"}, {"type": "image_url", "image_url": {"url": "https://example.com/a.png"}}],
32/// [{"type": "text", "text": "Option B"}, {"type": "image_url", "image_url": {"url": "https://example.com/b.png"}}]
33/// ]
34/// ```
35#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)]
36#[schemars(rename = "vector.completions.VectorResponses")]
37#[serde(transparent)]
38pub struct VectorResponses(pub Vec<RichContent>);