跳转至

项目概述

在 AI 爆发的时代,开发者往往会面临以下痛点:

  • 模型生态碎片化:今天用 OpenAI,明天想换 Anthropic(Claude)或 DeepSeek,但各个厂家的 API 结构、流式格式、甚至工具调用(Tool Calling)的规范都大相径庭,导致代码重构成本极高。
  • 本地部署过于笨重:仅仅为了做文本向量化(Embedding)或简单的本地推理,就必须在服务器上额外部署 Ollama 甚至繁重的 Python 环境。
  • 复杂业务代码变成“意大利面”:在构建 RAG(检索增强生成)或 Agent 智能体时,大量的 Prompt 拼接、API 调用、条件判断和重试逻辑交织在一起,代码迅速腐化且难以维护。

GoChat 正是为了彻底解决这些痛点而生。它不仅仅是一个 API Wrapper,而是一个现代化的、类型安全的 Go 语言大模型应用开发框架。它将多模型调度、本地向量化、复杂工作流编排完美融合在一个轻量级的 Go 库中。


核心特性

终极的“一次编写,到处运行”

使用 GoChat,您无需再去查阅不同模型厂商晦涩的 API 文档。

  • 抹平厂商差异:无论是 OpenAI、Anthropic 还是国内的 Qwen、Deepseek、MiniMax,GoChat 将它们全部抽象为统一的 core.Client 接口。
  • 强化的 Tool Calling:不同大模型对函数调用(Function Calling)的底层 JSON 结构定义千奇百怪。GoChat 提供了一套统一的 core.Toolcore.ToolCall 抽象,您只需定义一次工具,即可在所有支持该特性的模型间无缝切换。
  • 内置韧性:遇到网络限流(HTTP 429)或超时?开发者无需手写 for 循环,底层自动触发带抖动的指数退避(Exponential Backoff)重试。

脱离 Ollama 依赖的“零配置”向量化

如果您的核心诉求是向量检索(RAG),GoChat 的 Embedding 模块将是您的超级利器:

  • 无需外部服务:直接基于 ONNX Runtime 在本地执行向量化,彻底摆脱对 Ollama 或任何外部 Python 服务的依赖。将 AI 能力内嵌到您的单体 Go 二进制文件中,极大地简化了部署拓扑。
  • 内置模型下载器:还在为去 HuggingFace 寻找、比对、下载模型而烦恼?GoChat 提供了傻瓜式的 embedding.WithBEG / WithBERT 工厂方法,只需提供名字,框架会在本地缺失时自动连接远端完成多文件分片下载与加载
  • 工业级批处理:内置 BatchProcessor,支持针对海量文本的并发分批处理,并且自动对相同文本进行哈希缓存,避免重复计算浪费 CPU。

将极其复杂的逻辑变优雅

Agent 和 RAG 系统的本质是“多步思考”与“数据流转”。GoChat 提供了一套极具表现力的泛型工作流引擎 (Pipeline)

  • 告别 if err != nil 地狱:通过 Pipeline.AddStep().AddStep() 链式调用,将庞杂的业务逻辑拆分为职责单一的 Step(步骤)。
  • 强类型上下文 (Type-Safe Context):得益于 Go 1.24+ 的泛型支持,您可以在不同的 Step 之间传递自定义的强类型 struct 作为上下文,IDE 完美补全,杜绝了传统 map[string]any 带来的类型转换异常和拼写错误。
  • 可编程控制流:内置 IfStep (条件分支) 和 LoopStep (循环),结合原生的 Hook (钩子) 机制,无论多么复杂的“思考-行动-反思”链条,都能被组织得如艺术品般优雅。

典型应用场景

  • 一站式 AI 聚合网关:实现一套统一标准对接全球主流 LLM 提供商的服务代理。
  • 重度 RAG (检索增强生成) 系统:使用 Pipeline 串联本地的 Embedding 模块与远程的 LLM 模块,实现无需额外基础设施部署的纯 Go 知识库问答系统。
  • 复杂 Agent 智能体:利用统一的 Tool Calling 和 Pipeline 中的循环/条件节点,构建能够调用外部 API、执行自我验证和修正的自治智能体。

技术栈选型

  • 语言要求:Go 1.18+(推荐 Go 1.24+ 以支持 Pipeline 包的顶级泛型特性)。
  • 极简依赖:主要依赖 Go 标准库处理核心协议,仅在向量计算时依赖高性能的 ONNX 运行时抽象。