首页 / 资讯中心 / 文章详情

Go集成实战:如何将Catwalk SDK嵌入你的AI应用(含离线嵌入式模式与成本管控)

Go集成实战:如何将Catwalk SDK嵌入你的AI应用(含离线嵌入式模式与成本管控) ★ FEATURED ARTICLE
【免费下载链接】catwalk A collection of LLM inference providers and models项目地址https://gitcode.com/gh_mirrors/catwa/catwalk点击查看免费下载Catwalk 是 Charm 团队维护的 LLM 推理提供商与模型数据库并附带一套轻量 Go SDK。借助 Catwalk SDK你可以一行代码拿到完整的 AI 模型目录含 API 端点、上下文窗口与成本数据同时支持在线 HTTP 模式与完全离线的嵌入式模式。本文带你完成将其集成进 Go AI 应用的实战步骤。Catwalk 是什么一句话LLM 提供商的模型目录Catwalk 可以理解为一本AI 模型黄页每个提供商OpenAI、Anthropic、Gemini、DeepSeek、OpenRouter 等对应一份 JSON 配置其中记录了 API 类型openai、anthropic、google、bedrock等 9 种与端点地址 上下文窗口大小、默认输出 token 上限 是否支持推理can_reason及可用的推理等级 输入/输出 token 成本按百万 token 计价全部 40 个提供商的配置位于 internal/providers/configs/ 目录比如 internal/providers/configs/openai.json 中某个模型的片段{ id: gpt-6-sol, name: GPT-6 Sol, cost_per_1m_in: 2, cost_per_1m_out: 10, context_window: 1050000, can_reason: true, reasoning_levels: [none, low, medium, high, xhigh, max] }三大核心组件HTTP 服务、Go SDK 与离线嵌入组件位置职责HTTP 服务main.go暴露/v2/providers接口带 ETag 缓存与 Prometheus 指标Go SDKpkg/catwalk/从远程服务拉取提供商与模型列表离线嵌入pkg/embedded/直接读取编译期内嵌数据断网也能用两种数据获取方式最终返回的是同一种结构[]catwalk.Provider定义在 pkg/catwalk/provider.go业务代码无需感知差异。快速上手一条命令跑起 Catwalk 服务git clone https://gitcode.com/gh_mirrors/catwa/catwalk cd catwalk go run .服务默认监听8080端口可通过环境变量CATWALK_PORT修改启动后即可获取完整列表curl http://localhost:8080/v2/providers服务还提供/health健康检查端点和/metricsPrometheus 监控端点非常适合纳入你的服务网格。集成指南四步把 Go SDK 嵌入你的 AI 应用第一步添加 Catwalk 依赖模块路径为charm.land/catwalk见 go.modgo get charm.land/catwalk第二步创建客户端import charm.land/catwalk/pkg/catwalk client : catwalk.New() // 读取 CATWALK_URL 环境变量默认 http://localhost:8080 // 也可以显式指定服务地址 client : catwalk.NewWithURL(http://10.0.1.5:8080)客户端源码非常小巧核心逻辑就在 pkg/catwalk/client.go 里。第三步拉取提供商与模型列表providers, err : client.GetProviders(ctx, etag) if err ! nil { log.Fatal(err) }返回的[]catwalk.Provider包含你要的全部元数据。例如找出 Anthropic 的默认大模型for _, p : range providers { if p.ID catwalk.InferenceProviderAnthropic { fmt.Println(p.DefaultLargeModelID, 共, len(p.Models), 个模型) } }所有受支持的提供商 ID 都可用catwalk.KnownProviders()列出避免手写字符串出错。第四步处理 ETag 缓存省带宽的关键SDK 原生支持 ETag 条件请求首次调用传入空字符串并记下服务端返回的 ETag之后每次带上它——数据没变时服务端返回 304SDK 抛出ErrNotModifiedif errors.Is(err, catwalk.ErrNotModified) { // 数据未变化继续使用本地缓存 return }这意味着你的应用可以定时轮询模型目录几乎零带宽成本也无需自建缓存层。离线嵌入式模式断网也能用的模型目录如果你的应用跑在内网隔离环境或就是不想多维护一个服务可以改用嵌入包。所有提供商配置通过 Go 的go:embed机制在编译期打进二进制实现在 pkg/embedded/embedded.go 与 internal/providers/providers.goimport charm.land/catwalk/pkg/embedded providers : embedded.GetAll() // 直接返回 []catwalk.Provider 提示内嵌数据随二进制发布升级依赖版本即可获得最新的模型目录业务代码一行都不用改。成本管控用配置里的成本数据做调用预算每个模型自带 4 个成本字段单位美元/百万 token可以直接驱动预算控制逻辑字段含义CostPer1MIn输入成本CostPer1MOut输出成本CostPer1MInCached缓存写入的输入成本CostPer1MOutCached缓存命中的输入成本以 internal/providers/configs/anthropic.json 中的claude-sonnet-4-6输入 $3/M、输出 $15/M为例单次调用输入 10 万 token、输出 2000 token成本约为0.1×3 0.002×15 ≈ $0.33。配合这些字段写一个便宜且大窗口的模型筛选器只需几行var cheap []catwalk.Model for _, m : range p.Models { if m.CostPer1MInm.CostPer1MOut 5 m.ContextWindow 128000 { cheap append(cheap, m) } }同理m.CanReason是否支持推理、m.ReasoningLevels推理等级、m.SupportsImages是否支持图片输入都可以作为选型条件帮你按场景自动切换模型档位。数据更新让模型价格保持最新模型清单与价格变动频繁。Catwalk 在 cmd/ 下提供了一批生成工具每个工具调用对应提供商的官方 API拉取最新模型与定价后写回 JSON 配置。例如 cmd/openrouter/main.go 还会自动为每个模型挑选支持 tools 且在线率最高的端点。借助 Task 可以一键刷新任务定义见 Taskfile.yamltask gen:all对于应用侧来说你不需要关心数据如何更新——只要定期调用GetProviders并配合 ETag永远拿到最新目录即可。总结一套接口两种部署HTTP SDK 与离线嵌入模式返回相同的[]catwalk.Provider切换部署方式零改造成本数据开箱即用每个模型都有输入/输出成本、上下文窗口与推理能力字段可直接做预算计算与模型筛选轻依赖、易维护服务端只有单个接口 ETagSDK 依赖极少下一步从目录里选定提供商后按APIEndpoint与APIKey调用对应模型即可。Catwalk 负责给你地图真正的模型调用仍交给各家官方客户端完成。赞分享【免费下载链接】catwalk A collection of LLM inference providers and models项目地址https://gitcode.com/gh_mirrors/catwa/catwalk点击查看免费下载相关推荐终极ZincSearch嵌入式集成指南如何将高性能搜索引擎无缝嵌入Go应用终极ZincSearch嵌入式集成指南如何将高性能搜索引擎无缝嵌入Go应用 ZincSearch是一款轻量级、高性能的搜索引擎专为Go应用设计可作为库直接搜索引擎后端全文检索如何在5分钟内将SurrealDB嵌入式模式集成到你的应用中如何在5分钟内将SurrealDB嵌入式模式集成到你的应用中 SurrealDB嵌入式模式是一个革命性的功能让你能够将完整的高性能数据库引擎直接嵌入到应用程序数据库后端文档数据库图数据库分布式数据库cgft-llm向量数据库应用Milvus在RAG系统中的最佳实践cgft llm向量数据库应用Milvus在RAG系统中的最佳实践 cgft llm是一个专注于LLM实践的项目其中Milvus向量数据库在RAG检索增强创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站