Go SDK

Official Go SDK for TalonAI - integrate AI security into your Go applications.

Installation

go get github.com/talonai/talonai-go

Quick Start

package main

import (
    "fmt"
    "log"
    "github.com/talonai/talonai-go"
)

func main() {
    // Initialize client (uses TALONAI_API_KEY env var)
    client, err := talonai.NewClient()
    if err != nil {
        log.Fatal(err)
    }

    // Analyze content
    result, err := client.Analyze(talonai.AnalyzeRequest{
        Content: "Hello, can you help me?",
    })
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Risk Score: %d\n", result.RiskScore)
    fmt.Printf("Is Safe: %t\n", result.IsSafe)
}

HTTP Middleware

package main

import (
    "net/http"
    "github.com/talonai/talonai-go"
)

func TalonMiddleware(client *talonai.Client) func(http.Handler) http.Handler {
    return func(next http.Handler) http.Handler {
        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
            // Extract content from request
            content := r.FormValue("message")

            result, err := client.Analyze(talonai.AnalyzeRequest{
                Content: content,
            })

            if err != nil || !result.IsSafe {
                http.Error(w, "Request blocked", http.StatusForbidden)
                return
            }

            next.ServeHTTP(w, r)
        })
    }
}

Gin Framework

package main

import (
    "github.com/gin-gonic/gin"
    "github.com/talonai/talonai-go"
)

func main() {
    client, _ := talonai.NewClient()

    r := gin.Default()

    r.POST("/chat", func(c *gin.Context) {
        var req struct {
            Message string `json:"message"`
        }
        c.BindJSON(&req)

        result, _ := client.Analyze(talonai.AnalyzeRequest{
            Content: req.Message,
        })

        if !result.IsSafe {
            c.JSON(403, gin.H{"error": "blocked"})
            return
        }

        // Process safe request...
        c.JSON(200, gin.H{"status": "ok"})
    })

    r.Run()
}

Configuration Options

client, err := talonai.NewClient(
    talonai.WithAPIKey("your-api-key"),
    talonai.WithBaseURL("https://api.talonai.io"),
    talonai.WithTimeout(30 * time.Second),
    talonai.WithRetries(3),
)