pub struct AgentConfig {Show 14 fields
pub name: String,
pub model: String,
pub system_prompt: String,
pub api_key: Option<String>,
pub temperature: Option<f32>,
pub max_tokens: Option<u32>,
pub base_url: Option<String>,
pub top_p: Option<f32>,
pub top_k: Option<u32>,
pub timeout_seconds: Option<u64>,
pub reasoning: Option<bool>,
pub reasoning_effort: Option<String>,
pub memory: Option<MemoryConfig>,
pub mcp_tools: Vec<McpToolConfig>,
}Expand description
Configuration for a single LLM agent.
This struct can be loaded from a TOML file and used to create an LlmAgent.
§Example
name = "my_agent"
model = "ollama::gemma3:latest"
system_prompt = "You are a helpful assistant."
temperature = 0.7
max_tokens = 1024Fields§
§name: StringUnique name for the agent
model: StringModel in “provider::model” format (e.g., “ollama::gemma3:latest”)
system_prompt: StringSystem prompt for the agent
api_key: Option<String>API key for the LLM provider (optional, can use env vars)
temperature: Option<f32>Temperature for generation (0.0 - 2.0)
max_tokens: Option<u32>Maximum tokens to generate
base_url: Option<String>Base URL override for the LLM provider
top_p: Option<f32>Top-p (nucleus) sampling parameter
top_k: Option<u32>Top-k sampling parameter
timeout_seconds: Option<u64>Request timeout in seconds
reasoning: Option<bool>Enable reasoning mode (for supported providers)
reasoning_effort: Option<String>Reasoning effort level
memory: Option<MemoryConfig>Memory configuration for this agent (optional, overrides mesh default)
mcp_tools: Vec<McpToolConfig>MCP tool configurations for this agent. Each entry defines an external MCP server that provides tools.
Implementations§
Source§impl AgentConfig
impl AgentConfig
Sourcepub fn new(name: impl Into<String>, model: impl Into<String>) -> Self
pub fn new(name: impl Into<String>, model: impl Into<String>) -> Self
Create a new AgentConfig with required fields.
Sourcepub fn from_toml(toml_str: &str) -> Result<Self>
pub fn from_toml(toml_str: &str) -> Result<Self>
Parse an AgentConfig from a TOML string.
§Example
use ceylon_runtime::config::AgentConfig;
let toml = r#"
name = "my_agent"
model = "ollama::llama2"
"#;
let config = AgentConfig::from_toml(toml).unwrap();
assert_eq!(config.name, "my_agent");Sourcepub fn from_file(path: impl AsRef<Path>) -> Result<Self>
pub fn from_file(path: impl AsRef<Path>) -> Result<Self>
Load an AgentConfig from a TOML file.
§Example
use ceylon_runtime::config::AgentConfig;
let config = AgentConfig::from_file("agent.toml").unwrap();Sourcepub fn with_system_prompt(self, prompt: impl Into<String>) -> Self
pub fn with_system_prompt(self, prompt: impl Into<String>) -> Self
Set the system prompt.
Sourcepub fn with_api_key(self, api_key: impl Into<String>) -> Self
pub fn with_api_key(self, api_key: impl Into<String>) -> Self
Set the API key.
Sourcepub fn with_temperature(self, temperature: f32) -> Self
pub fn with_temperature(self, temperature: f32) -> Self
Set the temperature.
Sourcepub fn with_max_tokens(self, max_tokens: u32) -> Self
pub fn with_max_tokens(self, max_tokens: u32) -> Self
Set max tokens.
Sourcepub fn with_memory(self, memory: MemoryConfig) -> Self
pub fn with_memory(self, memory: MemoryConfig) -> Self
Set memory configuration for this agent.
Sourcepub fn get_effective_memory_config<'a>(
&'a self,
fallback: Option<&'a MemoryConfig>,
) -> Option<&'a MemoryConfig>
pub fn get_effective_memory_config<'a>( &'a self, fallback: Option<&'a MemoryConfig>, ) -> Option<&'a MemoryConfig>
Get the effective memory configuration for this agent.
Returns the agent’s own memory config if set, otherwise returns the fallback (typically the mesh-level memory config).
§Arguments
fallback- The mesh-level memory config to use if agent has no memory config
§Example
use ceylon_runtime::config::{AgentConfig, MemoryConfig, MeshConfig};
let mesh_memory = MemoryConfig::in_memory().with_max_entries(1000);
let agent = AgentConfig::new("agent1", "ollama::llama2");
// Agent without memory uses mesh fallback
let effective = agent.get_effective_memory_config(Some(&mesh_memory));
assert!(effective.is_some());
// Agent with its own memory uses that
let agent_with_memory = agent.with_memory(MemoryConfig::in_memory().with_max_entries(500));
let effective = agent_with_memory.get_effective_memory_config(Some(&mesh_memory));
assert_eq!(effective.unwrap().max_entries, Some(500));Trait Implementations§
Source§impl Clone for AgentConfig
impl Clone for AgentConfig
Source§fn clone(&self) -> AgentConfig
fn clone(&self) -> AgentConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AgentConfig
impl Debug for AgentConfig
Source§impl Default for AgentConfig
impl Default for AgentConfig
Source§impl<'de> Deserialize<'de> for AgentConfig
impl<'de> Deserialize<'de> for AgentConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for AgentConfig
impl RefUnwindSafe for AgentConfig
impl Send for AgentConfig
impl Sync for AgentConfig
impl Unpin for AgentConfig
impl UnsafeUnpin for AgentConfig
impl UnwindSafe for AgentConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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