580 instantiations of ChatMessage
Aspire.Azure.AI.Inference.Tests (1)
ConformanceTests.cs (1)
83service.GetResponseAsync(new ChatMessage()).GetAwaiter().GetResult();
Aspire.Azure.AI.OpenAI.Tests (2)
AspireAzureOpenAIClientBuilderChatClientExtensionsTests.cs (1)
221=> Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "Hello from middleware")));
ConformanceTests.cs (1)
107service.GetResponseAsync(new ChatMessage()).GetAwaiter().GetResult();
Aspire.OpenAI.Tests (2)
AspireOpenAIClientBuilderChatClientExtensionsTests.cs (1)
269=> Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "Hello from middleware")));
ConformanceTests.cs (1)
87service.GetResponseAsync(new ChatMessage()).GetAwaiter().GetResult();
Microsoft.Extensions.AI (9)
ChatCompletion\ChatClientStructuredOutputExtensions.cs (3)
61GetResponseAsync<T>(chatClient, new ChatMessage(ChatRole.User, chatMessage), options, useJsonSchemaResponseFormat, cancellationToken); 101GetResponseAsync<T>(chatClient, new ChatMessage(ChatRole.User, chatMessage), serializerOptions, options, useJsonSchemaResponseFormat, cancellationToken); 190promptAugmentation = new ChatMessage(ChatRole.User, $$"""
ChatCompletion\FunctionInvokingChatClient.cs (3)
1072return [new(ChatRole.Tool, contents)]; 1220new ChatMessage(ChatRole.Tool, rejectedFunctionCallResults) { MessageId = toolMessageId } : 1445ChatMessage functionCallMessage = resultWithRequestMessage.RequestMessage?.Clone() ?? new() { Role = ChatRole.Assistant };
ChatReduction\SummarizingChatReducer.cs (3)
151yield return new ChatMessage(ChatRole.Assistant, summary); 164yield return new ChatMessage(ChatRole.Assistant, summary); 172yield return new ChatMessage(ChatRole.System, summarizationPrompt);
Microsoft.Extensions.AI.Abstractions (5)
ChatCompletion\ChatClientExtensions.cs (2)
100return client.GetResponseAsync(new ChatMessage(ChatRole.User, chatMessage), options, cancellationToken); 140return client.GetStreamingResponseAsync(new ChatMessage(ChatRole.User, chatMessage), options, cancellationToken);
ChatCompletion\ChatMessage.cs (1)
53new()
ChatCompletion\ChatResponseExtensions.cs (2)
89list.Add(new(update.Role ?? ChatRole.Assistant, contentsList) 328message = new(ChatRole.Assistant, []);
Microsoft.Extensions.AI.Abstractions.Tests (20)
ChatCompletion\ChatMessageTests.cs (15)
18ChatMessage message = new(); 37ChatMessage message = new(ChatRole.Assistant, text); 65message = new(); 69message = new(ChatRole.User, (string?)null); 73message = new(ChatRole.User, (IList<AIContent>?)null); 77message = new ChatMessage(ChatRole.User, Array.Empty<AIContent>()); 94ChatMessage message = new(ChatRole.System, content); 129ChatMessage message = new() 145ChatMessage message = new(ChatRole.User, 171Assert.IsType<List<AIContent>>(new ChatMessage().Contents); 177ChatMessage message = new(); 197ChatMessage message = new(); 218ChatMessage message = new(); 239ChatMessage message = new(); 277var chatMessage = new ChatMessage(ChatRole.User, contents: items)
ChatCompletion\ChatResponseTests.cs (5)
87ChatResponse original = new(new ChatMessage(ChatRole.Assistant, "the message")) 122ChatResponse response = new(new ChatMessage(ChatRole.Assistant, $"This is a test.{Environment.NewLine}It's multiple lines.")); 130ChatResponse response = new(new ChatMessage(new ChatRole("customRole"), "Text") { MessageId = "someMessage" }) 162new ChatMessage(new ChatRole("customRole"), "Text") 167new ChatMessage(new ChatRole("secondRole"), "Another message")
Microsoft.Extensions.AI.AzureAIInference (1)
AzureAIInferenceChatClient.cs (1)
96ChatMessage message = new(ToChatRole(response.Role), response.Content)
Microsoft.Extensions.AI.AzureAIInference.Tests (13)
AzureAIInferenceChatClientTests.cs (13)
145[new ChatMessage(ChatRole.User, "hello".Select(c => (AIContent)new TextContent(c.ToString())).ToList())] : 146[new ChatMessage(ChatRole.User, "hello")]; 218[new ChatMessage(ChatRole.User, "hello".Select(c => (AIContent)new TextContent(c.ToString())).ToList())] : 219[new ChatMessage(ChatRole.User, "hello")]; 986new(ChatRole.System, "You are a really nice friend."), 987new(ChatRole.User, "hello!"), 988new(ChatRole.Assistant, "hi, how are you?"), 989new(ChatRole.User, "i'm good. how are you?"), 990new(ChatRole.Assistant, [new FunctionCallContent("abcd123", "GetMood")]), 991new(ChatRole.Tool, [new FunctionResultContent("abcd123", "happy")]), 1067Assert.NotNull(await client.GetResponseAsync([new(ChatRole.User, 1132new(ChatRole.Assistant, (string?)null), 1133new(ChatRole.User, "hello!"),
Microsoft.Extensions.AI.Evaluation (3)
EvaluatorExtensions.cs (3)
51modelResponse: new ChatMessage(ChatRole.Assistant, modelResponse), 95userRequest: new ChatMessage(ChatRole.User, userRequest), 96modelResponse: new ChatMessage(ChatRole.Assistant, modelResponse),
Microsoft.Extensions.AI.Evaluation.Integration.Tests (9)
SafetyEvaluatorTests.cs (6)
336new ChatMessage 374new ChatMessage 408new ChatMessage 421new ChatMessage 457new ChatMessage 470new ChatMessage
test\Libraries\Microsoft.Extensions.AI.Evaluation.Tests\ChatMessageUtilities.cs (3)
9=> new ChatMessage(ChatRole.System, message); 12=> new ChatMessage(ChatRole.User, message); 15=> new ChatMessage(ChatRole.Assistant, message);
Microsoft.Extensions.AI.Evaluation.NLP.Tests (17)
BLEUEvaluatorTests.cs (6)
20var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "The quick brown fox jumps over the lazy dog.")); 36var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Completely unrelated sentence.")); 51var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Some text.")); 71var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, hypothesis)); 91var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, hypothesis)); 104var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, ""));
F1EvaluatorTests.cs (5)
20var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "The quick brown fox jumps over the lazy dog.")); 36var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Completely unrelated sentence.")); 51var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Some text.")); 71var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, hypothesis)); 84var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, ""));
GLEUEvaluatorTests.cs (6)
20var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "The quick brown fox jumps over the lazy dog.")); 36var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Completely unrelated sentence.")); 51var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Some text.")); 71var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, hypothesis)); 91var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, hypothesis)); 104var response = new ChatResponse(new ChatMessage(ChatRole.Assistant, ""));
Microsoft.Extensions.AI.Evaluation.Quality (22)
CoherenceEvaluator.cs (2)
119List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 199evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
CompletenessEvaluator.cs (2)
127List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 191evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
EquivalenceEvaluator.cs (2)
124List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 176evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
FluencyEvaluator.cs (2)
111List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 179evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
GroundednessEvaluator.cs (2)
129List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 301evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
IntentResolutionEvaluator.cs (2)
173List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 318evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
RelevanceEvaluator.cs (2)
124List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 205evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
RelevanceTruthAndCompletenessEvaluator.cs (1)
268return [new ChatMessage(ChatRole.User, evaluationPrompt)];
RetrievalEvaluator.cs (2)
143List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 230evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
TaskAdherenceEvaluator.cs (1)
266List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, systemPrompt)];
ToolCallAccuracyEvaluator.cs (2)
172List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)]; 223evaluationInstructions.Add(new ChatMessage(ChatRole.User, evaluationPrompt));
Utilities\JsonOutputFixer.cs (2)
67new ChatMessage(ChatRole.System, SystemPrompt), 68new ChatMessage(ChatRole.User, fixPrompt)
Microsoft.Extensions.AI.Evaluation.Reporting (3)
ScenarioRunExtensions.cs (3)
36modelResponse: new ChatMessage(ChatRole.Assistant, modelResponse), 65userRequest: new ChatMessage(ChatRole.User, userRequest), 66modelResponse: new ChatMessage(ChatRole.Assistant, modelResponse),
Microsoft.Extensions.AI.Evaluation.Reporting.Tests (7)
ResultStoreTester.cs (2)
34messages: [new ChatMessage(ChatRole.User, "User prompt")], 35modelResponse: new ChatResponse(new ChatMessage(ChatRole.Assistant, "LLM response")),
ScenarioRunResultTests.cs (4)
87messages: [new ChatMessage(ChatRole.User, "prompt")], 88modelResponse: new ChatResponse(new ChatMessage(ChatRole.Assistant, "response")), 179messages: [new ChatMessage(ChatRole.User, "prompt")], 180modelResponse: new ChatResponse(new ChatMessage(ChatRole.Assistant, "response")),
SerializationChainingTests.cs (1)
29new ChatMessage
Microsoft.Extensions.AI.Evaluation.Safety (2)
ContentSafetyChatClient.cs (1)
72return new ChatResponse(new ChatMessage(ChatRole.Assistant, annotationResult))
ContentSafetyEvaluator.cs (1)
142var payloadMessage = new ChatMessage(ChatRole.User, payload);
Microsoft.Extensions.AI.Evaluation.Tests (3)
ChatMessageUtilities.cs (3)
9=> new ChatMessage(ChatRole.System, message); 12=> new ChatMessage(ChatRole.User, message); 15=> new ChatMessage(ChatRole.Assistant, message);
Microsoft.Extensions.AI.Integration.Tests (67)
ChatClientIntegrationTests.cs (59)
69new(ChatRole.User, "Pick a city, any city"), 70new(ChatRole.Assistant, "Seattle"), 71new(ChatRole.User, "And another one"), 72new(ChatRole.Assistant, "Jakarta"), 73new(ChatRole.User, "What continent are they each in?"), 87new(ChatRole.System, []), 88new(ChatRole.User, []), 89new(ChatRole.Assistant, []), 90new(ChatRole.User, "What is 1 + 2? Reply with a single number."), 103new(ChatRole.User, "Quote, word for word, Neil Armstrong's famous words.") 161List<ChatMessage> history = [new(ChatRole.User, "Explain in 100 words how AI works")]; 184new(ChatRole.User, 202new(ChatRole.User, 232new(ChatRole.User, "What is the current secret number?") 299new(ChatRole.User, "What is the secret number for id foo?") 331new(ChatRole.User, "What is the secret number for John aged 19?") 361new(ChatRole.User, "Can you add bacon, lettuce, and tomatoes to Peter's shopping cart?") 640var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 656var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 681var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 733var message = new ChatMessage(ChatRole.User, "What is the temperature?"); 772var message = new ChatMessage(ChatRole.User, "What is the temperature?"); 814var message = new ChatMessage(ChatRole.User, "What is the temperature?"); 842await chatClient.GetResponseAsync([new(ChatRole.User, "What's the biggest animal?")]); 941var response = await chatClient.GetResponseAsync([new(ChatRole.User, "What's the biggest animal?")]); 1137new(ChatRole.User, "My name is Alice and I love hiking in the mountains."), 1138new(ChatRole.Assistant, "Nice to meet you, Alice! Hiking in the mountains sounds wonderful. Do you have a favorite trail?"), 1139new(ChatRole.User, "Yes, I love the Pacific Crest Trail. I hiked a section last summer."), 1140new(ChatRole.Assistant, "The Pacific Crest Trail is amazing! Which section did you hike?"), 1141new(ChatRole.User, "I hiked the section through the Sierra Nevada. It was challenging but beautiful."), 1142new(ChatRole.Assistant, "The Sierra Nevada section is known for its stunning views. How long did it take you?"), 1143new(ChatRole.User, "What's my name and what activity do I enjoy?") 1178new(ChatRole.System, "You are a pirate. Always respond in pirate speak."), 1179new(ChatRole.User, "Tell me about the weather"), 1180new(ChatRole.Assistant, "Ahoy matey! The weather be fine today, with clear skies on the horizon!"), 1181new(ChatRole.User, "What about tomorrow?"), 1182new(ChatRole.Assistant, "Arr, tomorrow be lookin' a bit cloudy, might be some rain blowin' in from the east!"), 1183new(ChatRole.User, "Should I bring an umbrella?"), 1184new(ChatRole.Assistant, "Aye, ye best be bringin' yer umbrella, unless ye want to be soaked like a barnacle!"), 1185new(ChatRole.User, "What's 2 + 2?") 1239new(ChatRole.User, "What's the weather in Seattle?"), 1240new(ChatRole.Assistant, "Let me check the weather in Seattle for you."), 1241new(ChatRole.User, "And what about Miami?"), 1242new(ChatRole.Assistant, "I'll check Miami's weather as well."), 1243new(ChatRole.User, "Which city had better weather?") 1273new(ChatRole.User, "I'm Bob and I work as a software engineer at a startup."), 1274new(ChatRole.Assistant, "Nice to meet you, Bob! Working at a startup must be exciting. What kind of software do you develop?"), 1275new(ChatRole.User, "We build AI-powered tools for education."), 1276new(ChatRole.Assistant, "That sounds impactful! AI in education has so much potential."), 1277new(ChatRole.User, "Yes, we focus on personalized learning experiences."), 1278new(ChatRole.Assistant, "Personalized learning is the future of education!"), 1279new(ChatRole.User, "Was anyone named in the conversation? Provide their name and job.") 1319new(ChatRole.User, "I have 3 cats and 2 dogs."), 1320new(ChatRole.Assistant, "That's 5 pets total! You must have a lively household."), 1321new(ChatRole.User, "Yes, and I spend about $200 per month on pet food."), 1322new(ChatRole.Assistant, "That's a significant expense, but I'm sure they're worth it!"), 1323new(ChatRole.User, "They eat 10 cans of food per week."), 1324new(ChatRole.Assistant, "That's quite a bit of food for your furry friends!"), 1325new(ChatRole.User, "How many pets do I have in total?")
PromptBasedFunctionCallingChatClient.cs (3)
72chatMessagesList[messageIndex] = new ChatMessage(ChatRole.User, $"<tool_call_result>{toolCallResultJson}</tool_call_result>"); 77chatMessagesList[messageIndex] = new ChatMessage(ChatRole.Assistant, $"<tool_call_json>{toolCallJson}</tool_call_json>"); 186return new ChatMessage(ChatRole.System, prompt);
ReducingChatClientTests.cs (5)
46new ChatMessage(ChatRole.User, "Hi there! Can you tell me about golden retrievers?"), 47new ChatMessage(ChatRole.Assistant, "Of course! Golden retrievers are known for their friendly and tolerant attitudes. They're great family pets and are very intelligent and easy to train."), 48new ChatMessage(ChatRole.User, "What kind of exercise do they need?"), 49new ChatMessage(ChatRole.Assistant, "Golden retrievers are quite active and need regular exercise. Daily walks, playtime, and activities like fetching or swimming are great for them."), 50new ChatMessage(ChatRole.User, "Are they good with kids?"),
Microsoft.Extensions.AI.OpenAI (4)
MicrosoftExtensionsAIChatExtensions.cs (1)
169Microsoft.Extensions.AI.ChatMessage resultMessage = new()
OpenAIChatClient.cs (1)
438ChatMessage returnMessage = new()
OpenAIResponsesChatClient.cs (2)
135message ??= new(ChatRole.Assistant, (string?)null); 143message = new ChatMessage();
Microsoft.Extensions.AI.OpenAI.Tests (51)
OpenAIChatClientTests.cs (17)
786new(ChatRole.System, "You are a really nice friend."), 787new(ChatRole.User, "hello!"), 788new(ChatRole.Assistant, "hi, how are you?"), 789new(ChatRole.User, "i'm good. how are you?"), 893new(ChatRole.System, [new TextContent("You are a really nice friend."), new TextContent("Really nice.")]), 894new(ChatRole.User, "hello!"), 989new(ChatRole.System, "You are a really nice friend."), 990new(ChatRole.User, "hello!"), 991new(ChatRole.Assistant, (string?)null), 992new(ChatRole.User, "i'm good. how are you?"), 1431new(ChatRole.System, "You are a really nice friend."), 1432new(ChatRole.User, "hello!"), 1433new(ChatRole.Assistant, 1439new (ChatRole.Tool, 1444new(ChatRole.Assistant, "You are great."), 1445new(ChatRole.User, "Thanks!"), 1551new(ChatRole.User,
OpenAIConversionTests.cs (32)
90new(ChatRole.System, "You are a helpful assistant."), 91new(ChatRole.User, "Hello"), 92new(ChatRole.Assistant, 101new(ChatRole.Tool, [new FunctionResultContent("callid123", "theresult")]), 102new(ChatRole.Assistant, "The answer is 42."), 156new(ChatRole.System, "You are a helpful assistant."), 157new(ChatRole.User, "Hello"), 158new(ChatRole.Assistant, 167new(ChatRole.Tool, [new FunctionResultContent("callid123", "theresult")]), 168new(ChatRole.Assistant, "The answer is 42."), 335new(ChatRole.Assistant, "Hi there!") 361new(ChatRole.Assistant, 397var chatResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, 436var chatResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Hello")); 466var chatResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, 511var chatResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Test")) 534var chatResponse = new ChatResponse(new ChatMessage(inputRole, "Test")); 873var chatResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Test")) 886var chatResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Hello, world!")) 911var chatResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Test message")) 961new(ChatRole.Assistant, "First message"), 962new(ChatRole.Assistant, "Second message"), 963new(ChatRole.Assistant, 998new(ChatRole.Assistant, 1003new(ChatRole.Tool, [new FunctionResultContent("call-456", "The weather is sunny")]), 1004new(ChatRole.Assistant, "The weather in Seattle is sunny!") 1033new(ChatRole.System, "You are a helpful assistant."), 1034new(ChatRole.User, "Hello, how are you?"), 1035new(ChatRole.Assistant, "I'm doing well, thank you for asking!") 1060var chatResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Default test")); 1078var chatResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Model test")); 1093var chatResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "Model priority test"))
OpenAIResponseClientIntegrationTests.cs (2)
134List<ChatMessage> input = [new ChatMessage(ChatRole.User, "Tell me the path to the README.md file for Microsoft.Extensions.AI.Abstractions in the dotnet/extensions repository")]; 153var approvalResponse = new ChatMessage(ChatRole.Tool,
Microsoft.Extensions.AI.Tests (327)
ChatCompletion\ChatClientStructuredOutputExtensionsTests.cs (15)
75var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 136var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 198new ChatMessage(ChatRole.Assistant, 203new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callid123", "result")]), 239var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "This is not valid JSON")); 245var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 258var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "null")); 264var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 277var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, [new UriContent("https://example.com", "image/*")])); 283var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 311var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 339var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 364var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, JsonSerializer.Serialize(expectedResult, jso))); 401var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 429var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") };
ChatCompletion\DistributedCachingChatClientTest.cs (12)
48new ChatMessage(new ChatRole("fakeRole"), "This is some content") 140return new ChatResponse(new ChatMessage(ChatRole.Assistant, "Hello")); 184var input = new ChatMessage(ChatRole.User, "abc"); 214return new ChatResponse(new ChatMessage(ChatRole.Assistant, "A good result")); 223var input = new ChatMessage(ChatRole.User, "abc"); 494var input = new ChatMessage(ChatRole.User, "abc"); 532var input = new ChatMessage(ChatRole.User, "abc"); 559return new(new ChatMessage(ChatRole.Assistant, options!.AdditionalProperties!["someKey"]!.ToString())); 610return new(new ChatMessage(ChatRole.Assistant, innerCallCount.ToString())); 656return new(new ChatMessage(ChatRole.Assistant, options!.AdditionalProperties!["someKey"]!.ToString())); 685new ChatMessage(new ChatRole("fakeRole"), 744new ChatMessage(ChatRole.Assistant, [new TextContent("Hey")])));
ChatCompletion\FunctionInvokingChatClientApprovalsTests.cs (103)
36new ChatMessage(ChatRole.User, "hello"), 41new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 46new ChatMessage(ChatRole.Assistant, 72new ChatMessage(ChatRole.User, "hello"), 77new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 82new ChatMessage(ChatRole.Assistant, 116new ChatMessage(ChatRole.User, "hello"), 121new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 126new ChatMessage(ChatRole.Assistant, 152new ChatMessage(ChatRole.User, "hello"), 153new ChatMessage(ChatRole.Assistant, 158new ChatMessage(ChatRole.User, 167new ChatMessage(ChatRole.User, "hello"), 168new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 169new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 174new ChatMessage(ChatRole.Assistant, "world"), 179new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 180new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 181new ChatMessage(ChatRole.Assistant, "world"), 203new ChatMessage(ChatRole.User, "hello"), 204new ChatMessage(ChatRole.Assistant, 208new ChatMessage(ChatRole.Assistant, 212new ChatMessage(ChatRole.User, 216new ChatMessage(ChatRole.User, 224new ChatMessage(ChatRole.User, "hello"), 225new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]) { MessageId = "resp1" }, 226new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]) { MessageId = "resp2" }, 227new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 232new ChatMessage(ChatRole.Assistant, "world"), 237new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]) { MessageId = "resp1" }, 238new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]) { MessageId = "resp2" }, 239new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 240new ChatMessage(ChatRole.Assistant, "world"), 262new ChatMessage(ChatRole.User, "hello"), 263new ChatMessage(ChatRole.Assistant, 268new ChatMessage(ChatRole.User, 277new ChatMessage(ChatRole.User, "hello"), 278new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 279new ChatMessage(ChatRole.Tool, 288new ChatMessage(ChatRole.Assistant, "world"), 293new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 294new ChatMessage(ChatRole.Tool, 299new ChatMessage(ChatRole.Assistant, "world"), 321new ChatMessage(ChatRole.User, "hello"), 322new ChatMessage(ChatRole.Assistant, 327new ChatMessage(ChatRole.User, 336new ChatMessage(ChatRole.User, "hello"), 337new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 338new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Error: Tool call invocation was rejected by user.")]), 339new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 2: 42")]), 344new ChatMessage(ChatRole.Assistant, "world"), 349new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 350new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Error: Tool call invocation was rejected by user.")]), 351new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 2: 42")]), 352new ChatMessage(ChatRole.Assistant, "world"), 357new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 358new ChatMessage(ChatRole.Tool, 363new ChatMessage(ChatRole.Assistant, "world"), 385new ChatMessage(ChatRole.User, "hello"), 386new ChatMessage(ChatRole.Assistant, 391new ChatMessage(ChatRole.User, 400new ChatMessage(ChatRole.User, "hello"), 401new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 402new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 407new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 3 } })]), 412new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 413new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 414new ChatMessage(ChatRole.Assistant, 439new ChatMessage(ChatRole.User, "hello"), 440new ChatMessage(ChatRole.Assistant, 445new ChatMessage(ChatRole.User, 450new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 451new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 452new ChatMessage(ChatRole.Assistant, 456new ChatMessage(ChatRole.User, 464new ChatMessage(ChatRole.User, "hello"), 465new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 466new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 467new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "Func1")]), 468new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Result 1")]), 473new ChatMessage(ChatRole.Assistant, "World"), 478new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "Func1")]), 479new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Result 1")]), 480new ChatMessage(ChatRole.Assistant, "World"), 502new ChatMessage(ChatRole.User, "hello"), 503new ChatMessage(ChatRole.Assistant, 532new ChatMessage(ChatRole.User, "hello"), 533new ChatMessage(ChatRole.User, 542new ChatMessage(ChatRole.User, "hello"), 543new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 544new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 549new ChatMessage(ChatRole.Assistant, "world"), 554new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 555new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 556new ChatMessage(ChatRole.Assistant, "world"), 579new ChatMessage(ChatRole.User, 588new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 593new ChatMessage(ChatRole.Assistant, "world"), 598new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1"), new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 599new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1"), new FunctionResultContent("callId2", result: "Result 2: 42")]), 600new ChatMessage(ChatRole.Assistant, "world"), 628List<ChatMessage> input = [new ChatMessage(ChatRole.User, "hello")]; 701List<ChatMessage> input = [new ChatMessage(ChatRole.User, "hello")];
ChatCompletion\FunctionInvokingChatClientTests.cs (116)
92new ChatMessage(ChatRole.User, "hello"), 93new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 94new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1")]), 95new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 96new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 2: 42")]), 97new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } })]), 98new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Success: Function completed.")]), 99new ChatMessage(ChatRole.Assistant, "world"), 126new ChatMessage(ChatRole.User, "hello"), 127new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 128new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1")]), 129new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 130new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 2: 42")]), 131new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } })]), 132new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Success: Function completed.")]), 133new ChatMessage(ChatRole.Assistant, "world"), 159new ChatMessage(ChatRole.User, "hello"), 160new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 161new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1")]), 162new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 163new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 2: 42")]), 164new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } })]), 165new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Success: Function completed.")]), 166new ChatMessage(ChatRole.Assistant, "world"), 190new ChatMessage(ChatRole.User, "hello"), 191new ChatMessage(ChatRole.Assistant, 197new ChatMessage(ChatRole.Tool, 203new ChatMessage(ChatRole.Assistant, 208new ChatMessage(ChatRole.Tool, 213new ChatMessage(ChatRole.Assistant, "world"), 250new ChatMessage(ChatRole.User, "hello"), 251new ChatMessage(ChatRole.Assistant, 256new ChatMessage(ChatRole.Tool, 261new ChatMessage(ChatRole.Assistant, "done"), 294new ChatMessage(ChatRole.User, "hello"), 295new ChatMessage(ChatRole.Assistant, 300new ChatMessage(ChatRole.Tool, 305new ChatMessage(ChatRole.Assistant, "done"), 328new ChatMessage(ChatRole.User, "hello"), 329new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 330new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1 from delegate")]), 331new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 332new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 2: 42 from delegate")]), 333new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } })]), 334new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Success: Function completed.")]), 335new ChatMessage(ChatRole.Assistant, "world"), 377new ChatMessage(ChatRole.User, "hello"), 378new ChatMessage(ChatRole.Assistant, [new FunctionCallContent($"callId0", "VoidReturn")]), 385plan.Add(new ChatMessage(ChatRole.Tool, [new FunctionResultContent($"callId{i}", result: "Success: Function completed.")])); 386plan.Add(new ChatMessage(ChatRole.Assistant, [new FunctionCallContent($"callId{(i + 1)}", "VoidReturn")])); 426new ChatMessage(ChatRole.User, "hello"), 504new ChatMessage(ChatRole.User, "hello"), 521var assistantMessage = new ChatMessage(ChatRole.Assistant, []); 522var toolMessage = new ChatMessage(ChatRole.Tool, []); 551new ChatMessage(ChatRole.User, "hello"), 552new ChatMessage(ChatRole.Assistant, [new TextContent("extra"), new FunctionCallContent("callId1", "Func1"), new TextContent("stuff")]), 553new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 1")]), 554new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func2", arguments: new Dictionary<string, object?> { { "i", 42 } })]), 555new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 2: 42")]), 556new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "VoidReturn", arguments: new Dictionary<string, object?> { { "i", 43 } }), new TextContent("more")]), 557new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Success: Function completed.")]), 558new ChatMessage(ChatRole.Assistant, "world"), 588new ChatMessage(ChatRole.User, "hello"), 589new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1")]), 590new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: detailedErrors ? "Error: Function failed. Exception: Oh no!" : "Error: Function failed.")]), 591new ChatMessage(ChatRole.Assistant, "world"), 610new ChatMessage(ChatRole.User, "hello"), 611new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["arg1"] = "value1" })]), 612new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1")]), 613new ChatMessage(ChatRole.Assistant, "world"), 666new ChatMessage(ChatRole.User, "hello"), 667new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["arg1"] = "value1" })]), 668new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1")]), 669new ChatMessage(ChatRole.Assistant, "world"), 727new(ChatRole.User, "Hello"), 785new(ChatRole.User, "Hello"), 795new(ChatRole.Assistant, [new FunctionCallContent($"callId{chatContents.Count()}", "Func1")]) : 796new(ChatRole.Assistant, "The answer is 42."); 843new ChatMessage(ChatRole.User, "hello"), 844new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["i"] = 41 })]), 845new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 41")]), 846new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId2", "Func1", new Dictionary<string, object?> { ["i"] = 42 })]), 847new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId2", result: "Result 42")]), 854new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId3", "Func1", new Dictionary<string, object?> { ["i"] = 43 })]), 855new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId3", result: "Result 43")]), 856new ChatMessage(ChatRole.Assistant, "world"), 919var message = new ChatMessage(ChatRole.Assistant, resultContents); 927List<ChatMessage> messages = [new(ChatRole.User, "hello")]; 962return new ChatResponse(new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId-abc", "Func1")])) 970return new ChatResponse(new ChatMessage(ChatRole.Assistant, "done!")); 999new ChatMessage(ChatRole.User, "hello"), 1000new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("callId1", "Func1", new Dictionary<string, object?> { ["arg1"] = "value1" })]), 1001new ChatMessage(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Result 1")]), 1002new ChatMessage(ChatRole.Assistant, "world"), 1028new ChatMessage(ChatRole.User, "hello"), 1029new ChatMessage(ChatRole.Assistant, [ 1033new ChatMessage(ChatRole.Tool, 1038new ChatMessage(ChatRole.Assistant, "world"), 1081new(ChatRole.User, "hello"), 1082new(ChatRole.Assistant, [ 1086new(ChatRole.Tool, [ 1090new(ChatRole.Assistant, "done"), 1100new(ChatRole.User, "hello"), 1101new(ChatRole.Assistant, [ 1105new(ChatRole.Tool, [ 1109new(ChatRole.Assistant, "done"), 1129new(ChatRole.User, "hello"), 1130new(ChatRole.Assistant, [new FunctionCallContent("callId1", "DefOnly")]), 1131new(ChatRole.Tool, [new FunctionResultContent("callId1", result: "Should not be produced")]), 1132new(ChatRole.Assistant, "world"), 1158new(ChatRole.User, "hi"), 1159new(ChatRole.Assistant, [ 1163new(ChatRole.Tool, [new FunctionResultContent("callId1", result: "OK"), new FunctionResultContent("callId2", result: "nope")]), 1164new(ChatRole.Assistant, "done"), 1217var message = new ChatMessage(ChatRole.Assistant, [.. plan[contents.Count()].Contents]) 1281ChatMessage message = new(ChatRole.Assistant, [.. plan[contents.Count()].Contents])
ChatCompletion\LoggingChatClientTests.cs (3)
59return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "blue whale"))); 69[new(ChatRole.User, "What's the biggest animal?")], 118[new(ChatRole.User, "What's the biggest animal?")],
ChatCompletion\OpenTelemetryChatClientTests.cs (7)
38return new ChatResponse(new ChatMessage(ChatRole.Assistant, "The blue whale, I think.")) 107new(ChatRole.System, "You are a close friend."), 108new(ChatRole.User, "Hey!"), 109new(ChatRole.Assistant, [new FunctionCallContent("12345", "GetPersonName")]), 110new(ChatRole.Tool, [new FunctionResultContent("12345", "John")]), 111new(ChatRole.Assistant, "Hey John, what's up?"), 112new(ChatRole.User, "What's the biggest animal?")
ChatCompletion\ReducingChatClientTests.cs (9)
36new(ChatRole.System, "You are a helpful assistant"), 37new(ChatRole.User, "Hello"), 38new(ChatRole.Assistant, "Hi there!"), 39new(ChatRole.User, "What's the weather?") 44new(ChatRole.System, "You are a helpful assistant"), 45new(ChatRole.User, "What's the weather?") 49var expectedResponse = new ChatResponse(new ChatMessage(ChatRole.Assistant, "It's sunny!")); 97var reducedMessages = new List<ChatMessage> { new(ChatRole.User, "Reduced message") }; 118await client.GetResponseAsync(new List<ChatMessage> { new(ChatRole.User, "Original message") });
ChatCompletion\UseDelegateChatClientTests.cs (3)
42return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "hello"))); 91return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "hello"))); 184return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "non-streaming hello")));
ChatReduction\MessageCountingChatReducerTests.cs (28)
53new ChatMessage(ChatRole.System, "You are a helpful assistant."), 54new ChatMessage(ChatRole.User, "Hello"), 55new ChatMessage(ChatRole.Assistant, "Hi there!"), 56new ChatMessage(ChatRole.User, "How are you?"), 57new ChatMessage(ChatRole.Assistant, "I'm doing well, thanks!"), 88new ChatMessage(ChatRole.System, "First system message"), 89new ChatMessage(ChatRole.User, "Hello"), 90new ChatMessage(ChatRole.System, "Second system message"), 91new ChatMessage(ChatRole.Assistant, "Hi"), 92new ChatMessage(ChatRole.User, "How are you?"), 93new ChatMessage(ChatRole.Assistant, "I'm fine!"), 127new ChatMessage(ChatRole.User, "What's the weather?"), 128new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("call1", "get_weather", new Dictionary<string, object?> { ["location"] = "Seattle" })]), 129new ChatMessage(ChatRole.Tool, [new FunctionResultContent("call1", "Sunny, 72°F")]), 130new ChatMessage(ChatRole.Assistant, "The weather in Seattle is sunny and 72°F."), 131new ChatMessage(ChatRole.User, "Thanks!"), 132new ChatMessage(ChatRole.Assistant, "You're welcome!"), 167messages.Add(new ChatMessage(i % 2 == 0 ? ChatRole.User : ChatRole.Assistant, $"Message {i}")); 202new ChatMessage(ChatRole.System, "System prompt"), 223new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("call1", "func", null)]), 224new ChatMessage(ChatRole.Tool, [new FunctionResultContent("call1", "result")]), 225new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("call2", "func", null)]), 226new ChatMessage(ChatRole.Tool, [new FunctionResultContent("call2", "result")]), 241new ChatMessage(ChatRole.System, "System"), 242new ChatMessage(ChatRole.User, "First"), 243new ChatMessage(ChatRole.Assistant, "Second"), 244new ChatMessage(ChatRole.User, "Third"), 245new ChatMessage(ChatRole.Assistant, "Fourth"),
ChatReduction\SummarizingChatReducerTests.cs (31)
69new ChatMessage(ChatRole.System, "You are a helpful assistant."), 70new ChatMessage(ChatRole.User, "Hello"), 71new ChatMessage(ChatRole.Assistant, "Hi there!"), 72new ChatMessage(ChatRole.User, "How are you?"), 76Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "Summary of conversation"))); 94new ChatMessage(ChatRole.User, "What's the weather?"), 95new ChatMessage(ChatRole.Assistant, [new FunctionCallContent("call1", "get_weather", new Dictionary<string, object?> { ["location"] = "Seattle" })]), 96new ChatMessage(ChatRole.Tool, [new FunctionResultContent("call1", "Sunny, 72°F")]), 97new ChatMessage(ChatRole.Assistant, "The weather in Seattle is sunny and 72°F."), 98new ChatMessage(ChatRole.User, "Thanks!"), 124messages.Add(new ChatMessage(i % 2 == 0 ? ChatRole.User : ChatRole.Assistant, $"Message {i}")); 131return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "Summary"))); 158new ChatMessage(ChatRole.User, "Message 1"), 159new ChatMessage(ChatRole.Assistant, "Response 1"), 160new ChatMessage(ChatRole.User, "Message 2"), 169return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "Summary"))); 184new ChatMessage(ChatRole.System, "First system message"), 185new ChatMessage(ChatRole.User, "Hello"), 186new ChatMessage(ChatRole.System, "Second system message"), 187new ChatMessage(ChatRole.Assistant, "Hi"), 188new ChatMessage(ChatRole.User, "How are you?"), 192Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, "Summary"))); 212new ChatMessage(ChatRole.User, "Hi there! Can you tell me about golden retrievers?"), 213new ChatMessage(ChatRole.Assistant, "Of course! Golden retrievers are known for their friendly and tolerant attitudes. They're great family pets and are very intelligent and easy to train."), 214new ChatMessage(ChatRole.User, "What kind of exercise do they need?"), 215new ChatMessage(ChatRole.Assistant, "Golden retrievers are quite active and need regular exercise. Daily walks, playtime, and activities like fetching or swimming are great for them."), 216new ChatMessage(ChatRole.User, "Are they good with kids?"), 232return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, Summary))); 243messages.Add(new ChatMessage(ChatRole.Assistant, "Golden retrievers get along well with kids! They're able to be playful and energetic while remaining gentle.")); 244messages.Add(new ChatMessage(ChatRole.User, "Do they make good lap dogs?")); 259return Task.FromResult(new ChatResponse(new ChatMessage(ChatRole.Assistant, Summary)));
Microsoft.ML.GenAI.Core (1)
CausalLMPipelineChatClient.cs (1)
47var chatMessage = new ChatMessage(ChatRole.Assistant, output);
Microsoft.ML.GenAI.Core.Tests (3)
CausalLMDatasetTest.cs (3)
86new ChatMessage(ChatRole.System, "You are a helpful contoso assistant"), 87new ChatMessage(ChatRole.User, "What is contoso"), 93new ChatMessage(ChatRole.Assistant, "Contoso is a company"),
Microsoft.ML.GenAI.LLaMA.Tests (3)
LLaMA3_1Tests.cs (3)
134new ChatMessage(ChatRole.System, "You are a helpful AI assistant."), 135new ChatMessage(ChatRole.User, "Hello?"), 136new ChatMessage(ChatRole.Assistant, "World!"),
Microsoft.ML.GenAI.Samples (5)
Llama\SFT_Llama_3_2_1B.cs (3)
107new ChatMessage(ChatRole.System, "You are a helpful contoso assistant"), 108new ChatMessage(ChatRole.User, data.input), 111var assistantMessage = new ChatMessage(ChatRole.Assistant, data.output);
MEAI\Llama3_1.cs (1)
47var chatMessage = new ChatMessage(ChatRole.User, task);
MEAI\Phi3.cs (1)
37var chatMessage = new ChatMessage(ChatRole.User, task);
720 references to ChatMessage
Aspire.Azure.AI.OpenAI.Tests (1)
AspireAzureOpenAIClientBuilderChatClientExtensionsTests.cs (1)
220static Task<ChatResponse> TestMiddleware(IEnumerable<ChatMessage> list, ChatOptions? options, IChatClient client, CancellationToken token)
Aspire.OpenAI.Tests (1)
AspireOpenAIClientBuilderChatClientExtensionsTests.cs (1)
268private static Task<ChatResponse> TestMiddleware(IEnumerable<ChatMessage> list, ChatOptions? options, IChatClient client, CancellationToken token)
Microsoft.Extensions.AI (118)
ChatCompletion\AnonymousDelegatingChatClient.cs (11)
23private readonly Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, Task<ChatResponse>>? _getResponseFunc; 31private readonly Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? _getStreamingResponseFunc; 34private readonly Func<IEnumerable<ChatMessage>, ChatOptions?, Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, Task>, CancellationToken, Task>? _sharedFunc; 53Func<IEnumerable<ChatMessage>, ChatOptions?, Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, Task>, CancellationToken, Task> sharedFunc) 79Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, Task<ChatResponse>>? getResponseFunc, 80Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? getStreamingResponseFunc) 91IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 100IEnumerable<ChatMessage> messages, ChatOptions? options, CancellationToken cancellationToken) 130IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
ChatCompletion\CachingChatClient.cs (6)
50IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 60IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 78IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 88IEnumerable<ChatMessage> messages, ChatOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default) 153protected abstract string GetCacheKey(IEnumerable<ChatMessage> messages, ChatOptions? options, params ReadOnlySpan<object?> additionalValues); 212protected virtual bool EnableCaching(IEnumerable<ChatMessage> messages, ChatOptions? options)
ChatCompletion\ChatClientBuilder.cs (4)
108public ChatClientBuilder Use(Func<IEnumerable<ChatMessage>, ChatOptions?, Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, Task>, CancellationToken, Task> sharedFunc) 143Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, Task<ChatResponse>>? getResponseFunc, 144Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? getStreamingResponseFunc)
ChatCompletion\ChatClientStructuredOutputExtensions.cs (5)
37IEnumerable<ChatMessage> messages, 76ChatMessage chatMessage, 117ChatMessage chatMessage, 139IEnumerable<ChatMessage> messages, 173ChatMessage? promptAugmentation = null;
ChatCompletion\ConfigureOptionsChatClient.cs (2)
38IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) => 43IEnumerable<ChatMessage> messages, ChatOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default)
ChatCompletion\DistributedCachingChatClient.cs (4)
26/// the object models used by <see cref="ChatMessage"/>, <see cref="ChatOptions"/>, <see cref="ChatResponse"/>, <see cref="ChatResponseUpdate"/>, 28/// <see cref="ChatMessage.RawRepresentation"/> will be ignored, and <see cref="object"/> values in <see cref="ChatMessage.AdditionalProperties"/> 140protected override string GetCacheKey(IEnumerable<ChatMessage> messages, ChatOptions? options, params ReadOnlySpan<object?> additionalValues)
ChatCompletion\DistributedCachingChatClientBuilderExtensions.cs (3)
29/// the object models used by <see cref="ChatMessage"/>, <see cref="ChatOptions"/>, <see cref="ChatResponse"/>, <see cref="ChatResponseUpdate"/>, 31/// <see cref="ChatMessage.RawRepresentation"/> will be ignored, and <see cref="object"/> values in <see cref="ChatMessage.AdditionalProperties"/>
ChatCompletion\FunctionInvocationContext.cs (3)
21private IList<ChatMessage> _messages = Array.Empty<ChatMessage>(); 59public IList<ChatMessage> Messages
ChatCompletion\FunctionInvokingChatClient.cs (52)
280IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 290List<ChatMessage> originalMessages = [.. messages]; 293List<ChatMessage>? augmentedHistory = null; // the actual history of messages sent on turns other than the first 295List<ChatMessage>? responseMessages = null; // tracked list of messages, across multiple turns, to be used for the final response 312(IList<ChatMessage>? invokedApprovedFunctionApprovalResponses, bool shouldTerminate, consecutiveErrorCount) = 419IEnumerable<ChatMessage> messages, ChatOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default) 430List<ChatMessage> originalMessages = [.. messages]; 434List<ChatMessage>? augmentedHistory = null; // the actual history of messages sent on turns other than the first 436List<ChatMessage>? responseMessages = null; // tracked list of messages, across multiple turns, to be used in fallback cases to reconstitute history 465foreach (var message in preDownstreamCallHistory) 473(IList<ChatMessage>? invokedApprovedFunctionApprovalResponses, bool shouldTerminate, consecutiveErrorCount) = 478foreach (var message in invokedApprovedFunctionApprovalResponses) 616foreach (var message in modeAndMessages.MessagesAdded) 633private static ChatResponseUpdate ConvertToolResultMessageToUpdate(ChatMessage message, string? conversationId, string? messageId) => 672IEnumerable<ChatMessage> originalMessages, 673ref IEnumerable<ChatMessage> messages, 674[NotNull] ref List<ChatMessage>? augmentedHistory, 676List<ChatMessage> allTurnsResponseMessages, 756private static bool HasAnyApprovalContent(List<ChatMessage> messages) => 761IList<ChatMessage> messages, [NotNullWhen(true)] ref List<FunctionCallContent>? functionCalls) 876private async Task<(bool ShouldTerminate, int NewConsecutiveErrorCount, IList<ChatMessage> MessagesAdded)> ProcessFunctionCallsAsync( 877List<ChatMessage> messages, ChatOptions? options, 895IList<ChatMessage> addedMessages = CreateResponseMessages([result]); 940IList<ChatMessage> addedMessages = CreateResponseMessages(results.ToArray()); 955private void UpdateConsecutiveErrorCountOrThrow(IList<ChatMessage> added, ref int consecutiveErrorCount) 985private void ThrowIfNoFunctionResultsAdded(IList<ChatMessage>? messages) 1005List<ChatMessage> messages, ChatOptions? options, 1063protected virtual IList<ChatMessage> CreateResponseMessages( 1205private static (List<ChatMessage>? preDownstreamCallHistory, List<ApprovalResultWithRequestMessage>? approvals) ProcessFunctionApprovalResponses( 1206List<ChatMessage> originalMessages, bool hasConversationId, string? toolMessageId, string? functionCallContentFallbackMessageId) 1213ICollection<ChatMessage>? allPreDownstreamCallMessages = ConvertToFunctionCallContentMessages( 1219ChatMessage? rejectedPreDownstreamCallResultsMessage = rejectedFunctionCallResults is not null ? 1226List<ChatMessage>? preDownstreamCallHistory = null; 1257List<ChatMessage> messages) 1259Dictionary<string, ChatMessage>? allApprovalRequestsMessages = null; 1273var message = messages[i]; 1313var newMessage = message.Clone(); 1358ChatMessage? requestMessage = null; 1383private static ICollection<ChatMessage>? ConvertToFunctionCallContentMessages( 1388ChatMessage? currentMessage = null; 1389Dictionary<string, ChatMessage>? messagesById = null; 1425if (messagesById?.Values is ICollection<ChatMessage> cm) 1440/// Takes the <see cref="FunctionCallContent"/> from the <paramref name="resultWithRequestMessage"/> and wraps it in a <see cref="ChatMessage"/> 1443private static ChatMessage ConvertToFunctionCallContentMessage(ApprovalResultWithRequestMessage resultWithRequestMessage, string? fallbackMessageId) 1445ChatMessage functionCallMessage = resultWithRequestMessage.RequestMessage?.Clone() ?? new() { Role = ChatRole.Assistant }; 1515private static IList<ChatMessage> ReplaceFunctionCallsWithApprovalRequests( 1516IList<ChatMessage> messages, 1563var message = lastMessageIndex != messageIndex ? outputMessages[messageIndex].Clone() : outputMessages[messageIndex]; 1586/// wrapped in <see cref="ChatMessage"/> objects. 1588private async Task<(IList<ChatMessage>? FunctionResultContentMessages, bool ShouldTerminate, int ConsecutiveErrorCount)> InvokeApprovedFunctionApprovalResponsesAsync( 1591List<ChatMessage> originalMessages, 1681public ChatMessage? RequestMessage { get; set; }
ChatCompletion\LoggingChatClient.cs (2)
55IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 101IEnumerable<ChatMessage> messages, ChatOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default)
ChatCompletion\OpenTelemetryChatClient.cs (5)
131IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 162IEnumerable<ChatMessage> messages, ChatOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default) 220private static string SerializeChatMessages(IEnumerable<ChatMessage> messages, ChatFinishReason? chatFinishReason = null) 231foreach (ChatMessage message in messages) 502private void AddInputMessagesTags(IEnumerable<ChatMessage> messages, ChatOptions? options, Activity? activity)
ChatCompletion\ReducingChatClient.cs (2)
32IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 41IEnumerable<ChatMessage> messages, ChatOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default)
ChatReduction\MessageCountingChatReducer.cs (7)
39public Task<IEnumerable<ChatMessage>> ReduceAsync(IEnumerable<ChatMessage> messages, CancellationToken cancellationToken) 45private IEnumerable<ChatMessage> GetReducedMessages(IEnumerable<ChatMessage> messages) 47ChatMessage? systemMessage = null; 48Queue<ChatMessage> reducedMessages = new(capacity: _targetCount); 50foreach (var message in messages)
ChatReduction\SummarizingChatReducer.cs (12)
75public async Task<IEnumerable<ChatMessage>> ReduceAsync(IEnumerable<ChatMessage> messages, CancellationToken cancellationToken) 89private readonly struct SummarizedConversation(string? summary, ChatMessage? systemMessage, IList<ChatMessage> unsummarizedMessages) 91public static SummarizedConversation FromChatMessages(IEnumerable<ChatMessage> messages) 94ChatMessage? systemMessage = null; 95var unsummarizedMessages = new List<ChatMessage>(); 97foreach (var message in messages) 134var lastSummarizedMessage = unsummarizedMessages[messagesToResummarize - 1]; 142public IEnumerable<ChatMessage> ToChatMessages() 154foreach (var message in unsummarizedMessages) 160private IEnumerable<ChatMessage> ToSummarizerChatMessages(int messagesToResummarize, string summarizationPrompt)
Microsoft.Extensions.AI.Abstractions (48)
ChatCompletion\ChatClientExtensions.cs (2)
113ChatMessage chatMessage, 153ChatMessage chatMessage,
ChatCompletion\ChatMessage.cs (7)
22/// <summary>Initializes a new instance of the <see cref="ChatMessage"/> class.</summary> 29/// <summary>Initializes a new instance of the <see cref="ChatMessage"/> class.</summary> 37/// <summary>Initializes a new instance of the <see cref="ChatMessage"/> class.</summary> 46/// <summary>Clones the <see cref="ChatMessage"/> to a new <see cref="ChatMessage"/> instance.</summary> 52public ChatMessage Clone() => 97/// If a <see cref="ChatMessage"/> is created to represent some underlying object from another object
ChatCompletion\ChatOptions.cs (1)
130/// like the enumerable of <see cref="ChatMessage"/>s, therefore, it is <b>strongly recommended</b> to not return shared instances
ChatCompletion\ChatResponse.cs (8)
23private IList<ChatMessage>? _messages; 33public ChatResponse(ChatMessage message) 42public ChatResponse(IList<ChatMessage>? messages) 49public IList<ChatMessage> Messages 51get => _messages ??= new List<ChatMessage>(1); 57/// This property concatenates the <see cref="ChatMessage.Text"/> of all <see cref="ChatMessage"/> 130ChatMessage message = _messages![i];
ChatCompletion\ChatResponseExtensions.cs (16)
29public static void AddMessages(this IList<ChatMessage> list, ChatResponse response) 34if (list is List<ChatMessage> listConcrete) 40foreach (var message in response.Messages) 47/// <summary>Converts the <paramref name="updates"/> into <see cref="ChatMessage"/> instances and adds them to <paramref name="list"/>.</summary> 53/// As part of combining <paramref name="updates"/> into a series of <see cref="ChatMessage"/> instances, the 58public static void AddMessages(this IList<ChatMessage> list, IEnumerable<ChatResponseUpdate> updates) 71/// <summary>Converts the <paramref name="update"/> into a <see cref="ChatMessage"/> instance and adds it to <paramref name="list"/>.</summary> 79/// no <see cref="ChatMessage"/> will be added to the <paramref name="list"/>. 81public static void AddMessages(this IList<ChatMessage> list, ChatResponseUpdate update, Func<AIContent, bool>? filter = null) 99/// <summary>Converts the <paramref name="updates"/> into <see cref="ChatMessage"/> instances and adds them to <paramref name="list"/>.</summary> 107/// As part of combining <paramref name="updates"/> into a series of <see cref="ChatMessage"/> instances, tne 113this IList<ChatMessage> list, IAsyncEnumerable<ChatResponseUpdate> updates, CancellationToken cancellationToken = default) 121IList<ChatMessage> list, IAsyncEnumerable<ChatResponseUpdate> updates, CancellationToken cancellationToken) => 131/// <see cref="ChatMessage"/> instances. This includes using <see cref="ChatResponseUpdate.MessageId"/> to determine 159/// <see cref="ChatMessage"/> instances. This includes using <see cref="ChatResponseUpdate.MessageId"/> to determine 307ChatMessage message;
ChatCompletion\ChatResponseUpdate.cs (2)
21/// <see cref="ChatResponse"/> and <see cref="ChatMessage"/> in streaming output. 115/// groups <see cref="ChatResponseUpdate"/> instances into <see cref="ChatMessage"/> instances.
ChatCompletion\DelegatingChatClient.cs (2)
44IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) => 49IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) =>
ChatCompletion\IChatClient.cs (2)
43IEnumerable<ChatMessage> messages, 55IEnumerable<ChatMessage> messages,
ChatReduction\IChatReducer.cs (2)
21Task<IEnumerable<ChatMessage>> ReduceAsync(IEnumerable<ChatMessage> messages, CancellationToken cancellationToken);
Contents\AIContentExtensions.cs (3)
62/// <summary>Concatenates the <see cref="ChatMessage.Text"/> of all <see cref="ChatMessage"/> instances in the list.</summary> 64public static string ConcatText(this IList<ChatMessage> messages)
Utilities\AIJsonUtilities.Defaults.cs (3)
75[JsonSerializable(typeof(IList<ChatMessage>))] 76[JsonSerializable(typeof(IEnumerable<ChatMessage>))] 77[JsonSerializable(typeof(ChatMessage[]))]
Microsoft.Extensions.AI.Abstractions.Tests (38)
AssertExtensions.cs (4)
18public static void EqualMessageLists(List<ChatMessage> expectedMessages, List<ChatMessage> actualMessages) 23var expectedMessage = expectedMessages[i]; 24var chatMessage = actualMessages[i];
ChatCompletion\ChatClientExtensionsTests.cs (4)
82_ = ChatClientExtensions.GetResponseAsync(new TestChatClient(), (ChatMessage)null!); 96_ = ChatClientExtensions.GetStreamingResponseAsync(new TestChatClient(), (ChatMessage)null!); 111ChatMessage m = Assert.Single(messages); 138ChatMessage m = Assert.Single(messages);
ChatCompletion\ChatMessageTests.cs (13)
18ChatMessage message = new(); 37ChatMessage message = new(ChatRole.Assistant, text); 63ChatMessage message; 94ChatMessage message = new(ChatRole.System, content); 129ChatMessage message = new() 145ChatMessage message = new(ChatRole.User, 177ChatMessage message = new(); 197ChatMessage message = new(); 218ChatMessage message = new(); 239ChatMessage message = new(); 277var chatMessage = new ChatMessage(ChatRole.User, contents: items) 285var deserializedMessage = JsonSerializer.Deserialize<ChatMessage>(chatMessageJson, TestJsonSerializerContext.Default.Options)!;
ChatCompletion\ChatResponseTests.cs (3)
23response = new((IList<ChatMessage>?)null); 27Assert.Throws<ArgumentNullException>("message", () => new ChatResponse((ChatMessage)null!)); 37List<ChatMessage> messages = [];
ChatCompletion\ChatResponseUpdateExtensionsTests.cs (7)
54ChatMessage message = response.Messages.Single(); 159ChatMessage message1 = response.Messages[0]; 167ChatMessage message2 = response.Messages[1]; 175ChatMessage message3 = response.Messages[2]; 250ChatMessage message = response.Messages.Single(); 289ChatMessage message = Assert.Single(response.Messages); 327ChatMessage message = Assert.Single(response.Messages);
ChatCompletion\DelegatingChatClientTests.cs (2)
24var expectedChatContents = new List<ChatMessage>(); 56var expectedChatContents = new List<ChatMessage>();
TestChatClient.cs (4)
20public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, Task<ChatResponse>>? GetResponseAsyncCallback { get; set; } 22public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? GetStreamingResponseAsyncCallback { get; set; } 29public Task<ChatResponse> GetResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 32public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
Utilities\AIJsonUtilitiesTests.cs (1)
1006Assert.Throws<ArgumentException>("contentType", () => options.AddAIContentType(typeof(ChatMessage), "discriminator"));
Microsoft.Extensions.AI.AzureAIInference (7)
AzureAIInferenceChatClient.cs (7)
86IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 96ChatMessage message = new(ToChatRole(response.Role), response.Content) 142IEnumerable<ChatMessage> messages, ChatOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default) 286private ChatCompletionsOptions CreateAzureAIOptions(IEnumerable<ChatMessage> chatContents, ChatOptions? options) => 294private ChatCompletionsOptions ToAzureAIOptions(IEnumerable<ChatMessage> chatContents, ChatOptions? options) 426private static IEnumerable<ChatRequestMessage> ToAzureAIInferenceChatMessages(IEnumerable<ChatMessage> inputs, ChatOptions? options) 436foreach (ChatMessage input in inputs)
Microsoft.Extensions.AI.AzureAIInference.Tests (8)
AzureAIInferenceChatClientTests.cs (4)
144List<ChatMessage> messages = multiContent ? 217List<ChatMessage> messages = multiContent ? 984List<ChatMessage> messages = 1130List<ChatMessage> messages =
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\AssertExtensions.cs (4)
18public static void EqualMessageLists(List<ChatMessage> expectedMessages, List<ChatMessage> actualMessages) 23var expectedMessage = expectedMessages[i]; 24var chatMessage = actualMessages[i];
Microsoft.Extensions.AI.Evaluation (49)
ChatMessageExtensions.cs (38)
13/// Extension methods for <see cref="ChatMessage"/>. 19/// single <see cref="ChatMessage"/> representing the last <paramref name="userRequest"/> in this conversation. 22/// A collection of <see cref="ChatMessage"/>s representing an LLM chat conversation history. 25/// Returns the last <see cref="ChatMessage"/> in the supplied collection of <paramref name="messages"/> if this 26/// last <see cref="ChatMessage"/> has <see cref="ChatMessage.Role"/> set to <see cref="ChatRole.User"/>; 30/// <see langword="true"/> if the last <see cref="ChatMessage"/> in the supplied collection of 31/// <paramref name="messages"/> has <see cref="ChatMessage.Role"/> set to <see cref="ChatRole.User"/>; 35this IEnumerable<ChatMessage> messages, 36[NotNullWhen(true)] out ChatMessage? userRequest) 39messages.LastOrDefault() is ChatMessage lastMessage && lastMessage.Role == ChatRole.User 48/// single <see cref="ChatMessage"/> representing the last <paramref name="userRequest"/> in this conversation and 52/// A collection of <see cref="ChatMessage"/>s representing an LLM chat conversation history. 55/// Returns the last <see cref="ChatMessage"/> in the supplied collection of <paramref name="messages"/> if this 56/// last <see cref="ChatMessage"/> has <see cref="ChatMessage.Role"/> set to <see cref="ChatRole.User"/>; 60/// Returns the remaining <see cref="ChatMessage"/>s in the conversation history excluding 64/// <see langword="true"/> if the last <see cref="ChatMessage"/> in the supplied collection of 65/// <paramref name="messages"/> has <see cref="ChatMessage.Role"/> set to <see cref="ChatRole.User"/>; 69this IEnumerable<ChatMessage> messages, 70[NotNullWhen(true)] out ChatMessage? userRequest, 71out IReadOnlyList<ChatMessage> remainingMessages) 73List<ChatMessage> conversationHistory = [.. messages]; 77conversationHistory[lastMessageIndex] is ChatMessage lastMessage && 99/// This function only considers the <see cref="ChatMessage.Text"/> and ignores any <see cref="AIContent"/>s 100/// (present within the <see cref="ChatMessage.Contents"/> of the <paramref name="message"/>) that are not 105/// The returned string is prefixed with the <see cref="ChatMessage.Role"/> and 106/// <see cref="ChatMessage.AuthorName"/> (if available). The returned string also always has a new line character 110/// <param name="message">The <see cref="ChatMessage"/> that is to be rendered.</param> 112public static string RenderText(this ChatMessage message) 138/// This function only considers the <see cref="ChatMessage.Text"/> and ignores any <see cref="AIContent"/>s 139/// (present within the <see cref="ChatMessage.Contents"/> of the <paramref name="messages"/>) that are not 145/// The rendered <paramref name="messages"/> are each prefixed with the <see cref="ChatMessage.Role"/> and 146/// <see cref="ChatMessage.AuthorName"/> (if available) in the returned string. The rendered 147/// <see cref="ChatMessage"/>s are also always separated by new line characters in the returned string. 150/// <param name="messages">The <see cref="ChatMessage"/>s that are to be rendered.</param> 152public static string RenderText(this IEnumerable<ChatMessage> messages) 157foreach (ChatMessage message in messages)
ChatResponseExtensions.cs (3)
21/// (present within the <see cref="ChatMessage.Contents"/> of the <see cref="ChatResponse.Messages"/>) that are not 27/// The rendered <see cref="ChatResponse.Messages"/> are each prefixed with the <see cref="ChatMessage.Role"/> and 28/// <see cref="ChatMessage.AuthorName"/> (if available) in the returned string. The rendered
CompositeEvaluator.cs (2)
103IEnumerable<ChatMessage> messages, 128IEnumerable<ChatMessage> messages,
EvaluationContext.cs (1)
23/// <see cref="IEvaluator.EvaluateAsync(IEnumerable{ChatMessage}, ChatResponse, ChatConfiguration?, IEnumerable{EvaluationContext}?, CancellationToken)"/>.
EvaluatorExtensions.cs (4)
131ChatMessage modelResponse, 219ChatMessage userRequest, 220ChatMessage modelResponse, 264ChatMessage userRequest,
IEvaluator.cs (1)
58IEnumerable<ChatMessage> messages,
Microsoft.Extensions.AI.Evaluation.Integration.Tests (41)
AgentQualityEvaluatorTests.cs (8)
93(IEnumerable<ChatMessage> messages, ChatResponse response) = 116(IEnumerable<ChatMessage> messages, ChatResponse response) = 149(IEnumerable<ChatMessage> messages, ChatResponse response) = 173(IEnumerable<ChatMessage> messages, ChatResponse response) = 204private static async Task<(IEnumerable<ChatMessage> messages, ChatResponse response)> 207List<ChatMessage> messages = 217private static async Task<(IEnumerable<ChatMessage> messages, ChatResponse response)> 220List<ChatMessage> messages =
QualityEvaluatorTests.cs (4)
91var messages = new List<ChatMessage>(); 131var messages = new List<ChatMessage>(); 168var messages = new List<ChatMessage>(); 203var messages = new List<ChatMessage>();
ResultsTests.cs (1)
21private static readonly ChatMessage _testResponse = "Test response".ToAssistantMessage();
SafetyEvaluatorTests.cs (24)
184var messages = new List<ChatMessage>(); 262var messages = new List<ChatMessage>(); 335var question = 344ChatMessage answer = "The image depicts a logo for Microsoft Corporation.".ToAssistantMessage(); 371ChatMessage question = "Can you show me an image pertaining to DotNet?".ToUserMessage(); 373var answer = 407var question1 = 416ChatMessage answer1 = "The image depicts a logo for DotNet.".ToAssistantMessage(); 418ChatMessage question2 = "Can you show me an image pertaining to Microsoft Copilot?".ToUserMessage(); 420var answer2 = 429ChatMessage[] messages = [question1, answer1, question2]; 456var question1 = 465ChatMessage answer1 = "The image depicts a logo for Microsoft Corporation.".ToAssistantMessage(); 467ChatMessage question2 = "Can you show me an image pertaining to Microsoft Copilot?".ToUserMessage(); 469var answer2 = 478ChatMessage question3 = 483ChatMessage answer3 = 491ChatMessage[] messages = [question1, answer1, question2, answer2, question3]; 547ChatMessage context1 = 552ChatMessage completion1 = 557ChatMessage context2 = 562ChatMessage completion2 = 567ChatMessage[] messages = [context1, completion1, context2]; 590var messages = new List<ChatMessage>();
test\Libraries\Microsoft.Extensions.AI.Evaluation.Tests\ChatMessageUtilities.cs (3)
8internal static ChatMessage ToSystemMessage(this string message) 11internal static ChatMessage ToUserMessage(this string message) 14internal static ChatMessage ToAssistantMessage(this string message)
TestEvaluator.cs (1)
27IEnumerable<ChatMessage> messages,
Microsoft.Extensions.AI.Evaluation.NLP (3)
BLEUEvaluator.cs (1)
43IEnumerable<ChatMessage> messages,
F1Evaluator.cs (1)
43IEnumerable<ChatMessage> messages,
GLEUEvaluator.cs (1)
43IEnumerable<ChatMessage> messages,
Microsoft.Extensions.AI.Evaluation.Quality (64)
ChatMessageExtensions.cs (3)
13internal static string RenderAsJson(this IEnumerable<ChatMessage> messages, JsonSerializerOptions? options = null) 19foreach (ChatMessage message in messages) 24AIJsonUtilities.DefaultOptions.GetTypeInfo(typeof(ChatMessage)));
CoherenceEvaluator.cs (6)
68IEnumerable<ChatMessage> messages, 89_ = messages.TryGetUserRequest(out ChatMessage? userRequest); 91List<ChatMessage> evaluationInstructions = GetEvaluationInstructions(userRequest, modelResponse); 105private static List<ChatMessage> GetEvaluationInstructions(ChatMessage? userRequest, ChatResponse modelResponse) 119List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)];
CompletenessEvaluator.cs (4)
65IEnumerable<ChatMessage> messages, 96List<ChatMessage> evaluationInstructions = GetEvaluationInstructions(modelResponse, context); 111private static List<ChatMessage> GetEvaluationInstructions( 127List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)];
EquivalenceEvaluator.cs (6)
64IEnumerable<ChatMessage> messages, 95_ = messages.TryGetUserRequest(out ChatMessage? userRequest); 97List<ChatMessage> evaluationInstructions = GetEvaluationInstructions(userRequest, modelResponse, context); 112private static List<ChatMessage> GetEvaluationInstructions( 113ChatMessage? userRequest, 124List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)];
FluencyEvaluator.cs (4)
62IEnumerable<ChatMessage> messages, 83List<ChatMessage> evaluationInstructions = GetEvaluationInstructions(modelResponse); 97private static List<ChatMessage> GetEvaluationInstructions(ChatResponse modelResponse) 111List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)];
GroundednessEvaluator.cs (6)
63IEnumerable<ChatMessage> messages, 94_ = messages.TryGetUserRequest(out ChatMessage? userRequest); 96List<ChatMessage> evaluationInstructions = 112private static List<ChatMessage> GetEvaluationInstructions( 113ChatMessage? userRequest, 129List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)];
IntentResolutionEvaluator.cs (5)
76IEnumerable<ChatMessage> messages, 141List<ChatMessage> evaluationInstructions = GetEvaluationInstructions(messages, modelResponse, context); 165private static List<ChatMessage> GetEvaluationInstructions( 166IEnumerable<ChatMessage> messages, 173List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)];
RelevanceEvaluator.cs (6)
66IEnumerable<ChatMessage> messages, 79if (!messages.TryGetUserRequest(out ChatMessage? userRequest) || string.IsNullOrWhiteSpace(userRequest.Text)) 96List<ChatMessage> evaluationInstructions = GetEvaluationInstructions(userRequest, modelResponse); 110private static List<ChatMessage> GetEvaluationInstructions(ChatMessage userRequest, ChatResponse modelResponse) 124List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)];
RelevanceTruthAndCompletenessEvaluator.cs (7)
79IEnumerable<ChatMessage> messages, 98out ChatMessage? userRequest, 99out IReadOnlyList<ChatMessage> conversationHistory) || 117List<ChatMessage> evaluationInstructions = 137private static List<ChatMessage> GetEvaluationInstructions( 138ChatMessage userRequest, 140IEnumerable<ChatMessage> conversationHistory)
RetrievalEvaluator.cs (6)
72IEnumerable<ChatMessage> messages, 84if (!messages.TryGetUserRequest(out ChatMessage? userRequest) || string.IsNullOrWhiteSpace(userRequest.Text)) 112List<ChatMessage> evaluationInstructions = GetEvaluationInstructions(userRequest, context); 127private static List<ChatMessage> GetEvaluationInstructions( 128ChatMessage userRequest, 143List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)];
TaskAdherenceEvaluator.cs (5)
75IEnumerable<ChatMessage> messages, 140List<ChatMessage> evaluationInstructions = GetEvaluationInstructions(messages, modelResponse, context); 160private static List<ChatMessage> GetEvaluationInstructions( 161IEnumerable<ChatMessage> messages, 266List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, systemPrompt)];
ToolCallAccuracyEvaluator.cs (5)
77IEnumerable<ChatMessage> messages, 140List<ChatMessage> evaluationInstructions = GetEvaluationInstructions(messages, modelResponse, context); 155private static List<ChatMessage> GetEvaluationInstructions( 156IEnumerable<ChatMessage> messages, 172List<ChatMessage> evaluationInstructions = [new ChatMessage(ChatRole.System, SystemPrompt)];
Utilities\JsonOutputFixer.cs (1)
65var messages = new List<ChatMessage>
Microsoft.Extensions.AI.Evaluation.Reporting (12)
ScenarioRun.cs (1)
146IEnumerable<ChatMessage> messages,
ScenarioRunExtensions.cs (4)
86ChatMessage modelResponse, 143ChatMessage userRequest, 144ChatMessage modelResponse, 173ChatMessage userRequest,
ScenarioRunResult.cs (5)
20/// <see cref="ScenarioRun.EvaluateAsync(IEnumerable{ChatMessage}, ChatResponse, IEnumerable{Microsoft.Extensions.AI.Evaluation.EvaluationContext}?, CancellationToken)"/> 56IList<ChatMessage> messages, 91IEnumerable<ChatMessage> messages, 138public IList<ChatMessage> Messages { get; set; } = messages; 152/// <see cref="ScenarioRun.EvaluateAsync(IEnumerable{ChatMessage}, ChatResponse, IEnumerable{Microsoft.Extensions.AI.Evaluation.EvaluationContext}?, CancellationToken)"/>
SimpleChatClient.cs (2)
26IEnumerable<ChatMessage> messages, 59IEnumerable<ChatMessage> messages,
Microsoft.Extensions.AI.Evaluation.Reporting.Tests (5)
ScenarioRunResultTests.cs (4)
293private class ChatMessageComparer : IEqualityComparer<ChatMessage> 297public bool Equals(ChatMessage? x, ChatMessage? y) 300public int GetHashCode(ChatMessage obj)
SerializationChainingTests.cs (1)
27Messages = new List<ChatMessage>
Microsoft.Extensions.AI.Evaluation.Safety (36)
ChatMessageExtensions.cs (2)
11internal static bool ContainsImageWithSupportedFormat(this ChatMessage message) 14internal static bool ContainsImageWithSupportedFormat(this IEnumerable<ChatMessage> conversation)
CodeVulnerabilityEvaluator.cs (1)
47IEnumerable<ChatMessage> messages,
ContentHarmEvaluator.cs (1)
49IEnumerable<ChatMessage> messages,
ContentSafetyChatClient.cs (3)
56IEnumerable<ChatMessage> messages, 89IEnumerable<ChatMessage> messages, 146private static void ValidateSingleMessage(IEnumerable<ChatMessage> messages)
ContentSafetyEvaluator.cs (4)
44IEnumerable<ChatMessage> messages, 90IEnumerable<ChatMessage> messages, 109IEnumerable<ChatMessage> conversation = [.. messages, .. modelResponse.Messages]; 142var payloadMessage = new ChatMessage(ChatRole.User, payload);
ContentSafetyServicePayloadUtilities.cs (22)
17IEnumerable<ChatMessage> conversation, 80IEnumerable<ChatMessage> conversation, 92List<Dictionary<string, ChatMessage>> turns; 112if (turn.TryGetValue("question", out ChatMessage? question)) 117if (turn.TryGetValue("answer", out ChatMessage? answer)) 168IEnumerable<ChatMessage> conversation, 186List<Dictionary<string, ChatMessage>> turns; 206if (turn.TryGetValue("question", out ChatMessage? question)) 211if (turn.TryGetValue("answer", out ChatMessage? answer)) 250IEnumerable<ChatMessage> conversation, 264List<Dictionary<string, ChatMessage>> turns; 278IEnumerable<JsonObject> GetMessages(Dictionary<string, ChatMessage> turn, int turnIndex) 282if (turn.TryGetValue("question", out ChatMessage? question)) 293if (turn.TryGetValue("answer", out ChatMessage? answer)) 318IEnumerable<JsonObject> GetContents(ChatMessage message) 388(List<Dictionary<string, ChatMessage>> turns, 392IEnumerable<ChatMessage> conversation, 399List<Dictionary<string, ChatMessage>> turns = []; 400Dictionary<string, ChatMessage> currentTurn = []; 420foreach (ChatMessage message in conversation) 454void ValidateContents(ChatMessage message) 482foreach (var message in turn.Values)
GroundednessProEvaluator.cs (1)
48IEnumerable<ChatMessage> messages,
ProtectedMaterialEvaluator.cs (1)
67IEnumerable<ChatMessage> messages,
UngroundedAttributesEvaluator.cs (1)
52IEnumerable<ChatMessage> messages,
Microsoft.Extensions.AI.Evaluation.Tests (3)
ChatMessageUtilities.cs (3)
8internal static ChatMessage ToSystemMessage(this string message) 11internal static ChatMessage ToUserMessage(this string message) 14internal static ChatMessage ToAssistantMessage(this string message)
Microsoft.Extensions.AI.Integration.Tests (38)
CallCountingChatClient.cs (2)
20IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 27IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
ChatClientIntegrationTests.cs (21)
101IList<ChatMessage> chatHistory = 161List<ChatMessage> history = [new(ChatRole.User, "Explain in 100 words how AI works")]; 230List<ChatMessage> messages = 297List<ChatMessage> messages = 329List<ChatMessage> messages = 359List<ChatMessage> messages = 640var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 656var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 681var message = new ChatMessage(ChatRole.User, "Pick a random number, uniformly distributed between 1 and 1000000"); 733var message = new ChatMessage(ChatRole.User, "What is the temperature?"); 772var message = new ChatMessage(ChatRole.User, "What is the temperature?"); 814var message = new ChatMessage(ChatRole.User, "What is the temperature?"); 1135List<ChatMessage> messages = 1176List<ChatMessage> messages = 1237List<ChatMessage> messages = 1271List<ChatMessage> messages = 1317List<ChatMessage> messages = 1336var summaryMessage = chatClient.LastSummarizedConversation[0]; 1358public IReadOnlyList<ChatMessage>? LastSummarizedConversation { get; private set; } 1382public Task<ChatResponse> GetResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 1385public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
PromptBasedFunctionCallingChatClient.cs (6)
43IEnumerable<ChatMessage> chatMessages, ChatOptions? options = null, CancellationToken cancellationToken = default) 49List<ChatMessage> chatMessagesList = [CreateToolPrompt(options.Tools), .. chatMessages.Select(m => m.Clone())]; 66var message = chatMessagesList[messageIndex]; 89var message = result.Messages.First(); 138IEnumerable<ChatMessage> messages, ChatOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default) 167private static ChatMessage CreateToolPrompt(IList<AITool> tools)
ReducingChatClientTests.cs (5)
44List<ChatMessage> messages = 71public async Task<IEnumerable<ChatMessage>> ReduceAsync( 72IEnumerable<ChatMessage> messages, CancellationToken cancellationToken) 76List<ChatMessage> list = messages.ToList(); 96private int CountTokens(ChatMessage message)
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestChatClient.cs (4)
20public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, Task<ChatResponse>>? GetResponseAsyncCallback { get; set; } 22public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? GetStreamingResponseAsyncCallback { get; set; } 29public Task<ChatResponse> GetResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 32public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
Microsoft.Extensions.AI.OllamaSharp.Integration.Tests (1)
OllamaSharpChatClientIntegrationTests.cs (1)
110IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
Microsoft.Extensions.AI.OpenAI (26)
MicrosoftExtensionsAIChatExtensions.cs (5)
33public static IEnumerable<ChatMessage> AsOpenAIChatMessages(this IEnumerable<Microsoft.Extensions.AI.ChatMessage> messages, ChatOptions? options = null) => 49var lastMessage = response.Messages.LastOrDefault(); 159/// <summary>Creates a sequence of <see cref="Microsoft.Extensions.AI.ChatMessage"/> instances from the specified input messages.</summary> 163public static IEnumerable<Microsoft.Extensions.AI.ChatMessage> AsChatMessages(this IEnumerable<ChatMessage> messages) 169Microsoft.Extensions.AI.ChatMessage resultMessage = new()
MicrosoftExtensionsAIResponsesExtensions.cs (4)
29public static IEnumerable<ResponseItem> AsOpenAIResponseItems(this IEnumerable<ChatMessage> messages, ChatOptions? options = null) => 32/// <summary>Creates a sequence of <see cref="ChatMessage"/> instances from the specified input items.</summary> 34/// <returns>A sequence of <see cref="ChatMessage"/> instances.</returns> 36public static IEnumerable<ChatMessage> AsChatMessages(this IEnumerable<ResponseItem> items) =>
OpenAIAssistantsChatClient.cs (4)
75IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) => 80IEnumerable<ChatMessage> messages, ChatOptions? options = null, [EnumeratorCancellation] CancellationToken cancellationToken = default) 299IEnumerable<ChatMessage> messages, ChatOptions? options, CancellationToken cancellationToken) 458foreach (var chatMessage in messages)
OpenAIChatClient.cs (5)
59IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 74IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 108internal static IEnumerable<OpenAI.Chat.ChatMessage> ToOpenAIChatMessages(IEnumerable<ChatMessage> inputs, ChatOptions? chatOptions) 118foreach (ChatMessage input in inputs) 438ChatMessage returnMessage = new()
OpenAIResponsesChatClient.cs (8)
72IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 120foreach (var message in response.Messages) 129internal static IEnumerable<ChatMessage> ToChatMessages(IEnumerable<ResponseItem> items) 131ChatMessage? message = null; 199IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 550/// <summary>Convert a sequence of <see cref="ChatMessage"/>s to <see cref="ResponseItem"/>s.</summary> 551internal static IEnumerable<ResponseItem> ToOpenAIResponseItems(IEnumerable<ChatMessage> inputs, ChatOptions? options) 557foreach (ChatMessage input in inputs)
Microsoft.Extensions.AI.OpenAI.Tests (27)
OpenAIAssistantChatClientIntegrationTests.cs (1)
60ChatMessage message = Assert.Single(response.Messages);
OpenAIChatClientTests.cs (4)
784List<ChatMessage> messages = 891List<ChatMessage> messages = 987List<ChatMessage> messages = 1429List<ChatMessage> messages =
OpenAIConversionTests.cs (13)
86Assert.Throws<ArgumentNullException>("messages", () => ((IEnumerable<ChatMessage>)null!).AsOpenAIChatMessages()); 88List<ChatMessage> messages = 152Assert.Throws<ArgumentNullException>("messages", () => ((IEnumerable<ChatMessage>)null!).AsOpenAIResponseItems()); 154List<ChatMessage> messages = 228ChatMessage message = Assert.Single(response.Messages); 259ChatMessage message = Assert.Single(response.Messages); 333List<ChatMessage> inputMessages = 344var message = convertedMessages[0]; 359List<ChatMessage> inputMessages = 373var message = convertedMessages[0]; 959var messages = new List<ChatMessage> 996var messages = new List<ChatMessage> 1031var messages = new List<ChatMessage>
OpenAIResponseClientIntegrationTests.cs (3)
33ChatMessage m = Assert.Single(response.Messages); 134List<ChatMessage> input = [new ChatMessage(ChatRole.User, "Tell me the path to the README.md file for Microsoft.Extensions.AI.Abstractions in the dotnet/extensions repository")]; 153var approvalResponse = new ChatMessage(ChatRole.Tool,
OpenAIResponseClientTests.cs (2)
1052var message = Assert.Single(response.Messages); 1466var message = Assert.Single(response.Messages);
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\AssertExtensions.cs (4)
18public static void EqualMessageLists(List<ChatMessage> expectedMessages, List<ChatMessage> actualMessages) 23var expectedMessage = expectedMessages[i]; 24var chatMessage = actualMessages[i];
Microsoft.Extensions.AI.Tests (172)
ChatCompletion\ChatClientStructuredOutputExtensionsTests.cs (9)
75var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 136var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 245var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 264var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 283var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 311var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 339var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 401var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") }; 429var chatHistory = new List<ChatMessage> { new(ChatRole.User, "Hello") };
ChatCompletion\ConfigureOptionsChatClientTests.cs (2)
76var response = await client.GetResponseAsync(Array.Empty<ChatMessage>(), providedOptions, cts.Token); 80await using var e = client.GetStreamingResponseAsync(Array.Empty<ChatMessage>(), providedOptions, cts.Token).GetAsyncEnumerator();
ChatCompletion\DistributedCachingChatClientTest.cs (9)
122private sealed class CustomCachingChatClient(IChatClient innerClient, IDistributedCache storage, Func<IEnumerable<ChatMessage>, ChatOptions?, bool> enableCaching) : 125protected override bool EnableCaching(IEnumerable<ChatMessage> messages, ChatOptions? options) => enableCaching(messages, options); 184var input = new ChatMessage(ChatRole.User, "abc"); 223var input = new ChatMessage(ChatRole.User, "abc"); 494var input = new ChatMessage(ChatRole.User, "abc"); 532var input = new ChatMessage(ChatRole.User, "abc"); 805ChatMessage expectedMessage = expected.Messages.Last(); 806ChatMessage actualMessage = actual.Messages.Last(); 880protected override string GetCacheKey(IEnumerable<ChatMessage> messages, ChatOptions? options, params ReadOnlySpan<object?> additionalValues)
ChatCompletion\FunctionInvocationContextTests.cs (1)
47List<ChatMessage> messages = [];
ChatCompletion\FunctionInvokingChatClientApprovalsTests.cs (63)
34List<ChatMessage> input = 39List<ChatMessage> downstreamClientOutput = 44List<ChatMessage> expectedOutput = 70List<ChatMessage> input = 75List<ChatMessage> downstreamClientOutput = 80List<ChatMessage> expectedOutput = 114List<ChatMessage> input = 119List<ChatMessage> downstreamClientOutput = 124List<ChatMessage> expectedOutput = 150List<ChatMessage> input = 165List<ChatMessage> expectedDownstreamClientInput = 172List<ChatMessage> downstreamClientOutput = 177List<ChatMessage> output = 201List<ChatMessage> input = 222List<ChatMessage> expectedDownstreamClientInput = 230List<ChatMessage> downstreamClientOutput = 235List<ChatMessage> output = 260List<ChatMessage> input = 275List<ChatMessage> expectedDownstreamClientInput = 286List<ChatMessage> downstreamClientOutput = 291List<ChatMessage> output = 319List<ChatMessage> input = 334List<ChatMessage> expectedDownstreamClientInput = 342List<ChatMessage> downstreamClientOutput = 347List<ChatMessage> nonStreamingOutput = 355List<ChatMessage> streamingOutput = 383List<ChatMessage> input = 398List<ChatMessage> expectedDownstreamClientInput = 405List<ChatMessage> downstreamClientOutput = 410List<ChatMessage> output = 437List<ChatMessage> input = 462List<ChatMessage> expectedDownstreamClientInput = 471List<ChatMessage> downstreamClientOutput = 476List<ChatMessage> output = 500List<ChatMessage> input = 530List<ChatMessage> input = 540List<ChatMessage> expectedDownstreamClientInput = 547List<ChatMessage> downstreamClientOutput = 552List<ChatMessage> output = 577List<ChatMessage> input = 586List<ChatMessage> expectedDownstreamClientInput = 591List<ChatMessage> downstreamClientOutput = 596List<ChatMessage> output = 628List<ChatMessage> input = [new ChatMessage(ChatRole.User, "hello")]; 636IEnumerable<ChatMessage> contents, ChatOptions? actualOptions, [EnumeratorCancellation] CancellationToken actualCancellationToken) 657var updates = service.GetStreamingResponseAsync(new EnumeratedOnceEnumerable<ChatMessage>(input), options, cts.Token); 701List<ChatMessage> input = [new ChatMessage(ChatRole.User, "hello")]; 709IEnumerable<ChatMessage> contents, ChatOptions? actualOptions, [EnumeratorCancellation] CancellationToken actualCancellationToken) 735var updates = service.GetStreamingResponseAsync(new EnumeratedOnceEnumerable<ChatMessage>(input), options, cts.Token); 784private static async Task<List<ChatMessage>> InvokeAndAssertAsync( 786List<ChatMessage> input, 787List<ChatMessage> downstreamClientOutput, 788List<ChatMessage> expectedOutput, 789List<ChatMessage>? expectedDownstreamClientInput = null, 822var result = await service.GetResponseAsync(new EnumeratedOnceEnumerable<ChatMessage>(input), options, cts.Token); 825var actualOutput = result.Messages as List<ChatMessage> ?? result.Messages.ToList(); 854private static async Task<List<ChatMessage>> InvokeAndAssertStreamingAsync( 856List<ChatMessage> input, 857List<ChatMessage> downstreamClientOutput, 858List<ChatMessage> expectedOutput, 859List<ChatMessage>? expectedDownstreamClientInput = null, 886var result = await service.GetStreamingResponseAsync(new EnumeratedOnceEnumerable<ChatMessage>(input), options, cts.Token).ToChatResponseAsync(); 889var actualOutput = result.Messages as List<ChatMessage> ?? result.Messages.ToList();
ChatCompletion\FunctionInvokingChatClientTests.cs (49)
90List<ChatMessage> plan = 124List<ChatMessage> plan = 157List<ChatMessage> plan = 188List<ChatMessage> plan = 248List<ChatMessage> plan = 292List<ChatMessage> plan = 326List<ChatMessage> plan = 375List<ChatMessage> plan = 424List<ChatMessage> plan = 502List<ChatMessage> plan = 519private static IEnumerable<ChatMessage> CreateFunctionCallIterationPlan(ref int callIndex, params bool[] shouldThrow) 521var assistantMessage = new ChatMessage(ChatRole.Assistant, []); 522var toolMessage = new ChatMessage(ChatRole.Tool, []); 549List<ChatMessage> plan = 566static void Validate(List<ChatMessage> finalChat) 586List<ChatMessage> plan = 608List<ChatMessage> plan = 664List<ChatMessage> plan = 725var messages = new List<ChatMessage> 783var messages = new List<ChatMessage> 794ChatMessage message = chatContents.Count() is 1 or 3 ? 841List<ChatMessage> planBeforeTermination = 851List<ChatMessage> plan = 866async Task InvokeAsync(Func<Task<List<ChatMessage>>> work) 910var existingSearchResult = chatContents.SingleOrDefault(m => m.Role == ChatRole.Tool); 919var message = new ChatMessage(ChatRole.Assistant, resultContents); 927List<ChatMessage> messages = [new(ChatRole.User, "hello")]; 933var lastMessage = messages.Last(); 954Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, ChatResponse> callback = 997List<ChatMessage> plan = 1026List<ChatMessage> plan = 1079List<ChatMessage> planForContinue = 1098List<ChatMessage> fullPlanWithUnknown = 1127List<ChatMessage> fullPlan = 1135List<ChatMessage> expected = fullPlan.Take(2).ToList(); 1156List<ChatMessage> fullPlan = 1167List<ChatMessage> expected = fullPlan.Take(2).ToList(); 1191private static async Task<List<ChatMessage>> InvokeAndAssertAsync( 1193List<ChatMessage> plan, 1194List<ChatMessage>? expected = null, 1203List<ChatMessage> chat = [plan[0]]; 1217var message = new ChatMessage(ChatRole.Assistant, [.. plan[contents.Count()].Contents]) 1227var result = await service.GetResponseAsync(new EnumeratedOnceEnumerable<ChatMessage>(chat), options, cts.Token); 1261private static async Task<List<ChatMessage>> InvokeAndAssertStreamingAsync( 1263List<ChatMessage> plan, 1264List<ChatMessage>? expected = null, 1273List<ChatMessage> chat = [plan[0]]; 1281ChatMessage message = new(ChatRole.Assistant, [.. plan[contents.Count()].Contents]) 1291var result = await service.GetStreamingResponseAsync(new EnumeratedOnceEnumerable<ChatMessage>(chat), options, cts.Token).ToChatResponseAsync();
ChatCompletion\OpenTelemetryChatClientTests.cs (2)
62IEnumerable<ChatMessage> messages, ChatOptions? options, [EnumeratorCancellation] CancellationToken cancellationToken) 105List<ChatMessage> messages =
ChatCompletion\ReducingChatClientTests.cs (8)
34var originalMessages = new List<ChatMessage> 42var reducedMessages = new List<ChatMessage> 97var reducedMessages = new List<ChatMessage> { new(ChatRole.User, "Reduced message") }; 118await client.GetResponseAsync(new List<ChatMessage> { new(ChatRole.User, "Original message") }); 177public IEnumerable<ChatMessage>? ReducedMessages { get; set; } 179public IEnumerable<ChatMessage>? LastMessagesProvided { get; private set; } 181public Task<IEnumerable<ChatMessage>> ReduceAsync(IEnumerable<ChatMessage> messages, CancellationToken cancellationToken)
ChatCompletion\UseDelegateChatClientTests.cs (6)
28IList<ChatMessage> expectedMessages = []; 78IList<ChatMessage> expectedMessages = []; 120IList<ChatMessage> expectedMessages = []; 147IEnumerable<ChatMessage> messages, ChatOptions? options, IChatClient innerClient, [EnumeratorCancellation] CancellationToken cancellationToken) 171IList<ChatMessage> expectedMessages = []; 218IEnumerable<ChatMessage> messages, ChatOptions? options, IChatClient innerClient, [EnumeratorCancellation] CancellationToken cancellationToken)
ChatReduction\MessageCountingChatReducerTests.cs (8)
51List<ChatMessage> messages = 86List<ChatMessage> messages = 125List<ChatMessage> messages = 164var messages = new List<ChatMessage>(); 179var expectedMessages = new Action<ChatMessage>[targetCount]; 200List<ChatMessage> messages = 221List<ChatMessage> messages = 239List<ChatMessage> messages =
ChatReduction\SummarizingChatReducerTests.cs (6)
67List<ChatMessage> messages = 92List<ChatMessage> messages = 121var messages = new List<ChatMessage>(); 156List<ChatMessage> messages = 182List<ChatMessage> messages = 210List<ChatMessage> messages =
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\AssertExtensions.cs (4)
18public static void EqualMessageLists(List<ChatMessage> expectedMessages, List<ChatMessage> actualMessages) 23var expectedMessage = expectedMessages[i]; 24var chatMessage = actualMessages[i];
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestChatClient.cs (4)
20public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, Task<ChatResponse>>? GetResponseAsyncCallback { get; set; } 22public Func<IEnumerable<ChatMessage>, ChatOptions?, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? GetStreamingResponseAsyncCallback { get; set; } 29public Task<ChatResponse> GetResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 32public IAsyncEnumerable<ChatResponseUpdate> GetStreamingResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default)
TestJsonSerializerContext.cs (1)
14[JsonSerializable(typeof(IList<ChatMessage>))]
Microsoft.ML.GenAI.Core (7)
CausalLMPipelineChatClient.cs (3)
36public virtual Task<ChatResponse> GetResponseAsync(IEnumerable<ChatMessage> messages, ChatOptions? options = null, CancellationToken cancellationToken = default) 47var chatMessage = new ChatMessage(ChatRole.Assistant, output); 59IEnumerable<ChatMessage> messages,
Trainer\CausalLMDataset.cs (2)
26public static CausalLMDataset Create(IEnumerable<IEnumerable<ChatMessage>> inputs, 27IEnumerable<ChatMessage> outputs,
Utility\IChatTemplateBuilder.cs (2)
31/// <param name="messages">the list of <see cref="ChatMessage"/> to be rendered</param> 35string BuildPrompt(IEnumerable<ChatMessage> messages, ChatOptions? options = null, bool appendAssistantTag = true);
Microsoft.ML.GenAI.Core.Tests (3)
CausalLMDatasetTest.cs (3)
82var inputs = new List<List<ChatMessage>> 84new List<ChatMessage> 91var outputs = new List<ChatMessage>
Microsoft.ML.GenAI.LLaMA (4)
Llama3_1ChatTemplateBuilder.cs (2)
91public string BuildPrompt(IEnumerable<ChatMessage> messages, ChatOptions? options = null, bool appendAssistantTag = true) 106foreach (var message in messages)
Llama3CausalLMChatClient.cs (2)
28IEnumerable<ChatMessage> messages, 47IEnumerable<ChatMessage> messages,
Microsoft.ML.GenAI.Phi (4)
Phi3\Phi3CausalLMChatClient.cs (2)
33IEnumerable<ChatMessage> messages, 52IEnumerable<ChatMessage> messages,
Phi3\Phi3ChatTemplateBuilder.cs (2)
92public string BuildPrompt(IEnumerable<ChatMessage> messages, ChatOptions? options = null, bool appendAssistantTag = true) 109foreach (var message in messages)
Microsoft.ML.GenAI.Samples (4)
Llama\SFT_Llama_3_2_1B.cs (2)
105var trainChatHistory = new List<ChatMessage> 111var assistantMessage = new ChatMessage(ChatRole.Assistant, data.output);
MEAI\Llama3_1.cs (1)
47var chatMessage = new ChatMessage(ChatRole.User, task);
MEAI\Phi3.cs (1)
37var chatMessage = new ChatMessage(ChatRole.User, task);