0

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)
            }
        }
    )
}
4

2 回答 2

0

Clarifai JS Rest客户端现已折旧,模型 ID 未更新,并且此特定 Demographics 模型也在折旧过程中。您可以将其替换为新的gRPC NodeJS APIhttps ://docs.clarifai.com/api-guide/api-overview/api-clients

然后,您可以通过调用新的 Demographics 工作流程来获得人口统计预测:https ://docs.clarifai.com/api-guide/workflows/workflow-predict (将“ Your_WORKFLOW_ID ”替换为“ Demographics ”)

于 2020-12-10T11:26:01.087 回答
0

您必须从前端或后端调用请求。而且人口统计现在只支持来自后端的请求。

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,
于 2021-01-05T17:27:45.597 回答