Skip to content

Commit 6c01258

Browse files
committed
Add helper factory methods to Chat
Allows simpler construction of chat message like: ```csharp using static Devlooped.Extensions.AI.Chat; // ... var response = client.GetResponseAsync( [Assistant("how can I help?"), User("hello")]) ```
1 parent afffd75 commit 6c01258

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

src/Extensions/Chat.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ public void Add(string role, string message)
4141
_ => new ChatRole(role)
4242
}, message));
4343

44+
/// <summary>Creates a user message.</summary>
45+
public static ChatMessage User(string message) => new(ChatRole.User, message);
46+
47+
/// <summary>Creates an assistant message.</summary>
48+
public static ChatMessage Assistant(string message) => new(ChatRole.Assistant, message);
49+
50+
/// <summary>Creates a system message.</summary>
51+
public static ChatMessage System(string message) => new(ChatRole.System, message);
52+
4453
IEnumerator<ChatMessage> IEnumerable<ChatMessage>.GetEnumerator() => messages.GetEnumerator();
4554

4655
IEnumerator IEnumerable.GetEnumerator() => messages.GetEnumerator();

src/Tests/ChatExtensionsTests.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using Devlooped.Extensions.AI;
5+
using Microsoft.Extensions.AI;
6+
using static Devlooped.Extensions.AI.Chat;
7+
8+
namespace Devlooped;
9+
10+
public class ChatExtensionsTests
11+
{
12+
[Fact]
13+
public void FactoryMethods()
14+
{
15+
var message = User("hello");
16+
17+
Assert.Equal(ChatRole.User, message.Role);
18+
Assert.Equal("hello", message.Text);
19+
20+
message = Assistant("hello");
21+
22+
Assert.Equal(ChatRole.Assistant, message.Role);
23+
Assert.Equal("hello", message.Text);
24+
25+
// Can't use System without qualifying since it's also a namespace.
26+
message = Chat.System("hello");
27+
Assert.Equal(ChatRole.System, message.Role);
28+
Assert.Equal("hello", message.Text);
29+
}
30+
}

0 commit comments

Comments
 (0)