X-Git-Url: https://git.giacomolli.uk/onechat/blobdiff_plain/522d7fd117285e4e4ce3ea5ec9b5a1722521b681..7b8d8e8f4b57bd51fd6d0f0d926b821f06b0e1f0:/chain.go?ds=sidebyside diff --git a/chain.go b/chain.go index c4a4302..23c7dec 100644 --- a/chain.go +++ b/chain.go @@ -32,6 +32,7 @@ type Chain struct { tools *Toolbox request ModelRequest take func() []Message + images *ImageStore } // Run runs the chain from input, the input of its first request, and returns @@ -122,7 +123,12 @@ func (c *Chain) handle(ctx context.Context, input []any, response ModelResponse) input = append(input, outputs...) for _, message := range c.take() { - input = append(input, modelUserMessage(message.Text)) + item, err := imageUserMessage(c.images, message.Text) + if err != nil { + return nil, "", fmt.Errorf("read queued images: %w", err) + } + + input = append(input, item) } return input, "", nil @@ -141,7 +147,7 @@ type ChainFunctionCall struct { type ChainFunctionCallOutput struct { Type string `json:"type"` CallID string `json:"call_id"` - Output string `json:"output"` + Output any `json:"output"` } // chainInputItem returns an output item as an input item for the next request.