pub struct CompletionRequest {
pub model: Model,
pub messages: Vec<Message>,
pub tools: Vec<ToolDefinition>,
pub max_tokens: Option<u32>,
pub reasoning: ReasoningLevel,
pub sampling: SamplingParams,
pub modalities: Vec<Modality>,
pub audio_config: Option<AudioOutputConfig>,
pub image_config: Option<ImageGenConfig>,
pub user: Option<String>,
pub provider_preferences: Option<ProviderPreferences>,
pub session_id: Option<SessionId>,
}Expand description
A single completion request sent to an LLM provider.
This is the primary input type for LlmProvider::complete. The agent runtime
assembles this from the conversation history, active tools, and LLM config.
Fields§
§model: ModelModel to use (includes provider prefix).
messages: Vec<Message>Message history in wire format.
tools: Vec<ToolDefinition>Tools available to the model in this turn.
max_tokens: Option<u32>Maximum output tokens. If None, the provider decides.
reasoning: ReasoningLevelWhether reasoning/thinking mode is enabled.
sampling: SamplingParamsSampling parameters (temperature, top_p, top_k, min_p, penalties).
modalities: Vec<Modality>Output modalities (e.g. text+audio, image). Empty means text-only.
audio_config: Option<AudioOutputConfig>Audio output configuration. Only used when modalities includes Modality::Audio.
image_config: Option<ImageGenConfig>Image generation configuration. Only used when modalities includes Modality::Image.
user: Option<String>Opaque user identifier for per-user tracking in provider dashboards.
provider_preferences: Option<ProviderPreferences>Provider routing preferences (used by OpenRouter).
session_id: Option<SessionId>Stable conversation identifier for provider cache routing.
Implementations§
Source§impl CompletionRequest
impl CompletionRequest
Sourcepub fn new(model: Model, messages: Vec<Message>) -> Self
pub fn new(model: Model, messages: Vec<Message>) -> Self
Build a request with default settings and the supplied messages.
Sourcepub fn from_config(config: &AgentLlmConfig, messages: Vec<Message>) -> Self
pub fn from_config(config: &AgentLlmConfig, messages: Vec<Message>) -> Self
Keep the agent’s session ID, routing, user and generation settings.
use flashmind_types::{AgentLlmConfig, CompletionRequest, Message, SessionId};
let session = SessionId::new();
let llm = AgentLlmConfig::new("openrouter:example/model".parse()?)
.with_session_id(session);
let request = CompletionRequest::from_config(&llm, vec![Message::user("Hello")]);
assert_eq!(request.session_id, llm.session_id);Sourcepub fn with_session_id(self, session_id: impl Into<SessionId>) -> Self
pub fn with_session_id(self, session_id: impl Into<SessionId>) -> Self
Use an existing session identity for this request.