AI代理框架

一个用于构建具有工具使用、多代理编排、规划和反思功能的AI代理的Go框架,支持多种LLM提供商。

  • by ginkida
  • Go
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 ginkida/gokin-sdk

使用说明

戈金sdk

Go框架用于构建具有工具使用、多代理编排、规划和反射的AI代理。支持 双子座, 开放人工智能, 人类学(克劳德),以及 奥拉玛 作为LLM提供者。

特性

  • 多供应商 --具有统一界面的Gemini、OpenAI、Anthropic和Ollama
  • 工具使用 --29个内置工具(bash、文件I/O、git、grep、网络搜索等)
  • 多代理 --并行和顺序代理执行的运行器/协调器
  • 规划 --复杂任务分解的波束搜索、MCTS和A*策略
  • 反思 --通过反射中间件实现自校正代理
  • 智能路由 --具有策略学习的自适应任务路由
  • MCP支持 --外部工具服务器的模型上下文协议
  • 会话 --具有自动保存功能的持久对话状态
  • 安全 --命令沙盒、路径验证、权限系统

安装

go get github.com/ginkida/gokin-sdk

需要Go 1.23或更高版本。

快速开始

package main

import (
    "context"
    "fmt"
    "os"

    sdk "github.com/ginkida/gokin-sdk"
    "github.com/ginkida/gokin-sdk/provider/gemini"
    "github.com/ginkida/gokin-sdk/tools"
)

func main() {
    ctx := context.Background()

    client, err := gemini.New(ctx, os.Getenv("GEMINI_API_KEY"), "gemini-2.0-flash")
    if err != nil {
        panic(err)
    }
    defer client.Close()

    workDir, _ := os.Getwd()
    registry := sdk.NewRegistry()
    registry.MustRegister(tools.NewBash(workDir))
    registry.MustRegister(tools.NewRead())
    registry.MustRegister(tools.NewGlob(workDir))
    registry.MustRegister(tools.NewGrep(workDir))

    agent, err := sdk.NewAgent("assistant", client, registry,
        sdk.WithSystemPrompt("You are a helpful coding assistant."),
        sdk.WithMaxTurns(20),
        sdk.WithOnText(func(text string) {
            fmt.Print(text)
        }),
    )
    if err != nil {
        panic(err)
    }

    result, err := agent.Run(ctx, "Find all Go files and count lines of code")
    if err != nil {
        panic(err)
    }
    fmt.Printf("\nDone in %d turns\n", result.Turns)
}

提供商示例

双子座

client, err := gemini.New(ctx, os.Getenv("GEMINI_API_KEY"), "gemini-2.0-flash")

开放人工智能

client, err := openai.New(os.Getenv("OPENAI_API_KEY"), "gpt-4o")

与任何兼容OpenAI的API(vLLM、LM Studio、Together AI、Groq)配合使用:

client, err := openai.New(apiKey, "model-name", openai.WithBaseURL("http://localhost:8000"))

人类学(克劳德)

client, err := anthropic.New(os.Getenv("ANTHROPIC_API_KEY"), "claude-sonnet-4-5-20250929")

Ollama(当地)

client, err := ollama.New("http://localhost:11434", "llama3")

多代理执行

runner := sdk.NewRunner(client, registry,
    sdk.WithRunnerMaxTurns(10),
)

coordinator := sdk.NewCoordinator(runner, 3) // max 3 parallel agents

results, err := coordinator.RunParallel(ctx, []sdk.AgentTask{
    {Prompt: "Count Go files", Type: sdk.AgentTypeBash, Description: "Count files"},
    {Prompt: "Find TODO comments", Type: sdk.AgentTypeExplore, Description: "Find TODOs"},
})

内置工具

类别 工具
文件I/O read, write, edit, glob, grep, delete, move, copy, mkdir, list_dir, tree, diff
执行 bash, run_tests, batch
Git git, git_branch, git_pr
搜索 web_fetch, web_search, semantic_search
代理 ask_user, ask_agent, task, task_output, task_stop, coordinate
规划 plan_mode, shared_memory

项目结构

gokin-sdk/
├── provider/          # LLM providers (gemini, openai, anthropic, ollama)
├── tools/             # Built-in tool implementations
├── plan/              # Planning engine (beam, MCTS, A*)
├── context/           # Context management and summarization
├── config/            # Configuration and loading
├── security/          # Sandboxing and validation
├── permission/        # Permission system
├── mcp/               # Model Context Protocol client
├── memory/            # Error store, project learning
├── tasks/             # Background task management
├── audit/             # Audit logging
├── session.go         # Session persistence
├── middleware.go       # Reflector and middleware
├── pool.go            # Client connection pool
├── examples/          # Usage examples
│   ├── simple/        # Basic agent
│   ├── openai/        # OpenAI / compatible APIs
│   ├── anthropic/     # Anthropic provider
│   ├── multi_agent/   # Parallel agents
│   ├── planner/       # Plan-driven execution
│   ├── smart_router/  # Adaptive routing
│   ├── mcp/           # MCP integration
│   └── session/       # Session persistence
└── ...

例子

请参阅 examples/ 可运行演示的目录:

许可证

麻省理工学院