Skip to main content

MessageCreateParams

Struct MessageCreateParams 

Source
pub struct MessageCreateParams {
Show 25 fields pub max_tokens: u32, pub messages: Vec<MessageParam>, pub model: Model, pub metadata: Option<Metadata>, pub output_format: Option<OutputFormat>, pub stop_sequences: Option<Vec<String>>, pub system: Option<SystemPrompt>, pub temperature: Option<f32>, pub thinking: Option<ThinkingConfig>, pub tool_choice: Option<ToolChoice>, pub tools: Option<Vec<ToolUnionParam>>, pub top_k: Option<u32>, pub top_p: Option<f32>, pub stream: bool, pub effort: Option<EffortLevel>, pub speed: Option<SpeedMode>, pub output_config: Option<OutputConfig>, pub context_management: Option<ContextManagement>, pub inference_geo: Option<String>, pub service_tier: Option<String>, pub container: Option<String>, pub cache_control: Option<CacheControlEphemeral>, pub citations: Option<CitationsConfig>, pub skills: Option<Vec<SkillRef>>, pub tool_runner: Option<bool>,
}
Available on crate feature anthropic-client only.
Expand description

Parameters for creating messages.

Fields§

§max_tokens: u32

The maximum number of tokens to generate before stopping.

Note that our models may stop before reaching this maximum. This parameter only specifies the absolute maximum number of tokens to generate.

Different models have different maximum values for this parameter. See models for details.

§messages: Vec<MessageParam>

Input messages.

Our models are trained to operate on alternating user and assistant conversational turns. When creating a new Message, you specify the prior conversational turns with the messages parameter, and the model then generates the next Message in the conversation. Consecutive user or assistant turns in your request will be combined into a single turn.

§model: Model

The model that will complete your prompt.

See models for additional details and options.

§metadata: Option<Metadata>

An object describing metadata about the request.

§output_format: Option<OutputFormat>

Output format configuration for structured outputs (legacy field).

Prefer output_config for new code. This field is retained for backward compatibility with existing callers.

§stop_sequences: Option<Vec<String>>

Custom text sequences that will cause the model to stop generating.

§system: Option<SystemPrompt>

System prompt.

§temperature: Option<f32>

Amount of randomness injected into the response.

Defaults to 1.0. Ranges from 0.0 to 1.0.

§thinking: Option<ThinkingConfig>

Configuration for enabling Claude’s extended thinking.

§tool_choice: Option<ToolChoice>

How the model should use the provided tools.

§tools: Option<Vec<ToolUnionParam>>

Definitions of tools that the model may use.

§top_k: Option<u32>

Only sample from the top K options for each subsequent token.

§top_p: Option<f32>

Use nucleus sampling.

§stream: bool

Whether to incrementally stream the response using server-sent events.

§effort: Option<EffortLevel>

Top-level effort parameter controlling response thoroughness.

§speed: Option<SpeedMode>

Speed mode for latency-critical workloads (research preview).

§output_config: Option<OutputConfig>

Structured output configuration (replaces output_format).

§context_management: Option<ContextManagement>

Server-side context management (tool result clearing, thinking block clearing). Requires beta header context-management-2025-06-27.

§inference_geo: Option<String>

Geographic routing for data residency control (e.g. “US”, “EU”).

§service_tier: Option<String>

Service tier for priority capacity ("auto" or "standard_only").

§container: Option<String>

Container identifier for code execution tool reuse across requests.

§cache_control: Option<CacheControlEphemeral>

Top-level cache control. When set, the server automatically caches everything up to the last cacheable block.

§citations: Option<CitationsConfig>

Citations configuration.

§skills: Option<Vec<SkillRef>>

Skill references for dynamic instruction loading.

§tool_runner: Option<bool>

Opt into programmatic tool calling flow.

Implementations§

Source§

impl MessageCreateParams

Source

pub fn new( max_tokens: u32, messages: Vec<MessageParam>, model: Model, ) -> MessageCreateParams

Create a new message creation parameters with streaming disabled.

Source

pub fn new_streaming( max_tokens: u32, messages: Vec<MessageParam>, model: Model, ) -> MessageCreateParams

Create new streaming message creation parameters.

Source

