From 07cadf17af554c251e3a8bd49f0d31ab6c0b7c7c Mon Sep 17 00:00:00 2001 From: Stevan Freeborn <65925598+StevanFreeborn@users.noreply.github.com> Date: Wed, 15 Jan 2025 10:23:59 -0600 Subject: [PATCH] docs: add examples for message batch api methods --- README.md | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 156 insertions(+) diff --git a/README.md b/README.md index 293aebc..696342b 100644 --- a/README.md +++ b/README.md @@ -978,30 +978,186 @@ Anthropic provides a feature called [Message Batches](https://docs.anthropic.com #### Create a message batch +You can create a message batch that will consist of one or more requests to create messages. + ```csharp +using AnthropicClient; +using AnthropicClient.Models; + +var request = new MessageBatchRequest([ + new( + Guid.NewGuid().ToString(), + new( + model: AnthropicModels.Claude3Haiku, + messages: [new(MessageRole.User, [new TextContent("Hello!")])] + ) + ), +]); + +var response = await client.CreateMessageBatchAsync(request); + +if (response.IsFailure) +{ + Console.WriteLine("Failed to create message batch"); + Console.WriteLine("Error Type: {0}", response.Error.Error.Type); + Console.WriteLine("Error Message: {0}", response.Error.Error.Message); + return; +} + +Console.WriteLine("Message Batch Id: {0}", response.Value.Id); ``` #### Get a message batch +You can retrieve a message batch by its id. + ```csharp +using AnthropicClient; +using AnthropicClient.Models; + +var response = await client.GetMessageBatchAsync("batch-id"); + +if (response.IsFailure) +{ + Console.WriteLine("Failed to get message batch"); + Console.WriteLine("Error Type: {0}", response.Error.Error.Type); + Console.WriteLine("Error Message: {0}", response.Error.Error.Message); + return; +} + +Console.WriteLine("Message Batch Id: {0}", response.Value.Id); ``` #### Get a message batch results +You can retrieve the results of a message batch by its id. The results are returned as an `IAsyncEnumerable` collection so that they can be streamed and processed as they are received. + ```csharp +using AnthropicClient; +using AnthropicClient.Models; + +var response = await client.GetMessageBatchResultsAsync("batch-id"); + +if (response.IsFailure) +{ + Console.WriteLine("Failed to get message batch results"); + Console.WriteLine("Error Type: {0}", response.Error.Error.Type); + Console.WriteLine("Error Message: {0}", response.Error.Error.Message); + return; +} + +await foreach (var item in response.Value) +{ + Console.WriteLine("Item Custom Id: {0}", result.CustomId); + + switch (item.Result) + { + case SucceededMessageBatchResult successResult: + foreach (var content in successResult.Message.Content) + { + if (content is TextContent textContent) + { + Console.WriteLine("Message Batch Result: {0}", textContent.Text); + } + } + break; + default: + Console.WriteLine("Message Batch Result: {0}", item.Result.Type); + break; + } +} ``` #### List message batches +You can retrieve a page of message batches. + ```csharp +using AnthropicClient; +using AnthropicClient.Models; + +var response = await client.ListMessageBatchesAsync(); + +if (response.IsFailure) +{ + Console.WriteLine("Failed to list message batches"); + Console.WriteLine("Error Type: {0}", response.Error.Error.Type); + Console.WriteLine("Error Message: {0}", response.Error.Error.Message); + return; +} + +foreach (var batch in response.Value.Data) +{ + Console.WriteLine("Message Batch Id: {0}", batch.Id); +} +``` + +#### List all message batches + +You can also retrieve all the pages of message batches without having to implement pagination yourself. This is done by returning an `IAsyncEnumerable` collection that can be streamed and processed as the pages are received. + +```csharp +using AnthropicClient; +using AnthropicClient.Models; + +var pageResponses = await client.ListAllMessageBatchesAsync(); + +await foreach (var response in pageResponses) +{ + if (response.IsFailure) + { + Console.WriteLine("Failed to list message batches"); + Console.WriteLine("Error Type: {0}", response.Error.Error.Type); + Console.WriteLine("Error Message: {0}", response.Error.Error.Message); + return; + } + + foreach (var batch in response.Value.Data) + { + Console.WriteLine("Message Batch Id: {0}", batch.Id); + } +} ``` #### Cancel a message batch +You can cancel a message batch by its id. + ```csharp +using AnthropicClient; +using AnthropicClient.Models; + +var response = await client.CancelMessageBatchAsync("batch-id"); + +if (response.IsFailure) +{ + Console.WriteLine("Failed to cancel message batch"); + Console.WriteLine("Error Type: {0}", response.Error.Error.Type); + Console.WriteLine("Error Message: {0}", response.Error.Error.Message); + return; +} + +Console.WriteLine("Message Batch Id: {0}", response.Value.Id); +Console.WriteLine("Message Batch Status: {0}", response.Value.ProcessingStatus); ``` #### Delete a message batch +You can delete a message batch that is no longer being processed by its id. + ```csharp +using AnthropicClient; +using AnthropicClient.Models; + +var response = await client.DeleteMessageBatchAsync("batch-id"); + +if (response.IsFailure) +{ + Console.WriteLine("Failed to delete message batch"); + Console.WriteLine("Error Type: {0}", response.Error.Error.Type); + Console.WriteLine("Error Message: {0}", response.Error.Error.Message); + return; +} + +Console.WriteLine("Message Batch Id: {0}", response.Value.Id); ```