Skip to content

Commit

Permalink
Keyed chat client
Browse files Browse the repository at this point in the history
  • Loading branch information
kostapetan committed Feb 5, 2025
1 parent 30ffaf3 commit f4f9393
Show file tree
Hide file tree
Showing 20 changed files with 75 additions and 65 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
<PackageReference Include="Octokit.Webhooks.AspNetCore" Version="2.4.1" />
<PackageReference Include="Octokit" Version="14.0.0" />

<PackageReference Include="Aspire.Azure.AI.OpenAI" Version="9.1.0-preview.1.25081.1" />
<PackageReference Include="Aspire.Azure.AI.OpenAI" Version="9.1.0-preview.1.25104.6" />

<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.22.0" />

Expand All @@ -26,8 +26,8 @@

<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.3.1" />

<PackageReference Include="Dapr.Actors.AspNetCore" Version="1.15.0-rc02" />
<PackageReference Include="Dapr.AspNetCore" Version="1.15.0-rc02" />
<PackageReference Include="Dapr.Actors.AspNetCore" Version="1.15.0-rc03" />
<PackageReference Include="Dapr.AspNetCore" Version="1.15.0-rc03" />
</ItemGroup>

<ItemGroup>
Expand Down
8 changes: 4 additions & 4 deletions samples/gh-flow/src/seed-memory/seed-memory.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@

<ItemGroup>
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
<PackageReference Include="Microsoft.SemanticKernel" Version="1.35.0" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Qdrant" Version="1.35.0-preview" />
<PackageReference Include="Microsoft.SemanticKernel.Plugins.Memory" Version="1.35.0-alpha" />
<PackageReference Include="Microsoft.SemanticKernel" Version="1.36.0" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Qdrant" Version="1.36.0-preview" />
<PackageReference Include="Microsoft.SemanticKernel.Plugins.Memory" Version="1.36.0-alpha" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="9.0.1" />
<PackageReference Include="PdfPig" Version="0.1.10-alpha-20250122-52098" />
<PackageReference Include="PdfPig" Version="0.1.10-alpha-20250203-fdb88" />
</ItemGroup>

<ItemGroup>
Expand Down
10 changes: 5 additions & 5 deletions samples/marketing/src/backend/Marketing.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@
<PackageReference Include="Octokit" Version="14.0.0" />


<PackageReference Include="Aspire.Azure.AI.OpenAI" Version="9.1.0-preview.1.25081.1" />
<PackageReference Include="Aspire.Azure.Data.Tables" Version="9.1.0-preview.1.25081.1" />
<PackageReference Include="Aspire.Azure.Storage.Blobs" Version="9.1.0-preview.1.25081.1" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="9.2.0-preview.1.25080.2" />
<PackageReference Include="Aspire.Azure.AI.OpenAI" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Azure.Data.Tables" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Azure.Storage.Blobs" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="9.2.0-preview.1.25105.1" />
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.2.0-preview.1.25080.2" />
<PackageReference Include="Microsoft.Orleans.Persistence.AzureStorage" Version="9.0.1" />
<PackageReference Include="Microsoft.Orleans.Clustering.AzureStorage" Version="9.0.1" />
Expand All @@ -44,7 +44,7 @@
<PackageReference Include="Swashbuckle.AspNetCore" Version="7.2.0" />

<PackageReference Include="Microsoft.Extensions.Azure" Version="1.9.0" />
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.2.0-preview.1.25080.2" />
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.2.0-preview.1.25105.1" />
<PackageReference Include="Azure.ResourceManager.ContainerInstance" Version="1.3.0-beta.1" />
<PackageReference Include="Azure.Storage.Files.Shares" Version="12.21.0" />

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,12 @@
using SupportCenter.ApiService.Extensions;
using SupportCenter.ApiService.Options;
using SupportCenter.ApiService.SignalRHub;
using static SupportCenter.ApiService.Options.Consts;

