28 lines
		
	
	
		
			595 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
		
			595 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| package tools
 | |
| 
 | |
| import (
 | |
| 	"go.starlark.net/lib/math"
 | |
| 	"go.starlark.net/starlark"
 | |
| 	"go.starlark.net/syntax"
 | |
| 
 | |
| 	gollm "gitea.stevedudenhoeffer.com/steve/go-llm"
 | |
| )
 | |
| 
 | |
| var Calculator = gollm.NewFunction(
 | |
| 	"calculator",
 | |
| 	"A starlark calculator",
 | |
| 	func(ctx *gollm.Context, args struct {
 | |
| 		Expression string `description:"The expression to evaluate using starlark"`
 | |
| 	}) (any, error) {
 | |
| 		val, err := starlark.EvalOptions(&syntax.FileOptions{},
 | |
| 			&starlark.Thread{Name: "main"},
 | |
| 			"input",
 | |
| 			args.Expression,
 | |
| 			math.Module.Members)
 | |
| 		if err != nil {
 | |
| 			return "", err
 | |
| 		}
 | |
| 
 | |
| 		return val.String(), nil
 | |
| 	})
 |