httr API 调用向量中的每一行 + 改变响应

httr API call for each row in a vector + mutate the response

我正在尝试向向量中的每一行的 API 发送 POST 请求,并且我想将 API 给出的响应改变为新列(对于每一行也是如此)。

我收到此查询的 200 响应:

this_works <- POST(url_predict, body= '{"text": "This is a bad thing"}')

但现在我想用文本“这是一件坏事”替换数据框每一行中包含的文本。

我目前的尝试:

bquery <- function(df){
  df3 <- data.frame()
  text_col <- toString(df4$text)
  url_predict = "http://127.0.0.1:8000/predict"
  this_doesnt_work <- POST(url_predict, body = paste("'{'", "text", "':'", text_col, "'}'", sep = ""))
  content1 <- content(this_doesnt_work)
  df3$bert_sentiment <- content1$sentiment
  df3$probability_negative <- content1$probabilities$negative
  df3$probability_neutral <- content1$probabilities$neutral
  df3$probability_positive <- content1$probabilities$positive
  df3$confidence <- content1$confidence
  df3
}

这不起作用,但是我的粘贴函数的输出看起来应该起作用:

"'{'text':'This is a bad thing.'}'"

如有任何帮助,我们将不胜感激。

来自服务器的响应值为:

$probabilities
$probabilities$negative
[1] 0.999736

$probabilities$neutral
[1] 0.0001732047

$probabilities$positive
[1] 9.086558e-05


$sentiment
[1] "negative"

$confidence
[1] 0.999736

我想将这些值突变为每个 response/row 的原始数据集。

尝试一次发送一个字符串值:

bquery <- function(string){
   df3 <- data.frame()
   url_predict = "http://127.0.0.1:8000/predict"
   this_should_work <- POST(url_predict, body = sprintf('{"text":"%s"}',string))
   #Rest of the code
   #.....
   #.....
}

然后检查它是否适用于一个值:

bquery(df4$text[1])

如果确实如此,则对所有人使用 lapply :

do.call(rbind, lapply(df4$text, bquery))

purrr::map_df

purrr::map_df(df4$text, bquery)