package main
import (
"fmt"
veagent "github.com/volcengine/veadk-go/v2/agent/llmagent"
"google.golang.org/adk/v2/agent"
"google.golang.org/adk/v2/agent/llmagent"
"google.golang.org/adk/v2/tool"
"google.golang.org/adk/v2/tool/functiontool"
)
type CalculatorAddArgs struct {
A float64 `json:"a" jsonschema:"第一个加数,支持整数或小数"`
B float64 `json:"b" jsonschema:"第二个加数,支持整数或小数"`
}
func CalculatorAddTool() (tool.Tool, error) {
handler := func(ctx agent.Context, args CalculatorAddArgs) (map[string]any, error) {
result := args.A + args.B
return map[string]any{
"result": result,
"explain": fmt.Sprintf("%g + %g = %g", args.A, args.B, result),
}, nil
}
return functiontool.New(
functiontool.Config{
Name: "calculator_add",
Description: "执行两数相加。参数: a, b; 返回: result。",
},
handler,
)
}
func newAgentWithTools() (agent.Agent, error) {
addTool, err := CalculatorAddTool()
if err != nil {
return nil, err
}
return veagent.New(&veagent.Config{
Config: llmagent.Config{
Name: "tool_agent",
Description: "Agent with business tools.",
Instruction: "Use tools when deterministic calculation or external data is needed.",
Tools: []tool.Tool{addTool},
},
})
}