Skip to content

Commit

Permalink
update (#125)
Browse files Browse the repository at this point in the history
  • Loading branch information
LittleLittleCloud authored Jul 11, 2024
1 parent ebb6b10 commit a89b6fc
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 8 deletions.
13 changes: 13 additions & 0 deletions ChatRoom/ChatRoom.Common/ChatPlatformClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Orleans;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using ChatRoom.SDK.Orleans;

namespace ChatRoom.SDK;

Expand Down Expand Up @@ -56,6 +57,12 @@ public async Task RegisterAgentAsync(string name, string description, bool isHum
}
}

public async Task RegisterAutoGenOrchestratorAsync(string name, AutoGen.Core.IOrchestrator orchestrator)
{
var observer = new AutoGenOrchestratorObserver(orchestrator);
await this.RegisterOrchestratorAsync(name, observer);
}

public async Task RegisterOrchestratorAsync(string name, IOrchestrator orchestrator)
{
var observer = new OrchestratorObserver(orchestrator);
Expand Down Expand Up @@ -122,6 +129,12 @@ public async Task ClearChannelHistory(string channelName)
await channel.ClearHistory();
}

public async Task SendMessageToChannel(string channelName, ChatMsg msg)
{
var channel = _client.GetGrain<IChannelGrain>(channelName);
await channel.SendMessage(msg);
}

public async Task<ChatMsg?> GenerateNextReply(string channelName, string[]? candidates = null, ChatMsg[]? chatMsgs = null, string? orchestrator = null)
{
var room = _client.GetGrain<IRoomGrain>(_room);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,7 @@ public async Task<ActionResult> SendTextMessageToChannel(
return new BadRequestObjectResult("You are not authorized to send message to this channel");
}

var channelGrain = _clusterClient.GetGrain<IChannelGrain>(channel);

await channelGrain.SendMessage(message);
await _chatPlatformClient.SendMessageToChannel(channel, message);

return new OkResult();
}
Expand Down
33 changes: 33 additions & 0 deletions ChatRoom/ChatRoom.Common/Orleans/AutoGenOrchestratorObserver.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AutoGen.Core;

namespace ChatRoom.SDK.Orleans;

internal class AutoGenOrchestratorObserver : IOrchestratorObserver
{
private readonly AutoGen.Core.IOrchestrator _orchestrator;
public AutoGenOrchestratorObserver(AutoGen.Core.IOrchestrator orchestrator)
{
_orchestrator = orchestrator;
}

public async Task<string?> GetNextSpeaker(AgentInfo[] members, ChatMsg[] messages)
{
var autogenMessages = messages.Select(msg => msg.ToAutoGenMessage()).ToArray();
var dummyAgents = members.Select(x => new DummyAgent(x)).ToArray();

var context = new OrchestrationContext()
{
Candidates = dummyAgents,
ChatHistory = autogenMessages,
};

var nextAgent = await _orchestrator.GetNextSpeakerAsync(context);

return nextAgent?.Name;
}
}
10 changes: 5 additions & 5 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@
<PackageVersion Include="Microsoft.Orleans.Streaming" Version="8.0.0" />
<PackageVersion Include="Microsoft.Orleans.Server" Version="8.0.0" />
<PackageVersion Include="Microsoft.Orleans.TestingHost" Version="8.0.0" />
<PackageVersion Include="AutoGen" Version="0.0.15" />
<PackageVersion Include="AutoGen.SemanticKernel" Version="0.0.15" />
<PackageVersion Include="AutoGen.OpenAI" Version="0.0.15" />
<PackageVersion Include="AutoGen.Core" Version="0.0.15" />
<PackageVersion Include="AutoGen.SourceGenerator" Version="0.0.15" />
<PackageVersion Include="AutoGen" Version="0.0.16" />
<PackageVersion Include="AutoGen.SemanticKernel" Version="0.0.16" />
<PackageVersion Include="AutoGen.OpenAI" Version="0.0.16" />
<PackageVersion Include="AutoGen.Core" Version="0.0.16" />
<PackageVersion Include="AutoGen.SourceGenerator" Version="0.0.16" />
<PackageVersion Include="Microsoft.SemanticKernel.Plugins.Web" Version="1.10.0-alpha" />
<PackageVersion Include="Microsoft.PowerShell.SDK" Version="7.4.2" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" PrivateAssets="All" Version="8.0.0" />
Expand Down
32 changes: 32 additions & 0 deletions test/ChatRoom.Client.Tests/ChatRoomClientCommandTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
using Microsoft.AspNetCore.TestHost;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json.Linq;
using AutoGen.Core;
using Moq;

namespace ChatRoom.Client.Tests;

Expand Down Expand Up @@ -97,4 +99,34 @@ public async Task ItCreateAndRemoveChannelTestAsync()
channels = await _client.GetChannels();
channels.Count().Should().Be(0);
}


[Fact]
public async Task ItUseAutoGenOrchstratorTest()
{
var orchestrator = new RoundRobinOrchestrator();
await _client.RegisterAutoGenOrchestratorAsync("autogen-round-robin", orchestrator);

var availableOrchestrators = await _client.GetOrchestrators();
availableOrchestrators.Should().Contain("autogen-round-robin");

// create a channel with User, gpt3.5, and autogen-round-robin orchestrator
await _client.CreateChannel("autogen-channel", ["User", "gpt3.5"], orchestrators: ["autogen-round-robin"]);

// send a dummy user message to the channel
var userMessage = new ChatMsg("User", "Hello, I am a user.");
await _client.SendMessageToChannel("autogen-channel", userMessage);

// generate a reply
var reply = await _client.GenerateNextReply("autogen-channel", chatMsgs: [userMessage], candidates: ["User", "gpt3.5"], orchestrator: "autogen-round-robin");

reply!.From.Should().Be("gpt3.5");

// clean up
await _client.DeleteChannel("autogen-channel");
await _client.UnregisterOrchestratorAsync("autogen-round-robin");

availableOrchestrators = await _client.GetOrchestrators();
availableOrchestrators.Should().NotContain("autogen-round-robin");
}
}
2 changes: 2 additions & 0 deletions test/ChatRoom.Tests/ChannelGrainTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using AutoGen.Core;
using ChatRoom.SDK;
using FluentAssertions;
using Moq;
Expand Down Expand Up @@ -69,4 +70,5 @@ public async Task ItUseOrchstratorTest()
var chatHistory = await channel.ReadHistory(1000);
chatHistory.Count().Should().Be(2);
}

}

0 comments on commit a89b6fc

Please sign in to comment.