realtime.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package dto
  2. const (
  3. RealtimeEventTypeError = "error"
  4. RealtimeEventTypeSessionUpdate = "session.update"
  5. RealtimeEventTypeConversationCreate = "conversation.item.create"
  6. RealtimeEventTypeResponseCreate = "response.create"
  7. RealtimeEventInputAudioBufferAppend = "input_audio_buffer.append"
  8. )
  9. const (
  10. RealtimeEventTypeResponseDone = "response.done"
  11. RealtimeEventTypeSessionUpdated = "session.updated"
  12. RealtimeEventTypeSessionCreated = "session.created"
  13. RealtimeEventResponseAudioDelta = "response.audio.delta"
  14. RealtimeEventResponseAudioTranscriptionDelta = "response.audio_transcript.delta"
  15. RealtimeEventResponseFunctionCallArgumentsDelta = "response.function_call_arguments.delta"
  16. RealtimeEventResponseFunctionCallArgumentsDone = "response.function_call_arguments.done"
  17. RealtimeEventConversationItemCreated = "conversation.item.created"
  18. )
  19. type RealtimeEvent struct {
  20. EventId string `json:"event_id"`
  21. Type string `json:"type"`
  22. //PreviousItemId string `json:"previous_item_id"`
  23. Session *RealtimeSession `json:"session,omitempty"`
  24. Item *RealtimeItem `json:"item,omitempty"`
  25. Error *OpenAIError `json:"error,omitempty"`
  26. Response *RealtimeResponse `json:"response,omitempty"`
  27. Delta string `json:"delta,omitempty"`
  28. Audio string `json:"audio,omitempty"`
  29. }
  30. type RealtimeResponse struct {
  31. Usage *RealtimeUsage `json:"usage"`
  32. }
  33. type RealtimeUsage struct {
  34. TotalTokens int `json:"total_tokens"`
  35. InputTokens int `json:"input_tokens"`
  36. OutputTokens int `json:"output_tokens"`
  37. InputTokenDetails InputTokenDetails `json:"input_token_details"`
  38. OutputTokenDetails OutputTokenDetails `json:"output_token_details"`
  39. }
  40. type InputTokenDetails struct {
  41. CachedTokens int `json:"cached_tokens"`
  42. CachedCreationTokens int
  43. TextTokens int `json:"text_tokens"`
  44. AudioTokens int `json:"audio_tokens"`
  45. ImageTokens int `json:"image_tokens"`
  46. }
  47. type OutputTokenDetails struct {
  48. TextTokens int `json:"text_tokens"`
  49. AudioTokens int `json:"audio_tokens"`
  50. }
  51. type RealtimeSession struct {
  52. Modalities []string `json:"modalities"`
  53. Instructions string `json:"instructions"`
  54. Voice string `json:"voice"`
  55. InputAudioFormat string `json:"input_audio_format"`
  56. OutputAudioFormat string `json:"output_audio_format"`
  57. InputAudioTranscription InputAudioTranscription `json:"input_audio_transcription"`
  58. TurnDetection interface{} `json:"turn_detection"`
  59. Tools []RealTimeTool `json:"tools"`
  60. ToolChoice string `json:"tool_choice"`
  61. Temperature float64 `json:"temperature"`
  62. //MaxResponseOutputTokens int `json:"max_response_output_tokens"`
  63. }
  64. type InputAudioTranscription struct {
  65. Model string `json:"model"`
  66. }
  67. type RealTimeTool struct {
  68. Type string `json:"type"`
  69. Name string `json:"name"`
  70. Description string `json:"description"`
  71. Parameters any `json:"parameters"`
  72. }
  73. type RealtimeItem struct {
  74. Id string `json:"id"`
  75. Type string `json:"type"`
  76. Status string `json:"status"`
  77. Role string `json:"role"`
  78. Content []RealtimeContent `json:"content"`
  79. Name *string `json:"name,omitempty"`
  80. ToolCalls any `json:"tool_calls,omitempty"`
  81. CallId string `json:"call_id,omitempty"`
  82. }
  83. type RealtimeContent struct {
  84. Type string `json:"type"`
  85. Text string `json:"text,omitempty"`
  86. Audio string `json:"audio,omitempty"` // Base64-encoded audio bytes.
  87. Transcript string `json:"transcript,omitempty"`
  88. }