Skip to content

Commit

Permalink
Add static tool
Browse files Browse the repository at this point in the history
  • Loading branch information
kozaktomas committed Dec 4, 2024
1 parent 9936b02 commit 18c8ccb
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 1 deletion.
2 changes: 1 addition & 1 deletion backend/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ require (
golang.org/x/net v0.31.0
golang.org/x/text v0.20.0
google.golang.org/protobuf v1.35.2
gopkg.in/yaml.v3 v3.0.1
mvdan.cc/xurls/v2 v2.5.0
)

Expand Down Expand Up @@ -52,5 +53,4 @@ require (
go.mau.fi/util v0.8.2 // indirect
golang.org/x/crypto v0.29.0 // indirect
golang.org/x/sys v0.27.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
7 changes: 7 additions & 0 deletions backend/pkg/ai/ai.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,13 @@ func NewAi(ctx context.Context, conf *config.Config, s *scale.Scale, m *promethe
ai.tennisTool(),
ai.lunchMenu(),
}

staticTools, err := ai.staticTools()
if err != nil {
l.Fatalf("could not load StaticConfig tools: %v", err)
}
tools = append(tools, staticTools...)

ai.tools = tools

return ai
Expand Down
51 changes: 51 additions & 0 deletions backend/pkg/ai/ai_tools_static.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package ai

import (
_ "embed"
"fmt"

"github.com/liushuangls/go-anthropic/v2"
"github.com/liushuangls/go-anthropic/v2/jsonschema"
"gopkg.in/yaml.v3"
)

type StaticConfig struct {
Tools []struct {
Name string `yaml:"name"`
Type string `yaml:"type"`
Description string `yaml:"description"`
Result string `yaml:"result"`
} `yaml:"tools"`
}

//go:embed static.yml
var staticContent []byte

func (ai *Ai) staticTools() ([]tool, error) {
var config StaticConfig

if err := yaml.Unmarshal(staticContent, &config); err != nil {
return nil, fmt.Errorf("could not unmarshal StaticConfig content: %w", err)
}

tools := make([]tool, len(config.Tools))
for i, t := range config.Tools {
fmt.Println(t.Result)
tools[i] = tool{
Definition: anthropic.ToolDefinition{
Name: t.Name,
Description: t.Description,
InputSchema: jsonschema.Definition{
Type: jsonschema.Object,
Properties: map[string]jsonschema.Definition{},
Required: []string{""},
},
},
Fn: func(_ string) (string, error) {
return t.Result, nil
},
}
}

return tools, nil
}
9 changes: 9 additions & 0 deletions backend/pkg/ai/static.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
tools:
- name: "special_beers"
description: "Sometimes the pub offers limited special beer. Usually different brand or some local brewery"
result: |
Current special beers offer from 4.12.2024 to 8.12.2024:
- Kozi Kabrón 12 - Starší z bratrů Kabrónů je dostupný pouze v čisté (filtrované) variantě. To z něj dělá jediné filtrované pivo v naší nabídce. Jde o tradiční český ležák, uvařený tradičním způsobem z tradičních surovin. Chutná špicově.
- Hořký Kozi 11 - Příjemně hořký škopek, který se dá lámat jeden za druhým. Tohle pivo rozhodně nemůže soutěžit v kategorii tradiční český ležák. Vaříme jej sice tradičně, ale s podílem (pro ležák) netradičního žitného sladu. Přichmeleno francouzským chmelem.
- Theodor Pilsner 11 - Ležák plzeňského typu. Pivo je vařeno podle tradičních receptur, podpořeno českými slady a chmely. Naše vlajková loď vám zpříjemní jakoukoli životní plavbu.
type: "text"

0 comments on commit 18c8ccb

Please sign in to comment.