pub fn with_metadata(self, metadata: Metadata) -> MessageCreateParams

Add metadata to the parameters.

Source

pub fn with_output_format( self, output_format: OutputFormat, ) -> MessageCreateParams

Add output format for structured outputs.

When set, constrains Claude’s response to follow a specific JSON schema, ensuring valid, parseable output for downstream processing.

This feature requires the beta header structured-outputs-2025-11-13.

§Example
use serde_json::json;
use adk_anthropic::{MessageCreateParams, OutputFormat, KnownModel};

let params = MessageCreateParams::simple("Extract info", KnownModel::ClaudeHaiku45)
    .with_output_format(OutputFormat::json_schema(json!({
        "type": "object",
        "properties": {
            "name": { "type": "string" }
        },
        "required": ["name"],
        "additionalProperties": false
    })));
Source

pub fn with_stop_sequences( self, stop_sequences: Vec<String>, ) -> MessageCreateParams

Add stop sequences to the parameters.

Source

pub fn with_system_string(self, system: String) -> MessageCreateParams

Add a system prompt as a string.

Source

pub fn with_system_blocks(self, blocks: Vec<TextBlock>) -> MessageCreateParams

Add a system prompt as text blocks.

Source

pub fn with_system(self, system: impl Into<SystemPrompt>) -> MessageCreateParams

Add a system prompt.

Source

pub fn with_temperature( self, temperature: f32, ) -> Result<MessageCreateParams, Error>

Add temperature to the parameters.

Source

pub fn with_thinking(self, thinking: ThinkingConfig) -> MessageCreateParams

Add thinking configuration to the parameters.

Source

pub fn with_tool_choice(self, tool_choice: ToolChoice) -> MessageCreateParams

Add tool choice to the parameters.

Source

pub fn with_tools(self, tools: Vec<ToolUnionParam>) -> MessageCreateParams

Add tools to the parameters.

Source

pub fn with_top_k(self, top_k: u32) -> MessageCreateParams

Add top_k to the parameters.

Source

pub fn with_top_p(self, top_p: f32) -> Result<MessageCreateParams, Error>

Add top_p to the parameters.

Source

pub fn with_stream(self, stream: bool) -> MessageCreateParams

Sets the streaming option.

Source

pub fn validate(&self) -> Result<(), Error>

Validate all parameters before sending to the API with security checks.

Performs comprehensive validation including DoS prevention measures:

  • Limits on message count and size to prevent resource exhaustion
  • Validation of all numeric ranges
  • Security checks on string inputs
Source

pub fn simple( prompt: impl Into<MessageParam>, model: impl Into<Model>, ) -> MessageCreateParams

Create a simple message request with sensible defaults.

This is a convenience method for creating basic message requests without needing to specify all parameters explicitly.

Source

pub fn simple_streaming( prompt: impl Into<MessageParam>, model: impl Into<Model>, ) -> MessageCreateParams

Create a simple streaming message request with sensible defaults.

Source

pub fn with_message( self, message: impl Into<MessageParam>, ) -> MessageCreateParams

Add a single message to the parameters.

Source

pub fn with_messages( self, messages: impl IntoIterator<Item = impl Into<MessageParam>>, ) -> MessageCreateParams

Add multiple messages to the parameters.

Source

pub fn requires_structured_outputs_beta(&self) -> bool

Check if this request requires the structured outputs beta header.

Returns true if either:

  • output_format is set (for JSON outputs)
  • Any tool has strict: true (for strict tool use)

When this returns true, the client should include the anthropic-beta: structured-outputs-2025-11-13 header.

Trait Implementations§

Source§

impl Clone for MessageCreateParams

Source§

fn clone(&self) -> MessageCreateParams

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for MessageCreateParams

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Default for MessageCreateParams

Source§

fn default() -> MessageCreateParams

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for MessageCreateParams

Source§

fn deserialize<__D>( __deserializer: __D, ) -> Result<MessageCreateParams, <__D as Deserializer<'de>>::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for MessageCreateParams

Source§

fn eq(&self, other: &MessageCreateParams) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for MessageCreateParams

Source§

fn serialize<__S>( &self, __serializer: __S, ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for MessageCreateParams

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromRef<T> for T
where T: Clone,

Source§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,