Documentation
¶
Index ¶
- Constants
- Variables
- func AnthropicMessagesURL(base string) string
- func ApplyChatReasoning(cfg *config.Root, p *openai.ChatCompletionNewParams, forceDisable bool)
- func ApplyMaxResponseTokens(cfg *config.Root, p *openai.ChatCompletionNewParams)
- func ApplyProviderSimpleParams(proto Protocol, cfg *config.Root, openaiParams *openai.ChatCompletionNewParams, ...)
- func ApplyProviderTurnParams(proto Protocol, cfg *config.Root, openaiParams *openai.ChatCompletionNewParams, ...)
- func ApplyReasoningDisable(p *openai.ChatCompletionNewParams)
- func BackoffDelay(policy config.APIResiliencePolicy, attempt int, retryAfter time.Duration, ...) time.Duration
- func BuildUserContentParts(content string, imageFiles map[int]string) []openai.ChatCompletionContentPartUnionParam
- func HostKeyFromBaseURL(baseURL string) string
- func ImagePlaceholder(seq int) string
- func JumpLeftOverImgTag(line []rune, pos int) int
- func JumpRightOverImgTag(line []rune, pos int) int
- func LastAssistantIndex(msgs []chatstore.Message) int
- func MessageForAPI(m chatstore.Message, includeReasoning bool) chatstore.Message
- func MessageParams(system string, msgs []chatstore.Message, imageFiles map[int]string) []openai.ChatCompletionMessageParamUnion
- func MessagesForAPI(msgs []chatstore.Message) []chatstore.Message
- func ModelID(s string) shared.ChatModel
- func NewResilientHTTPClient(policy config.APIResiliencePolicy) *http.Client
- func OpenAIClientFromBackend(b CompletionBackend) (openai.Client, bool)
- func PopulateAssistantTurnUsage(dst *chatstore.Message, system string, msgsPrior []chatstore.Message, ...)
- func PromptDisplaySplit(system string, msgs []chatstore.Message, apiPromptTokens int64) (contextTok int64, lastUserTok int64)
- func RetryMessage(attempt, max int, err error, wait time.Duration) string
- func UsagePromptParts(system string, msgs []chatstore.Message, promptTokens int64, ...) (contextTok int64, lastUserTok int64, contextEstimated bool)
- func UsageTokensDisplayParts(system string, msgs []chatstore.Message, u UsageStats, turnCount int) (contextTok, lastUserTok int64, contextEstimated bool, ...)
- type AnthropicAuth
- type AnthropicAuthKind
- type AnthropicBackend
- func (b *AnthropicBackend) CompleteText(ctx context.Context, req SimpleCompletionRequest) (string, error)
- func (b *AnthropicBackend) ListModels(ctx context.Context) ([]string, error)
- func (b *AnthropicBackend) Protocol() Protocol
- func (b *AnthropicBackend) StreamText(ctx context.Context, req SimpleCompletionRequest, contentOut io.Writer, ...) (string, UsageStats, error)
- func (b *AnthropicBackend) StreamTurn(ctx context.Context, req TurnRequest, contentOut io.Writer, opts StreamOpts) (AssistantTurnResult, error)
- type AnthropicUsagePayload
- type AssistantToolCall
- type AssistantTurnResult
- type CircuitRegistry
- type CompletionBackend
- type ErrorClass
- type OpenAIBackend
- func (b *OpenAIBackend) CompleteText(ctx context.Context, req SimpleCompletionRequest) (string, error)
- func (b *OpenAIBackend) ListModels(ctx context.Context) ([]string, error)
- func (b *OpenAIBackend) Protocol() Protocol
- func (b *OpenAIBackend) StreamText(ctx context.Context, req SimpleCompletionRequest, contentOut io.Writer, ...) (string, UsageStats, error)
- func (b *OpenAIBackend) StreamTurn(ctx context.Context, req TurnRequest, contentOut io.Writer, opts StreamOpts) (AssistantTurnResult, error)
- type Protocol
- type ProviderHTTPError
- type ResilientBackend
- func (b *ResilientBackend) CompleteText(ctx context.Context, req SimpleCompletionRequest) (string, error)
- func (b *ResilientBackend) ListModels(ctx context.Context) ([]string, error)
- func (b *ResilientBackend) Protocol() Protocol
- func (b *ResilientBackend) StreamText(ctx context.Context, req SimpleCompletionRequest, contentOut io.Writer, ...) (string, UsageStats, error)
- func (b *ResilientBackend) StreamTurn(ctx context.Context, req TurnRequest, contentOut io.Writer, opts StreamOpts) (AssistantTurnResult, error)
- type SimpleCompletionRequest
- type StreamOpts
- type ToolDef
- type TurnRequest
- type UsageStats
Constants ¶
const AnthropicAPIVersion = "2023-06-01"
const AnthropicOAuthBeta = "oauth-2025-04-20"
Variables ¶
var ErrCircuitOpen = errors.New("provider temporarily unavailable")
var ErrStreamAccumulatorRejected = errors.New("chat completion stream accumulator rejected chunk")
Functions ¶
func AnthropicMessagesURL ¶ added in v0.20260521.2
func ApplyChatReasoning ¶
func ApplyChatReasoning(cfg *config.Root, p *openai.ChatCompletionNewParams, forceDisable bool)
func ApplyMaxResponseTokens ¶
func ApplyMaxResponseTokens(cfg *config.Root, p *openai.ChatCompletionNewParams)
func ApplyProviderSimpleParams ¶ added in v0.20260521.2
func ApplyProviderTurnParams ¶ added in v0.20260521.2
func ApplyReasoningDisable ¶
func ApplyReasoningDisable(p *openai.ChatCompletionNewParams)
func BackoffDelay ¶ added in v0.20260523.0
func BuildUserContentParts ¶
func BuildUserContentParts(content string, imageFiles map[int]string) []openai.ChatCompletionContentPartUnionParam
func HostKeyFromBaseURL ¶ added in v0.20260523.0
func ImagePlaceholder ¶
ImagePlaceholder returns the placeholder string for a given image sequence number.
func JumpLeftOverImgTag ¶
JumpLeftOverImgTag treats an [img-<n>] tag as a single atomic unit: if the cursor lies anywhere inside the tag (start < pos <= end), it jumps to start (before the tag). Spaces around the tag are never considered part of the placeholder.
func JumpRightOverImgTag ¶
JumpRightOverImgTag treats an [img-<n>] tag as a single atomic unit: if the cursor lies anywhere inside the tag (start <= pos < end), it jumps to end (after the tag). Spaces around the tag are never considered part of the placeholder.
func LastAssistantIndex ¶ added in v0.20260521.2
func MessageForAPI ¶ added in v0.20260521.2
func MessageParams ¶
func MessageParams(system string, msgs []chatstore.Message, imageFiles map[int]string) []openai.ChatCompletionMessageParamUnion
MessageParams builds OpenAI API message params from chatstore messages. If imageFiles is non-nil and contains entries for [img-<n>] placeholders found in user messages, those placeholders are replaced with image content parts.
func MessagesForAPI ¶ added in v0.20260521.2
func NewResilientHTTPClient ¶ added in v0.20260523.0
func NewResilientHTTPClient(policy config.APIResiliencePolicy) *http.Client
func OpenAIClientFromBackend ¶ added in v0.20260521.2
func OpenAIClientFromBackend(b CompletionBackend) (openai.Client, bool)
func PromptDisplaySplit ¶
func RetryMessage ¶ added in v0.20260523.0
func UsagePromptParts ¶
func UsageTokensDisplayParts ¶
Types ¶
type AnthropicAuth ¶ added in v0.20260521.2
type AnthropicAuth struct {
Kind AnthropicAuthKind
Token string
}
func AnthropicAuthFromAPIKey ¶ added in v0.20260521.2
func AnthropicAuthFromAPIKey(token string) AnthropicAuth
func AnthropicAuthFromOAuthBearer ¶ added in v0.20260521.2
func AnthropicAuthFromOAuthBearer(token string) AnthropicAuth
func (AnthropicAuth) ApplyTo ¶ added in v0.20260521.2
func (a AnthropicAuth) ApplyTo(req *http.Request)
type AnthropicAuthKind ¶ added in v0.20260521.2
type AnthropicAuthKind int
const ( AnthropicAuthAPIKey AnthropicAuthKind = iota AnthropicAuthOAuthBearer )
type AnthropicBackend ¶ added in v0.20260521.2
type AnthropicBackend struct {
// contains filtered or unexported fields
}
func NewAnthropicBackend ¶ added in v0.20260521.2
func NewAnthropicBackend(baseURL string, auth AnthropicAuth) *AnthropicBackend
func NewAnthropicBackendWithClient ¶ added in v0.20260523.0
func NewAnthropicBackendWithClient(baseURL string, auth AnthropicAuth, client *http.Client) *AnthropicBackend
func (*AnthropicBackend) CompleteText ¶ added in v0.20260521.2
func (b *AnthropicBackend) CompleteText(ctx context.Context, req SimpleCompletionRequest) (string, error)
func (*AnthropicBackend) ListModels ¶ added in v0.20260521.2
func (b *AnthropicBackend) ListModels(ctx context.Context) ([]string, error)
func (*AnthropicBackend) Protocol ¶ added in v0.20260521.2
func (b *AnthropicBackend) Protocol() Protocol
func (*AnthropicBackend) StreamText ¶ added in v0.20260521.2
func (b *AnthropicBackend) StreamText(ctx context.Context, req SimpleCompletionRequest, contentOut io.Writer, opts StreamOpts) (string, UsageStats, error)
func (*AnthropicBackend) StreamTurn ¶ added in v0.20260521.2
func (b *AnthropicBackend) StreamTurn(ctx context.Context, req TurnRequest, contentOut io.Writer, opts StreamOpts) (AssistantTurnResult, error)
type AnthropicUsagePayload ¶ added in v0.20260521.2
type AssistantToolCall ¶
type AssistantTurnResult ¶
type AssistantTurnResult struct {
Content string
ReasoningText string
ToolCalls []AssistantToolCall
Usage UsageStats
}
func StreamAssistantTurn ¶
func StreamAssistantTurn(ctx context.Context, client openai.Client, params openai.ChatCompletionNewParams, contentOut io.Writer, opts StreamOpts) (AssistantTurnResult, error)
type CircuitRegistry ¶ added in v0.20260523.0
type CircuitRegistry struct {
// contains filtered or unexported fields
}
func NewCircuitRegistry ¶ added in v0.20260523.0
func NewCircuitRegistry() *CircuitRegistry
func (*CircuitRegistry) IsOpen ¶ added in v0.20260523.0
func (c *CircuitRegistry) IsOpen(hostKey string) bool
func (*CircuitRegistry) Reset ¶ added in v0.20260523.0
func (c *CircuitRegistry) Reset(hostKey string)
type CompletionBackend ¶ added in v0.20260521.2
type CompletionBackend interface {
Protocol() Protocol
StreamTurn(ctx context.Context, req TurnRequest, contentOut io.Writer, opts StreamOpts) (AssistantTurnResult, error)
StreamText(ctx context.Context, req SimpleCompletionRequest, contentOut io.Writer, opts StreamOpts) (string, UsageStats, error)
CompleteText(ctx context.Context, req SimpleCompletionRequest) (string, error)
ListModels(ctx context.Context) ([]string, error)
}
func NewCompletionBackend ¶ added in v0.20260521.2
type ErrorClass ¶ added in v0.20260523.0
type ErrorClass int
const ( ErrorPermanent ErrorClass = iota ErrorRetryable ErrorCircuitOpen )
func ClassifyAPIError ¶ added in v0.20260523.0
type OpenAIBackend ¶ added in v0.20260521.2
func (*OpenAIBackend) CompleteText ¶ added in v0.20260521.2
func (b *OpenAIBackend) CompleteText(ctx context.Context, req SimpleCompletionRequest) (string, error)
func (*OpenAIBackend) ListModels ¶ added in v0.20260521.2
func (b *OpenAIBackend) ListModels(ctx context.Context) ([]string, error)
func (*OpenAIBackend) Protocol ¶ added in v0.20260521.2
func (b *OpenAIBackend) Protocol() Protocol
func (*OpenAIBackend) StreamText ¶ added in v0.20260521.2
func (b *OpenAIBackend) StreamText(ctx context.Context, req SimpleCompletionRequest, contentOut io.Writer, opts StreamOpts) (string, UsageStats, error)
func (*OpenAIBackend) StreamTurn ¶ added in v0.20260521.2
func (b *OpenAIBackend) StreamTurn(ctx context.Context, req TurnRequest, contentOut io.Writer, opts StreamOpts) (AssistantTurnResult, error)
type ProviderHTTPError ¶ added in v0.20260523.0
func NewProviderHTTPError ¶ added in v0.20260523.0
func NewProviderHTTPError(status int, message string, retryAfter time.Duration) *ProviderHTTPError
func (*ProviderHTTPError) Error ¶ added in v0.20260523.0
func (e *ProviderHTTPError) Error() string
type ResilientBackend ¶ added in v0.20260523.0
type ResilientBackend struct {
Inner CompletionBackend
HostKey string
Policy config.APIResiliencePolicy
Circuits *CircuitRegistry
// contains filtered or unexported fields
}
func NewResilientBackend ¶ added in v0.20260523.0
func NewResilientBackend(inner CompletionBackend, hostKey string, policy config.APIResiliencePolicy, circuits *CircuitRegistry) *ResilientBackend
func (*ResilientBackend) CompleteText ¶ added in v0.20260523.0
func (b *ResilientBackend) CompleteText(ctx context.Context, req SimpleCompletionRequest) (string, error)
func (*ResilientBackend) ListModels ¶ added in v0.20260523.0
func (b *ResilientBackend) ListModels(ctx context.Context) ([]string, error)
func (*ResilientBackend) Protocol ¶ added in v0.20260523.0
func (b *ResilientBackend) Protocol() Protocol
func (*ResilientBackend) StreamText ¶ added in v0.20260523.0
func (b *ResilientBackend) StreamText(ctx context.Context, req SimpleCompletionRequest, contentOut io.Writer, opts StreamOpts) (string, UsageStats, error)
func (*ResilientBackend) StreamTurn ¶ added in v0.20260523.0
func (b *ResilientBackend) StreamTurn(ctx context.Context, req TurnRequest, contentOut io.Writer, opts StreamOpts) (AssistantTurnResult, error)
type SimpleCompletionRequest ¶ added in v0.20260521.2
type StreamOpts ¶
type ToolDef ¶ added in v0.20260521.2
func ToolDefsFromOpenAI ¶ added in v0.20260521.2
func ToolDefsFromOpenAI(tools []openai.ChatCompletionToolUnionParam) []ToolDef
type TurnRequest ¶ added in v0.20260521.2
type UsageStats ¶
type UsageStats struct {
PromptTokens int64
CachedPromptTokens int64
CacheCreationPromptTokens int64
ReasoningTokens int64
ResponseTokens int64
TotalTokens int64
OutputTPS float64
TTFTSecs float64
PromptTPS float64
TurnWallSecs float64
ThoughtSecs float64
}
func AggregateConsecutiveTurnUsage ¶
func AggregateConsecutiveTurnUsage(usages []UsageStats) UsageStats
func NormalizeAnthropicUsage ¶ added in v0.20260521.2
func NormalizeAnthropicUsage(u AnthropicUsagePayload) UsageStats
func StreamText ¶
func StreamText(ctx context.Context, client openai.Client, params openai.ChatCompletionNewParams, contentOut io.Writer, opts StreamOpts) (string, UsageStats, error)