Exemplo n.º 1
0
        public async Task GetModelVersionResponseShouldBeCorrect()
        {
            var httpClient = new FkClarifaiHttpClient(
                getResponse: @"
{
    ""status"": {
        ""code"": 10000,
        ""description"": ""Ok""
    },
    ""model_version"": {
        ""id"": ""@versionID"",
        ""created_at"": ""2017-01-01T00:00:00.000000Z"",
        ""status"": {
            ""code"": 21100,
            ""description"": ""Model trained successfully""
        },
        ""active_concept_count"": 2,
        ""metrics"": {
            ""status"": {
                ""code"": 21303,
                ""description"": ""@modelDESCRIPTION""
            }
        },
        ""total_input_count"": 30
    }
}
");
            var client = new ClarifaiClient(httpClient);
            ClarifaiResponse <ModelVersion> response = await client.GetModelVersion("@modelID", "@versionID").ExecuteAsync();

            Assert.True(response.IsSuccessful);
            Assert.AreEqual(response.Get().ID, "@versionID");
            Assert.AreEqual(response.Get().ActiveConceptCount, 2);
            Assert.AreEqual(response.Get().ModelMetricsStatus.Description, "@modelDESCRIPTION");
        }
Exemplo n.º 2
0
        public async Task ModifyConceptRequestAndResponseShouldBeCorrect()
        {
            var httpClient = new FkClarifaiHttpClient(
                patchResponse: @"
{
    ""status"": {
        ""code"": 10000,
        ""description"": ""Ok""
    },
    ""concepts"": [{
        ""id"": ""@positiveConcept1"",
        ""name"": ""@positiveConceptName1"",
        ""created_at"": ""2017-10-15T16:28:28.901994Z"",
        ""language"": ""en"",
        ""app_id"": ""@appID""
    }, {
        ""id"": ""@positiveConcept2"",
        ""created_at"": ""2017-10-15T16:26:46.667104Z"",
        ""language"": ""en"",
        ""app_id"": ""@appID""
    }]
}
");
            var client = new ClarifaiClient(httpClient);
            ClarifaiResponse <List <Concept> > response = await client.ModifyConcepts(
                new  List <Concept>
            {
                new Concept("@positiveConcept1", "@positiveConceptName1"),
                new Concept("@positiveConcept2")
            }
                ).ExecuteAsync();


            var expectedRequestBody = JObject.Parse(@"
{
    ""action"": ""overwrite"",
    ""concepts"": [
       {
        ""id"": ""@positiveConcept1"",
        ""name"": ""@positiveConceptName1""
       },
       {
        ""id"": ""@positiveConcept2"",
        ""name"": null
       }
    ]    
} 
");


            Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PatchedBody));

            Assert.True(response.IsSuccessful);
            Assert.AreEqual("Ok", response.Status.Description);

            Assert.AreEqual(response.Get()[0].ID, "@positiveConcept1");
            Assert.AreEqual(response.Get()[0].Name, "@positiveConceptName1");
            Assert.AreEqual(response.Get()[1].ID, "@positiveConcept2");
        }
Exemplo n.º 3
0
        public async Task SearchModelsByNameShouldBeSuccessful()
        {
            ClarifaiResponse <List <IModel> > response = await Client.SearchModels("celeb*")
                                                         .ExecuteAsync();

            Assert.NotNull(response.Get());
            Assert.True(response.Get().Count > 0);
        }
Exemplo n.º 4
0
        public async Task TrainModelRequestAndResponseShouldBeCorrect()
        {
            var httpClient = new FkClarifaiHttpClient(
                postResponse: @"
{
    ""status"": {

        ""code"": 10000,
        ""description"": ""Ok""

    },
    ""model"": {
        ""id"": ""some-model-id"",
        ""name"": ""some-model-name"",
        ""created_at"": ""2017-05-16T19:20:38.733764Z"",
        ""app_id"": ""main"",
        ""output_info"": {
            ""data"": {
                ""concepts"": [{
                    ""id"": ""some-concept-id"",
                    ""name"": ""safe"",
                    ""created_at"": ""2017-05-16T19:20:38.450157Z"",
                    ""language"": ""en"",
                    ""app_id"": ""main""
                }]
            },
            ""type"": ""concept"",
            ""type_ext"": ""concept""
        },
        ""model_version"": {
            ""id"": ""some-model-version-id"",
            ""created_at"": ""2017-05-16T19:20:38.733764Z"",
            ""status"": {
                ""code"": 21100,
                ""description"": ""Model trained successfully""
            },
            ""active_concept_count"": 5
        },
        ""display_name"": ""Moderation""
    }
}
");

            var client = new ClarifaiClient(httpClient);
            ClarifaiResponse <IModel <Concept> > response = await client.TrainModel <Concept>("some-model-id").ExecuteAsync();

            var expectedRequestBody = JObject.Parse(@"
{}
");

            Assert.True(JToken.DeepEquals(expectedRequestBody, httpClient.PostedBody));

            Assert.True(response.IsSuccessful);
            Assert.AreEqual("Ok", response.Status.Description);
            Assert.AreEqual(response.Get().Name, "some-model-name");
            Assert.AreEqual(response.Get().ModelID, "some-model-id");
            Assert.AreEqual(response.Get().ModelVersion.ID, "some-model-version-id");
        }
Exemplo n.º 5
0
        public async Task SearchModelsByTypeShouldBeSuccessful()
        {
            ClarifaiResponse <List <IModel> > response = await Client.SearchModels("*",
                                                                                   ModelType.Color)
                                                         .ExecuteAsync();

            AssertResponseSuccess(response);
            Assert.NotNull(response.Get());
            Assert.True(response.Get().Count > 0);
        }
Exemplo n.º 6
0
        public async Task ModifyConceptRequestShouldUpdateConceptName()
        {
            string conceptID           = "someConceptID";
            string originalConceptName = "originalConceptName";
            string newConceptName      = "newConceptName";

            try
            {
                // Create a concept. It's fine if it already exists.
                await Client.AddConcepts(new Concept(conceptID, originalConceptName))
                .ExecuteAsync();

                // Modify the concept.
                ClarifaiResponse <List <Concept> > modifyResponse = await Client.ModifyConcepts(
                    new Concept(conceptID, newConceptName))
                                                                    .ExecuteAsync();

                Assert.True(modifyResponse.IsSuccessful);
                Assert.AreEqual(newConceptName, modifyResponse.Get()[0].Name);

                // Get the modified concept again to make sure the name was really updated.
                ClarifaiResponse <Concept> getResponse = await Client.GetConcept(conceptID)
                                                         .ExecuteAsync();

                Assert.AreEqual(newConceptName, getResponse.Get().Name);
            }
            finally
            {
                // Revert the concept's name back to the original name.
                await Client.ModifyConcepts(new Concept(conceptID, originalConceptName))
                .ExecuteAsync();
            }
        }
Exemplo n.º 7
0
        public async Task GetConceptsShouldBeSuccessful()
        {
            ClarifaiResponse <List <Concept> > response = await Client.GetConcepts().ExecuteAsync();

            Assert.True(response.IsSuccessful);
            Assert.NotNull(response.Get());
        }
Exemplo n.º 8
0
        public async Task ShorthandGetModelInputsShouldBeSuccessful()
        {
            /*
             * Create a model.
             */
            string modelID = GenerateRandomID();
            ClarifaiResponse <ConceptModel> createModelResponse = await Client.CreateModel(
                modelID,
                concepts : new List <Concept> {
                new Concept("cat")
            })
                                                                  .ExecuteAsync();

            Assert.True(createModelResponse.IsSuccessful);

            try
            {
                ConceptModel model = createModelResponse.Get();
                var          getModelInputsResponse = await model.GetModelInputs().ExecuteAsync();

                Assert.True(getModelInputsResponse.IsSuccessful);
                Assert.NotNull(getModelInputsResponse.Get());
            }
            finally
            {
                /*
                 * Delete the model.
                 */
                var deleteResponse = await Client.DeleteModel(modelID)
                                     .ExecuteAsync();

                Assert.True(deleteResponse.IsSuccessful);
            }
        }
Exemplo n.º 9
0
        public async Task GetInputsStatusResponseShouldBeCorrect()
        {
            var httpClient = new FkClarifaiHttpClient(
                getResponse: @"
{
  ""status"": {
    ""code"": 10000,
    ""description"": ""Ok""
  },
  ""counts"": {
    ""processed"": 1,
    ""to_process"": 2,
    ""errors"": 3,
    ""processing"": 4,
    ""reindexed"": 5,
    ""to_reindex"": 6,
    ""reindex_errors"": 7,
    ""reindexing"": 8
  }
}
");
            var client = new ClarifaiClient(httpClient);
            ClarifaiResponse <ClarifaiInputsStatus> response = await client.GetInputsStatus().ExecuteAsync();

            var status = (ClarifaiInputsStatus)response.Get();

            Assert.True(response.IsSuccessful);
            Assert.AreEqual(status.Processed, 1);
            Assert.AreEqual(status.ToProcess, 2);
            Assert.AreEqual(status.Errors, 3);
            Assert.AreEqual(status.Processing, 4);
        }
Exemplo n.º 10
0
        public async Task AddingImageFileWithCropShouldBeSuccessful()
        {
            string inputID = GenerateRandomID();

            try
            {
                /*
                 * Add input with concepts.
                 */
                ClarifaiResponse <List <IClarifaiInput> > addResponse = await Client.AddInputs(
                    new ClarifaiFileImage(
                        ReadResource(BALLOONS_IMAGE_FILE),
                        id : inputID,
                        crop : new Crop(0.1M, 0.2M, 0.3M, 0.4M)))
                                                                        .ExecuteAsync();

                Assert.True(addResponse.IsSuccessful);

                ClarifaiURLImage input = (ClarifaiURLImage)addResponse.Get()[0];
                Assert.AreEqual(new Crop(0.1M, 0.2M, 0.3M, 0.4M), input.Crop);
            }
            finally
            {
                /*
                 * Delete the input.
                 */
                await DeleteInput(inputID);
            }
        }
Exemplo n.º 11
0
        public async Task ShorthandDeleteModelVersionRequestShouldBeSuccessful()
        {
            string modelID = GenerateRandomID();

            ClarifaiResponse <ConceptModel> createResponse
                = await Client.CreateModel(
                      modelID,
                      name : modelID,
                      concepts : new List <Concept> {
                new Concept("dog"), new Concept("cat")
            })
                  .ExecuteAsync();

            AssertResponseSuccess(createResponse);

            ConceptModel model = createResponse.Get();

            ClarifaiResponse <ModelVersion> getVersionResponse =
                await Client.GetModelVersion(modelID, model.ModelVersion.ID).ExecuteAsync();

            string modelVersionID = getVersionResponse.Get().ID;

            ClarifaiResponse <EmptyResponse> deleteVersionResponse =
                await model.DeleteModelVersion(modelVersionID).ExecuteAsync();

            AssertResponseSuccess(deleteVersionResponse);

            /*
             * The model version should not exist anymore.
             */
            ClarifaiResponse <ModelVersion> getVersionResponse2 =
                await Client.GetModelVersion(modelID, modelVersionID).ExecuteAsync();

            Assert.False(getVersionResponse2.IsSuccessful);
        }
Exemplo n.º 12
0
        public async Task AddingImageUrlWithCropShouldBeSuccessful()
        {
            string inputID = GenerateRandomID();

            try
            {
                /*
                 * Add input with concepts.
                 */
                ClarifaiResponse <List <IClarifaiInput> > addResponse = await Client.AddInputs(
                    new ClarifaiURLImage(
                        CELEB1,
                        id : inputID,
                        crop : new Crop(0.1M, 0.2M, 0.3M, 0.4M),
                        allowDuplicateUrl : true))
                                                                        .ExecuteAsync();

                Assert.True(addResponse.IsSuccessful);
                var input = (ClarifaiURLImage)addResponse.Get()[0];
                Assert.AreEqual(new Crop(0.1M, 0.2M, 0.3M, 0.4M), input.Crop);
            }
            finally
            {
                /*
                 * Delete the input.
                 */
                await DeleteInput(inputID);
            }
        }
        public async Task SearchByMetadataShouldBeSuccessful()
        {
            string randomValue = GenerateRandomID();

            ClarifaiResponse <List <IClarifaiInput> > addInputResponse =
                await Client.AddInputs(
                    new ClarifaiURLImage(
                        CAT1,
                        positiveConcepts : new List <Concept> {
                new Concept("cat")
            },
                        allowDuplicateUrl : true,
                        metadata : new JObject(
                            new JProperty("key1", "val1"),
                            new JProperty("key2", randomValue))))
                .ExecuteAsync();

            AssertResponseSuccess(addInputResponse);

            string inputID = addInputResponse.Get()[0].ID;

            try
            {
                await WaitForSpecificInputsUpload(inputID);

                ClarifaiResponse <SearchInputsResult> response =
                    await Client.SearchInputs(new List <SearchBy>
                {
                    SearchBy.Metadata(new JObject(new JProperty("key2", randomValue)))
                })
                    .ExecuteAsync();

                Console.WriteLine(response.RawBody);

                AssertResponseSuccess(response);
                Assert.NotNull(response.Get().SearchHits);
                // Because the value we set is random, there should be exactly one hit.
                Assert.AreEqual(1, response.Get().SearchHits.Count);
            }
            finally
            {
                ClarifaiResponse <EmptyResponse> deleteInputResponse =
                    await Client.DeleteInputs(inputID).ExecuteAsync();

                AssertResponseSuccess(deleteInputResponse);
            }
        }
Exemplo n.º 14
0
        public async Task SearchConceptsShouldBeSuccessful()
        {
            ClarifaiResponse <List <Concept> > response = await Client.SearchConcepts("conc*")
                                                          .ExecuteAsync();

            AssertResponseSuccess(response);
            Assert.IsNotNull(response.Get());
        }
Exemplo n.º 15
0
        public async Task ShorthandGetModelVersionRequestShouldBeSuccessful()
        {
            string modelID          = Client.PublicModels.ModerationModel.ModelID;
            var    getModelResponse = await Client.GetModel <Concept>(modelID).ExecuteAsync();

            IModel <Concept> model = getModelResponse.Get();

            ClarifaiResponse <ModelVersion> response =
                await model.GetModelVersion(model.ModelVersion.ID)
                .ExecuteAsync();

            AssertResponseSuccess(response);
            Assert.AreEqual(10000, response.Status.StatusCode);
            Assert.AreEqual(HttpStatusCode.OK, response.HttpCode);
            Assert.AreEqual(model.ModelVersion.ID, response.Get().ID);
            Assert.IsNotNull(response.Get().Status);
        }
        public async Task SearchByImageUrlShouldBeSuccessful()
        {
            ClarifaiResponse <SearchInputsResult> response =
                await Client.SearchInputs(SearchBy.ImageURL(CELEB1))
                .ExecuteAsync();

            Assert.True(response.IsSuccessful);
            Assert.NotNull(response.Get().SearchHits);
        }
        public async Task SearchVisuallyByImageUrlUsingImageShouldBeSuccessful()
        {
            ClarifaiResponse <SearchInputsResult> response =
                await Client.SearchInputs(SearchBy.ImageVisually(new ClarifaiURLImage(CELEB1)))
                .ExecuteAsync();

            AssertResponseSuccess(response);
            Assert.NotNull(response.Get().SearchHits);
        }
        public async Task SearchByUserTaggedConceptIDShouldBeSuccessful()
        {
            ClarifaiResponse <SearchInputsResult> response =
                await Client.SearchInputs(SearchBy.UserTaggedConceptID("cat"))
                .ExecuteAsync();

            AssertResponseSuccess(response);
            Assert.NotNull(response.Get().SearchHits);
        }
Exemplo n.º 19
0
        public async Task SearchConceptsWithLanguageShouldBeSuccessful()
        {
            ClarifaiResponse <List <Concept> > response = await Client.SearchConcepts("狗*",
                                                                                      language : "zh") // "zh" = Chinese
                                                          .ExecuteAsync();

            Assert.True(response.IsSuccessful);
            Assert.IsNotNull(response.Get());
        }
        public async Task SearchByConceptIDShouldBeSuccessful()
        {
            ClarifaiResponse <SearchInputsResult> response =
                await Client.SearchInputs(SearchBy.ConceptID("ai_mFqxrph2"))
                .ExecuteAsync();

            Assert.True(response.IsSuccessful);
            Assert.NotNull(response.Get().SearchHits);
        }
Exemplo n.º 21
0
        private async Task <List <Concept> > GetConcepts(string inputID)
        {
            ClarifaiResponse <IClarifaiInput> getResponse = await Client.GetInput(inputID)
                                                            .ExecuteAsync();

            AssertResponseSuccess(getResponse);
            List <Concept> concepts = getResponse.Get().PositiveConcepts.ToList();

            return(concepts);
        }
        public async Task SearchVisuallyByImageFileShouldBeSuccessful()
        {
            ClarifaiResponse <SearchInputsResult> response =
                await Client.SearchInputs(SearchBy.ImageVisually(
                                              new ClarifaiFileImage(ReadResource(BALLOONS_IMAGE_FILE))))
                .ExecuteAsync();

            AssertResponseSuccess(response);
            Assert.NotNull(response.Get().SearchHits);
        }
        public async Task SearchVisuallyByImageUrlWithCropShouldBeSuccessful()
        {
            ClarifaiResponse <SearchInputsResult> response =
                await Client.SearchInputs(SearchBy.ImageVisually(
                                              CELEB1,
                                              new Crop(0.1M, 0.2M, 0.3M, 0.4M)))
                .ExecuteAsync();

            Assert.True(response.IsSuccessful);
            Assert.NotNull(response.Get().SearchHits);
        }
        public async Task SearchVisuallyByImageFileWithCropShouldBeSuccessful()
        {
            ClarifaiResponse <SearchInputsResult> response =
                await Client.SearchInputs(SearchBy.ImageVisually(
                                              new ClarifaiFileImage(ReadResource(BALLOONS_IMAGE_FILE)),
                                              new Crop(0.1M, 0.2M, 0.3M, 0.4M)))
                .ExecuteAsync();

            Assert.True(response.IsSuccessful);
            Assert.NotNull(response.Get().SearchHits);
        }
Exemplo n.º 25
0
        public async Task ShorthandConceptPredictImageShouldBeSuccessful()
        {
            ClarifaiResponse <ClarifaiOutput <Concept> > response =
                await Client.PublicModels.GeneralModel.Predict(new ClarifaiURLImage(CELEB1))
                .ExecuteAsync();

            Assert.True(response.IsSuccessful);
            Assert.AreEqual(10000, response.Status.StatusCode);
            Assert.AreEqual(HttpStatusCode.OK, response.HttpCode);
            Assert.NotNull(response.RawBody);

            Assert.NotNull(response.Get().Data[0]);
        }
Exemplo n.º 26
0
        public async Task GettingModelShouldBeSuccessful()
        {
            ClarifaiResponse <IModel <Concept> > response =
                await Client.GetModel <Concept>(Client.PublicModels.ModerationModel.ModelID)
                .ExecuteAsync();

            Assert.True(response.IsSuccessful);
            Assert.AreEqual(10000, response.Status.StatusCode);
            Assert.AreEqual(HttpStatusCode.OK, response.HttpCode);
            Assert.NotNull(response.RawBody);

            Assert.NotNull(response.Get().ModelID);
        }
Exemplo n.º 27
0
        public async Task GetInputResponseShouldBeCorrect()
        {
            var httpClient = new FkClarifaiHttpClient(
                getResponse: @"
{
    ""status"": {
        ""code"": 10000,
        ""description"": ""Ok""
    },
    ""input"": {
        ""id"": ""@inputID"",
        ""data"": {
            ""image"": {
                ""url"": ""@imageURL""
            },
            ""concepts"": [
                {
                  ""id"": ""@positiveConcept"",
                  ""value"": 1
                },
                {
                  ""id"": ""@negativeConcept1"",
                  ""value"": 0
                },
                {
                  ""id"": ""@negativeConcept2"",
                  ""value"": 0
                }
            ]
        },
        ""created_at"": ""2017-10-13T20:53:00.253139Z"",
        ""modified_at"": ""2017-10-13T20:53:00.868659782Z"",
        ""status"": {
            ""code"": 30200,
            ""description"": ""Input image modification success""
        }
    }
}
");
            var client = new ClarifaiClient(httpClient);
            ClarifaiResponse <IClarifaiInput> response = await client.GetInput("@inputID").ExecuteAsync();

            var input = (ClarifaiURLImage)response.Get();

            Assert.True(response.IsSuccessful);
            Assert.AreEqual(input.ID, "@inputID");
            Assert.AreEqual(input.URL, "@imageURL");
            Assert.AreEqual(input.PositiveConcepts.ElementAt(0).ID, "@positiveConcept");
            Assert.AreEqual(input.NegativeConcepts.ElementAt(0).ID, "@negativeConcept1");
            Assert.AreEqual(input.NegativeConcepts.ElementAt(1).ID, "@negativeConcept2");
        }
        public async Task PredictOnEmbeddingModelShouldBeSuccessful()
        {
            string modelID = Client.PublicModels.GeneralEmbeddingModel.ModelID;

            ClarifaiResponse <ClarifaiOutput <Embedding> > predictResponse =
                await Client.Predict <Embedding>(
                    modelID,
                    new ClarifaiURLImage(CELEB1))
                .ExecuteAsync();

            AssertResponseSuccess(predictResponse);
            Embedding embedding = predictResponse.Get().Data[0];

            Assert.NotNull(embedding.Vector);
        }
        public async Task PredictOnColorModelShouldBeSuccessful()
        {
            string modelID = Client.PublicModels.ColorModel.ModelID;

            ClarifaiResponse <ClarifaiOutput <Color> > predictResponse =
                await Client.Predict <Color>(
                    modelID,
                    new ClarifaiURLImage(APPAREL1))
                .ExecuteAsync();

            AssertResponseSuccess(predictResponse);
            Color color = predictResponse.Get().Data[0];

            Assert.NotNull(color.Name);
        }
Exemplo n.º 30
0
        public async Task GetModelsShouldBeSuccessful()
        {
            ClarifaiResponse <List <IModel> > response = await Client.GetModels().ExecuteAsync();

            List <IModel> models = response.Get();

            Assert.IsNotNull(models);
            Assert.AreNotEqual(0, models.Count);
            foreach (IModel model in models)
            {
                Assert.IsNotNull(model.Name);
                Assert.IsNotNull(model.OutputInfo.Type);
                Assert.IsNotNull(model.OutputInfo.TypeExt);
            }
        }