From 7b15df0dd0e30a23d6c9058c2f099b44f18d9f81 Mon Sep 17 00:00:00 2001 From: Patrick Nikoletich Date: Thu, 29 Jan 2026 08:23:57 -0800 Subject: [PATCH] Add provider info to docs --- go/README.md | 70 +++++++++++++++++++++++++++++++++++++++++++++++- nodejs/README.md | 62 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 130 insertions(+), 2 deletions(-) diff --git a/go/README.md b/go/README.md index ac6a5397..b6c85dcf 100644 --- a/go/README.md +++ b/go/README.md @@ -97,10 +97,21 @@ func main() { - `AutoRestart` (\*bool): Auto-restart on crash (default: true). Use `Bool(false)` to disable. - `Env` ([]string): Environment variables for CLI process (default: inherits from current process) +**SessionConfig:** + +- `Model` (string): Model to use ("gpt-5", "claude-sonnet-4.5", etc.). **Required when using custom provider.** +- `SessionID` (string): Custom session ID +- `Tools` ([]Tool): Custom tools exposed to the CLI +- `SystemMessage` (\*SystemMessageConfig): System message configuration +- `Provider` (\*ProviderConfig): Custom API provider configuration (BYOK). See [Custom Providers](#custom-providers) section. +- `Streaming` (bool): Enable streaming delta events +- `InfiniteSessions` (\*InfiniteSessionConfig): Automatic context compaction configuration + **ResumeSessionConfig:** - `Tools` ([]Tool): Tools to expose when resuming -- `Provider` (\*ProviderConfig): Custom model provider configuration +- `Provider` (\*ProviderConfig): Custom API provider configuration (BYOK). See [Custom Providers](#custom-providers) section. +- `Streaming` (bool): Enable streaming delta events ### Session @@ -327,6 +338,63 @@ When enabled, sessions emit compaction events: - `session.compaction_start` - Background compaction started - `session.compaction_complete` - Compaction finished (includes token counts) +## Custom Providers + +The SDK supports custom OpenAI-compatible API providers (BYOK - Bring Your Own Key), including local providers like Ollama. When using a custom provider, you must specify the `Model` explicitly. + +**ProviderConfig:** + +- `Type` (string): Provider type - "openai", "azure", or "anthropic" (default: "openai") +- `BaseURL` (string): API endpoint URL (required) +- `APIKey` (string): API key (optional for local providers like Ollama) +- `BearerToken` (string): Bearer token for authentication (takes precedence over APIKey) +- `WireApi` (string): API format for OpenAI/Azure - "completions" or "responses" (default: "completions") +- `Azure.APIVersion` (string): Azure API version (default: "2024-10-21") + +**Example with Ollama:** + +```go +session, err := client.CreateSession(&copilot.SessionConfig{ + Model: "deepseek-coder-v2:16b", // Required when using custom provider + Provider: &copilot.ProviderConfig{ + Type: "openai", + BaseURL: "http://localhost:11434/v1", // Ollama endpoint + // APIKey not required for Ollama + }, +}) +``` + +**Example with custom OpenAI-compatible API:** + +```go +session, err := client.CreateSession(&copilot.SessionConfig{ + Model: "gpt-4", + Provider: &copilot.ProviderConfig{ + Type: "openai", + BaseURL: "https://my-api.example.com/v1", + APIKey: os.Getenv("MY_API_KEY"), + }, +}) +``` + +**Example with Azure OpenAI:** + +```go +session, err := client.CreateSession(&copilot.SessionConfig{ + Model: "gpt-4", + Provider: &copilot.ProviderConfig{ + Type: "azure", + BaseURL: "https://my-resource.openai.azure.com", + APIKey: os.Getenv("AZURE_OPENAI_KEY"), + Azure: &copilot.AzureProviderOptions{ + APIVersion: "2024-10-21", + }, + }, +}) +``` + +> **Note:** When using a custom provider, the `Model` parameter is **required**. The SDK will return an error if no model is specified. + ## Transport Modes ### stdio (Default) diff --git a/nodejs/README.md b/nodejs/README.md index bd4ef15b..4126e68d 100644 --- a/nodejs/README.md +++ b/nodejs/README.md @@ -86,10 +86,11 @@ Create a new conversation session. **Config:** - `sessionId?: string` - Custom session ID -- `model?: string` - Model to use ("gpt-5", "claude-sonnet-4.5", etc.) +- `model?: string` - Model to use ("gpt-5", "claude-sonnet-4.5", etc.). **Required when using custom provider.** - `tools?: Tool[]` - Custom tools exposed to the CLI - `systemMessage?: SystemMessageConfig` - System message customization (see below) - `infiniteSessions?: InfiniteSessionConfig` - Configure automatic context compaction (see below) +- `provider?: ProviderConfig` - Custom API provider configuration (BYOK - Bring Your Own Key). See [Custom Providers](#custom-providers) section. ##### `resumeSession(sessionId: string, config?: ResumeSessionConfig): Promise` @@ -407,6 +408,65 @@ await session.send({ }); ``` +### Custom Providers + +The SDK supports custom OpenAI-compatible API providers (BYOK - Bring Your Own Key), including local providers like Ollama. When using a custom provider, you must specify the `model` explicitly. + +**ProviderConfig:** + +- `type?: "openai" | "azure" | "anthropic"` - Provider type (default: "openai") +- `baseUrl: string` - API endpoint URL (required) +- `apiKey?: string` - API key (optional for local providers like Ollama) +- `bearerToken?: string` - Bearer token for authentication (takes precedence over apiKey) +- `wireApi?: "completions" | "responses"` - API format for OpenAI/Azure (default: "completions") +- `azure?.apiVersion?: string` - Azure API version (default: "2024-10-21") + +**Example with Ollama:** + +```typescript +const session = await client.createSession({ + model: "deepseek-coder-v2:16b", // Required when using custom provider + provider: { + type: "openai", + baseUrl: "http://localhost:11434/v1", // Ollama endpoint + // apiKey not required for Ollama + }, +}); + +await session.sendAndWait({ prompt: "Hello!" }); +``` + +**Example with custom OpenAI-compatible API:** + +```typescript +const session = await client.createSession({ + model: "gpt-4", + provider: { + type: "openai", + baseUrl: "https://my-api.example.com/v1", + apiKey: process.env.MY_API_KEY, + }, +}); +``` + +**Example with Azure OpenAI:** + +```typescript +const session = await client.createSession({ + model: "gpt-4", + provider: { + type: "azure", + baseUrl: "https://my-resource.openai.azure.com", + apiKey: process.env.AZURE_OPENAI_KEY, + azure: { + apiVersion: "2024-10-21", + }, + }, +}); +``` + +> **Note:** When using a custom provider, the `model` parameter is **required**. The SDK will throw an error if no model is specified. + ## Error Handling ```typescript