Golang新AI Agent SDK发布与使用指南

Golang新AI Agent SDK发布与使用指南 agent-sdk-go

大家好!我开源了一个 Agent SDK,目前已在 GitHub 上正式发布。

🔍 概述

Agent SDK Go 提供了一个全面的框架,用于在 Go 语言中构建 AI 智能体。它允许你创建能够使用工具、将任务移交给其他专业智能体并生成结构化输出的智能体——同时支持多种大语言模型(LLM)提供商。

🌟 特性

  • 支持多种 LLM 提供商 - 从 LM Studio 开始,支持本地模型集成
  • 工具集成 - 直接从你的 LLM 调用 Go 函数
  • 智能体移交 - 创建包含专业智能体的复杂多智能体工作流
  • 结构化输出 - 将响应解析为 Go 结构体
  • 流式响应 - 获取实时流式响应
  • 追踪与监控 - 调试你的智能体流程
  • OpenAI 兼容性 - 兼容 OpenAI 工具定义

让我看看你能用它构建什么!也请给我反馈。 如果你喜欢它,也欢迎给它点个星。

项目地址:GitHub - pontus-devoteam/agent-sdk-go: Build agents in light speed


更多关于Golang新AI Agent SDK发布与使用指南的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于Golang新AI Agent SDK发布与使用指南的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


这是一个很棒的Go语言AI Agent SDK项目!从特性列表来看,这个SDK确实提供了构建AI智能体所需的核心功能。让我通过几个代码示例来展示如何使用这个SDK:

基础智能体创建示例

package main

import (
    "context"
    "fmt"
    "log"
    
    "github.com/pontus-devoteam/agent-sdk-go/agent"
    "github.com/pontus-devoteam/agent-sdk-go/llm"
)

func main() {
    // 创建LM Studio客户端
    client := llm.NewLMStudioClient("http://localhost:1234")
    
    // 创建智能体
    myAgent := agent.NewAgent(
        agent.WithLLM(client),
        agent.WithSystemPrompt("你是一个有用的助手"),
    )
    
    // 运行智能体
    ctx := context.Background()
    response, err := myAgent.Run(ctx, "今天天气怎么样?")
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println("智能体回复:", response)
}

工具集成示例

package main

import (
    "context"
    "fmt"
    "log"
    "strings"
    
    "github.com/pontus-devoteam/agent-sdk-go/agent"
    "github.com/pontus-devoteam/agent-sdk-go/llm"
    "github.com/pontus-devoteam/agent-sdk-go/tools"
)

// 定义自定义工具
func getWeather(city string) string {
    // 模拟天气查询
    return fmt.Sprintf("%s的天气是晴朗,25°C", city)
}

func main() {
    client := llm.NewLMStudioClient("http://localhost:1234")
    
    // 创建工具集
    toolset := tools.NewToolSet()
    toolset.Register("get_weather", "获取城市天气", getWeather)
    
    // 创建带工具的智能体
    myAgent := agent.NewAgent(
        agent.WithLLM(client),
        agent.WithTools(toolset),
        agent.WithSystemPrompt("你可以使用工具来获取天气信息"),
    )
    
    ctx := context.Background()
    response, err := myAgent.Run(ctx, "查询北京的天气")
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println(response)
}

结构化输出示例

package main

import (
    "context"
    "fmt"
    "log"
    
    "github.com/pontus-devoteam/agent-sdk-go/agent"
    "github.com/pontus-devoteam/agent-sdk-go/llm"
)

// 定义输出结构
type WeatherInfo struct {
    City        string `json:"city"`
    Temperature string `json:"temperature"`
    Condition   string `json:"condition"`
    Humidity    string `json:"humidity"`
}

func main() {
    client := llm.NewLMStudioClient("http://localhost:1234")
    
    // 创建支持结构化输出的智能体
    myAgent := agent.NewAgent(
        agent.WithLLM(client),
        agent.WithStructuredOutput(true),
    )
    
    ctx := context.Background()
    
    // 解析为结构体
    var weather WeatherInfo
    err := myAgent.RunStructured(ctx, 
        "生成北京的天气报告,温度为25°C,晴朗,湿度60%",
        &weather,
    )
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Printf("城市: %s\n温度: %s\n天气: %s\n湿度: %s\n",
        weather.City, weather.Temperature, 
        weather.Condition, weather.Humidity)
}

多智能体工作流示例

package main

import (
    "context"
    "fmt"
    "log"
    
    "github.com/pontus-devoteam/agent-sdk-go/agent"
    "github.com/pontus-devoteam/agent-sdk-go/llm"
)

func main() {
    client := llm.NewLMStudioClient("http://localhost:1234")
    
    // 创建专业智能体
    weatherAgent := agent.NewAgent(
        agent.WithLLM(client),
        agent.WithSystemPrompt("你是天气专家,专门回答天气相关问题"),
    )
    
    travelAgent := agent.NewAgent(
        agent.WithLLM(client),
        agent.WithSystemPrompt("你是旅行规划专家,根据天气建议旅行活动"),
    )
    
    // 主智能体协调工作流
    mainAgent := agent.NewAgent(
        agent.WithLLM(client),
        agent.WithDelegation(map[string]*agent.Agent{
            "weather": weatherAgent,
            "travel":  travelAgent,
        }),
        agent.WithSystemPrompt("根据用户需求,将任务分发给合适的专家智能体"),
    )
    
    ctx := context.Background()
    response, err := mainAgent.Run(ctx, 
        "我想去北京旅行,需要知道天气情况和旅行建议")
    if err != nil {
        log.Fatal(err)
    }
    
    fmt.Println("综合回复:", response)
}

流式响应示例

package main

import (
    "context"
    "fmt"
    "log"
    
    "github.com/pontus-devoteam/agent-sdk-go/agent"
    "github.com/pontus-devoteam/agent-sdk-go/llm"
)

func main() {
    client := llm.NewLMStudioClient("http://localhost:1234")
    
    myAgent := agent.NewAgent(
        agent.WithLLM(client),
        agent.WithStreaming(true),
    )
    
    ctx := context.Background()
    
    // 获取流式响应
    stream, err := myAgent.RunStream(ctx, "讲一个关于Go语言的故事")
    if err != nil {
        log.Fatal(err)
    }
    
    // 实时处理流式响应
    for chunk := range stream {
        if chunk.Error != nil {
            log.Fatal(chunk.Error)
        }
        fmt.Print(chunk.Content)
    }
    fmt.Println()
}

这个SDK的设计看起来非常现代化,特别是对本地模型(LM Studio)的支持和OpenAI兼容性,使得从现有项目迁移变得容易。工具集成和智能体移交功能为构建复杂的工作流提供了很好的基础架构。

回到顶部