Build AI agents with Go. Multi-provider, multi-model, one API.
- Choose a model and provider
- Add some tools
- Compile to native machine code and let it rip
Note
Fantasy is currently a preview. Expect API changes.
import"charm.land/fantasy"import"charm.land/fantasy/providers/openrouter"// Choose your fave provider.provider, err:=openrouter.New(openrouter.WithAPIKey(myHotKey))
iferr!=nil {
fmt.Fprintln(os.Stderr, "Whoops:", err)
os.Exit(1)
}
ctx:=context.Background()
// Pick your fave model.model, err:=provider.LanguageModel(ctx, "moonshotai/kimi-k2")
iferr!=nil {
fmt.Fprintln(os.Stderr, "Dang:", err)
os.Exit(1)
}
// Make your own tools.cuteDogTool:=fantasy.NewAgentTool(
"cute_dog_tool",
"Provide up-to-date info on cute dogs.",
fetchCuteDogInfoFunc,
)
// Equip your agent.agent:=fantasy.NewAgent(
model,
fantasy.WithSystemPrompt("You are a moderately helpful, dog-centric assistant."),
fantasy.WithTools(cuteDogTool),
)
// Put that agent to work!constprompt="Find all the cute dogs in Silver Lake, Los Angeles."result, err:=agent.Generate(ctx, fantasy.AgentCall{Prompt: prompt})
iferr!=nil {
fmt.Fprintln(os.Stderr, "Oof:", err)
os.Exit(1)
}
fmt.Println(result.Response.Content.Text())🍔 For the full implementation and more see the examples directory.
Yeah! Fantasy is designed to support a wide variety of providers and models under a single API. While many providers such as Microsoft Azure, Amazon Bedrock, and OpenRouter have dedicated packages in Fantasy, many others work just fine with openaicompat, the generic OpenAI-compatible layer. That said, if you find a provider that’s not compatible and needs special treatment, please let us know in an issue (or open a PR).
We built Fantasy to power Crush, a hot coding agent for glamourously invincible development. Given that, Fantasy does not yet support things like:
- Image models
- Audio models
- PDF uploads
- Provider tools (e.g. web_search)
For things you’d like to see supported, PRs are welcome.
We’d love to hear your thoughts on this project. Need help? We gotchu. You can find us on:
Part of Charm.
Charm热爱开源 • Charm loves open source

