dto.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package gemini
  2. type GeminiChatRequest struct {
  3. Contents []GeminiChatContent `json:"contents"`
  4. SafetySettings []GeminiChatSafetySettings `json:"safety_settings,omitempty"`
  5. GenerationConfig GeminiChatGenerationConfig `json:"generation_config,omitempty"`
  6. Tools []GeminiChatTools `json:"tools,omitempty"`
  7. }
  8. type GeminiInlineData struct {
  9. MimeType string `json:"mimeType"`
  10. Data string `json:"data"`
  11. }
  12. type GeminiPart struct {
  13. Text string `json:"text,omitempty"`
  14. InlineData *GeminiInlineData `json:"inlineData,omitempty"`
  15. }
  16. type GeminiChatContent struct {
  17. Role string `json:"role,omitempty"`
  18. Parts []GeminiPart `json:"parts"`
  19. }
  20. type GeminiChatSafetySettings struct {
  21. Category string `json:"category"`
  22. Threshold string `json:"threshold"`
  23. }
  24. type GeminiChatTools struct {
  25. FunctionDeclarations any `json:"functionDeclarations,omitempty"`
  26. }
  27. type GeminiChatGenerationConfig struct {
  28. Temperature float64 `json:"temperature,omitempty"`
  29. TopP float64 `json:"topP,omitempty"`
  30. TopK float64 `json:"topK,omitempty"`
  31. MaxOutputTokens uint `json:"maxOutputTokens,omitempty"`
  32. CandidateCount int `json:"candidateCount,omitempty"`
  33. StopSequences []string `json:"stopSequences,omitempty"`
  34. }
  35. type GeminiChatCandidate struct {
  36. Content GeminiChatContent `json:"content"`
  37. FinishReason string `json:"finishReason"`
  38. Index int64 `json:"index"`
  39. SafetyRatings []GeminiChatSafetyRating `json:"safetyRatings"`
  40. }
  41. type GeminiChatSafetyRating struct {
  42. Category string `json:"category"`
  43. Probability string `json:"probability"`
  44. }
  45. type GeminiChatPromptFeedback struct {
  46. SafetyRatings []GeminiChatSafetyRating `json:"safetyRatings"`
  47. }
  48. type GeminiChatResponse struct {
  49. Candidates []GeminiChatCandidate `json:"candidates"`
  50. PromptFeedback GeminiChatPromptFeedback `json:"promptFeedback"`
  51. UsageMetadata GeminiUsageMetadata `json:"usageMetadata"`
  52. }
  53. type GeminiUsageMetadata struct {
  54. PromptTokenCount int `json:"promptTokenCount"`
  55. CandidatesTokenCount int `json:"candidatesTokenCount"`
  56. TotalTokenCount int `json:"totalTokenCount"`
  57. }