package model import "time" // Message — сообщение в формате Ollama API type Message struct { Role string `json:"role"` Content string `json:"content"` } // --- /api/chat --- // OllamaOptions — параметры генерации для Ollama type OllamaOptions struct { NumCtx int `json:"num_ctx,omitempty"` } type ChatRequest struct { Model string `json:"model"` Messages []Message `json:"messages"` Stream *bool `json:"stream,omitempty"` Options *OllamaOptions `json:"options,omitempty"` } type ChatResponse struct { Model string `json:"model"` CreatedAt time.Time `json:"created_at"` Message Message `json:"message"` Done bool `json:"done"` // Поля финального чанка (done=true) DoneReason string `json:"done_reason,omitempty"` TotalDuration int64 `json:"total_duration,omitempty"` LoadDuration int64 `json:"load_duration,omitempty"` EvalCount int `json:"eval_count,omitempty"` EvalDuration int64 `json:"eval_duration,omitempty"` } // --- /api/generate --- type GenerateRequest struct { Model string `json:"model"` Prompt string `json:"prompt"` Stream *bool `json:"stream,omitempty"` } type GenerateResponse struct { Model string `json:"model"` CreatedAt time.Time `json:"created_at"` Response string `json:"response"` Done bool `json:"done"` DoneReason string `json:"done_reason,omitempty"` TotalDuration int64 `json:"total_duration,omitempty"` EvalCount int `json:"eval_count,omitempty"` EvalDuration int64 `json:"eval_duration,omitempty"` } // --- /api/tags --- type TagsResponse struct { Models []ModelInfo `json:"models"` } type ModelInfo struct { Name string `json:"name"` ModifiedAt time.Time `json:"modified_at"` Size int64 `json:"size"` Digest string `json:"digest"` }