Skip to content

Commit 3347d27

Browse files
authored
Merge pull request #143 from hchen2020/master
Set default ModelName as null.
2 parents 17bfcb2 + 18e318b commit 3347d27

File tree

12 files changed

+45
-28
lines changed

12 files changed

+45
-28
lines changed

src/Infrastructure/BotSharp.Abstraction/Conversations/IConversationStateService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public interface IConversationStateService
88
ConversationState Load(string conversationId);
99
string GetState(string name, string defaultValue = "");
1010
ConversationState GetStates();
11-
void SetState(string name, string value);
11+
IConversationStateService SetState(string name, string value);
1212
void CleanState();
1313
void Save();
1414
}

src/Infrastructure/BotSharp.Abstraction/Conversations/Models/IncomingMessageModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class IncomingMessageModel
1212
/// Model name
1313
/// </summary>
1414
[JsonPropertyName("model")]
15-
public virtual string ModelName { get; set; } = "gpt-3.5-turbo";
15+
public virtual string? ModelName { get; set; } = null;
1616

1717
/// <summary>
1818
/// The sampling temperature to use that controls the apparent creativity of generated completions.

src/Infrastructure/BotSharp.Core/Agents/Services/AgentService.GetAgents.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using BotSharp.Abstraction.Agents.Models;
22
using BotSharp.Abstraction.Repositories;
3-
using System.IO;
43

54
namespace BotSharp.Core.Agents.Services;
65

@@ -17,6 +16,9 @@ join u in db.Users on ua.UserId equals u.Id
1716
return query.ToList();
1817
}
1918

19+
#if !DEBUG
20+
[MemoryCache(10 * 60)]
21+
#endif
2022
public async Task<Agent> GetAgent(string id)
2123
{
2224
var db = _services.GetRequiredService<IBotSharpRepository>();

src/Infrastructure/BotSharp.Core/Conversations/Services/ConversationStateService.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public ConversationStateService(ILogger<ConversationStateService> logger,
2929
_states = new ConversationState();
3030
}
3131

32-
public void SetState(string name, string value)
32+
public IConversationStateService SetState(string name, string value)
3333
{
3434
var hooks = _services.GetServices<IConversationHook>();
3535
string preValue = _states.ContainsKey(name) ? _states[name] : "";
@@ -43,6 +43,8 @@ public void SetState(string name, string value)
4343
hook.OnStateChanged(name, preValue, currentValue).Wait();
4444
}
4545
}
46+
47+
return this;
4648
}
4749

4850
public ConversationState Load(string conversationId)
@@ -118,6 +120,12 @@ public string GetState(string name, string defaultValue = "")
118120
{
119121
_states[name] = defaultValue ?? "";
120122
}
123+
124+
if (_states[name] == null)
125+
{
126+
return defaultValue;
127+
}
128+
121129
return _states[name];
122130
}
123131

src/Infrastructure/BotSharp.Core/Infrastructures/CompletionProvider.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@ namespace BotSharp.Core.Infrastructures;
44

55
public class CompletionProvider
66
{
7-
public static IChatCompletion GetChatCompletion(IServiceProvider services)
7+
public static IChatCompletion GetChatCompletion(IServiceProvider services, string? model = null)
88
{
99
var completions = services.GetServices<IChatCompletion>();
10-
// var settings = services.GetRequiredService<ConversationSetting>();
11-
// completions.FirstOrDefault(x => x.GetType().FullName.EndsWith(settings.ChatCompletion));
10+
1211
var state = services.GetRequiredService<IConversationStateService>();
13-
var model = state.GetState("model", "gpt-3.5-turbo");
12+
if (model == null)
13+
{
14+
model = state.GetState("model", "gpt-3.5-turbo");
15+
}
16+
1417
return completions.FirstOrDefault(x => x.ModelName == model);
1518
}
1619
}

