diff --git a/.codegen.json b/.codegen.json index 088363dd6..6d63a8f22 100644 --- a/.codegen.json +++ b/.codegen.json @@ -1 +1 @@ -{ "engineHash": "a87c352", "specHash": "dd7f7a9", "version": "10.13.0" } +{ "engineHash": "e392e8c", "specHash": "dd7f7a9", "version": "10.13.0" } diff --git a/docs/ai.md b/docs/ai.md index c223381d2..32a0c2d1a 100644 --- a/docs/ai.md +++ b/docs/ai.md @@ -149,7 +149,7 @@ See the endpoint docs at ``` -client.getAi().createAiExtractStructured(new AiExtractStructured.Builder(Arrays.asList(new AiItemBase(file.getId()))).fields(Arrays.asList(new AiExtractStructuredFieldsField.Builder("firstName").description("Person first name").displayName("First name").prompt("What is the your first name?").type("string").build(), new AiExtractStructuredFieldsField.Builder("lastName").description("Person last name").displayName("Last name").prompt("What is the your last name?").type("string").build(), new AiExtractStructuredFieldsField.Builder("dateOfBirth").description("Person date of birth").displayName("Birth date").prompt("What is the date of your birth?").type("date").build(), new AiExtractStructuredFieldsField.Builder("age").description("Person age").displayName("Age").prompt("How old are you?").type("float").build(), new AiExtractStructuredFieldsField.Builder("hobby").description("Person hobby").displayName("Hobby").prompt("What is your hobby?").type("multiSelect").options(Arrays.asList(new AiExtractStructuredFieldsOptionsField("guitar"), new AiExtractStructuredFieldsOptionsField("books"))).build())).aiAgent(aiExtractStructuredAgentBasicTextConfig).includeConfidenceScore(true).build()) +client.getAi().createAiExtractStructured(new AiExtractStructured.Builder(Arrays.asList(new AiItemBase(file.getId()))).fields(Arrays.asList(new AiExtractStructuredFieldsField.Builder("firstName").description("Person first name").displayName("First name").prompt("What is the your first name?").type("string").build(), new AiExtractStructuredFieldsField.Builder("lastName").description("Person last name").displayName("Last name").prompt("What is the your last name?").type("string").build(), new AiExtractStructuredFieldsField.Builder("dateOfBirth").description("Person date of birth").displayName("Birth date").prompt("What is the date of your birth?").type("date").build(), new AiExtractStructuredFieldsField.Builder("age").description("Person age").displayName("Age").prompt("How old are you?").type("float").build(), new AiExtractStructuredFieldsField.Builder("hobby").description("Person hobby").displayName("Hobby").prompt("What is your hobby?").type("multiSelect").options(Arrays.asList(new AiExtractStructuredFieldsOptionsField("guitar"), new AiExtractStructuredFieldsOptionsField("books"))).build(), new AiExtractStructuredFieldsField.Builder("address").description("Person address").displayName("Address").prompt("Extract the full mailing address.").type("struct").fields(Arrays.asList(new AiExtractSubField.Builder("street").displayName("Street").type("string").build(), new AiExtractSubField.Builder("city").displayName("City").type("string").build(), new AiExtractSubField.Builder("state").displayName("State").type("string").build(), new AiExtractSubField.Builder("zip").displayName("Zip").type("string").build(), new AiExtractSubField.Builder("country").displayName("Country").type("string").build())).build(), new AiExtractStructuredFieldsField.Builder("work_history").description("Person work history").displayName("Work history").prompt("Extract each job as a row.").type("table").fields(Arrays.asList(new AiExtractSubField.Builder("job_title").displayName("Job title").type("string").build(), new AiExtractSubField.Builder("company").displayName("Company").type("string").build(), new AiExtractSubField.Builder("start_year").displayName("Start year").type("string").build(), new AiExtractSubField.Builder("end_year").displayName("End year").type("string").build())).build())).aiAgent(aiExtractStructuredAgentBasicTextConfig).includeConfidenceScore(true).includeReference(true).build()) ``` ### Arguments diff --git a/src/test/java/com/box/sdkgen/ai/AiITest.java b/src/test/java/com/box/sdkgen/ai/AiITest.java index e45332ea2..e8921383a 100644 --- a/src/test/java/com/box/sdkgen/ai/AiITest.java +++ b/src/test/java/com/box/sdkgen/ai/AiITest.java @@ -33,6 +33,7 @@ import com.box.sdkgen.schemas.aiextractstructured.AiExtractStructuredFieldsOptionsField; import com.box.sdkgen.schemas.aiextractstructured.AiExtractStructuredMetadataTemplateField; import com.box.sdkgen.schemas.aiextractstructuredresponse.AiExtractStructuredResponse; +import com.box.sdkgen.schemas.aiextractsubfield.AiExtractSubField; import com.box.sdkgen.schemas.aiitemask.AiItemAsk; import com.box.sdkgen.schemas.aiitemask.AiItemAskTypeField; import com.box.sdkgen.schemas.aiitembase.AiItemBase; @@ -263,7 +264,7 @@ public void testAiExtractStructuredWithFields() { stringToByteStream( String.join( "", - "My name is John Doe. I was born in 4th July 1990. I am 34 years old. My hobby is guitar. My UUID is ", + "My name is John Doe. I was born in 4th July 1990. I am 34 years old. My hobby is guitar. I live at 900 Jefferson Ave, Redwood City, CA 94063, US. My work history: Software Engineer at Box from 2020 to 2024. My UUID is ", getUuid())))); FileFull file = uploadedFiles.getEntries().get(0); delayInSeconds(5); @@ -307,17 +308,76 @@ public void testAiExtractStructuredWithFields() { Arrays.asList( new AiExtractStructuredFieldsOptionsField("guitar"), new AiExtractStructuredFieldsOptionsField("books"))) + .build(), + new AiExtractStructuredFieldsField.Builder("address") + .description("Person address") + .displayName("Address") + .prompt("Extract the full mailing address.") + .type("struct") + .fields( + Arrays.asList( + new AiExtractSubField.Builder("street") + .displayName("Street") + .type("string") + .build(), + new AiExtractSubField.Builder("city") + .displayName("City") + .type("string") + .build(), + new AiExtractSubField.Builder("state") + .displayName("State") + .type("string") + .build(), + new AiExtractSubField.Builder("zip") + .displayName("Zip") + .type("string") + .build(), + new AiExtractSubField.Builder("country") + .displayName("Country") + .type("string") + .build())) + .build(), + new AiExtractStructuredFieldsField.Builder("work_history") + .description("Person work history") + .displayName("Work history") + .prompt("Extract each job as a row.") + .type("table") + .fields( + Arrays.asList( + new AiExtractSubField.Builder("job_title") + .displayName("Job title") + .type("string") + .build(), + new AiExtractSubField.Builder("company") + .displayName("Company") + .type("string") + .build(), + new AiExtractSubField.Builder("start_year") + .displayName("Start year") + .type("string") + .build(), + new AiExtractSubField.Builder("end_year") + .displayName("End year") + .type("string") + .build())) .build())) .aiAgent(aiExtractStructuredAgentBasicTextConfig) .includeConfidenceScore(true) + .includeReference(true) .build()); assert !(response.getConfidenceScore() == null); + assert !(response.getReference() == null); + assert !(response.getAiAgentInfo() == null); assert convertToString(response.getAnswer().get("hobby")) .equals(convertToString(Arrays.asList("guitar"))); assert convertToString(response.getAnswer().get("firstName")).equals("John"); assert convertToString(response.getAnswer().get("lastName")).equals("Doe"); assert convertToString(response.getAnswer().get("dateOfBirth")).equals("1990-07-04"); assert convertToString(response.getAnswer().get("age")).equals("34"); + assert convertToString(response.getAnswer().get("address")).contains("Redwood City"); + assert convertToString(response.getAnswer().get("address")).contains("CA"); + assert convertToString(response.getAnswer().get("address")).contains("94063"); + assert convertToString(response.getAnswer().get("work_history")).contains("Box"); assert response.getCompletionReason().equals("done"); client.getFiles().deleteFileById(file.getId()); }