Je travaille actuellement sur un projet parallèle sur l'apprentissage des langues. Les principales fonctionnalités incluent la génération de contenu avec l'IA et la conversion du texte en fichiers audio. Pour stocker les fichiers audio, j'ai également besoin de stockage cloud.
Le coût était ma principale priorité car je pensais que le changement entre les plates-formes cloud ne serait pas trop difficile.
En fin de compte, j'ai choisi Google Gemini, Google TTS et CloudFlare R2. Ils fournissent une documentation API et des exemples, mais j'ai trouvé certaines parties manquant, j'ai donc décidé d'écrire un article à ce sujet. J'ai utilisé Go, et cela ne couvre que l'utilisation de base.
Pour Google Gemini et TTS, j'utilise l'API RESTFul. Bien qu'ils fournissent une bibliothèque, j'ai trouvé en utilisant l'API RESTful plus pratique que la configuration de la bibliothèque.
Package API Import ("Bytes" "Encoding / JSON" "fmt" "io" "net / http" "github.com/spf13/viper") Type Part Struct {Text String `JSON:" Text "`} Type Content Struct struct {candidats [] candidats `JSON:" candidats "`} func invite (invite string) (* PROMPTRESULT, ERROR) {// J'utilise Viper pour gérer les variables d'environnement, vous pouvez le remplacer par votre clé API. URL: = fmt.sprintf ("https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:GenerateContent?key=%S", viper.get ("google_cloud_api_key") // Dans cet exemple, il ne fait que JSON.MARSHAL (MAP [String] Interface {} {"Content": [] MAP [String] Interface {} {{"Parts": [] MAP [String] Interface {} {{{"Text": Invite,}},}},}) if Err! = Nil {return Nil, err} req, err: err: = HTTP. url, bytes.newbuffer (data)) si err! = nil {return nil, err} req.header.add ("contenu-type", "application / json") // demande l'API res, err: = http.defaultClient.do (req) si err! = nil {return nil, err} redres rés. io.readall (res.body) if err! = nil {return nil, err} var promptresult promptreult // analyse le résultat err = json.unmarshal (resbody, & promptreultPackage principal...
[Courte citation de 8% de l'article original]