dto.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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 FunctionCall struct {
  13. FunctionName string `json:"name"`
  14. Arguments any `json:"args"`
  15. }
  16. type GeminiPart struct {
  17. Text string `json:"text,omitempty"`
  18. InlineData *GeminiInlineData `json:"inlineData,omitempty"`
  19. FunctionCall *FunctionCall `json:"functionCall,omitempty"`
  20. }
  21. type GeminiChatContent struct {
  22. Role string `json:"role,omitempty"`
  23. Parts []GeminiPart `json:"parts"`
  24. }
  25. type GeminiChatSafetySettings struct {
  26. Category string `json:"category"`
  27. Threshold string `json:"threshold"`
  28. }
  29. type GeminiChatTools struct {
  30. FunctionDeclarations any `json:"functionDeclarations,omitempty"`
  31. }
  32. type GeminiChatGenerationConfig struct {
  33. Temperature float64 `json:"temperature,omitempty"`
  34. TopP float64 `json:"topP,omitempty"`
  35. TopK float64 `json:"topK,omitempty"`
  36. MaxOutputTokens uint `json:"maxOutputTokens,omitempty"`
  37. CandidateCount int `json:"candidateCount,omitempty"`
  38. StopSequences []string `json:"stopSequences,omitempty"`
  39. }
  40. type GeminiChatCandidate struct {
  41. Content GeminiChatContent `json:"content"`
  42. FinishReason string `json:"finishReason"`
  43. Index int64 `json:"index"`
  44. SafetyRatings []GeminiChatSafetyRating `json:"safetyRatings"`
  45. }
  46. type GeminiChatSafetyRating struct {
  47. Category string `json:"category"`
  48. Probability string `json:"probability"`
  49. }
  50. type GeminiChatPromptFeedback struct {
  51. SafetyRatings []GeminiChatSafetyRating `json:"safetyRatings"`
  52. }
  53. type GeminiChatResponse struct {
  54. Candidates []GeminiChatCandidate `json:"candidates"`
  55. PromptFeedback GeminiChatPromptFeedback `json:"promptFeedback"`
  56. UsageMetadata GeminiUsageMetadata `json:"usageMetadata"`
  57. }
  58. type GeminiUsageMetadata struct {
  59. PromptTokenCount int `json:"promptTokenCount"`
  60. CandidatesTokenCount int `json:"candidatesTokenCount"`
  61. TotalTokenCount int `json:"totalTokenCount"`
  62. }