dto.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package ollama
  2. import (
  3. "encoding/json"
  4. )
  5. type OllamaChatMessage struct {
  6. Role string `json:"role"`
  7. Content string `json:"content,omitempty"`
  8. Images []string `json:"images,omitempty"`
  9. ToolCalls []OllamaToolCall `json:"tool_calls,omitempty"`
  10. ToolName string `json:"tool_name,omitempty"`
  11. Thinking json.RawMessage `json:"thinking,omitempty"`
  12. }
  13. type OllamaToolFunction struct {
  14. Name string `json:"name"`
  15. Description string `json:"description,omitempty"`
  16. Parameters interface{} `json:"parameters,omitempty"`
  17. }
  18. type OllamaTool struct {
  19. Type string `json:"type"`
  20. Function OllamaToolFunction `json:"function"`
  21. }
  22. type OllamaToolCall struct {
  23. Function struct {
  24. Name string `json:"name"`
  25. Arguments interface{} `json:"arguments"`
  26. } `json:"function"`
  27. }
  28. type OllamaChatRequest struct {
  29. Model string `json:"model"`
  30. Messages []OllamaChatMessage `json:"messages"`
  31. Tools interface{} `json:"tools,omitempty"`
  32. Format interface{} `json:"format,omitempty"`
  33. Stream bool `json:"stream,omitempty"`
  34. Options map[string]any `json:"options,omitempty"`
  35. KeepAlive interface{} `json:"keep_alive,omitempty"`
  36. Think json.RawMessage `json:"think,omitempty"`
  37. }
  38. type OllamaGenerateRequest struct {
  39. Model string `json:"model"`
  40. Prompt string `json:"prompt,omitempty"`
  41. Suffix string `json:"suffix,omitempty"`
  42. Images []string `json:"images,omitempty"`
  43. Format interface{} `json:"format,omitempty"`
  44. Stream bool `json:"stream,omitempty"`
  45. Options map[string]any `json:"options,omitempty"`
  46. KeepAlive interface{} `json:"keep_alive,omitempty"`
  47. Think json.RawMessage `json:"think,omitempty"`
  48. }
  49. type OllamaEmbeddingRequest struct {
  50. Model string `json:"model"`
  51. Input interface{} `json:"input"`
  52. Options map[string]any `json:"options,omitempty"`
  53. Dimensions int `json:"dimensions,omitempty"`
  54. }
  55. type OllamaEmbeddingResponse struct {
  56. Error string `json:"error,omitempty"`
  57. Model string `json:"model"`
  58. Embeddings [][]float64 `json:"embeddings"`
  59. PromptEvalCount int `json:"prompt_eval_count,omitempty"`
  60. }
  61. type OllamaTagsResponse struct {
  62. Models []OllamaModel `json:"models"`
  63. }
  64. type OllamaModel struct {
  65. Name string `json:"name"`
  66. Size int64 `json:"size"`
  67. Digest string `json:"digest,omitempty"`
  68. ModifiedAt string `json:"modified_at"`
  69. Details OllamaModelDetail `json:"details,omitempty"`
  70. }
  71. type OllamaModelDetail struct {
  72. ParentModel string `json:"parent_model,omitempty"`
  73. Format string `json:"format,omitempty"`
  74. Family string `json:"family,omitempty"`
  75. Families []string `json:"families,omitempty"`
  76. ParameterSize string `json:"parameter_size,omitempty"`
  77. QuantizationLevel string `json:"quantization_level,omitempty"`
  78. }
  79. type OllamaPullRequest struct {
  80. Name string `json:"name"`
  81. Stream bool `json:"stream,omitempty"`
  82. }
  83. type OllamaPullResponse struct {
  84. Status string `json:"status"`
  85. Digest string `json:"digest,omitempty"`
  86. Total int64 `json:"total,omitempty"`
  87. Completed int64 `json:"completed,omitempty"`
  88. }
  89. type OllamaDeleteRequest struct {
  90. Name string `json:"name"`
  91. }