Dialogflow内联编辑器评估在Docker上运行的Tensorflow SavedModel

时间:2019-03-08 04:16:19

标签: docker tensorflow axios dialogflow

我有一个在Docker上运行的Tensorflow SavedModel。我在Docker Quickstart Terminal中使用了以下命令,该命令有效,为我提供了预测和概率。<​​/ p>

curl -d'{“ examples”:[{“ Features:” abcdefghi“}]}'-X POST http://192.168......:8501/v1/models/exports:classify

我打算让Dialogflow访问Docker容器以从此SavedModel获取预测。我该怎么办?

我注意到Naresh Ganatra在Youtube上使用axios的一种可能性,但不知道如何将curl json格式转换为axios json格式re:“ url”,也不知道如何更改“ response.data.rate”。

function exchangeRate(agent) {
  var currency1 = agent.parameters["currency-name"];
  var currency2 = agent.parameters["currency-name1"];
  var url = 'https://api.exchangeratesapi.io/latest?base='+ currency1  +'&symbols=' + currency2 ;
  return getRate(url).then(response => {
  var bot_response = "The exchange rate is " + response.data.rates[currency2];

  console.log(bot_response);
  agent.add(bot_response);
  }).catch (error => {
    console.log("Something is wrong  !! ");
    console.log(error);
    agent.add(bot_response);
});
};

function getRate(url) {
    const axios = require('axios');
    return axios.get(url);
}

有人可以帮忙吗?我是编程新手,请多多包涵。谢谢!

我已经创建了一个Ngrok隧道来访问模型,但是我进行了各种尝试来更改与URL,数据和响应有关的上述代码,但我收到了“格式错误的请求”或“错误的请求”。

感谢您的协助!

1 个答案:

答案 0 :(得分:1)

最后,我设法自己找到了答案。通过Ngrok成功连接到Docker Tensorflow,并获得要显示在Dialogflow上的预测。

function predict(agent) {
  let data = agent.context.get('havehistory').parameters.any;  
  var dataString = '{"examples": [{"Features": "' + data + '"}]}';
  var options = 'http://1234567.ngrok.io/v1/models/exports:classify'; 

  return getRate(options,dataString).then(response => {
  var bot_response = "The answer is " + JSON.stringify(response.data.results);
  agent.add(bot_response);
  console.log(bot_response);
  }).catch (error => {
    console.log("Something is wrong  !! ");
    console.log(error);
    var bot_response = "Something is wrong: " + response.data;
    agent.add(bot_response);
});
}

function getRate(options,dataString) {
    const axios = require('axios');
    return axios.post(options,dataString);
}