能力标签
GAI
⚙️
Agent工作流

GAI

基于 Go · 无代码搭建完整 AI 自动化流程
英文名:gai
⭐ 8 Stars 🍴 1 Forks 💻 Go 📄 LGPL-2.1 🏷 AI 8.0分
8.0AI 综合评分
AIGo工作流
✦ AI Skill Hub 推荐

GAI 是 AI Skill Hub 本期精选Agent工作流之一。综合评分 8.0 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。

📚 深度解析

GAI 是一套完整的 AI Agent 自动化工作流方案。随着 AI 能力的不断提升,基于 Agent 的自动化工作流正在成为提升个人和团队效率的核心方式。区别于传统的 RPA 自动化(模拟鼠标键盘操作),AI Agent 工作流通过理解任务意图、动态规划执行路径,能够处理更复杂的非结构化任务。

GAI 工作流的设计遵循"最小配置,最大复用"原则:核心逻辑已经封装好,用户只需配置自己的 API Key 和业务参数即可快速上手。工作流内置错误处理和重试机制,在网络波动或 API 限速等情况下仍能稳定运行,适合作为生产环境的自动化基础设施。

在实际部署时,建议先在测试环境中运行 3-5 次,验证各个环节的输出结果符合预期,再部署到生产环境。AI Skill Hub 评分 8.0 分,是同类 Agent 工作流中的精选推荐。

📋 工具概览

GAI 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。

GitHub Stars
⭐ 8
开发语言
Go
支持平台
Windows / macOS / Linux(跨平台)
维护状态
轻量级项目,按需更新
开源协议
LGPL-2.1
AI 综合评分
8.0 分
工具类型
Agent工作流
Forks
1

📖 中文文档

以下内容由 AI Skill Hub 根据项目信息自动整理,如需查看完整原始文档请访问底部「原始来源」。

GAI 是一套完整的 AI Agent 自动化工作流方案。通过可视化的节点编排,将复杂的多步骤任务拆解为清晰的自动化流程,实现全程无人值守的智能处理。支持与数百种外部服务和 API 无缝集成,适合构建数据处理管线、业务自动化和 AI 辅助决策系统。

📌 核心特色
  • 可视化 Agent 工作流编排,无需编写复杂代码
  • 支持多步骤自动化任务链,实现全流程无人值守
  • 与外部 API、数据库和第三方服务无缝集成
  • 内置错误处理与自动重试机制,保障稳定运行
  • 提供可复用的自动化模板,快速在同类场景部署
🎯 主要使用场景
  • 自动化日常重复性工作,将精力集中于创造性任务
  • 构建数据采集 → 处理 → 输出的完整自动化管线
  • 实现跨平台、跨系统的数据流转和业务协同
以下安装命令基于项目开发语言和类型自动生成,实际以官方 README 为准。
安装命令
# 方式一:go install(推荐)
go install github.com/lace-ai/gai@latest

# 方式二:从源码编译
git clone https://github.com/lace-ai/gai
cd gai
go build -o gai .

# 方式三:下载预编译二进制
# 访问 Releases 页面下载对应平台二进制文件
# https://github.com/lace-ai/gai/releases
📋 安装步骤说明
  1. 访问 GitHub 仓库获取工作流文件
  2. 在对应平台(Dify / Flowise / Make 等)中找到「导入工作流」功能
  3. 上传工作流文件
  4. 按照提示配置必要的环境变量和 API Key
  5. 运行测试确认流程正常后投入使用
以下用法示例由 AI Skill Hub 整理,涵盖最常见的使用场景。
常用命令 / 代码示例
# 查看帮助
gai --help

# 基本运行
gai [options] <input>

# 详细使用说明请查阅文档
# https://github.com/lace-ai/gai
以下配置示例基于典型使用场景生成,具体参数请参照官方文档调整。
配置示例
# gai 配置说明
# 查看配置选项
gai --config-example > config.yml

# 常见配置项
# output_dir: ./output
# log_level: info
# workers: 4