namespace SupportCenter.ApiService.Agents.Conversation;
[ImplicitStreamSubscription(Consts.OrleansNamespace)]
[ImplicitStreamSubscription(OrleansNamespace)]
public class Conversation([PersistentState("state", "messages")] IPersistentState<AgentState<ConversationState>> state,
ILogger<Conversation> logger, IChatClient chatClient) : AiAgent<ConversationState>(state)
ILogger<Conversation> logger, [FromKeyedServices(Gpt4oMini)] IChatClient chatClient) : AiAgent<ConversationState>(state)
{
protected override string Namespace => Consts.OrleansNamespace;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using SupportCenter.ApiService.Events;
using SupportCenter.ApiService.Extensions;
using SupportCenter.ApiService.Options;
using static SupportCenter.ApiService.Options.Consts;

namespace SupportCenter.ApiService.Agents.CustomerInfo;

Expand All @@ -14,7 +15,7 @@ public class CustomerInfo(
ILogger<CustomerInfo> logger,
IServiceProvider serviceProvider,
ICustomerRepository customerRepository,
IChatClient chatClient) : AiAgent<CustomerInfoState>(state)
[FromKeyedServices(Gpt4oMini)] IChatClient chatClient) : AiAgent<CustomerInfoState>(state)
{
protected override string Namespace => Consts.OrleansNamespace;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Microsoft.Extensions.AI;
using SupportCenter.ApiService.Events;
using SupportCenter.ApiService.Options;
using static SupportCenter.ApiService.Options.Consts;

namespace SupportCenter.ApiService.Agents.Discount;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@
using SupportCenter.ApiService.Attributes;
using SupportCenter.ApiService.Events;
using SupportCenter.ApiService.Extensions;
using SupportCenter.ApiService.Options;
using System.Reflection;
using static SupportCenter.ApiService.Options.Consts;

namespace SupportCenter.ApiService.Agents.Dispatcher;

[ImplicitStreamSubscription(Consts.OrleansNamespace)]
[ImplicitStreamSubscription(OrleansNamespace)]
[DispatcherChoice("QnA", "The customer is asking a question related to internal Contoso knowledge base.", EventType.QnARequested)]
[DispatcherChoice("Discount", "The customer is asking for a discount about a product or service.", EventType.DiscountRequested)]
[DispatcherChoice("Invoice", "The customer is asking for an invoice.", EventType.InvoiceRequested)]
Expand All @@ -18,9 +18,9 @@ namespace SupportCenter.ApiService.Agents.Dispatcher;
public class Dispatcher(
ILogger<Dispatcher> logger,
[PersistentState("state", "messages")] IPersistentState<AgentState<DispatcherState>> state,
IChatClient chatClient) : AiAgent<DispatcherState>(state)
[FromKeyedServices(Gpt4oMini)] IChatClient chatClient) : AiAgent<DispatcherState>(state)
{
protected override string Namespace => Consts.OrleansNamespace;
protected override string Namespace => OrleansNamespace;
public async override Task HandleEvent(Event item)
{
logger.LogInformation("[{Agent}]:[{EventType}]:[{EventData}]", nameof(Dispatcher), item.Type, item.Data);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
using Microsoft.Extensions.AI;
using SupportCenter.ApiService.Events;
using SupportCenter.ApiService.Extensions;
using SupportCenter.ApiService.Options;
using static SupportCenter.ApiService.Options.Consts;

namespace SupportCenter.ApiService.Agents.Invoice;

[ImplicitStreamSubscription(Consts.OrleansNamespace)]
[ImplicitStreamSubscription(OrleansNamespace)]
public class Invoice([PersistentState("state", "messages")] IPersistentState<AgentState<InvoiceState>> state,
ILogger<Invoice> logger,
IChatClient chatClient) : AiAgent<InvoiceState>(state)
[FromKeyedServices(Gpt4oMini)] IChatClient chatClient) : AiAgent<InvoiceState>(state)
{
protected override string Namespace => Consts.OrleansNamespace;
protected override string Namespace => OrleansNamespace;

public async override Task HandleEvent(Event item)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,15 @@
using SupportCenter.ApiService.Events;
using SupportCenter.ApiService.Extensions;
using SupportCenter.ApiService.Options;
using static SupportCenter.ApiService.Options.Consts;

namespace SupportCenter.ApiService.Agents.QnA;
[ImplicitStreamSubscription(Consts.OrleansNamespace)]
[ImplicitStreamSubscription(OrleansNamespace)]
public class QnA([PersistentState("state", "messages")] IPersistentState<AgentState<QnAState>> state,
ILogger<QnA> logger,
IChatClient chatClient) : AiAgent<QnAState>(state)
[FromKeyedServices(Gpt4oMini)] IChatClient chatClient) : AiAgent<QnAState>(state)
{
protected override string Namespace => Consts.OrleansNamespace;
protected override string Namespace => OrleansNamespace;

public async override Task HandleEvent(Event item)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@
using Microsoft.AI.Agents.Orleans;
using SupportCenter.ApiService.Events;
using SupportCenter.ApiService.Extensions;
using SupportCenter.ApiService.Options;
using SupportCenter.ApiService.SignalRHub;
using System.Collections.Concurrent;
using static SupportCenter.ApiService.Options.Consts;

namespace SupportCenter.ApiService.Agents.SignalR;

[ImplicitStreamSubscription(Consts.OrleansNamespace)]
[ImplicitStreamSubscription(OrleansNamespace)]
public class SignalR : Agent
{
protected override string Namespace => Consts.OrleansNamespace;
protected override string Namespace => OrleansNamespace;
private readonly ConcurrentDictionary<string, AgentType> _eventTypeToSenderTypeMapping = new()
{
[nameof(EventType.QnARetrieved)] = AgentType.QnA,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
public static class Consts
{
public const string OrleansNamespace = "SupportCenter";
public const string Gpt4oMini = "gpt-4o-mini";
}
4 changes: 4 additions & 0 deletions samples/support-center/SupportCenter.ApiService/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
using Microsoft.Extensions.AI;
using OpenAI;
using SupportCenter.ApiService.Extensions;
using SupportCenter.ApiService.SignalRHub;
using System.Text.Json;
using static SupportCenter.ApiService.Options.Consts;

var builder = WebApplication.CreateBuilder(args);

Expand All @@ -20,6 +23,7 @@
builder.AddQdrantClient("qdrant");
builder.AddAzureSearchClient("searchConnectionName");

builder.Services.AddKeyedChatClient(Gpt4oMini, s => s.GetRequiredService<OpenAIClient>().AsChatClient(Gpt4oMini));
// Allow any CORS origin if in DEV
const string AllowDebugOriginPolicy = "AllowDebugOrigin";
const string AllowOriginPolicy = "AllowOrigin";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,26 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Aspire.Azure.AI.OpenAI" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Azure.Search.Documents" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Microsoft.Azure.Cosmos" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Qdrant.Client" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.StackExchange.Redis" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Azure.AI.OpenAI" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Azure.Search.Documents" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Microsoft.Azure.Cosmos" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Qdrant.Client" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.StackExchange.Redis" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Azure.Storage.Files.Shares" Version="12.21.0" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.0-alpha.1.24416.8" />
<PackageReference Include="Microsoft.Azure.SignalR" Version="1.30.0" />
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.2.0-preview.1.25080.2" />
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.2.0-preview.1.25105.1" />
<PackageReference Include="Microsoft.Orleans.Clustering.Redis" Version="9.0.1" />
<PackageReference Include="Microsoft.Orleans.GrainDirectory.Redis" Version="9.0.1" />
<PackageReference Include="Microsoft.Orleans.Persistence.Redis" Version="9.0.1" />
<PackageReference Include="Microsoft.Orleans.Reminders.Redis" Version="9.0.1" />
<PackageReference Include="Microsoft.SemanticKernel.Planners.Handlebars" Version="1.35.0-preview" />
<PackageReference Include="Microsoft.SemanticKernel.Planners.OpenAI" Version="1.35.0-preview" />
<PackageReference Include="Microsoft.SemanticKernel.Planners.Handlebars" Version="1.36.0-preview" />
<PackageReference Include="Microsoft.SemanticKernel.Planners.OpenAI" Version="1.36.0-preview" />

<PackageReference Include="Microsoft.SemanticKernel" Version="1.35.0" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Qdrant" Version="1.35.0-preview" />
<PackageReference Include="Microsoft.SemanticKernel.Plugins.Memory" Version="1.35.0-alpha" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.AzureAISearch" Version="1.35.0-preview" />
<PackageReference Include="Microsoft.SemanticKernel" Version="1.36.0" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Qdrant" Version="1.36.0-preview" />
<PackageReference Include="Microsoft.SemanticKernel.Plugins.Memory" Version="1.36.0-alpha" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.AzureAISearch" Version="1.36.0-preview" />
<PackageReference Include="Microsoft.Orleans.Server" Version="9.0.1" />
<PackageReference Include="Microsoft.Orleans.Sdk" Version="9.0.1" />
<PackageReference Include="Microsoft.Orleans.Runtime" Version="9.0.1" />
Expand Down
5 changes: 3 additions & 2 deletions samples/support-center/SupportCenter.AppHost/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@
.RunAsEmulator();

var cosmos = builder.AddAzureCosmosDB("cosmos-db")
.WithDatabase("supportcenter")
.RunAsEmulator();
.RunAsEmulator()
.AddCosmosDatabase("supportcenter")
.AddContainer("items","/id");

var openai = builder.ExecutionContext.IsPublishMode
? builder.AddAzureOpenAI("openAiConnection")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">

<Sdk Name="Aspire.AppHost.Sdk" Version="9.0.0" />

Expand All @@ -18,18 +18,18 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Aspire.Hosting.AppHost" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.Azure.ApplicationInsights" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.Redis" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.Azure" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.Azure.CognitiveServices" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.Azure.SignalR" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.Azure.Search" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.Azure.CosmosDB" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.Azure.AppContainers" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.NodeJs" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.Orleans" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.Qdrant" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Aspire.Hosting.AppHost" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.Azure.ApplicationInsights" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.Redis" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.Azure" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.Azure.CognitiveServices" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.Azure.SignalR" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.Azure.Search" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.Azure.CosmosDB" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.Azure.AppContainers" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.NodeJs" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.Orleans" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Aspire.Hosting.Qdrant" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="Azure.Identity" Version="1.13.2" />
<PackageReference Include="System.IdentityModel.Tokens.Jwt" Version="8.3.1" />
</ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

<ItemGroup>
<PackageReference Include="Azure.AI.DocumentIntelligence" Version="1.0.0" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.AzureAISearch" Version="1.35.0-preview" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.AzureAISearch" Version="1.36.0-preview" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.1" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Qdrant" Version="1.35.0-preview" />
<PackageReference Include="Microsoft.SemanticKernel.Connectors.Qdrant" Version="1.36.0-preview" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="9.0.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="9.0.1" />
<PackageReference Include="PdfPig" Version="0.1.10-alpha-20250122-52098" />
<PackageReference Include="PdfPig" Version="0.1.10-alpha-20250203-fdb88" />
</ItemGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />

<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.2.0-preview.1.25080.2" />
<PackageReference Include="Microsoft.Extensions.ServiceDiscovery" Version="9.1.0-preview.1.25080.8" />
<PackageReference Include="Microsoft.Extensions.Http.Resilience" Version="9.2.0-preview.1.25105.1" />
<PackageReference Include="Microsoft.Extensions.ServiceDiscovery" Version="9.1.0-preview.1.25104.6" />
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.11.1" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.11.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.11.0" />
Expand Down
6 changes: 3 additions & 3 deletions src/Oagents.Dapr/Oagents.Dapr.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Dapr.Client" Version="1.15.0-rc02" />
<PackageReference Include="Dapr.Actors" Version="1.15.0-rc02" />
<PackageReference Include="Dapr.Client" Version="1.15.0-rc03" />
<PackageReference Include="Dapr.Actors" Version="1.15.0-rc03" />
<PackageReference Include="Microsoft.Extensions.VectorData.Abstractions" Version="9.0.0-preview.1.25078.1" />
<PackageReference Include="Microsoft.Extensions.AI" Version="9.2.0-preview.1.25080.2" />
<PackageReference Include="Microsoft.Extensions.AI" Version="9.2.0-preview.1.25105.1" />
</ItemGroup>

<ItemGroup>
Expand Down
Loading

0 comments on commit f4f9393

Please sign in to comment.