dto.go 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. GoogleSearch any `json:"googleSearch,omitempty"`
  31. FunctionDeclarations any `json:"functionDeclarations,omitempty"`
  32. }
  33. type GeminiChatGenerationConfig struct {
  34. Temperature float64 `json:"temperature,omitempty"`
  35. TopP float64 `json:"topP,omitempty"`
  36. TopK float64 `json:"topK,omitempty"`
  37. MaxOutputTokens uint `json:"maxOutputTokens,omitempty"`
  38. CandidateCount int `json:"candidateCount,omitempty"`
  39. StopSequences []string `json:"stopSequences,omitempty"`
  40. }
  41. type GeminiChatCandidate struct {
  42. Content GeminiChatContent `json:"content"`
  43. FinishReason string `json:"finishReason"`
  44. Index int64 `json:"index"`
  45. SafetyRatings []GeminiChatSafetyRating `json:"safetyRatings"`
  46. }
  47. type GeminiChatSafetyRating struct {
  48. Category string `json:"category"`
  49. Probability string `json:"probability"`
  50. }
  51. type GeminiChatPromptFeedback struct {
  52. SafetyRatings []GeminiChatSafetyRating `json:"safetyRatings"`
  53. }
  54. type GeminiChatResponse struct {
  55. Candidates []GeminiChatCandidate `json:"candidates"`
  56. PromptFeedback GeminiChatPromptFeedback `json:"promptFeedback"`
  57. UsageMetadata GeminiUsageMetadata `json:"usageMetadata"`
  58. }
  59. type GeminiUsageMetadata struct {
  60. PromptTokenCount int `json:"promptTokenCount"`
  61. CandidatesTokenCount int `json:"candidatesTokenCount"`
  62. TotalTokenCount int `json:"totalTokenCount"`
  63. }