pub struct ChatRequest {
pub system: String,
pub messages: Vec<Message>,
pub tools: Option<Vec<Tool>>,
pub max_tokens: u32,
pub max_tokens_explicit: bool,
pub session_id: Option<String>,
pub cached_content: Option<String>,
pub thinking: Option<ThinkingConfig>,
pub tool_choice: Option<ToolChoice>,
pub response_format: Option<ResponseFormat>,
}Fields§
§system: String§messages: Vec<Message>§tools: Option<Vec<Tool>>§max_tokens: u32§max_tokens_explicit: boolWhether max_tokens was explicitly configured by the caller.
session_id: Option<String>Optional session identifier for provider-side prompt caching or routing.
cached_content: Option<String>Optional provider-managed cached content reference.
This currently maps to Gemini / Vertex AI cachedContent handles.
thinking: Option<ThinkingConfig>Optional extended thinking configuration.
tool_choice: Option<ToolChoice>Optional constraint on tool usage.
When None the provider’s default behaviour applies (typically auto).
response_format: Option<ResponseFormat>Optional request for the final answer to be constrained to a JSON Schema.
When Some, the provider maps this to its native JSON-mode /
structured-output capability (or a tool-forcing fallback) and the
runtime validates the final output against the schema. When None
(default) the model responds freely.
Implementations§
Source§impl ChatRequest
impl ChatRequest
Sourcepub const DEFAULT_MAX_TOKENS: u32 = 4096
pub const DEFAULT_MAX_TOKENS: u32 = 4096
Default token budget used by ChatRequest::new when the caller does
not set one explicitly. Providers clamp this to their own ceiling.
Sourcepub fn new(system: impl Into<String>, messages: Vec<Message>) -> ChatRequest
pub fn new(system: impl Into<String>, messages: Vec<Message>) -> ChatRequest
Build a request from a system prompt and a message list, leaving every optional knob at its default.
This is the ergonomic counterpart to the (still-public) struct literal:
the common case only needs system + messages, so callers no longer
have to spell out the eight None/default fields. Layer optional
settings on with the chainable with_* setters:
use agent_sdk_foundation::llm::{ChatRequest, Message, ToolChoice};
let req = ChatRequest::new("You are helpful.", vec![Message::user("Hi")])
.with_max_tokens(1024)
.with_tool_choice(ToolChoice::Auto);Sourcepub fn with_tools(self, tools: Vec<Tool>) -> ChatRequest
pub fn with_tools(self, tools: Vec<Tool>) -> ChatRequest
Set the tool list the model may call.
Sourcepub const fn with_max_tokens(self, max_tokens: u32) -> ChatRequest
pub const fn with_max_tokens(self, max_tokens: u32) -> ChatRequest
Set the maximum output-token budget (marks it as explicitly configured).
Sourcepub fn with_session_id(self, session_id: impl Into<String>) -> ChatRequest
pub fn with_session_id(self, session_id: impl Into<String>) -> ChatRequest
Set the session identifier (provider-side prompt caching / routing).
Sourcepub const fn with_thinking(self, thinking: ThinkingConfig) -> ChatRequest
pub const fn with_thinking(self, thinking: ThinkingConfig) -> ChatRequest
Set the extended-thinking configuration.
Sourcepub fn with_tool_choice(self, tool_choice: ToolChoice) -> ChatRequest
pub fn with_tool_choice(self, tool_choice: ToolChoice) -> ChatRequest
Constrain tool usage (defaults to the provider’s auto when unset).
Sourcepub fn with_response_format(
self,
response_format: ResponseFormat,
) -> ChatRequest
pub fn with_response_format( self, response_format: ResponseFormat, ) -> ChatRequest
Request the final answer be constrained to the given JSON-Schema
ResponseFormat (structured output).
Trait Implementations§
Source§impl Clone for ChatRequest
impl Clone for ChatRequest
Source§fn clone(&self) -> ChatRequest
fn clone(&self) -> ChatRequest
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more