// Package ollama provides a provider.Adapter for local Ollama (and vLLM) servers. // Ollama exposes an OpenAI-compatible /v1/chat/completions endpoint — we delegate // directly to openai.New with no auth key required. package ollama import ( "github.com/veylant/ia-gateway/internal/provider/openai" ) // Config holds Ollama adapter configuration. type Config struct { BaseURL string // default: http://localhost:11434/v1 TimeoutSeconds int // longer default (120s) because local models are slower MaxConns int } // New creates an Ollama adapter backed by the OpenAI-compatible local API. // Supported models: llama3, phi3, qwen2, gemma, and any model served by Ollama/vLLM. func New(cfg Config) *openai.Adapter { if cfg.BaseURL == "" { cfg.BaseURL = "http://localhost:11434/v1" } if cfg.TimeoutSeconds == 0 { cfg.TimeoutSeconds = 120 } return openai.New(openai.Config{ APIKey: "", // Ollama does not require an API key BaseURL: cfg.BaseURL, TimeoutSeconds: cfg.TimeoutSeconds, MaxConns: cfg.MaxConns, }) }