Skip to content

Commit

Permalink
fix: add 'mode' back to 'ai_ask' schema (box/box-openapi#435)
Browse files Browse the repository at this point in the history
  • Loading branch information
box-sdk-build committed Jul 2, 2024
1 parent 2079bc8 commit e161b0d
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 5 deletions.
2 changes: 1 addition & 1 deletion .codegen.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{ "engineHash": "f6257bd", "specHash": "0043492", "version": "0.3.1" }
{ "engineHash": "f6257bd", "specHash": "e95d6fa", "version": "0.3.1" }
4 changes: 2 additions & 2 deletions Box.Sdk.Gen.Tests.Integration/Test/Ai/AiManagerTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public AiManagerTests() {
[TestMethod]
public async System.Threading.Tasks.Task TestAskAiSingleItem() {
FileFull fileToAsk = await new CommonsManager().UploadNewFileAsync();
AiResponse response = await client.Ai.CreateAiAskAsync(requestBody: new AiAsk(mode: "single_item_qa", prompt: "which direction sun rises", items: Array.AsReadOnly(new [] {new AiAskItemsField(id: fileToAsk.Id, type: AiAskItemsTypeField.File) { Content = "Sun rises in the East" }})));
AiResponse response = await client.Ai.CreateAiAskAsync(requestBody: new AiAsk(mode: AiAskModeField.SingleItemQa, prompt: "which direction sun rises", items: Array.AsReadOnly(new [] {new AiAskItemsField(id: fileToAsk.Id, type: AiAskItemsTypeField.File) { Content = "Sun rises in the East" }})));
Assert.IsTrue(response.Answer.Contains("East"));
Assert.IsTrue(response.CompletionReason == "done");
await client.Files.DeleteFileByIdAsync(fileId: fileToAsk.Id);
Expand All @@ -26,7 +26,7 @@ public async System.Threading.Tasks.Task TestAskAiSingleItem() {
public async System.Threading.Tasks.Task TestAskAiMultipleItems() {
FileFull fileToAsk1 = await new CommonsManager().UploadNewFileAsync();
FileFull fileToAsk2 = await new CommonsManager().UploadNewFileAsync();
AiResponse response = await client.Ai.CreateAiAskAsync(requestBody: new AiAsk(mode: "multiple_item_qa", prompt: "Which direction sun rises?", items: Array.AsReadOnly(new [] {new AiAskItemsField(id: fileToAsk1.Id, type: AiAskItemsTypeField.File) { Content = "Earth goes around the sun" },new AiAskItemsField(id: fileToAsk2.Id, type: AiAskItemsTypeField.File) { Content = "Sun rises in the East in the morning" }})));
AiResponse response = await client.Ai.CreateAiAskAsync(requestBody: new AiAsk(mode: AiAskModeField.MultipleItemQa, prompt: "Which direction sun rises?", items: Array.AsReadOnly(new [] {new AiAskItemsField(id: fileToAsk1.Id, type: AiAskItemsTypeField.File) { Content = "Earth goes around the sun" },new AiAskItemsField(id: fileToAsk2.Id, type: AiAskItemsTypeField.File) { Content = "Sun rises in the East in the morning" }})));
Assert.IsTrue(response.Answer.Contains("East"));
Assert.IsTrue(response.CompletionReason == "done");
await client.Files.DeleteFileByIdAsync(fileId: fileToAsk1.Id);
Expand Down
17 changes: 16 additions & 1 deletion Box.Sdk.Gen/Schemas/AiAsk/AiAsk.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,13 @@

namespace Box.Sdk.Gen.Schemas {
public class AiAsk {
/// <summary>
/// The mode specifies if this request is for a single or multiple items. If you select `single_item_qa` the `items` array can have one element only. Selecting `multiple_item_qa` allows you to provide up to 25 items.
/// </summary>
[JsonPropertyName("mode")]
[JsonConverter(typeof(StringEnumConverter<AiAskModeField>))]
public StringEnum<AiAskModeField> Mode { get; }

/// <summary>
/// The prompt provided by the client to be answered by the LLM. The prompt's length is limited to 10000 characters.
/// </summary>
Expand All @@ -24,7 +31,15 @@ public class AiAsk {
[JsonPropertyName("items")]
public IReadOnlyList<AiAskItemsField> Items { get; }

public AiAsk(string prompt, IReadOnlyList<AiAskItemsField> items) {
public AiAsk(AiAskModeField mode, string prompt, IReadOnlyList<AiAskItemsField> items) {
Mode = mode;
Prompt = prompt;
Items = items;
}

[JsonConstructorAttribute]
internal AiAsk(StringEnum<AiAskModeField> mode, string prompt, IReadOnlyList<AiAskItemsField> items) {
Mode = mode;
Prompt = prompt;
Items = items;
}
Expand Down
10 changes: 10 additions & 0 deletions Box.Sdk.Gen/Schemas/AiAsk/AiAskModeField.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
using System.ComponentModel;

namespace Box.Sdk.Gen.Schemas {
public enum AiAskModeField {
[Description("multiple_item_qa")]
MultipleItemQa,
[Description("single_item_qa")]
SingleItemQa
}
}
2 changes: 1 addition & 1 deletion docs/Ai.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ See the endpoint docs at

<!-- sample post_ai_ask -->
```
await client.Ai.CreateAiAskAsync(requestBody: new AiAsk(mode: "multiple_item_qa", prompt: "Which direction sun rises?", items: Array.AsReadOnly(new [] {new AiAskItemsField(id: fileToAsk1.Id, type: AiAskItemsTypeField.File) { Content = "Earth goes around the sun" },new AiAskItemsField(id: fileToAsk2.Id, type: AiAskItemsTypeField.File) { Content = "Sun rises in the East in the morning" }})));
await client.Ai.CreateAiAskAsync(requestBody: new AiAsk(mode: AiAskModeField.MultipleItemQa, prompt: "Which direction sun rises?", items: Array.AsReadOnly(new [] {new AiAskItemsField(id: fileToAsk1.Id, type: AiAskItemsTypeField.File) { Content = "Earth goes around the sun" },new AiAskItemsField(id: fileToAsk2.Id, type: AiAskItemsTypeField.File) { Content = "Sun rises in the East in the morning" }})));
```

### Arguments
Expand Down

0 comments on commit e161b0d

Please sign in to comment.