realtime.go 3.5 KB

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