v0.8.4

介面與工廠

最後更新

Agent 介面、router 工廠,以及各供應商套件的匯出。所有型別位於 github.com/pardnchiu/go-llm-router/core(該目錄宣告的 package 名為 llmrouter),工廠位於 core/router。

介面

type Agent interface {
    Name() string
    Send(ctx context.Context, messages []Message, toolDefs []Tool, reasoning Reasoning, mode Mode) (*Output, int, error)
}

type StreamAgent interface {
    SendStream(ctx context.Context, messages []Message, toolDefs []Tool, reasoning Reasoning, mode Mode) (<-chan StreamEvent, error)
}

type ReasoningAgent interface {
    ReasoningLimits() (min, max Reasoning)
}

type ImageAgent interface {
    GenerateImage(ctx context.Context, prompt string, opts ImageOptions) (*ImageResult, error)
}

type STTAgent interface {
    Transcribe(ctx context.Context, audio []byte, opts STTOptions) (*STTResult, error)
}

type TTSAgent interface {
    Speak(ctx context.Context, text string, opts TTSOptions) (*TTSResult, error)
}

router

符號 簽名 說明
router.Config struct{ Name, APIKey string; Token any; BaseURL, AccountID, GatewayID string } Name 為 provider@model
router.New func(config Config) (llmrouter.Agent, error) 依前綴建構 Agent;未知前綴且含 @ 時改寫為 compat[<prefix>]@<model>

供應商套件

每個供應商套件皆提供 Prefix 常數、New(llmrouter.Config) (*Agent, error)、(*Agent).Name() 與 Models(ctx, llmrouter.Config, llmrouter.ModelFilter) ([]string, error);core/compat 例外,沒有 Prefix 與 Models。

套件 前綴 額外匯出
core/claude claude@ —
core/openai openai@ ImageInput、ReadImageStream、ImageInstructions
core/gemini gemini@ ModelInfos;:generateContent 傳輸型別 Content、Part、InlineData、FunctionCall、FunctionResponse、Output
core/grok grok@ RequestImage
core/grokOauth grok-oauth@ Usage
core/deepseek deepseek@ Usage
core/mistral mistral@ ModelInfos
core/nvidia nvidia@ —
core/ollamaCloud ollama-cloud@ Usage
core/openRouter openrouter@ Usage
core/cloudflare cloudflare@ —
core/compat compat@ / compat[name]@ —
core/copilot copilot@ Usage、ModelInfos
core/openaiCodex codex@ Usage

共用傳輸輔助

沒有前綴、由多個轉接層匯入的套件。

套件 使用者 匯出
core/copilot/response(package copilotResponse) openai、codex、copilot、core/xai ConvertInput、ConvertTools、ConvertOutput;Responses API 傳輸型別 Output、ToolCall
core/xai grok、grok-oauth ResponsesAPI(https://api.x.ai/v1/responses)、BuildBody(ctx, model, messages, tools, effort string, fast bool) map[string]any、ParseSSEStream(label string, resp *http.Response) (*llmrouter.Output, error)

xai.BuildBody 一律要求串流,因此兩個 Grok 轉接層的非串流 Send 也是以 xai.ParseSSEStream 讀取 SSE,再組成單一 Output 回傳。

相關頁面

EN