Ruby: Net::HTTP この POST リクエストで 400 を受け取るのはなぜですか?
概要
GPTZeroのAPIを試しています。ドキュメント。
ドキュメントには、ヘッダーに API キーを設定する必要があると記載されています。 Web サイトには「限られた回数の使用であれば、API キーなしで API をここのドキュメントで試すことができます」と記載されているため、空白文字列のままにしました。
ドキュメントとバージョンのパラメータが正しく設定されていると思います。
これが私のRubyです:
base = "https://api.gptzero.me"
uri = URI("#{base}/v2/predict/text")
api_key = ""
headers = {
"x-api-key" => api_key
}
params = {
"document" => "How now, brown cow.",
"version" => ""
}
res = Net::HTTP.post(uri, params.to_json, headers)
ただし、応答は 400 Bad Request で、「テキストは文字列である必要があります」というエラー メッセージが表示されます。
私のリクエストの何が間違っているのでしょうか?正しく送信できましたか?
解決策
Content-Type ヘッダーが欠落しているようです。この例は私にとってはうまくいきます:
require "net/http"
require "json"
base = "https://api.gptzero.me"
uri = URI("#{base}/v2/predict/text")
api_key = ""
headers = {
"x-api-key" => api_key,
"Content-Type" => "application/json"
}
params = {
"document" => "How now, brown cow.",
"version" => "2023-06-30"
}
res = Net::HTTP.post(uri, params.to_json, headers)
puts res.body
印刷します
{"version":"2023-06-30","documents":[{"average_generated_prob":0.0475141815841198,"completely_generated_prob":0.0475141815841198,"overall_burstiness":0,"paragraphs":[{"completely_generated_prob":0.11111110864197533,"num_sentences":1,"start_sentence_index":0}],"sentences":[{"generated_prob":0.0475141815841198,"perplexity":947,"sentence":"How now, brown cow.","highlight_sentence_for_ai":false}],"writing_stats":{},"result_message":"Your text is likely to be written entirely by a human","document_classification":"HUMAN_ONLY","version":"2023-06-30","document_id":"174f6d03-1cdf-4ed7-a1e3-99f23d76d0b2"}]}