# 环境变量(覆盖配置文件)
export GAI_CONFIG="/path/to/config.yml"
📑 README 深度解析 真实文档 完整度 34/100 查看 GitHub 原文 →
以下内容由系统直接从 GitHub README 解析整理,保留代码块、表格与列表结构。

简介

GAI

<p><strong>Type-safe, provider-neutral agent runtime for Go.</strong></p> <p>Build streaming, tool-using agents across OpenAI, Anthropic, Gemini, and Mistral without hiding provider-native capabilities.</p>

<p> <a href="https://github.com/lace-ai/gai/blob/main/go.mod"><img alt="Go version" src="https://img.shields.io/github/go-mod/go-version/lace-ai/gai"></a> <a href="https://github.com/lace-ai/gai/actions"><img alt="CI" src="https://github.com/lace-ai/gai/actions/workflows/go.yml/badge.svg"></a> <a href="https://github.com/lace-ai/gai/blob/main/LICENSE"><img alt="MIT license" src="https://img.shields.io/badge/license-MIT-informational.svg"></a> <a href="https://pkg.go.dev/github.com/lace-ai/gai"><img alt="Go reference" src="https://pkg.go.dev/badge/github.com/lace-ai/gai.svg"></a> </p> </div>

GAI is a composable Go runtime for model calls, tools, streaming, context, history, and observability. Shared APIs keep application code provider-neutral, while built-in adapters preserve native tools, structured output, reasoning controls, and message history where supported.

Project status: GAI is pre-v1. It is already usable, but public APIs may still change before the first stable release.

Requirements

  • Go 1.26.1 or newer
  • Credentials for the model provider you use

Install the module in an existing application:

go get github.com/lace-ai/gai

Build a basic agent

This complete program streams a response from an OpenAI-backed agent:

package main

import (
  "context"
  "fmt"
  "log"
  "os"

  "github.com/lace-ai/gai/agent"
  "github.com/lace-ai/gai/ai/openai"
  gaictx "github.com/lace-ai/gai/context"
  "github.com/lace-ai/gai/loop"
  "github.com/lace-ai/gai/ai"
)

func main() {
  if err := run(context.Background()); err != nil {
    log.Fatal(err)
  }
}

func run(ctx context.Context) error {
  provider := openai.New(os.Getenv("OPENAI_API_KEY"), nil)

  model, err := provider.Model("gpt-4.1-mini")
  if err != nil {
    return err
  }
  defer func() {
    if err := model.Close(); err != nil {
      log.Printf("close model: %v", err)
    }
  }()

  assistant := agent.New(agent.Definition{
    Name:  "assistant",
    Model: model,
    Prompt: func(context.Context, agent.RunInput) (gaictx.PromptBuilder, error) {
      return gaictx.New(gaictx.Definition{
        SystemInstructions: []gaictx.Part{
          gaictx.NewTextPart("You are a concise, helpful assistant."),
        },
      }), nil
    },
  })

  workflow, err := assistant.NewRun(ctx, agent.RunInput{
    Prompt: gaictx.PromptInput{
      User: gaictx.NewTextContent("What is the capital of France?"),
    },
  })
  if err != nil {
    log.Fatal(err)
  }

  var runErr error
  for event := range workflow.RunEvents(ctx) {
    switch event.Type {
    case loop.EventToken:
      if event.Token != nil && event.Token.Type == ai.TokenTypeText {
        if event.Token.Text != "" {
          fmt.Print(event.Token.Text)
        } else {
          fmt.Print(event.Token.String())
        }
      }

    case loop.EventError, loop.EventCanceled:
      runErr = event.Err
    }
  }

  fmt.Println()
  return runErr
}

Workflow.RunEvents is the preferred API for a primary agent when event order matters. Each workflow is single-use; create a new workflow from the reusable agent definition for each request.

Package boundary

agent is the high-level API: it owns reusable definitions, per-run configuration, workflow lifecycle, middleware, and aggregate results. loop is the canonical low-level execution API and owns tools, tool responses and helpers, selection and transport, ordered events, and iterations. ai owns provider-neutral request, definition, and call types. Use agent for application workflows; use loop directly only when an application deliberately needs mutable execution control.

