홈 / 문서 / Go

Go

표준 라이브러리로 Go에서 게이트웨이를 호출하세요 — 타사 클라이언트가 필요하지 않습니다.

두 엔드포인트 모두 HTTP를 통해 일반 JSON를 사용하므로 net/http 만으로 충분합니다.

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
    "os"
    "time"
)

type msg struct {
    Role    string `json:"role"`
    Content string `json:"content"`
}

type req struct {
    Model     string `json:"model"`
    MaxTokens int    `json:"max_tokens"`
    Messages  []msg  `json:"messages"`
}

type resp struct {
    Content []struct {
        Text string `json:"text"`
    } `json:"content"`
    Usage struct {
        InputTokens  int `json:"input_tokens"`
        OutputTokens int `json:"output_tokens"`
    } `json:"usage"`
}

func main() {
    body, _ := json.Marshal(req{
        Model:     "claude-sonnet-4-6",
        MaxTokens: 1024,
        Messages:  []msg{{Role: "user", Content: "Hello"}},
    })

    r, _ := http.NewRequest("POST", "https:">//aiprimetech.io/v1/messages", bytes.NewReader(body))
    r.Header.Set("x-api-key", os.Getenv("CLAUDEAPIKEY"))
    r.Header.Set("anthropic-version", "2023-06-01")
    r.Header.Set("content-type", "application/json")

    client := &http.Client{Timeout: 120 * time.Second}
    res, err := client.Do(r)
    if err != nil {
        panic(err)
    }
    defer res.Body.Close()

    var out resp
    json.NewDecoder(res.Body).Decode(&out)
    fmt.Println(out.Content[0].Text)
    fmt.Println(out.Usage.InputTokens, out.Usage.OutputTokens)
}
항상 명시적으로 설정하세요: Timeout 클라이언트에 설정해야 합니다. Go의 기본 http.Client 에는 이 설정이 없으므로, 연결이 멈추면 고루틴이 무기한 차단됩니다.