0

我正在尝试将服装检测模型与 Node.js 一起使用。我一直遇到2个错误。我收到的第一个错误是:

无效的 API 密钥或无效的 API 密钥/应用程序对

从此代码创建:

const grpc = require("@grpc/grpc-js");

const stub=ClarifaiStub.grpc();
const metadata = new grpc.Metadata();
metadata.set("authorization", "Key xxxxxxxxxxxxxxxxxxxxxxxxxxx");

stub.PostModelOutputs(
    {
        model_id: "72c523807f93e18b431676fb9a58e6ad",
        version_id: "1ed35c3d176f45d69d2aa7971e6ab9fe",  // This is optional. Defaults to the latest model version.
        inputs: [
            {data: {image: {url: "https://sc01.alicdn.com/kf/HTB1VxCwKFXXXXXeaXXXq6xXFXXX1.jpg"}}}
        ]
    },
    metadata,
    (err, response) => {
        if (err) {
            throw new Error(err);
        }

        if (response.status.code !== 10000) {
            throw new Error("Post model outputs failed, status: " + response.status.description);
        }

        // Since we have one input, one output will exist here.
        const output = response.outputs[0];

        console.log("Predicted concepts:");
        for (const concept of output.data.concepts) {
            console.log(concept.name + " " + concept.value);
        }
    }
);

我遇到的第二个问题是尝试为此应用程序创建工作流时。选择服装模型并单击创建工作流程时,我收到此消息:

您的请求已被阻止。缺少特征标志:[Model Visual Detector]

我收到了相同的消息,其中包含我尝试过的不同模型/模型组合。很抱歉,我现在感到很迷茫。感谢您的任何帮助。

4

1 回答 1

1

使用您的 API 密钥,我能够成功调用模型。但是,我省略了 version_id 字段。看起来这个版本 id 不正确(如果你省略它,那么它只会得到模型的最新版本)。

const grpc = require("@grpc/grpc-js");

const stub=ClarifaiStub.grpc();
const metadata = new grpc.Metadata();
metadata.set("authorization", "Key xxxxxxxxxxxxxxxxxxxxxxxxxxx");

stub.PostModelOutputs(
    {
        model_id: "72c523807f93e18b431676fb9a58e6ad",
        inputs: [
            {data: {image: {url: "https://sc01.alicdn.com/kf/HTB1VxCwKFXXXXXeaXXXq6xXFXXX1.jpg"}}}
        ]
    },
    metadata,
    (err, response) => {
        if (err) {
            throw new Error(err);
        }

        if (response.status.code !== 10000) {
            throw new Error("Post model outputs failed, status: " + response.status.description);
        }

        // Since we have one input, one output will exist here.
        const output = response.outputs[0];

        console.log("Predicted concepts:");
        for (const concept of output.data.concepts) {
            console.log(concept.name + " " + concept.value);
        }
    }
);

我掩盖了您的密钥(包括在答案中),因为您通常不想公开分享。

于 2020-11-02T06:13:00.437 回答