}
var text string
+
input, text, err = c.handle(ctx, input, response)
if err != nil {
return "", err
// the messages of take. After the final answer it returns no input, and the
// replies of the answer as its text.
func (c *Chain) handle(ctx context.Context, input []any, response ModelResponse) ([]any, string, error) {
- var outputs []any
- var replies []string
+ var (
+ outputs []any
+ replies []string
+ )
+
for _, raw := range response.Output {
item, err := chainInputItem(raw)
if err != nil {
input = append(input, item)
var call ChainFunctionCall
+
err = json.Unmarshal(raw, &call)
if err != nil {
return nil, "", fmt.Errorf("decode output item: %w", err)
// id.
func chainInputItem(raw json.RawMessage) (map[string]any, error) {
var item map[string]any
+
err := json.Unmarshal(raw, &item)
if err != nil {
return nil, fmt.Errorf("decode output item: %w", err)