@@ -20,9 +20,7 @@ import io.github.lemcoder.koogedge.App
2020import io.github.lemcoder.koogedge.agents.common.AgentProvider
2121import io.github.lemcoder.koogedge.agents.common.modelsPath
2222
23- /* *
24- * Factory for creating calculator agents (graphless strategy)
25- */
23+ /* * Factory for creating calculator agents (graphless strategy) */
2624internal class CalculatorAgentProvider : AgentProvider {
2725 override val title: String = " Calculator"
2826 override val description: String = " Hi, I'm a calculator agent, I can do math"
@@ -43,54 +41,46 @@ internal class CalculatorAgentProvider : AgentProvider {
4341 }
4442
4543 @Suppress(" DuplicatedCode" )
46- val strategy = functionalStrategy<String , String >(title) { input ->
47- llm.writeSession {
48- appendPrompt {
49- user {
50- + " /no_think"
51- + " pick the best tool to answer the question: $input and call it immediately."
52- }
53- }
54- }
55-
56- var response = requestLLM(input)
57- while (response is Message .Tool .Call ) {
58- onToolCallEvent(" Tool ${response.tool} " )
59- val result = executeTool(response)
60- Log .w(" CalculatorAgent" , " Tool result: ${result.result} " )
44+ val strategy =
45+ functionalStrategy<String , String >(title) { input ->
6146 llm.writeSession {
6247 appendPrompt {
63- tool {
64- result(result)
48+ user {
49+ + " /no_think"
50+ + " pick the best tool to answer the question: $input and call it immediately."
6551 }
6652 }
53+ }
6754
68- appendPrompt {
69- user {
70- + " Based on the tool result, please provide only result number."
55+ var response = requestLLM(input)
56+ while (response is Message .Tool .Call ) {
57+ onToolCallEvent(" Tool ${response.tool} " )
58+ val result = executeTool(response)
59+ Log .w(" CalculatorAgent" , " Tool result: ${result.result} " )
60+ llm.writeSession {
61+ appendPrompt { tool { result(result) } }
62+
63+ appendPrompt {
64+ user { + " Based on the tool result, please provide only result number." }
7165 }
66+ response = requestLLM()
7267 }
73- response = requestLLM()
7468 }
75- }
7669
77- val assistantContent = response.asAssistantMessage().content
78- onAssistantMessage(assistantContent)
79- }
70+ val assistantContent = response.asAssistantMessage().content
71+ onAssistantMessage(assistantContent)
72+ }
8073
8174 // Create agent config with proper prompt
82- val agentConfig = AIAgentConfig (
83- prompt = prompt(
84- " test" ,
85- params = CactusLLMParams (
86- maxTokens = 512
87- )
88- ) {
89- system(calculatorSystemPrompt)
90- },
91- model = CactusModels .Chat .Qwen3_0_6B ,
92- maxAgentIterations = 10 ,
93- )
75+ val agentConfig =
76+ AIAgentConfig (
77+ prompt =
78+ prompt(" test" , params = CactusLLMParams (maxTokens = 512 )) {
79+ system(calculatorSystemPrompt)
80+ },
81+ model = CactusModels .Chat .Qwen3_0_6B ,
82+ maxAgentIterations = 10 ,
83+ )
9484
9585 return AIAgent (
9686 promptExecutor = cactusExecutor,
@@ -99,4 +89,4 @@ internal class CalculatorAgentProvider : AgentProvider {
9989 toolRegistry = toolRegistry,
10090 )
10191 }
102- }
92+ }
0 commit comments