【问题标题】:I keep getting an error when using the clarifai 'Demographics" model使用 clarifai 'Demographics' 模型时,我不断收到错误消息
【发布时间】:2021-01-07 23:54:31
【问题描述】:

TypeError: Cannot read property 'language' of undefined

几个月前,当我将其用作“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)
            }
        }
    )
}

【问题讨论】:

    标签: reactjs clarifai


    【解决方案1】:

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

    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,
    

    【讨论】:

    • 非常感谢您的回答 :) ..我终于得到了数据,现在可以将其发送到前端
    • 你能在这里回答我吗link
    【解决方案2】:

    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”)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      • 2019-07-19
      相关资源
      最近更新 更多