fantasy 是开发框架领域的开源项目,由 charmbracelet 开发,2025 年首次发布。
在全站 13,465 个收录项目中,它的 GitHub 星标数(1,022)位列前 30%,在开发框架分类中处于中上游。
项目目前处于活跃维护状态,最近一次代码更新于 2026-09-30。开源免费。
它主要面向的使用场景是:在Go后端服务中嵌入AI客服或问答机器人。同类可对比的替代方案包括 langchaingo、eino。

一套 Go 代码,切换多家大模型跑 Agent
fantasy 是一个用 Go 语言构建 AI Agent 的开发框架,核心目标是解决多模型、多供应商接入时的适配碎片化问题。它把 OpenAI、Anthropic、Google 等不同厂商的 API 差异抽象成统一的接口,开发者只需写一套代码,就能在多个模型之间自由切换,而不必为每个供应商单独维护调用逻辑。框架提供了 Agent 编排、工具调用、结构化输出、流式响应等能力,适合把大模型能力嵌入到已有的 Go 后端服务中,比如客服机器人、自动化工作流、代码助手等。相比 Python 生态的同类方案,fantasy 更贴近 Go 工程实践,类型安全、并发友好、部署简单,能直接编译成单个二进制文件,方便在云原生环境中运行。对于已经用 Go 构建业务系统、又不想引入 Python 服务栈的团队来说,它是一个较自然的选择。
本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整
⚠ 该项目 README 未提供完整安装说明,以下步骤为通用流程,请以官方文档为准。
1初始化 Go 项目
新建目录并初始化 Go 模块,模块名随意。已有 Go 项目可跳过此步;这几步是按 Go 模块惯例推断,README 未给正式安装章节。
go mod init myagent2引入 fantasy 依赖
按 README 中的导入路径拉取框架本体;若使用 OpenRouter 供应商,一并拉取其子包。
go get charm.land/fantasy
go get charm.land/fantasy/providers/openrouter3准备 API Key
到所选供应商处申请 API Key,后续以 openrouter.WithAPIKey(myHotKey) 的形式传入。建议从环境变量读取,不要硬编码。
4创建 provider 与模型
在 main.go 中导入 fantasy 和 providers/openrouter,先创建 provider,再用 LanguageModel 选定模型 ID。
import "charm.land/fantasy"
import "charm.land/fantasy/providers/openrouter"
provider, err := openrouter.New(openrouter.WithAPIKey(myHotKey))
if err != nil {
fmt.Fprintln(os.Stderr, "Whoops:", err)
os.Exit(1)
}
ctx := context.Background()
model, err := provider.LanguageModel(ctx, "moonshotai/kimi-k2")
if err != nil {
fmt.Fprintln(os.Stderr, "Dang:", err)
os.Exit(1)
}5装配 Agent 与工具
用 fantasy.NewAgentTool 定义工具,再用 fantasy.NewAgent 组合模型、系统提示和工具。示例中的 fetchCuteDogInfoFunc 需自己实现。
cuteDogTool := fantasy.NewAgentTool(
"cute_dog_tool",
"Provide up-to-date info on cute dogs.",
fetchCuteDogInfoFunc,
)
agent := fantasy.NewAgent(
model,
fantasy.WithSystemPrompt("You are a moderately helpful, dog-centric assistant."),
fantasy.WithTools(cuteDogTool),
)6编译并运行
补全 prompt 与工具函数后运行程序,检查是否能正常拿到模型回复。Go 会编译为原生机器码,可直接部署单个二进制。
go run .| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
API Key(openrouter.WithAPIKey) | 是 | 供应商鉴权密钥,用于初始化 provider | sk-xxxxxxxx |
模型 ID(LanguageModel 第二参数) | 是 | 指定调用的具体模型名称 | moonshotai/kimi-k2 |
系统提示词(WithSystemPrompt) | 否 | 设定 Agent 的角色与行为风格 | You are a moderately helpful, dog-centric assistant. |
工具名(NewAgentTool 首参) | 否 | 暴露给 Agent 调用的工具标识 | cute_dog_tool |
go run . 编译无报错,openrouter.New 与 provider.LanguageModel 均未返回 err,Agent 能正常输出回复。
Q:支持哪些模型供应商?
A:README 示例使用 OpenRouter,项目定位是多供应商、多模型统一 API,切换供应商只需换 provider 与模型 ID,具体支持列表请查阅项目文档。
Q:fetchCuteDogInfoFunc 报未定义怎么办?
A:README 只给了调用位置,没有给出函数实现。你需要按框架要求的签名自行编写该函数,或换成自己的业务函数传入 NewAgentTool。
Q:API Key 写在哪里比较安全?
A:README 示例是 openrouter.WithAPIKey(myHotKey) 直接传值。实际使用建议从环境变量读取后传入,避免把密钥提交到代码仓库。
Q:没有 Go 环境能运行吗?
A:不能。fantasy 是 Go 开发框架,需要本地安装 Go 工具链,最终编译成原生二进制文件运行,不提供 Python/Node 调用方式。
langchaingo、eino
fantasy 是开发框架领域的开源项目,由 charmbracelet 开发,2025 年首次发布。
在全站 13,465 个收录项目中,它的 GitHub 星标数(1,022)位列前 30%,在开发框架分类中处于中上游。
项目目前处于活跃维护状态,最近一次代码更新于 2026-09-30。开源免费。
它主要面向的使用场景是:在Go后端服务中嵌入AI客服或问答机器人。同类可对比的替代方案包括 langchaingo、eino。
上一篇:LAP
ComfyUI_Custom_Nodes_AlekPet
开源
给 ComfyUI 装上语音翻译和姿态检测,工作流更全能
Custom nodes that extend the capabilities of Comfyui
langchain
开源
组装 AI 应用的乐高积木,从想法到上线不换工具
The agent engineering platform.
transformers
开源
全球最大的模型仓库全家桶,想用的模型一把抓
Transformers: the model-definition framework for state-of-the-art machine learning m···
pi
开源
一套 TypeScript 工具包,快速搭出能写代码的 AI agent
AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI