github.com/instill-ai/component@v0.16.0-beta/pkg/connector/openai/v0/audio_transcriptions.go (about) 1 package openai 2 3 import ( 4 "bytes" 5 "fmt" 6 "mime/multipart" 7 8 "github.com/instill-ai/component/pkg/connector/util" 9 ) 10 11 const ( 12 transcriptionsPath = "/v1/audio/transcriptions" 13 ) 14 15 type AudioTranscriptionInput struct { 16 Audio string `json:"audio"` 17 Model string `json:"model"` 18 Prompt *string `json:"prompt,omitempty"` 19 Temperature *float64 `json:"temperature,omitempty"` 20 Language *string `json:"language,omitempty"` 21 } 22 23 type AudioTranscriptionReq struct { 24 File []byte `json:"file"` 25 Model string `json:"model"` 26 Prompt *string `json:"prompt,omitempty"` 27 Language *string `json:"language,omitempty"` 28 Temperature *float64 `json:"temperature,omitempty"` 29 } 30 31 type AudioTranscriptionResp struct { 32 Text string `json:"text"` 33 } 34 35 func getBytes(req AudioTranscriptionReq) (*bytes.Reader, string, error) { 36 data := &bytes.Buffer{} 37 writer := multipart.NewWriter(data) 38 err := util.WriteFile(writer, "file", req.File) 39 if err != nil { 40 return nil, "", err 41 } 42 util.WriteField(writer, "model", req.Model) 43 if req.Prompt != nil { 44 util.WriteField(writer, "prompt", *req.Prompt) 45 } 46 if req.Language != nil { 47 util.WriteField(writer, "language", *req.Language) 48 } 49 if req.Temperature != nil { 50 util.WriteField(writer, "temperature", fmt.Sprintf("%f", *req.Temperature)) 51 } 52 writer.Close() 53 return bytes.NewReader(data.Bytes()), writer.FormDataContentType(), nil 54 }