Custom multi-input tools

Author: aguynamedbenCreated Aug 10, 2024Updated Apr 16, 2026

I'm interested in building custom tools (tools.Tool) that support multiple parameters, i.e. "multi-input tools" in LangChain.

The Langchain docs for Custom Tools provide two examples of custom tools—one tool that accepts a single parameter, and another tool that accepts multiple parameters. The docs for Agent Types specifies which LangChain agents support multi-input tools in the "Supports Multi Input Tools" column.

It seems for langchaingo to support multi-input tools, enhancements would need to be made to the tools.Tool interface, as it's Call() method currently only supports a single string as tool input. Is that accurate?

go
type Tool interface {
	Name() string
	Description() string
        // This seems to indicate there is no multi-input tool support for tools.Tool
	Call(ctx context.Context, input string) (string, error)
}

Are there any examples of langchaingo's Agents using multi-input tools? I looked through the example and didn't see any. I'm aware I can use the llms package and Model to call specific LLMs and handle the tool call responses myself, but I was eager to build a bunch of tools that adhere to the tools.Tool interface and use them with agents.

Thank you for the work you do in making langchaingo publicly available, it has taught me a lot and been a joy to work with.