feat: yield events for streaming including custom message complete event

This commit is contained in:
Stevan Freeborn
2024-06-28 16:30:09 -05:00
parent a4784fd5db
commit 6ed99a6a23
12 changed files with 367 additions and 173 deletions
@@ -6,7 +6,7 @@ public class ClientTests(
) : EndToEndTest(httpClientFixture, configFixture)
{
[Fact]
public async Task CreateChatMessage_WhenCalled_ShouldReturnChatResponse()
public async Task CreateChatMessage_WhenCalled_ItShouldReturnChatResponse()
{
var request = new ChatMessageRequest(
model: AnthropicModels.Claude3Haiku,
@@ -20,7 +20,7 @@ public class ClientTests(
}
[Fact]
public async Task CreateChatMessage_WhenCalledWithStreamRequest_IteratesOverChatResponse()
public async Task CreateChatMessage_WhenCalledWithStreamRequest_ItShouldReturnEvents()
{
var request = new StreamChatMessageRequest(
model: AnthropicModels.Claude3Haiku,
@@ -38,4 +38,24 @@ public class ClientTests(
events.Should().NotBeEmpty();
}
[Fact]
public async Task CreateChatMessage_WhenCalledWithStreamRequest_ItShouldYieldAMessageCompleteEvent()
{
var request = new StreamChatMessageRequest(
model: AnthropicModels.Claude3Haiku,
messages: [new(MessageRole.User, [new TextContent("Hello!")])]
);
var response = _client.CreateChatMessageAsync(request);
await foreach (var e in response)
{
if (e.Data is MessageCompleteEventData messageCompleteData)
{
messageCompleteData.Message.Should().NotBeNull();
break;
}
}
}
}
@@ -5,5 +5,5 @@ public class EndToEndTest(
ConfigurationFixture configFixture
) : IClassFixture<HttpClientFixture>, IClassFixture<ConfigurationFixture>
{
protected readonly Client _client = new(configFixture.AnthropicApiKey, httpClientFixture.HttpClient);
protected readonly AnthropicApiClient _client = new(configFixture.AnthropicApiKey, httpClientFixture.HttpClient);
}