文件 v0.4.0

快速開始

安裝 go-llm-router,並以統一的 Agent 介面送出第一個請求。

環境需求

安裝

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"

    "github.com/pardnchiu/go-llm-router/core"
    "github.com/pardnchiu/go-llm-router/core/router"
)

func main() {
    agent, err := router.New(router.Config{
        Name:   "openai@gpt-5.4",
        APIKey: "your-api-key",
    })
    if err != nil {
        log.Fatal(err)
    }

    messages := []core.Message{
        {Role: "user", Content: "用一句話解釋 Go interface。"},
    }

    out, status, err := agent.Send(
        context.Background(),
        messages,
        nil,
        core.ReasoningMedium,
        core.ModeDefault,
    )
    if err != nil {
        log.Fatalf("request failed (HTTP %d): %v", status, err)
    }
    if len(out.Choices) == 0 {
        log.Fatal("provider returned no choices")
    }

    fmt.Println(out.Choices[0].Message.Content)
}

Name 使用 <provider>@<model> 格式。未知的 provider 前綴會讓 router.New 回傳錯誤。

請求加速層

ModeFast 是能力請求而非保證。先用 core.SupportFast 檢查 provider/model 組合;不支援的組合靜默維持標準層,不會因此失敗。

mode := core.ModeDefault
if core.SupportFast("openai", "gpt-5.4") {
    mode = core.ModeFast
}

out, status, err := agent.Send(ctx, messages, nil, core.ReasoningHigh, mode)

串流輸出

實作 core.StreamAgent 的供應商可透過 channel 取得文字、推理、工具呼叫、用量、完成與錯誤事件。

streamer, ok := agent.(core.StreamAgent)
if !ok {
    return fmt.Errorf("%s does not support streaming", agent.Name())
}

events, err := streamer.SendStream(ctx, messages, nil, core.ReasoningMedium, core.ModeDefault)
if err != nil {
    return err
}

for event := range events {
    switch event.Type {
    case core.StreamEventText:
        fmt.Print(event.TextDelta)
    case core.StreamEventReasoning:
        fmt.Print(event.ReasoningDelta)
    case core.StreamEventError:
        return event.Err
    }
}

本機測試伺服器

make test 執行 go run ./cmd/test,啟動 OpenAI 相容的 HTTP 伺服器,預設監聽 8787,以 PORT 覆寫。憑證由環境變數提供。

export OPENAI_API_KEY="your-api-key"
make test
curl http://127.0.0.1:8787/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "openai@gpt-5.4",
    "messages": [{"role": "user", "content": "Hello"}],
    "reasoning": "medium",
    "mode": "default"
  }'

加上 "stream": true 會改以 OpenAI 風格的 chat.completion.chunk SSE 回傳,並以 data: [DONE] 結尾。

下一步

EN