Workflow.RunEvents exposes the canonical loop.Event stream, while workflow results contain copied loop.Iteration snapshots. Prompt-only tool rendering accepts context.ToolSignature, so context packages do not require executable tools.

A tool has a typed schema and a Go function:

type Tool interface {
  Name() string
  Description() string
  Params() ai.ToolParameters
  Function(ctx context.Context, req *ai.ToolCall) *ToolResponse
}

Tool parameters are converted to JSON Schema for provider-native function calling. Models that do not support native tools can use GAI's text-protocol compatibility path.

func (t *LookupOrderTool) Params() ai.ToolParameters {
  return ai.ToolParameters{
    Strict: true,
    Properties: []ai.ToolParameter{
      {
        Name:        "order_id",
        Type:        ai.ToolParameterString,
        Description: "The order ID to look up.",
        Required:    true,
      },
    },
  }
}

func (t *LookupOrderTool) Function(
  ctx context.Context,
  req *ai.ToolCall,
) *loop.ToolResponse {
  var args struct {
    OrderID string `json:"order_id"`
  }
  if err := loop.DecodeToolArgs(req, &args); err != nil {
    return loop.NewToolError(err)
  }
  return loop.NewToolSuccess(`{"status":"in_transit"}`)
}

Attach tools to an agent definition:

support := agent.New(agent.Definition{
  Name:  "support",
  Model: model,
  Tools: []loop.Tool{lookupOrderTool},
  Prompt: supportPrompt,
})

The loop sends definitions to the model, executes requested calls, appends tool results to the conversation, and continues until the model commits a normal response or the iteration limit is reached.

For per-run tools, set RunInput.Execution.Tools:

  • nil inherits Definition.Tools
  • a non-nil slice replaces them
  • an empty slice disables tools for that run
workflow, err := support.NewRun(ctx, agent.RunInput{
  Execution: agent.ExecutionConfig{
    Tools: []loop.Tool{lookupOrderToolForUser(userID)},
  },
})

Execution.ToolChoice and Execution.Reasoning can also be configured per run.

Ordered workflow events

RunEvents forwards the loop's event stream without splitting it into unrelated channels:

for event := range workflow.RunEvents(ctx) {
  switch event.Type {
  case loop.EventAttemptStart:
    // A generation attempt began.
  case loop.EventToken:
    // Stream visible text or inspect other token types.
  case loop.EventRetry:
    // Roll back output associated with event.AttemptID.
  case loop.EventIterationDone:
    // One model/tool iteration completed.
  case loop.EventDone:
    // The loop completed successfully.
  case loop.EventError, loop.EventCanceled:
    // Handle terminal failure or cancellation.
  }
}

Workflow.Run remains available for workflows that use post-processing middleware. It exposes compatibility token, status, and error channels; consumers must drain all three concurrently.

Workflow middleware

Middleware stages run after an upstream agent completes and are suited to tasks such as memory extraction, auditing, formatting, and evaluation.

agent.NewAgentMiddleware adapts another agent with one of three output policies:

  • PreserveOutput keeps the upstream output and records the stage result.
  • AppendOutput emits the stage output after the upstream output.
  • ReplaceOutput replaces the visible output after a successful stage.

Use AgentMiddlewareConfig.MapInput to map a typed upstream WorkflowResult into the next agent's RunInput. Use MiddlewareFunc for transformations that do not need another model call.

Middleware is post-processing, not a supervisor or handoff runtime. Tool authorization and approval belong at the tool-execution boundary rather than in workflow middleware.

Package map

agent/                   Reusable agent definitions, workflows, middleware, and summary agents
ai/                      Provider-neutral requests, responses, tools, capabilities, and providers
context/                 Prompt construction, rendering, structured input, and messages
context/history/         Persisted history selection and optional summarization
loop/                    Ordered model/tool execution and tool helpers
observability/langfuse/  Optional Langfuse OpenTelemetry exporter setup
testutil/                Mocks and helpers used by tests
🎯 aiskill88 AI 点评 A 级 2026-06-03

