我有一个在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,数据和响应有关的上述代码,但我收到了“格式错误的请求”或“错误的请求”。
感谢您的协助!
答案 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);
}