Vous n'êtes pas identifié(e).

  • Contributions :
  • Vos boîtes de messages privés sont vides.

🟣 ne pas perdre son crédit gratuit sur open AI - Ruby


#1 2023-01-27 20:25:50

Mention conquering_lion
🥉 Grade : Scout

Auxiliaire10likes
Inscription : 2013-05-23
Messages : 275
Likes : 16

ne pas perdre son crédit gratuit sur open AI - Ruby

oh tiens, un pti script Ruby .. le dernier c'était en 2018 ca date !

donc je me suis inscrit sur open AI, whaou c'est chouette, 18$ de crédit, mais meme en faisant pas mal de requetes, j'ai pas cramé 0.30$ pour l'instant.. donc l'idée, un script un peu modulaire .. un fichier texte en entrée avec une liste de queries, le script va prendre chaque question, lui poser, récup le résultat et le stocker dans un fichier texte pour plus  tard..

require "openai"
 
OPENAI_API_KEY = "TAKATECREERTACLEAPITOIMEME!!"
openai_client = OpenAI::Client.new(api_key: OPENAI_API_KEY, default_engine: "text-davinci-003")

###########################################
#### écriture du résultat dans un fichier spécifique

def write_file(file_in,q,a)
  f = File.open("auto_files/"+file_in.to_s, 'w')
  f.puts "#{q}\n\n"
  f.puts "#{a}"  
  f.close
end

###########################################
#### lecture des questions dans un fichier
questions_array = []

f = File.open("questions_file")
while line = f.gets
    questions_array << line.strip
end
f.close

###########################################
#### boucle sur le tableau de questions et appel GPT3

how_many = 700
i = 0

questions_array.each do |question|
  if  File.exists? i.to_s
    response = openai_client.completions(prompt: question, max_tokens: how_many)
    response = response["choices"].map { |c| c["text"] }
    write_file(i,question,response.first.strip)
  else
    puts "file #{i.to_s} exists"
  end
    i= i + 1
    sleep(10)
end
 

il faut donc remplir le fichier en entrée au maximum .. et si on veut rajouter des questions, les mettre en fin de fichier .. le script va lire chaque question, si l'index de la question a déjà généré un fichier on passe à la suite ... sinon on demande au chatbot, on chope la réponse et on l'écrit dans un fichier indicé.. on attends quelques secondes et voilà

à priori ya un limitation horaire / journalière .. donc à fixer dans le sleep.. prévoir un break définitif au cas ou le script patine en raison d'un "too many users" un peu imprévisible

j'ai mis arbitrairement 700tokens pour les réponses donc il faut bien découper les questions.. on pourrait d'ailleurs adapter le code en mettant le nombre de tokens désirés en sortie dans le fichier en entrée
["quelle est l'utilité d'un vélo électrique",500],
["ou faire du vélo électrique",300],
["quelles sont les caractéristiques à prendre en compte pour acheter un vélo électrique",1000]

etc etc

maintenant je suis en train de voir ou choper des idées de questions histoire d'accéléré le processus tongue

1
J'aime ❤️

🔴 Hors ligne

#2 2023-01-28 13:55:23

Mention conquering_lion
🥉 Grade : Scout

Auxiliaire10likes
Inscription : 2013-05-23
Messages : 275
Likes : 16

Re : ne pas perdre son crédit gratuit sur open AI - Ruby

deuxieme mouture .. comme il faut etre assez spécifique avec la bête, j'ai changé de braquet ..

donc je prends une liste de sujets, je fais des questions standards pour chaque sujet, j'agrège le tout dans un fichier libellé du sujet

def write_file(file_in,text)
  f = File.open("auto_files/"+file_in, 'w')
  text.each do |rec|
    f.puts rec
    f.puts "\n\n"
  end
  f.close
end

sujets = ["sujet 1","sujet 2"]
sujets.each do |sujet|
  full_text = []
  questions_array = [
    "write an essai about #{sujet}",
    "write an essai about what are #{sujet} difficulties",
    "write an essai about what are #{sujet} properties",
    "write an essai about what are #{sujet} advantages",
    "write an essai about what are #{sujet} disadvantages",
    "write an essai about what are #{sujet} uses"]

  questions_array.each do |question|
    response = openai_client.completions(prompt: question, max_tokens: 500)
    text = response["choices"].map { |c| c["text"] }
    full_text << text.first.strip
    sleep(10)
  end
  write_file(sujet,full_text.flatten)
end

donc ca devrait générer autant de paragraphes que de questions, sur autant de sujets que dans la liste ..

j'ai fai un test, ca m'a donné 1800 mots pour un sujet.. je pense que c'est la meilleur manière car si on reste sur des questions génériques sans spécifier un sujet , il risque de se répéter pas mal

edit : petite correction du code pour avoir de beaux paragraphes séparés

Dernière modification par conquering_lion (2023-01-28 15:01:49)

2
J'aime ❤️

🔴 Hors ligne

Pied de page des forums