1
1
package adk
2
2
3
+ import adk.ClimateTraceAgent.Companion.initAgent
3
4
import com.google.adk.agents.BaseAgent
4
5
import com.google.adk.agents.LlmAgent
5
6
import com.google.adk.events.Event
@@ -17,45 +18,52 @@ import kotlin.jvm.optionals.getOrNull
17
18
const val USER_ID = " MainUser"
18
19
const val NAME = " ClimateTrace Agent"
19
20
20
- val ROOT_AGENT : BaseAgent = initAgent()
21
21
22
- fun initAgent (): BaseAgent {
23
- val apiKeyGoogle = " "
22
+ class ClimateTraceAgent {
23
+ companion object {
24
+ @JvmStatic
25
+ fun initAgent (): BaseAgent {
26
+ val apiKeyGoogle = " "
24
27
25
- val mcpTools = McpToolset (
26
- ServerParameters
27
- .builder(" java" )
28
- .args(" -jar" , " . /mcp-server/build/libs/serverAll.jar" , " --stdio" )
29
- .build()
30
- ).loadTools().join()
28
+ val mcpTools = McpToolset (
29
+ ServerParameters
30
+ .builder(" java" )
31
+ .args(" -jar" , " /Users/joreilly/dev/github/ClimateTraceKMP /mcp-server/build/libs/serverAll.jar" , " --stdio" )
32
+ .build()
33
+ ).loadTools().join()
31
34
32
- val model = Gemini (
33
- " gemini-1.5-pro" ,
34
- Client .builder()
35
- .apiKey(apiKeyGoogle)
36
- .build()
37
- )
35
+ val model = Gemini (
36
+ " gemini-1.5-pro" ,
37
+ Client .builder()
38
+ .apiKey(apiKeyGoogle)
39
+ .build()
40
+ )
38
41
39
- return LlmAgent .builder()
40
- .name(NAME )
41
- .model(model)
42
- .description(" Agent to answer climate emissions related questions." )
43
- .tools(mcpTools)
44
- .build()
42
+ return LlmAgent .builder()
43
+ .name(NAME )
44
+ .model(model)
45
+ .description(" Agent to answer climate emissions related questions." )
46
+ .instruction(" You are an agent that provides climate emissions related information. Use 3 letter country codes." )
47
+ .tools(mcpTools)
48
+ .build()
49
+ }
50
+
51
+ }
45
52
}
46
53
54
+
47
55
fun main () {
48
- val runner = InMemoryRunner (ROOT_AGENT )
56
+ val runner = InMemoryRunner (initAgent() )
49
57
val session = runner
50
58
.sessionService()
51
59
.createSession(NAME , USER_ID )
52
60
.blockingGet()
53
61
54
62
val prompt =
55
63
"""
56
- Get emission data for France and Germany for 2023 and 2024.
57
- Use units of millions for the emissions data.
58
- """ .trimIndent()
64
+ Get emission data for France and Germany for 2023 and 2024.
65
+ Use units of millions for the emissions data.
66
+ """ .trimIndent()
59
67
60
68
val userMsg = Content .fromParts(Part .fromText(prompt))
61
69
val events = runner.runAsync(USER_ID , session.id(), userMsg)
@@ -70,4 +78,5 @@ fun main() {
70
78
println (" error: ${event.errorCode().get()} , ${event.errorMessage().get()} " )
71
79
}
72
80
})
73
- }
81
+ }
82
+
0 commit comments