src/Infrastructure/BotSharp.Core/Routing/RouteToAgentFn.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ private bool HasMissingRequiredField(RoleDialogModel message, out string agentId
9696
{
9797
// Add field to args
9898
message.FunctionArgs = AppendPropertyToArgs(message.FunctionArgs, "missing_fields", missingFields);
99-
message.ExecutionResult = $"missing some information";
99+
message.ExecutionResult = $"missing some information: [{string.Join(',', missingFields)}]";
100100

101101
// Handle redirect
102102
if (!string.IsNullOrEmpty(routingRule.RedirectTo))
@@ -107,6 +107,11 @@ private bool HasMissingRequiredField(RoleDialogModel message, out string agentId
107107
// Add redirected agent
108108
message.FunctionArgs = AppendPropertyToArgs(message.FunctionArgs, "redirect_to", agent.Name);
109109
}
110+
else
111+
{
112+
// back to router
113+
agentId = message.CurrentAgentId;
114+
}
110115
}
111116

112117
return missingFields.Any();

src/Infrastructure/BotSharp.Core/Routing/Router.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using Aspects.Cache;
21
using BotSharp.Abstraction.Agents.Models;
32
using BotSharp.Abstraction.Repositories;
43
using BotSharp.Abstraction.Routing.Models;
@@ -29,7 +28,9 @@ public virtual async Task<Agent> LoadRouter()
2928
return await agentService.LoadAgent(AgentId);
3029
}
3130

31+
#if !DEBUG
3232
[MemoryCache(10 * 60)]
33+
#endif
3334
public RoutingItem[] GetRoutingRecords()
3435
{
3536
var db = _services.GetRequiredService<IBotSharpRepository>();
@@ -53,11 +54,11 @@ public RoutingItem[] GetRoutingRecords()
5354

5455
public RoutingItem GetRecordByName(string name)
5556
{
56-
return GetRoutingRecords().First(x => x.Name.ToLower() == name.ToLower());
57+
return GetRoutingRecords().FirstOrDefault(x => x.Name.ToLower() == name.ToLower());
5758
}
5859

5960
public RoutingItem GetRecordByAgentId(string id)
6061
{
61-
return GetRoutingRecords().First(x => x.AgentId == id);
62+
return GetRoutingRecords().FirstOrDefault(x => x.AgentId == id);
6263
}
6364
}

src/Infrastructure/BotSharp.Core/Routing/Simulator.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,11 @@ await chatCompletion.GetChatCompletionsAsync(agent, wholeDialogs, async msg
134134

135135
private void SaveStateByArgs(JsonDocument args)
136136
{
137+
if (args == null)
138+
{
139+
return;
140+
}
141+
137142
var stateService = _services.GetRequiredService<IConversationStateService>();
138143
if (args.RootElement is JsonElement root)
139144
{

src/Infrastructure/BotSharp.OpenAPI/Controllers/ConversationController.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ public async Task<MessageResponseModel> SendMessage([FromRoute] string agentId,
4444
{
4545
var conv = _services.GetRequiredService<IConversationService>();
4646
conv.SetConversationId(conversationId, input.States);
47-
conv.States.SetState("channel", input.Channel);
48-
conv.States.SetState("model", input.ModelName);
49-
conv.States.SetState("temperature", input.Temperature.ToString());
50-
conv.States.SetState("sampling_factor", input.SamplingFactor.ToString());
47+
conv.States.SetState("channel", input.Channel)
48+
.SetState("model", input.ModelName)
49+
.SetState("temperature", input.Temperature.ToString())
50+
.SetState("sampling_factor", input.SamplingFactor.ToString());
5151

5252
var response = new MessageResponseModel();
5353
var stackMsg = new List<RoleDialogModel>();

src/Plugins/BotSharp.Plugin.AzureOpenAI/Providers/ChatCompletionProvider.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ namespace BotSharp.Plugin.AzureOpenAI.Providers;
2020

2121
public class ChatCompletionProvider : IChatCompletion
2222
{
23-
private readonly AzureOpenAiSettings _settings;
24-
private readonly IServiceProvider _services;
25-
private readonly ILogger _logger;
23+
protected readonly AzureOpenAiSettings _settings;
24+
protected readonly IServiceProvider _services;
25+
protected readonly ILogger _logger;
2626

2727
public virtual string ModelName => "gpt-3.5-turbo";
2828

0 commit comments

Comments
 (0)