高质量的AI工作流框架,易于使用

📚 实用指南(长尾问题)
适合谁
  • 构建多智能体协作系统的 Agent 开发者
  • 构建企业知识库 / RAG 检索应用的团队
最佳实践
  • 分块大小建议 256-512 tokens,向量库优选 pgvector 或 Qdrant
  • Agent 任务先做 dry-run 验证工具调用链,再开启自主执行
常见错误
  • API key 直接提交到 git 仓库(请用 .env 并加入 .gitignore)
  • embedding 模型与查询模型不一致导致检索失效
部署方案
  • 云端托管:可放在 Vercel / Railway / Fly.io 等 PaaS 平台
相关搜索
gai 中文教程gai 安装报错怎么办gai Agent 工作流gai 与同类工具对比gai 最佳实践gai 适合谁用

⚡ 核心功能

👥 适合谁
  • 构建多智能体协作系统的 Agent 开发者
  • 构建企业知识库 / RAG 检索应用的团队
⭐ 最佳实践
  • 分块大小建议 256-512 tokens,向量库优选 pgvector 或 Qdrant
  • Agent 任务先做 dry-run 验证工具调用链,再开启自主执行
⚠️ 常见错误
  • API key 直接提交到 git 仓库(请用 .env 并加入 .gitignore)
  • embedding 模型与查询模型不一致导致检索失效

👥 适合人群

自动化工程师和运维人员项目经理和业务分析师希望减少重复性工作的专业人士数字化转型团队

🎯 使用场景

  • 自动化日常重复性工作,将精力集中于创造性任务
  • 构建数据采集 → 处理 → 输出的完整自动化管线
  • 实现跨平台、跨系统的数据流转和业务协同

⚖️ 优点与不足

✅ 优点
  • +大幅减少重复性人工操作
  • +可视化流程,清晰直观
  • +可扩展性强,支持复杂场景
⚠️ 不足
  • 初始配置和调试需投入一定时间
  • 强依赖外部服务的稳定性
  • 复杂场景需具备一定技术基础
⚠️ 使用须知

该工具使用 LGPL-2.1 协议,商用场景请仔细阅读协议条款,必要时咨询法律意见。

AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。

建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。

📄 License 说明

⚠️ LGPL 2.1 — 弱 Copyleft,可动态链接到商业软件,但修改库本身须开源。

🔗 相关工具推荐

📚 相关教程推荐
📰 相关 AI 新闻
🍿 AI 圈相关吃瓜
🗺️ 相关解决方案
🧩 你可能还需要
基于当前 Skill 的能力图谱,自动补全的工具组合

❓ 常见问题 FAQ

gai 是一款Go开发的AI辅助工具。开源AI工作流:🤖 GAI is a flexible Go framework for building agent-style applications on top o。⭐8 · Go 主要应用场景包括:构建智能应用和工作流。
💡 AI Skill Hub 点评

经综合评估,GAI 在Agent工作流赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。

⬇️ 获取与下载
⬇ 下载源码(GPL)
⚠️ 本工具使用 LGPL-2.1 协议。您可以自由下载和使用,但衍生作品必须以相同协议开源,不可商业闭源。使用前请确认符合协议要求。
📚 深入学习 GAI
查看分步骤安装教程和完整使用指南,快速上手这款工具
🌐 原始信息
原始名称 gai
原始描述 开源AI工作流:🤖 GAI is a flexible Go framework for building agent-style applications on top o。⭐8 · Go
Topics AIGo工作流
GitHub https://github.com/lace-ai/gai
License LGPL-2.1
语言 Go
🔗 原始来源
🐙 GitHub 仓库  https://github.com/lace-ai/gai 🌐 官方网站  https://lace.moorph.eu/

收录时间:2026-06-03 · 更新时间:2026-06-05 · License:LGPL-2.1 · AI Skill Hub 不对第三方内容的准确性作法律背书。

📺 订阅 AI Skill Hub Daily Telegram 频道
每天 8 条精选 AI Skill、MCP、Agent 与自动化工具推送
加入频道 →