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 enki_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 enki_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 enki_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 · 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 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,
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