Implement custom LLM providers
interface LLMProvider { generate(messages: Message[], options: GenerateOptions): Promise<LLMResponse>; generateStream(messages: Message[], options: GenerateOptions): AsyncIterable<StreamChunk>; }