package provider import ( "context" "git.mlow.ca/mlow/lmcli/pkg/api" ) type ReplyCallback func(api.Message) type Chunk struct { Content string TokenCount uint } type RequestParameters struct { Model string MaxTokens int Temperature float32 TopP float32 Toolbox []api.ToolSpec } type ChatCompletionProvider interface { // CreateChatCompletion requests a response to the provided messages. // Replies are appended to the given replies struct, and the // complete user-facing response is returned as a string. CreateChatCompletion( ctx context.Context, params RequestParameters, messages []api.Message, ) (*api.Message, error) // Like CreateChageCompletion, except the response is streamed via // the output channel as it's received. CreateChatCompletionStream( ctx context.Context, params RequestParameters, messages []api.Message, chunks chan<- Chunk, ) (*api.Message, error) }