fantasy

一套 Go 代码,切换多家大模型跑 Agent

fantasy 是一个用 Go 语言构建 AI Agent 的开发框架,核心目标是解决多模型、多供应商接入时的适配碎片化问题。它把 OpenAI、Anthropic、Google 等不同厂商的 API 差异抽象成统一的接口,开发者只需写一套代码,就能在多个模型之间自由切换,而不必为每个供应商单独维护调用逻辑。框架提供了 Agent 编排、工具调用、结构化输出、流式响应等能力,适合把大模型能力嵌入到已有的 Go 后端服务中,比如客服机器人、自动化工作流、代码助手等。相比 Python 生态的同类方案,fantasy 更贴近 Go 工程实践,类型安全、并发友好、部署简单,能直接编译成单个二进制文件,方便在云原生环境中运行。对于已经用 Go 构建业务系统、又不想引入 Python 服务栈的团队来说,它是一个较自然的选择。

开源 free 开发框架
访问官网 ↗ GitHub ↗ 文档 ↗
GitHub 星标 ★ 1022
维护状态 活跃
是否开源 是
定价模式 free

项目预览

项目数据

分类开发框架
开发团队charmbracelet
所属国家
官网地址
定价模式free
价格说明开源免费,定价信息待确认
访问状态
是否开源是
开源协议Apache-2.0
主要语言Go
技术栈/模型
GitHub 星标★ 1022
30天Star增速
HF 下载量
上线时间2025-08-15 00:00:00
最近更新2026-09-30 00:00:00
维护状态活跃
中文支持
访问方式
移动端支持
综合评分
收录时间2026-10-01
浏览次数0

Star 增长趋势

本站每日记录该项目 GitHub 星标变化,观测越久曲线越完整

正在加载星标数据…

使用教程

难度:进阶 约 10 分钟 部署方式:库/依赖 6 步

⚠ 该项目 README 未提供完整安装说明,以下步骤为通用流程,请以官方文档为准。

环境要求

  • 已安装 Go 工具链,go 命令可用
  • 准备一个支持的模型供应商账号(README 示例用 OpenRouter)及其 API Key
  • 一个可执行的 Go 项目(含 go.mod,用于引入 charm.land/fantasy)

安装与启动步骤

  1. 1初始化 Go 项目

    新建目录并初始化 Go 模块,模块名随意。已有 Go 项目可跳过此步;这几步是按 Go 模块惯例推断,README 未给正式安装章节。

    go mod init myagent
  2. 2引入 fantasy 依赖

    按 README 中的导入路径拉取框架本体;若使用 OpenRouter 供应商,一并拉取其子包。

    go get charm.land/fantasy
    go get charm.land/fantasy/providers/openrouter
  3. 3准备 API Key

    到所选供应商处申请 API Key,后续以 openrouter.WithAPIKey(myHotKey) 的形式传入。建议从环境变量读取,不要硬编码。

  4. 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. 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. 6编译并运行

    补全 prompt 与工具函数后运行程序,检查是否能正常拿到模型回复。Go 会编译为原生机器码,可直接部署单个二进制。

    go run .

关键配置

配置项必填说明示例
API Key(openrouter.WithAPIKey)是供应商鉴权密钥,用于初始化 providersk-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 调用方式。

注意事项

  • README 节选未包含正式安装章节,go mod init / go get 命令是按 Go 模块惯例推断,请以官方文档为准。
  • README 代码片段不完整,结尾的 prompt 内容与 fetchCuteDogInfoFunc 均未给出,需自行补全。
  • API Key 属于敏感信息,不要硬编码或提交到版本库。

核心亮点

  • 统一多供应商 API,切换模型只需改配置,不用重写调用层
  • 原生 Go 实现,类型安全、并发友好,可编译为单二进制部署
  • 内置 Agent 编排与工具调用能力,覆盖流式输出和结构化返回

不足之处

  • 生态和周边工具相比 Python 方案仍偏薄,示例与集成较少
  • 项目处于成长阶段,API 可能随版本迭代发生变动

适用场景

  • 在 Go 后端服务中嵌入 AI 客服或问答机器人
  • 构建需要调用外部工具的多步骤自动化 Agent
  • 为已有 Go 系统快速接入多家大模型并做成本/效果对比

替代项目

langchaingo、eino

项目介绍

fantasy 是开发框架领域的开源项目,由 charmbracelet 开发,2025 年首次发布。

在全站 13,465 个收录项目中,它的 GitHub 星标数(1,022)位列前 30%,在开发框架分类中处于中上游。

项目目前处于活跃维护状态,最近一次代码更新于 2026-09-30。开源免费。

它主要面向的使用场景是:在Go后端服务中嵌入AI客服或问答机器人。同类可对比的替代方案包括 langchaingo、eino。

上一篇:LAP

下一篇:NeMo-Agent-Toolkit

同类项目推荐

langchain 开源

组装 AI 应用的乐高积木,从想法到上线不换工具

The agent engineering platform.

★ 147270 2026-08-09
transformers 开源

全球最大的模型仓库全家桶,想用的模型一把抓

Transformers: the model-definition framework for state-of-the-art machine learning m···

★ 166817 2026-08-09
pi 开源

一套 TypeScript 工具包,快速搭出能写代码的 AI agent

AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI

★ 110356 2026-09-12