Skip to content

Commit f4a6836

Browse files
author
Marek Safarik
committed
AI formatted response from Keylime
Signed-off-by: Marek Safarik <[email protected]>
1 parent d11cf8e commit f4a6836

File tree

2 files changed

+48
-5
lines changed

2 files changed

+48
-5
lines changed

mcp-client/main.go

Lines changed: 48 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"log"
66
"os"
77
"os/exec"
8+
"strings"
89

910
"github.com/anthropics/anthropic-sdk-go"
1011
"github.com/anthropics/anthropic-sdk-go/option"
@@ -64,24 +65,35 @@ func main() {
6465
anthropicClient := anthropic.NewClient(
6566
option.WithAPIKey(apiKey),
6667
)
68+
messages := []anthropic.MessageParam{}
69+
if len(os.Args) <= 1 {
70+
log.Fatal("Usage: go run main.go <content>")
71+
return
72+
}
73+
content := strings.Join(os.Args[1:], " ")
74+
75+
messages = append(messages, anthropic.NewUserMessage(anthropic.NewTextBlock(content)))
6776
message, err := anthropicClient.Messages.New(ctx, anthropic.MessageNewParams{
6877
Model: anthropic.ModelClaude_3_Haiku_20240307,
6978
MaxTokens: 256,
70-
Messages: []anthropic.MessageParam{
71-
anthropic.NewUserMessage(anthropic.NewTextBlock("Give me all failed agents")),
72-
},
73-
Tools: claudeTools,
79+
Messages: messages,
80+
Tools: claudeTools,
7481
})
7582
if err != nil {
7683
log.Fatal(err)
7784
}
7885

86+
assistantMessageContent := []anthropic.ContentBlockParamUnion{}
87+
toolResults := []anthropic.ContentBlockParamUnion{}
88+
7989
for _, block := range message.Content {
8090
switch block := block.AsAny().(type) {
8191
case anthropic.TextBlock:
8292
println(block.Text)
83-
println()
93+
assistantMessageContent = append(assistantMessageContent, anthropic.NewTextBlock(block.Text))
8494
case anthropic.ToolUseBlock:
95+
assistantMessageContent = append(assistantMessageContent, anthropic.NewToolUseBlock(block.ID, block.Input, block.Name))
96+
8597
params := &mcp.CallToolParams{
8698
Name: block.Name,
8799
Arguments: block.Input,
@@ -93,10 +105,41 @@ func main() {
93105
if res.IsError {
94106
log.Fatal("tool failed")
95107
}
108+
96109
for _, c := range res.Content {
97110
log.Print(c.(*mcp.TextContent).Text)
98111
println()
99112
}
113+
114+
toolResults = append(toolResults, anthropic.NewToolResultBlock(
115+
block.ID,
116+
res.Content[0].(*mcp.TextContent).Text,
117+
false,
118+
))
119+
}
120+
}
121+
122+
if len(toolResults) > 0 {
123+
124+
messages = append(messages, anthropic.NewAssistantMessage(assistantMessageContent...))
125+
126+
messages = append(messages, anthropic.NewUserMessage(toolResults...))
127+
128+
message, err = anthropicClient.Messages.New(ctx, anthropic.MessageNewParams{
129+
Model: anthropic.ModelClaude_3_Haiku_20240307,
130+
MaxTokens: 256,
131+
Messages: messages,
132+
Tools: claudeTools,
133+
})
134+
if err != nil {
135+
log.Fatal(err)
136+
}
137+
138+
for _, block := range message.Content {
139+
if textBlock, ok := block.AsAny().(anthropic.TextBlock); ok {
140+
println("\nFinal response:")
141+
println(textBlock.Text)
142+
}
100143
}
101144
}
102145
}

mcp-client/mcp-client

-12.8 MB
Binary file not shown.

0 commit comments

Comments
 (0)