code.oscarkilo.com/klex-git

Hash:
2c6cf338c1b6679de6abc814349167b2167a231f
Author:
Igor Naverniouk <[email protected]>
Date:
Fri Oct 25 11:51:51 2024 -0700
Message:
a comment, to test AST parsing
diff --git a/api/messages.go b/api/messages.go
index 624c8e6..6e2a10e 100644
--- a/api/messages.go
+++ b/api/messages.go
@@ -5,6 +5,7 @@ type ChatMessage struct {
Content []ContentBlock `json:"content"`
}

+// MessageRequest is generalizes across OpenAI, Anthropic, etc.
type MessagesRequest struct {
Model string `json:"model"`
Messages []ChatMessage `json:"messages"`
a/api/messages.go
b/api/messages.go
1
package api
1
package api
2
2
3
type ChatMessage struct {
3
type ChatMessage struct {
4
Role string `json:"role"`
4
Role string `json:"role"`
5
Content []ContentBlock `json:"content"`
5
Content []ContentBlock `json:"content"`
6
}
6
}
7
7
8
// MessageRequest is generalizes across OpenAI, Anthropic, etc.
8
type MessagesRequest struct {
9
type MessagesRequest struct {
9
Model string `json:"model"`
10
Model string `json:"model"`
10
Messages []ChatMessage `json:"messages"`
11
Messages []ChatMessage `json:"messages"`
11
MaxTokens int `json:"max_tokens"`
12
MaxTokens int `json:"max_tokens"`
12
System string `json:"system,omitempty"`
13
System string `json:"system,omitempty"`
13
Temperature float64 `json:"temperature"`
14
Temperature float64 `json:"temperature"`
14
Tools []Tool `json:"tools,omitempty"`
15
Tools []Tool `json:"tools,omitempty"`
15
}
16
}
16
17
17
type ContentBlock struct {
18
type ContentBlock struct {
18
// Type is "text", "image", "tool_use", or "tool_result".
19
// Type is "text", "image", "tool_use", or "tool_result".
19
Type string `json:"type"`
20
Type string `json:"type"`
20
21
21
// Text is for Type="text"
22
// Text is for Type="text"
22
Text string `json:"text,omitempty"`
23
Text string `json:"text,omitempty"`
23
24
24
// Source is for Type="image"
25
// Source is for Type="image"
25
Source *ContentSource `json:"source,omitempty"`
26
Source *ContentSource `json:"source,omitempty"`
26
27
27
// Id, Name, and Input are for Type="tool_use".
28
// Id, Name, and Input are for Type="tool_use".
28
ID string `json:"id,omitempty"`
29
ID string `json:"id,omitempty"`
29
Name string `json:"name,omitempty"`
30
Name string `json:"name,omitempty"`
30
Input interface{} `json:"input,omitempty"`
31
Input interface{} `json:"input,omitempty"`
31
Output string `json:"output,omitempty"`
32
Output string `json:"output,omitempty"`
32
}
33
}
33
34
34
type ContentSource struct {
35
type ContentSource struct {
35
// Type can only be "base64".
36
// Type can only be "base64".
36
Type string `json:"type"`
37
Type string `json:"type"`
37
38
38
// MediaType can be one of:
39
// MediaType can be one of:
39
// - "image/jpeg",
40
// - "image/jpeg",
40
// - "image/png",
41
// - "image/png",
41
// - "image/gif", or
42
// - "image/gif", or
42
// - "image/webp".
43
// - "image/webp".
43
MediaType string `json:"media_type,omitempty"`
44
MediaType string `json:"media_type,omitempty"`
44
45
45
Data string `json:"data,omitempty"`
46
Data string `json:"data,omitempty"`
46
}
47
}
47
48
48
type Usage struct {
49
type Usage struct {
49
InputTokens int `json:"input_tokens"`
50
InputTokens int `json:"input_tokens"`
50
CacheCreationInputTokens *int `json:"cache_creation_input_tokens"`
51
CacheCreationInputTokens *int `json:"cache_creation_input_tokens"`
51
CacheReadInputTokens *int `json:"cache_read_input_tokens"`
52
CacheReadInputTokens *int `json:"cache_read_input_tokens"`
52
OutputTokens int `json:"output_tokens"`
53
OutputTokens int `json:"output_tokens"`
53
}
54
}
54
55
55
type ErrorResponse struct {
56
type ErrorResponse struct {
56
Type string `json:"type"`
57
Type string `json:"type"`
57
Message string `json:"message"`
58
Message string `json:"message"`
58
}
59
}
59
60
60
type MessagesResponse struct {
61
type MessagesResponse struct {
61
Id string `json:"id"`
62
Id string `json:"id"`
62
Type string `json:"type"`
63
Type string `json:"type"`
63
Role string `json:"role"`
64
Role string `json:"role"`
64
Content []ContentBlock `json:"content"`
65
Content []ContentBlock `json:"content"`
65
Model string `json:"model"`
66
Model string `json:"model"`
66
StopReason *string `json:"stop_reason,omitempty"`
67
StopReason *string `json:"stop_reason,omitempty"`
67
StopSequence *string `json:"stop_sequence,omitempty"`
68
StopSequence *string `json:"stop_sequence,omitempty"`
68
Usage Usage `json:"usage"`
69
Usage Usage `json:"usage"`
69
Error *ErrorResponse `json:"error"`
70
Error *ErrorResponse `json:"error"`
70
}
71
}
71
72
72
type Tool struct {
73
type Tool struct {
73
Type string `json:"type"`
74
Type string `json:"type"`
74
Function *ToolFunction `json:"function"`
75
Function *ToolFunction `json:"function"`
75
}
76
}
76
77
77
type ToolFunction struct {
78
type ToolFunction struct {
78
Name string `json:"name"`
79
Name string `json:"name"`
79
Description string `json:"description"`
80
Description string `json:"description"`
80
InputSchema interface{} `json:"input_schema"`
81
InputSchema interface{} `json:"input_schema"`
81
}
82
}