MCPcopy Create free account
hub / github.com/InfinitiBit/graphbit / agent

Method agent

python/src/workflow/node.rs:117–374  ·  view source on GitHub ↗
(
        name: String,
        prompt: String,
        context: Option<String>,
        agent_id: Option<String>,
        output_name: Option<String>,
        tools: Option<&Bound<'_, PyList>>,
     

Source from the content-addressed store, hash-verified

115 #[staticmethod]
116 #[pyo3(signature = (name, prompt, context=None, agent_id=None, output_name=None, tools=None, system_prompt=None, llm_config=None, temperature=None, max_tokens=None, max_iterations=None, enable_prompt_caching=false))]
117 fn agent(
118 name: String,
119 prompt: String,
120 context: Option<String>,
121 agent_id: Option<String>,
122 output_name: Option<String>,
123 tools: Option<&Bound<'_, PyList>>,
124 system_prompt: Option<String>,
125 llm_config: Option<LlmConfig>,
126 temperature: Option<f32>,
127 max_tokens: Option<u32>,
128 max_iterations: Option<u32>,
129 enable_prompt_caching: bool,
130 ) -> PyResult<Self> {
131 // Validate required parameters
132 if name.trim().is_empty() {
133 return Err(PyErr::new::<pyo3::exceptions::PyValueError, _>(
134 "Name cannot be empty",
135 ));
136 }
137 if prompt.trim().is_empty() {
138 return Err(PyErr::new::<pyo3::exceptions::PyValueError, _>(
139 "Prompt cannot be empty",
140 ));
141 }
142
143 let id = agent_id.unwrap_or_else(|| {
144 format!(
145 "agent_{}",
146 std::time::SystemTime::now()
147 .duration_since(std::time::UNIX_EPOCH)
148 .unwrap()
149 .as_nanos()
150 )
151 });
152 let mut agent_config = AgentNodeConfig::new(
153 AgentId::from_string(&id).map_err(|e| {
154 PyErr::new::<pyo3::exceptions::PyValueError, _>(format!("Invalid ID: {}", e))
155 })?,
156 prompt,
157 );
158
159 if let Some(ctx) = context {
160 agent_config = agent_config.with_context(ctx);
161 }
162
163 if let Some(sys) = system_prompt.clone() {
164 agent_config = agent_config.with_system_prompt_override(sys);
165 }
166
167 let mut node = WorkflowNode::new(
168 name.clone(),
169 format!("Agent: {}", name),
170 NodeType::Agent {
171 config: agent_config,
172 },
173 );
174

Callers

nothing calls this directly

Calls 10

get_global_registryFunction · 0.85
with_contextMethod · 0.80
cloneMethod · 0.80
insertMethod · 0.80
to_stringMethod · 0.80
register_toolMethod · 0.80
is_emptyMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected