Я продолжаю получать сообщение об ошибке при использовании модели clarifai «Демография»

TypeError: невозможно прочитать свойство "язык" из неопределенного

Демографическая модель работала несколько месяцев назад, когда я использовал ее как «Clarifai.DEMOGRAPHICS_MODEL», но теперь она выдает ошибку 404 для того же самого. Я думаю, что теперь я должен использовать его как «Clarifai.Demographics», но это дает ошибку, показанную на рисунке. Я что-то не так делаю или проблема в Clarifai? Я относительно новичок в программировании на реакцию и только что заметил, что приложение, которое я сделал до использования «Clarifai.DEMOGRAPHICS_MODEL», внезапно начало показывать ошибки.

Пока я просто пытаюсь сделать эту работу

const onSubmit = () => {
    app.models.predict(Clarifai.Demographics, "https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/06/06/15/Chris-Pratt.jpg")
    .then(res => console.log(res))
}

НОВАЯ РЕДАКЦИЯ:

Наконец, теперь я могу получать данные из clarifai и отправлять их во внешний интерфейс. Хранение кода бэкэнда здесь для справки, если кому-то понадобится.

--------server.js---------
const express = require('express')
const cors = require('cors')
const posts = require('./demographics.js')

const app = express()
app.use(cors())
app.use(express.json())

const PORT = process.env.PORT || 5000

app.post('/data', posts.demographics)

app.listen(PORT, ()=> {
    console.log('Working at port ',PORT)
})


--------demographics.js---------
const {ClarifaiStub, grpc} = require("clarifai-nodejs-grpc");
const stringify = require('json-stringify-safe');

const demographics = (req,res) => {
    const stub = ClarifaiStub.grpc()
    const metadata = new grpc.Metadata();
    metadata.set("authorization", "Key {My_Key}");
    stub.PostWorkflowResults(
        {
            workflow_id: "Demographics",
            inputs: [
                {data: {image: {url: req.body.input}}}
            ]
        },

        metadata,
        (err, response) => {
            if(response){                
                const data = stringify(response.results[0].outputs[4].data.regions, null, 2)
                res.send(data)
            }
            else {
                console.log(err)
                res.status(400)
            }
        }
    )
}

person Shiladitya Thakur    schedule 08.12.2020    source источник


Ответы (2)


Вы должны вызвать запрос либо из внешнего интерфейса, либо из внутреннего интерфейса. А демография теперь поддерживает только запросы от серверной части.

const {ClarifaiStub} = require("clarifai-nodejs-grpc");
const grpc = require("@grpc/grpc-js");

const metadata = new grpc.Metadata();
metadata.set("authorization", "{My key}");
const stub = ClarifaiStub.json()

stub.PostWorkflowResults(
        {
            workflow_id: "Demographics",
            inputs: [
                {data: {image: {url: "https://static.independent.co.uk/s3fs-public/thumbnails/image/2015/06/06/15/Chris-Pratt.jpg"}}}
            ]
        },
   

     metadata,
            (err, response) => {
                    if(response){
                console.log(response.results[0].outputs[2].data.regions[0].data.concepts
)
                    }else {
                      console.log(err)
                    }

используйте это для возврата результатов

// response.results[0].outputs[2].data.regions[0].data.concepts, muliticulture,
        // response.results[0].outputs[3].data.regions[0].data.concepts, gender,
        //response.results[0].outputs[4].data.regions[0].data.concepts, age,
person Tony    schedule 05.01.2021
comment
Большое спасибо за ответ :) .. Я наконец-то получил данные и теперь могу отправить их в интерфейс - person Shiladitya Thakur; 07.01.2021
comment
отметьте ответ как решенный. - person Tony; 08.01.2021
comment
И не могли бы вы ответить мне здесь ссылка - person Tony; 08.01.2021

Клиент Clarifai JS Rest теперь устарел, идентификаторы моделей не обновляются, и эта конкретная демографическая модель также находится в процессе обесценивания. Вы можете заменить его новым gRPC NodeJS API: https://docs.clarifai.com/api-guide/api-overview/api-clients

Затем вы можете получить демографический прогноз, вызвав новый рабочий процесс «Демография»: https://docs.clarifai.com/api-guide/workflows/workflow-predict (замените «YOUR_WORKFLOW_ID» на «Демографические данные»)

person Jeremy Faret    schedule 10.12.2020