README.md

Fantasy

The Charm Fantasy logo
Latest Release GoDoc Build Status

Build AI agents with Go. Multi-provider, multi-model, one API.

  1. Choose a model and provider
  2. Add some tools
  3. Compile to bytecode 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))
if err != 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")
if err != 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.WithTools(cuteDogTool))

// Put that agent to work!
const prompt = "Find all the cute dogs in Silver Lake, Los Angeles."
result, err := agent.Generate(context.Background(), fantasy.AgentCall{Prompt: prompt})
if err != 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.

Multi-model? Multi-provider?

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 package, many other 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).

Work in Progress

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

For things you’d like to see supported, PRs are welcome.

Whatcha think?

We’d love to hear your thoughts on this project. Need help? We gotchu. You can find us on:


Part of Charm.

The Charm logo

Charm热爱开源 • Charm loves open source