Add llm validation

This commit is contained in:
dwrz
2026-10-11 19:55:34 +00:00
parent c8b7176978
commit ad493d5aec
+27
View File
@@ -532,6 +532,19 @@ func (m *Message) Validate() error {
"%q message with tool calls", m.Role, "%q message with tool calls", m.Role,
) )
} }
if m.ToolCallID != "" && m.Role != RoleTool {
return fmt.Errorf("%q message with tool call id", m.Role)
}
seen := map[string]bool{}
for _, call := range m.ToolCalls {
if err := call.Validate(); err != nil {
return fmt.Errorf("invalid tool call: %w", err)
}
if seen[call.ID] {
return fmt.Errorf("duplicate tool call id %q", call.ID)
}
seen[call.ID] = true
}
return nil return nil
} }
@@ -698,6 +711,20 @@ type ToolCall struct {
Type ToolType `json:"type"` Type ToolType `json:"type"`
} }
// Validate checks conformance to the OpenAI API specification.
func (t *ToolCall) Validate() error {
if t.ID == "" {
return fmt.Errorf("missing id")
}
if t.Type != ToolTypeFunction {
return fmt.Errorf("invalid type: %q", t.Type)
}
if t.Function.Name == "" {
return fmt.Errorf("missing function name")
}
return nil
}
// ToolType identifies the kind of tool in a declaration or tool call. // ToolType identifies the kind of tool in a declaration or tool call.
type ToolType string type ToolType string