dto.go 2.5 KB

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