快速開始
最後更新
安裝 go-llm-router,用 provider@model 取得 Agent,並送出第一個請求。
需求
- Go 1.25 以上
github.com/pardnchiu/go-pkgv0.13.14(唯一直接相依,go get時自動取得)- 目標供應商的憑證:API 金鑰,或 Copilot/Codex/Grok 的 OAuth 權杖
- 使用
core/oauth保存權杖時需要作業系統 keychain(macOS Keychain 或 Linuxsecret-tool)
安裝
go get github.com/pardnchiu/go-llm-router
從原始碼建置:
git clone https://github.com/pardnchiu/go-llm-router.git
cd go-llm-router
go build ./...
送出第一個請求
Send 固定五個參數:context、訊息、工具定義(可傳 nil)、Reasoning 等級、Mode。所有供應商共用這組簽名,換模型不必改請求迴圈。
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/pardnchiu/go-llm-router/core"
"github.com/pardnchiu/go-llm-router/core/router"
)
func main() {
agent, err := router.New(router.Config{
Name: "claude@claude-opus-5",
APIKey: os.Getenv("ANTHROPIC_API_KEY"),
})
if err != nil {
log.Fatalf("router.New: %v", err)
}
out, code, err := agent.Send(context.Background(),
[]llmrouter.Message{{Role: "user", Content: "用一句話說明 Go 的 generics。"}},
nil, llmrouter.ReasoningDefault, llmrouter.ModeDefault)
if err != nil {
log.Fatalf("Send: http %d: %v", code, err)
}
if len(out.Choices) == 0 {
log.Fatal("no choices returned")
}
fmt.Println(out.Choices[0].Message.Content)
fmt.Printf("input=%d output=%d cache_read=%d\n",
out.Usage.Input, out.Usage.Output, out.Usage.CacheRead)
}
錯誤回傳會同時帶上游 HTTP 狀態碼,因此重試策略可以直接依 code 判斷,不需要解析錯誤字串。