Versions in this module Expand all Collapse all v0 v0.6.0 Sep 11, 2026 v0.2.2 Aug 3, 2026 Changes in this version + const DynamicProviderEnvVar + const GeminiSharedParserEnvVar + var AgnesCompat = OpenAICompatConfig + var AzureCompat = OpenAICompatConfig + var BedrockCompat = OpenAICompatConfig + var CanopyWaveCompat = OpenAICompatConfig + var ClinePassCompat = OpenAICompatConfig + var ConcentrateCompat = OpenAICompatConfig + var CoreProviders = staticProviderMaps() + var DeepSeekCompat = OpenAICompatConfig + var DynamicMu sync.RWMutex + var GeminiCompat = OpenAICompatConfig + var GrokCompat = OpenAICompatConfig + var GroqCompat = OpenAICompatConfig + var KimiCompat = OpenAICompatConfig + var LongCatCompat = OpenAICompatConfig + var MiniMaxCompat = OpenAICompatConfig + var OllamaCompat = OpenAICompatConfig + var OpenAICompat = OpenAICompatConfig + var OpenAICompatibleProviders = staticProviderMaps() + var OpenCodeGoCompat = OpenAICompatConfig + var OpenGatewayCompat = OpenAICompatConfig + var OpenRouterCompat = OpenAICompatConfig + var PoolsideCompat = OpenAICompatConfig + var StepFunCompat = OpenAICompatConfig + var VertexCompat = OpenAICompatConfig + var XiaomiCompat = OpenAICompatConfig + var ZAICompat = OpenAICompatConfig + func AWSCanonicalURI(uri string) string + func AWSSigningKey(secret, dateStamp, region, service string) []byte + func AnthropicBaseFromOpenAIV1(openAIBase string) string + func AudioFormatToMediaType(format string) string + func BuildAnthropicCachedRequest(messages []core.EyrieMessage, model string, maxTokens int, ...) map[string]interface + func BuildAnthropicMessages(messages []core.EyrieMessage) ([]map[string]interface{}, string) + func CanonicalAWSHeaders(headers http.Header) (string, string) + func ConvertToAnthropicTools(tools []core.EyrieTool) []anthropicTool + func DetectProvider() string + func DynamicProviderEnabled() bool + func FreezeRegistry() + func OACompatUnsupportedError(err error) bool + func OpenAIBaseFallbackURL() string + func OpenAIToolChoice(tc *core.ToolChoiceOption) interface + func ParseAnthropicResponse(ar anthropicResponse, requestID, orgID string) *core.EyrieResponse + func ProcessGeminiStream(ctx context.Context, events <-chan core.SSEEvent, logger *slog.Logger) <-chan core.EyrieStreamEvent + func RegisterDynamicProvider(name, baseURL, envKey string) error + func ResolveEnvSecret(envKey string) string + func ResolveProviderModelEnvOverride(provider string) string + func Sha256Hex(data []byte) string + func ThinkingForBudget(budget int) *anthropicThinking + type AgnesClient struct + func NewAgnesClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *AgnesClient + func (c *AgnesClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *AgnesClient) Name() string + func (c *AgnesClient) Ping(ctx context.Context) error + func (c *AgnesClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type AnthropicClient struct + func NewAnthropicClient(apiKey, baseURL string, opts ...core.ClientOption) *AnthropicClient + func (c *AnthropicClient) BaseURL() string + func (c *AnthropicClient) BuildAnthropicRequest(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions, ...) (*http.Request, []byte, error) + func (c *AnthropicClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *AnthropicClient) CountTokens(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*TokenCountResult, error) + func (c *AnthropicClient) DefaultMaxTokens() int + func (c *AnthropicClient) DefaultModel() string + func (c *AnthropicClient) DefaultTemperature() *float64 + func (c *AnthropicClient) Guardrails() *core.Guardrails + func (c *AnthropicClient) HTTPClient() *http.Client + func (c *AnthropicClient) Logger() *slog.Logger + func (c *AnthropicClient) Name() string + func (c *AnthropicClient) Ping(ctx context.Context) error + func (c *AnthropicClient) Retry() core.RetryConfig + func (c *AnthropicClient) SetAPIKey(key string) + func (c *AnthropicClient) SetBaseURL(url string) + func (c *AnthropicClient) SetDefaultMaxTokens(n int) + func (c *AnthropicClient) SetDefaultModel(model string) + func (c *AnthropicClient) SetDefaultTemperature(t float64) + func (c *AnthropicClient) SetGuardrails(g *core.Guardrails) + func (c *AnthropicClient) SetHTTPClient(hc *http.Client) + func (c *AnthropicClient) SetLogger(l *slog.Logger) + func (c *AnthropicClient) SetMimoAuth() + func (c *AnthropicClient) SetProviderName(string) + func (c *AnthropicClient) SetRetry(rc core.RetryConfig) + func (c *AnthropicClient) SetTimeout(d time.Duration) + func (c *AnthropicClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + func (c *AnthropicClient) Version() string + type AnthropicMetadata = anthropicMetadata + type AnthropicOutputConfig = anthropicOutputConfig + func ResolveOutputConfig(opts core.ChatOptions) *AnthropicOutputConfig + type AnthropicOutputFormat = anthropicOutputFormat + type AnthropicRequest = anthropicRequest + type AnthropicResponse = anthropicResponse + type AnthropicThinking = anthropicThinking + func ResolveThinking(opts core.ChatOptions) *AnthropicThinking + type AnthropicTool = anthropicTool + type AnthropicToolChoice = anthropicToolChoice + func ResolveToolChoice(tc *core.ToolChoiceOption) *AnthropicToolChoice + type AzureClient struct + func NewAzureClient(apiKey, endpoint, apiVersion string) *AzureClient + func (c *AzureClient) APIVersion() string + func (c *AzureClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *AzureClient) Endpoint() string + func (c *AzureClient) Name() string + func (c *AzureClient) Ping(ctx context.Context) error + func (c *AzureClient) SetHTTPClient(hc *http.Client) + func (c *AzureClient) SetRetry(rc core.RetryConfig) + func (c *AzureClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type BedrockClient struct + func NewBedrockClient(accessKeyID, secretAccessKey, sessionToken, region string) *BedrockClient + func (c *BedrockClient) BuildBody(messages []core.EyrieMessage, opts core.ChatOptions) ([]byte, error) + func (c *BedrockClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *BedrockClient) HTTPClient() *http.Client + func (c *BedrockClient) ModelURL(model string) string + func (c *BedrockClient) Name() string + func (c *BedrockClient) Ping(ctx context.Context) error + func (c *BedrockClient) Region() string + func (c *BedrockClient) Retry() core.RetryConfig + func (c *BedrockClient) SetHTTPClient(hc *http.Client) + func (c *BedrockClient) SetRetry(rc core.RetryConfig) + func (c *BedrockClient) Sign(req *http.Request, body []byte, now time.Time) error + func (c *BedrockClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + func (c *BedrockClient) String() string + type CanopyWaveClient struct + func NewCanopyWaveClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *CanopyWaveClient + func (c *CanopyWaveClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *CanopyWaveClient) Name() string + func (c *CanopyWaveClient) Ping(ctx context.Context) error + func (c *CanopyWaveClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type ChatProtocol int + const ChatProtocolCompletions + const ChatProtocolMessages + type ClinePassClient struct + func NewClinePassClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *ClinePassClient + func (c *ClinePassClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *ClinePassClient) Name() string + func (c *ClinePassClient) Ping(ctx context.Context) error + func (c *ClinePassClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type ConcentrateResponsesClient struct + func NewConcentrateResponsesClient(apiKey, baseURL string, opts ...core.ClientOption) *ConcentrateResponsesClient + func (c *ConcentrateResponsesClient) BaseURL() string + func (c *ConcentrateResponsesClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *ConcentrateResponsesClient) DefaultMaxTokens() int + func (c *ConcentrateResponsesClient) DefaultModel() string + func (c *ConcentrateResponsesClient) DefaultTemperature() *float64 + func (c *ConcentrateResponsesClient) Guardrails() *core.Guardrails + func (c *ConcentrateResponsesClient) HTTPClient() *http.Client + func (c *ConcentrateResponsesClient) Logger() *slog.Logger + func (c *ConcentrateResponsesClient) Name() string + func (c *ConcentrateResponsesClient) Ping(ctx context.Context) error + func (c *ConcentrateResponsesClient) Retry() core.RetryConfig + func (c *ConcentrateResponsesClient) SetAPIKey(key string) + func (c *ConcentrateResponsesClient) SetBaseURL(url string) + func (c *ConcentrateResponsesClient) SetDefaultMaxTokens(n int) + func (c *ConcentrateResponsesClient) SetDefaultModel(model string) + func (c *ConcentrateResponsesClient) SetDefaultTemperature(t float64) + func (c *ConcentrateResponsesClient) SetGuardrails(g *core.Guardrails) + func (c *ConcentrateResponsesClient) SetHTTPClient(hc *http.Client) + func (c *ConcentrateResponsesClient) SetLogger(l *slog.Logger) + func (c *ConcentrateResponsesClient) SetMimoAuth() + func (c *ConcentrateResponsesClient) SetProviderName(string) + func (c *ConcentrateResponsesClient) SetRetry(rc core.RetryConfig) + func (c *ConcentrateResponsesClient) SetTimeout(d time.Duration) + func (c *ConcentrateResponsesClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + func (c *ConcentrateResponsesClient) Version() string + type DeepSeekClient struct + func NewDeepSeekClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *DeepSeekClient + func (c *DeepSeekClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *DeepSeekClient) Name() string + func (c *DeepSeekClient) Ping(ctx context.Context) error + func (c *DeepSeekClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type GeminiClient struct + func NewGeminiClient(apiKey, baseURL string) *GeminiClient + func (c *GeminiClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *GeminiClient) HTTPClient() *http.Client + func (c *GeminiClient) Name() string + func (c *GeminiClient) Ping(ctx context.Context) error + func (c *GeminiClient) Retry() core.RetryConfig + func (c *GeminiClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type GeminiOpenAIClient struct + func NewGeminiOpenAIClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *GeminiOpenAIClient + func (c *GeminiOpenAIClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *GeminiOpenAIClient) Name() string + func (c *GeminiOpenAIClient) Ping(ctx context.Context) error + func (c *GeminiOpenAIClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type GrokClient struct + func NewGrokClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *GrokClient + func (c *GrokClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *GrokClient) Name() string + func (c *GrokClient) Ping(ctx context.Context) error + func (c *GrokClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type GroqClient struct + func NewGroqClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *GroqClient + func (c *GroqClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *GroqClient) Name() string + func (c *GroqClient) Ping(ctx context.Context) error + func (c *GroqClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type KimiClient struct + func NewKimiClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *KimiClient + func (c *KimiClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *KimiClient) Name() string + func (c *KimiClient) Ping(ctx context.Context) error + func (c *KimiClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type LongCatClient struct + func NewLongCatClient(apiKey, openAIBase, anthropicBase string, compat *OpenAICompatConfig, ...) *LongCatClient + func (c *LongCatClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *LongCatClient) Name() string + func (c *LongCatClient) Ping(ctx context.Context) error + func (c *LongCatClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type MiMoClient struct + func NewMiMoClient(apiKey, openAIBase string, compat *OpenAICompatConfig, providerID string, ...) *MiMoClient + func (c *MiMoClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *MiMoClient) Name() string + func (c *MiMoClient) Ping(ctx context.Context) error + func (c *MiMoClient) ProviderID() string + func (c *MiMoClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type MiniMaxClient struct + func NewMiniMaxClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *MiniMaxClient + func (c *MiniMaxClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *MiniMaxClient) Name() string + func (c *MiniMaxClient) Ping(ctx context.Context) error + func (c *MiniMaxClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type OllamaClient struct + func NewOllamaClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *OllamaClient + func (c *OllamaClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *OllamaClient) Name() string + func (c *OllamaClient) Ping(ctx context.Context) error + func (c *OllamaClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type OpenAIClient struct + func NewOpenAIClient(apiKey, baseURL string, compat *OpenAICompatConfig, opts ...core.ClientOption) *OpenAIClient + func (c *OpenAIClient) BaseURL() string + func (c *OpenAIClient) BuildOpenAIRequest(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions, ...) (*http.Request, []byte, error) + func (c *OpenAIClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *OpenAIClient) Compat() *OpenAICompatConfig + func (c *OpenAIClient) CreateEmbedding(ctx context.Context, req core.EmbeddingRequest) (*core.EmbeddingResponse, error) + func (c *OpenAIClient) DefaultMaxTokens() int + func (c *OpenAIClient) DefaultModel() string + func (c *OpenAIClient) DefaultTemperature() *float64 + func (c *OpenAIClient) Guardrails() *core.Guardrails + func (c *OpenAIClient) HTTPClient() *http.Client + func (c *OpenAIClient) Logger() *slog.Logger + func (c *OpenAIClient) Name() string + func (c *OpenAIClient) Ping(ctx context.Context) error + func (c *OpenAIClient) ProviderName() string + func (c *OpenAIClient) Retry() core.RetryConfig + func (c *OpenAIClient) SetAPIKey(key string) + func (c *OpenAIClient) SetBaseURL(url string) + func (c *OpenAIClient) SetDefaultMaxTokens(n int) + func (c *OpenAIClient) SetDefaultModel(model string) + func (c *OpenAIClient) SetDefaultTemperature(t float64) + func (c *OpenAIClient) SetGuardrails(g *core.Guardrails) + func (c *OpenAIClient) SetHTTPClient(hc *http.Client) + func (c *OpenAIClient) SetLogger(l *slog.Logger) + func (c *OpenAIClient) SetMimoAuth() + func (c *OpenAIClient) SetProviderName(name string) + func (c *OpenAIClient) SetRetry(rc core.RetryConfig) + func (c *OpenAIClient) SetTimeout(d time.Duration) + func (c *OpenAIClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type OpenAICompatConfig struct + DefaultDisableThinking bool + MaxTokensField string + OmitMaxTokens bool + RequiresAssistantAfterToolResult bool + RequiresReasoningPassback bool + RequiresThinkingAsText bool + RequiresToolResultName bool + SupportsCacheRole bool + SupportsDeveloperRole bool + SupportsReasoningEffort bool + SupportsStore bool + SupportsStrictMode bool + SupportsUsageInStreaming bool + ThinkingFormat string + type OpenAIEmbeddingData = openaiEmbeddingData + type OpenAIEmbeddingResponse = openaiEmbeddingResponse + type OpenAIEmbeddingUsage = openaiEmbeddingUsage + type OpenAIRequest = openaiRequest + func BuildRequestBase(messages []core.EyrieMessage, opts core.ChatOptions, stream bool, ...) OpenAIRequest + type OpenAIResponse = openaiResponse + type OpenCodeGoClient struct + func NewOpenCodeGoClient(apiKey, baseURL string, opts ...core.ClientOption) *OpenCodeGoClient + func (c *OpenCodeGoClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *OpenCodeGoClient) Name() string + func (c *OpenCodeGoClient) Ping(ctx context.Context) error + func (c *OpenCodeGoClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type OpenGatewayClient struct + func NewOpenGatewayClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *OpenGatewayClient + func (c *OpenGatewayClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *OpenGatewayClient) Name() string + func (c *OpenGatewayClient) Ping(ctx context.Context) error + func (c *OpenGatewayClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type OpenRouterClient struct + func NewOpenRouterClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *OpenRouterClient + func (c *OpenRouterClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *OpenRouterClient) Name() string + func (c *OpenRouterClient) Ping(ctx context.Context) error + func (c *OpenRouterClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type PoolsideClient struct + func NewPoolsideClient(apiKey, baseURL string, opts ...core.ClientOption) *PoolsideClient + func (c *PoolsideClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *PoolsideClient) Name() string + func (c *PoolsideClient) Ping(ctx context.Context) error + func (c *PoolsideClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type ProtocolChatFallback func(primaryErr error, primaryResp *core.EyrieResponse) bool + type ProtocolRouter struct + Anthropic *AnthropicClient + OpenAI *OpenAIClient + func (r ProtocolRouter) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions, ...) (*core.EyrieResponse, error) + func (r ProtocolRouter) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions, ...) (*core.StreamResult, error) + type ProtocolStreamConfig struct + FallbackOnError func(error) bool + Primary ChatProtocol + ReasoningOnlyFallback bool + type ProviderRegistryConfig struct + BaseURL string + Compat *OpenAICompatConfig + EnvKey string + Name string + SupportsReasoning bool + SupportsStreaming bool + SupportsTools bool + Type ProviderType + type ProviderType string + const ProviderTypeAnthropic + const ProviderTypeAzure + const ProviderTypeBedrock + const ProviderTypeOpenAI + const ProviderTypeOpenAICompatible + const ProviderTypeVertex + type StepFunClient struct + func NewStepFunClient(apiKey, openAIBase string, compat *OpenAICompatConfig, ...) *StepFunClient + func (c *StepFunClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *StepFunClient) Name() string + func (c *StepFunClient) Ping(ctx context.Context) error + func (c *StepFunClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type TokenCountResult struct + InputTokens int + type VertexClient struct + func NewVertexClient(projectID, region, token string) *VertexClient + func (c *VertexClient) BaseURL() string + func (c *VertexClient) BuildBody(messages []core.EyrieMessage, opts core.ChatOptions, stream bool) ([]byte, error) + func (c *VertexClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *VertexClient) HTTPClient() *http.Client + func (c *VertexClient) Name() string + func (c *VertexClient) Ping(ctx context.Context) error + func (c *VertexClient) ProjectID() string + func (c *VertexClient) Region() string + func (c *VertexClient) SetHTTPClient(hc *http.Client) + func (c *VertexClient) SetRetry(rc core.RetryConfig) + func (c *VertexClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error) + type ZAIClient struct + func NewZAIClient(apiKey, openAIBase, anthropicBase string, compat *OpenAICompatConfig, ...) *ZAIClient + func (c *ZAIClient) Chat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.EyrieResponse, error) + func (c *ZAIClient) Name() string + func (c *ZAIClient) Ping(ctx context.Context) error + func (c *ZAIClient) StreamChat(ctx context.Context, messages []core.EyrieMessage, opts core.ChatOptions) (*core.StreamResult, error)