fantasy

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

开源 🏷️完全免费 🔧 仅开源项目,无在线服务,需自行部署 开发框架 🍴 复刻 150 🐛 待处理 65 👀 关注 9
GitHub ↗
GitHub 星标 ★ 1061
维护状态 活跃
是否开源 开源
定价模式 🏷️完全免费 开源免费,定价信息待确认

项目预览

fantasy 项目界面预览图
图片来源:GitHub 官方仓库名片

项目数据

分类开发框架
开发团队charmbracelet
定价模式🏷️完全免费
价格说明开源免费,定价信息待确认
访问状态🔧 仅开源项目,无在线服务,需自行部署
是否开源是
开源协议Apache-2.0
主要语言Go
GitHub 星标★ 1061
上线时间2025-08-15 00:00:00
代码更新2026-11-13
仓库体积4.7 MB
本站数据更新2026-11-15
维护状态活跃
收录时间2026-10-01
浏览次数1

项目介绍

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

Star 增长趋势

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

数据来源:GitHub API 逐日快照 · 收录于 2026-10-01 · 当前星标 ★ 1061

使用教程

难度:进阶 约 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

上一篇:LAP

下一篇:NeMo-Agent-Toolkit

同类项目推荐

cursor-agent-tracking 开源

让 Cursor 的 AI 对话不丢上下文,项目状态一目了然

A repository that provides a structured system for maintaining context and tracking ···

★ 136 2026-08-09
lazy-starter-kit 开源

一条命令,把电脑变成 AI 开发环境,先预览再执行

One safe command (or a signed GUI) to set up Claude Code, Codex and a dev environmen···

★ 123 2026-08-09
FastQL 开源

一行 Python 代码,快速启动 Rust 驱动的 GraphQL API

Spin up a super fast Rust powered GraphQL API to prototype your ML model in one line···

★ 107 2026-08-09
openharness 开源

一个命令中心,管住你所有机器上的编码智能体

The ultimate harness for coding agents and beyond. All your agents. All your machine···

★ 1487 2026-09-28
token-tracker 开源

实时盯紧 AI 编程 token 消耗,省钱又省心

Claude Code & Codex 本地 token 追踪 — 状态栏(Codex 业界首创伪 statusline)、GitHub···

★ 536 2026-08-09
dotagents 开源

用 .agents/ 目录给 AI 代理减负,让复杂代码库推理更准。

A proposed convention for the .agents/ directory to prevent context bloat and improv···

★ 95 2026-08-09
mcp-server-bash-sdk 开源

纯 Bash 写 MCP 服务器,零依赖跑通 AI 工具调用

MCP server SDK/example implemented entirely in bash — build a Model Context Protoco···

★ 515 2026-08-09
framework 开源

用 PHP 写一套代码,轻松对接多个聊天平台

Chatbot framework

★ 123 2026-08-09
ontogpt 开源

用大模型从文本中自动抽取结构化知识,构建本体图谱

LLM-based ontological extraction tools, including SPIRES

★ 1099 2026-08-09