10 implementations of IChatClient
Microsoft.Extensions.AI.Abstractions (1)
Microsoft.Extensions.AI.Abstractions.Tests (1)
Microsoft.Extensions.AI.AzureAIInference (1)
Microsoft.Extensions.AI.Evaluation.Safety (1)
Microsoft.Extensions.AI.Integration.Tests (1)
Microsoft.Extensions.AI.Ollama (1)
Microsoft.Extensions.AI.OpenAI (2)
Microsoft.Extensions.AI.Tests (1)
Microsoft.ML.GenAI.Core (1)
426 references to IChatClient
Aspire.Azure.AI.Inference (5)
Aspire.Azure.AI.Inference.Tests (6)
Aspire.Azure.AI.OpenAI.Tests (23)
Aspire.OpenAI (8)
Aspire.OpenAI.Tests (23)
Microsoft.Extensions.AI (98)
ChatCompletion\AnonymousDelegatingChatClient.cs (6)
23private readonly Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, Task<ChatResponse>>? _getResponseFunc;
31private readonly Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? _getStreamingResponseFunc;
52IChatClient innerClient,
78IChatClient innerClient,
79Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, Task<ChatResponse>>? getResponseFunc,
80Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? getStreamingResponseFunc)
ChatCompletion\ChatClientBuilder.cs (34)
12/// <summary>A builder for creating pipelines of <see cref="IChatClient"/>.</summary>
15private readonly Func<IServiceProvider, IChatClient> _innerClientFactory;
18private List<Func<IChatClient, IServiceProvider, IChatClient>>? _clientFactories;
21/// <param name="innerClient">The inner <see cref="IChatClient"/> that represents the underlying backend.</param>
23public ChatClientBuilder(IChatClient innerClient)
30/// <param name="innerClientFactory">A callback that produces the inner <see cref="IChatClient"/> that represents the underlying backend.</param>
31public ChatClientBuilder(Func<IServiceProvider, IChatClient> innerClientFactory)
36/// <summary>Builds an <see cref="IChatClient"/> that represents the entire pipeline. Calls to this instance will pass through each of the pipeline stages in turn.</summary>
38/// The <see cref="IServiceProvider"/> that should provide services to the <see cref="IChatClient"/> instances.
41/// <returns>An instance of <see cref="IChatClient"/> that represents the entire pipeline.</returns>
42public IChatClient Build(IServiceProvider? services = null)
45var chatClient = _innerClientFactory(services);
57$"Ensure that the callbacks passed to {nameof(Use)} return non-null {nameof(IChatClient)} instances.");
70public ChatClientBuilder Use(Func<IChatClient, IChatClient> clientFactory)
82public ChatClientBuilder Use(Func<IChatClient, IServiceProvider, IChatClient> clientFactory)
92/// an implementation for both <see cref="IChatClient.GetResponseAsync"/> and <see cref="IChatClient.GetStreamingResponseAsync"/>.
95/// A delegate that provides the implementation for both <see cref="IChatClient.GetResponseAsync"/> and
96/// <see cref="IChatClient.GetStreamingResponseAsync"/>. This delegate is invoked with the list of chat messages, the chat
117/// an implementation for both <see cref="IChatClient.GetResponseAsync"/> and <see cref="IChatClient.GetStreamingResponseAsync"/>.
120/// A delegate that provides the implementation for <see cref="IChatClient.GetResponseAsync"/>. When <see langword="null"/>,
121/// <paramref name="getStreamingResponseFunc"/> must be non-null, and the implementation of <see cref="IChatClient.GetResponseAsync"/>
125/// A delegate that provides the implementation for <see cref="IChatClient.GetStreamingResponseAsync"/>. When <see langword="null"/>,
126/// <paramref name="getResponseFunc"/> must be non-null, and the implementation of <see cref="IChatClient.GetStreamingResponseAsync"/>
132/// <paramref name="getResponseFunc"/> will provide the implementation of <see cref="IChatClient.GetResponseAsync"/>, and
133/// <paramref name="getStreamingResponseFunc"/> will provide the implementation of <see cref="IChatClient.GetStreamingResponseAsync"/>.
135/// is supplied without <paramref name="getStreamingResponseFunc"/>, the implementation of <see cref="IChatClient.GetStreamingResponseAsync"/>
138/// <see cref="IChatClient.GetResponseAsync"/> will be implemented by combining the updates from <paramref name="getStreamingResponseFunc"/>.
143Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, Task<ChatResponse>>? getResponseFunc,
144Func<IEnumerable<ChatMessage>, ChatOptions?, IChatClient, CancellationToken, IAsyncEnumerable<ChatResponseUpdate>>? getStreamingResponseFunc)
ChatCompletion\ChatClientBuilderServiceCollectionExtensions.cs (15)
10/// <summary>Provides extension methods for registering <see cref="IChatClient"/> with a <see cref="IServiceCollection"/>.</summary>
13/// <summary>Registers a singleton <see cref="IChatClient"/> in the <see cref="IServiceCollection"/>.</summary>
15/// <param name="innerClient">The inner <see cref="IChatClient"/> that represents the underlying backend.</param>
23IChatClient innerClient,
32/// <summary>Registers a singleton <see cref="IChatClient"/> in the <see cref="IServiceCollection"/>.</summary>
34/// <param name="innerClientFactory">A callback that produces the inner <see cref="IChatClient"/> that represents the underlying backend.</param>
42Func<IServiceProvider, IChatClient> innerClientFactory,
49serviceCollection.Add(new ServiceDescriptor(typeof(IChatClient), builder.Build, lifetime));
53/// <summary>Registers a keyed singleton <see cref="IChatClient"/> in the <see cref="IServiceCollection"/>.</summary>
56/// <param name="innerClient">The inner <see cref="IChatClient"/> that represents the underlying backend.</param>
65IChatClient innerClient,
74/// <summary>Registers a keyed singleton <see cref="IChatClient"/> in the <see cref="IServiceCollection"/>.</summary>
77/// <param name="innerClientFactory">A callback that produces the inner <see cref="IChatClient"/> that represents the underlying backend.</param>
86Func<IServiceProvider, IChatClient> innerClientFactory,
93serviceCollection.Add(new ServiceDescriptor(typeof(IChatClient), serviceKey, factory: (services, serviceKey) => builder.Build(services), lifetime));
Microsoft.Extensions.AI.Abstractions (51)
ChatCompletion\ChatClientExtensions.cs (14)
12/// <summary>Provides a collection of static methods for extending <see cref="IChatClient"/> instances.</summary>
15/// <summary>Asks the <see cref="IChatClient"/> for an object of type <typeparamref name="TService"/>.</summary>
22/// The purpose of this method is to allow for the retrieval of strongly typed services that may be provided by the <see cref="IChatClient"/>,
25public static TService? GetService<TService>(this IChatClient client, object? serviceKey = null)
33/// Asks the <see cref="IChatClient"/> for an object of the specified type <paramref name="serviceType"/>
44/// The purpose of this method is to allow for the retrieval of services that are required to be provided by the <see cref="IChatClient"/>,
47public static object GetRequiredService(this IChatClient client, Type serviceType, object? serviceKey = null)
58/// Asks the <see cref="IChatClient"/> for an object of type <typeparamref name="TService"/>
68/// The purpose of this method is to allow for the retrieval of strongly typed services that are required to be provided by the <see cref="IChatClient"/>,
71public static TService GetRequiredService<TService>(this IChatClient client, object? serviceKey = null)
92this IChatClient client,
112this IChatClient client,
132this IChatClient client,
152this IChatClient client,
Microsoft.Extensions.AI.Abstractions.Tests (7)
Microsoft.Extensions.AI.AzureAIInference (5)
Microsoft.Extensions.AI.AzureAIInference.Tests (26)
AzureAIInferenceChatClientTests.cs (25)
40IChatClient chatClient = client.AsIChatClient(modelId: null);
57IChatClient chatClient = client.AsIChatClient(model);
68IChatClient chatClient = client.AsIChatClient("model");
70Assert.Same(chatClient, chatClient.GetService<IChatClient>());
73using IChatClient pipeline = chatClient
87Assert.IsType<FunctionInvokingChatClient>(pipeline.GetService<IChatClient>());
142using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
215using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
252using IChatClient client = CreateChatClient(httpClient, modelId: null!);
269using IChatClient client = CreateChatClient(httpClient, modelId: null!);
327using IChatClient client = CreateChatClient(httpClient, modelId: null!);
411using IChatClient client = CreateChatClient(httpClient, modelId: null!);
500using IChatClient client = CreateChatClient(httpClient, modelId: null!);
575using IChatClient client = CreateChatClient(httpClient, modelId: null!);
682using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
741using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
792using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
828using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
885using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
982using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1065using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1128using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1247using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1333using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1364private static IChatClient CreateChatClient(HttpClient httpClient, string modelId) =>
Microsoft.Extensions.AI.Evaluation (13)
Microsoft.Extensions.AI.Evaluation.Integration.Tests (8)
Microsoft.Extensions.AI.Evaluation.Reporting (10)
Microsoft.Extensions.AI.Evaluation.Reporting.Azure (1)
Microsoft.Extensions.AI.Evaluation.Safety (9)
Microsoft.Extensions.AI.Integration.Tests (16)
Microsoft.Extensions.AI.Ollama (2)
Microsoft.Extensions.AI.Ollama.Tests (12)
Microsoft.Extensions.AI.OllamaSharp.Integration.Tests (1)
Microsoft.Extensions.AI.OpenAI (10)
Microsoft.Extensions.AI.OpenAI.Tests (36)
OpenAIChatClientTests.cs (25)
45IChatClient chatClient = client.GetChatClient(model).AsIChatClient();
62IChatClient chatClient = openAIClient.AsIChatClient();
64Assert.Same(chatClient, chatClient.GetService<IChatClient>());
70using IChatClient pipeline = chatClient
83Assert.IsType<FunctionInvokingChatClient>(pipeline.GetService<IChatClient>());
90IChatClient chatClient = openAIClient.AsIChatClient();
92Assert.Same(chatClient, chatClient.GetService<IChatClient>());
95using IChatClient pipeline = chatClient
108Assert.IsType<FunctionInvokingChatClient>(pipeline.GetService<IChatClient>());
158using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
236using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
319using IChatClient client = CreateChatClient(httpClient, modelId: "gpt-4o-mini");
398using IChatClient client = CreateChatClient(httpClient, modelId: "gpt-4o-mini");
483using IChatClient client = CreateChatClient(httpClient, modelId: "gpt-4o-mini");
559using IChatClient client = CreateChatClient(httpClient, modelId: "gpt-4o-mini");
669using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
759using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
866using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
962using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1081using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1165using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1264using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1404using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1524using IChatClient client = CreateChatClient(httpClient, "gpt-4o-mini");
1566private static IChatClient CreateChatClient(HttpClient httpClient, string modelId) =>
Microsoft.Extensions.AI.Tests (56)