Documentation
¶
Overview ¶
Package opencodego provides OpenCode Zen (Go subscription) integration for the LLM gateway.
Index ¶
- Variables
- func New(cfg providers.ProviderConfig, opts providers.ProviderOptions) core.Provider
- type Provider
- func (p *Provider) ChatCompletion(ctx context.Context, req *core.ChatRequest) (*core.ChatResponse, error)
- func (p *Provider) Embeddings(_ context.Context, _ *core.EmbeddingRequest) (*core.EmbeddingResponse, error)
- func (p *Provider) Responses(ctx context.Context, req *core.ResponsesRequest) (*core.ResponsesResponse, error)
- func (p *Provider) StreamChatCompletion(ctx context.Context, req *core.ChatRequest) (io.ReadCloser, error)
- func (p *Provider) StreamResponses(ctx context.Context, req *core.ResponsesRequest) (io.ReadCloser, error)
Constants ¶
This section is empty.
Variables ¶
var Registration = providers.Registration{ Type: "opencode_go", New: New, Discovery: providers.DiscoveryConfig{ DefaultBaseURL: defaultBaseURL, }, }
Registration provides factory registration for the OpenCode Go provider. The "opencode_go" type derives OPENCODE_GO_API_KEY, OPENCODE_GO_BASE_URL, and OPENCODE_GO_MODELS by convention.
Functions ¶
func New ¶
func New(cfg providers.ProviderConfig, opts providers.ProviderOptions) core.Provider
New creates a new OpenCode Go provider.
Types ¶
type Provider ¶
type Provider struct {
*openai.ChatCompatible
// contains filtered or unexported fields
}
Provider implements the core.Provider interface for OpenCode Go.
OpenCode Zen exposes two upstream dialects behind one base URL: OpenAI-style /chat/completions (most models) and Anthropic-style /messages (a few models rejected by /chat/completions). The embedded ChatCompatible handles the former; chat requests for models in messagesModels are delegated to an Anthropic provider pinned to the same base URL, mirroring how GoModel already serves /v1/messages for native Anthropic. Both paths normalize to the canonical OpenAI-shaped response, so callers see one consistent surface.
func NewWithHTTPClient ¶
func NewWithHTTPClient(apiKey string, baseURL string, httpClient *http.Client, hooks llmclient.Hooks) *Provider
NewWithHTTPClient creates a new OpenCode Go provider with a custom HTTP client. If httpClient is nil, http.DefaultClient is used.
func (*Provider) ChatCompletion ¶
func (p *Provider) ChatCompletion(ctx context.Context, req *core.ChatRequest) (*core.ChatResponse, error)
ChatCompletion routes Anthropic-only models to /messages and everything else to /chat/completions.
func (*Provider) Embeddings ¶
func (p *Provider) Embeddings(_ context.Context, _ *core.EmbeddingRequest) (*core.EmbeddingResponse, error)
Embeddings returns an error because OpenCode Go does not expose an embeddings endpoint.
func (*Provider) Responses ¶
func (p *Provider) Responses(ctx context.Context, req *core.ResponsesRequest) (*core.ResponsesResponse, error)
Responses dispatches through this provider's ChatCompletion so /v1/responses honors the per-model /messages routing.
func (*Provider) StreamChatCompletion ¶
func (p *Provider) StreamChatCompletion(ctx context.Context, req *core.ChatRequest) (io.ReadCloser, error)
StreamChatCompletion mirrors ChatCompletion's per-model endpoint routing.
func (*Provider) StreamResponses ¶
func (p *Provider) StreamResponses(ctx context.Context, req *core.ResponsesRequest) (io.ReadCloser, error)
StreamResponses dispatches through this provider's streaming ChatCompletion so /v1/responses honors the per-model /messages routing.