Skip to content

Commit d96542f

Browse files
authored
Merge pull request #314 from hchen2020/master
Improve SQL Driver.
2 parents 9f31f84 + a13c4c8 commit d96542f

File tree

14 files changed

+88
-100
lines changed

14 files changed

+88
-100
lines changed

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,10 @@ public async Task<bool> GetChatCompletionsStreamingAsync(Agent agent, List<RoleD
231231
{
232232
if (message.Role == ChatRole.Function)
233233
{
234+
chatCompletionsOptions.Messages.Add(new ChatRequestAssistantMessage(string.Empty)
235+
{
236+
FunctionCall = new FunctionCall(message.FunctionName, message.FunctionArgs),
237+
});
234238
chatCompletionsOptions.Messages.Add(new ChatRequestFunctionMessage(message.FunctionName, message.Content));
235239
}
236240
else if (message.Role == ChatRole.User)
@@ -287,7 +291,7 @@ private string GetPrompt(ChatCompletionsOptions chatCompletionsOptions)
287291
if (x.Role == ChatRole.Function)
288292
{
289293
var m = x as ChatRequestFunctionMessage;
290-
return $"{m.Role}: {m.Name} => {m.Content}";
294+
return $"{m.Role}: {m.Content}";
291295
}
292296
else if (x.Role == ChatRole.User)
293297
{
@@ -299,7 +303,9 @@ private string GetPrompt(ChatCompletionsOptions chatCompletionsOptions)
299303
else if (x.Role == ChatRole.Assistant)
300304
{
301305
var m = x as ChatRequestAssistantMessage;
302-
return $"{m.Role}: {m.Content}";
306+
return m.FunctionCall != null ?
307+
$"{m.Role}: Call function {m.FunctionCall.Name}({m.FunctionCall.Arguments})" :
308+
$"{m.Role}: {m.Content}";
303309
}
304310
else
305311
{

src/Plugins/BotSharp.Plugin.ChatHub/Hooks/ChatHubConversationHook.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
using BotSharp.Abstraction.Loggers.Models;
21
using BotSharp.Abstraction.Messaging;
32
using BotSharp.Abstraction.Messaging.Enums;
43
using BotSharp.Abstraction.Messaging.JsonConverters;
54
using BotSharp.Abstraction.Messaging.Models.RichContent;
6-
using BotSharp.Abstraction.Repositories;
75
using Microsoft.AspNetCore.SignalR;
86

97
namespace BotSharp.Plugin.ChatHub.Hooks;

src/Plugins/BotSharp.Plugin.ChatHub/Hooks/StreamingLogHook.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
1-
using BotSharp.Abstraction.Agents;
21
using BotSharp.Abstraction.Agents.Models;
3-
using BotSharp.Abstraction.Conversations.Models;
2+
using BotSharp.Abstraction.Functions.Models;
43
using BotSharp.Abstraction.Loggers;
54
using BotSharp.Abstraction.Loggers.Models;
6-
using BotSharp.Abstraction.Messaging.Models.RichContent;
7-
using BotSharp.Abstraction.Messaging;
85
using BotSharp.Abstraction.Repositories;
9-
using BotSharp.Core.Agents.Services;
6+
using BotSharp.Abstraction.Repositories.Filters;
7+
using BotSharp.Abstraction.Routing.Settings;
108
using Microsoft.AspNetCore.SignalR;
11-
using Microsoft.VisualBasic;
129

1310
namespace BotSharp.Plugin.ChatHub.Hooks;
1411

@@ -82,6 +79,17 @@ public async Task AfterGenerated(RoleDialogModel message, TokenStatsModel tokenS
8279
var conversationId = _state.GetConversationId();
8380
var agent = await agentService.LoadAgent(message.CurrentAgentId);
8481

82+
// Log routing output
83+
try
84+
{
85+
var inst = message.Content.JsonContent<FunctionCallFromLlm>();
86+
await _chatHub.Clients.User(_user.Id).SendAsync("OnConversationContentLogGenerated", BuildContentLog(conversationId, agent?.Name, message.Content, message));
87+
}
88+
catch
89+
{
90+
// ignore
91+
}
92+
8593
string log;
8694
if (message.Role == AgentRole.Function)
8795
{

src/Plugins/BotSharp.Plugin.SqlDriver/Functions/GetTableColumnsFn.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,10 @@ public GetTableColumnsFn(IServiceProvider services)
1717
public async Task<bool> Execute(RoleDialogModel message)
1818
{
1919
var args = JsonSerializer.Deserialize<GetTableColumnsArgs>(message.FunctionArgs);
20-
message.Content = $"Success. Columns of table '{args.Table}':\r\n\r\n";
20+
message.Content = "";
2121

2222
var dbSettings = _services.GetRequiredService<BotSharpDatabaseSettings>();
23-
var dir = Path.Combine(dbSettings.FileRepository, "agents", "ec46f15b-8790-400f-a37f-1e7995b7d6e2", "schemas");
23+
var dir = Path.Combine(dbSettings.FileRepository, "agents", "beda4c12-e1ec-4b4b-b328-3df4a6687c4f", "schemas");
2424

2525
// Search related document by message.Content + args.Description
2626
var files = Directory.GetFiles(dir);

src/Plugins/BotSharp.Plugin.SqlDriver/Functions/SqlInsertFn.cs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,8 @@ public async Task<bool> Execute(RoleDialogModel message)
1616
{
1717
var args = JsonSerializer.Deserialize<SqlStatement>(message.FunctionArgs);
1818
var sqlDriver = _services.GetRequiredService<SqlDriverService>();
19-
if (sqlDriver.Statements.Exists(x => x.Statement == args.Statement))
20-
{
21-
message.Content = "Skipped duplicated statement.";
22-
return false;
23-
}
2419
sqlDriver.Enqueue(args);
25-
message.Content = $"Inserted new record {JsonSerializer.Serialize(args.Parameters)} successfully";
20+
message.Content = $"Inserted new record successfully.";
2621
if (args.Return != null)
2722
{
2823
/*sqlDriver.Enqueue(new SqlStatement

src/Plugins/BotSharp.Plugin.SqlDriver/Functions/SqlSelect.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ public SqlSelect(IServiceProvider services)
1717
public async Task<bool> Execute(RoleDialogModel message)
1818
{
1919
var args = JsonSerializer.Deserialize<SqlStatement>(message.FunctionArgs);
20+
var sqlDriver = _services.GetRequiredService<SqlDriverService>();
21+
2022
// check if need to instantely
2123
var execNow = !args.Parameters.Any(x => x.Value.StartsWith("@"));
2224
if (execNow)
@@ -28,24 +30,24 @@ public async Task<bool> Execute(RoleDialogModel message)
2830
{
2931
dictionary["@" + p.Name] = p.Value;
3032
}
31-
var result = connection.QueryFirst<string>(args.Statement, dictionary);
33+
var result = connection.QueryFirstOrDefault(args.Statement, dictionary);
3234

33-
if (args.IsCheckExistence)
35+
if (result == null)
3436
{
35-
message.Content = result == null ?
36-
$"The record does not exist" :
37-
$"The record already exists";
37+
message.Content = "Record not found";
3838
}
3939
else
4040
{
41-
message.Content = $"Retrieved result is {result} ({args.Reason})";
41+
message.Content = JsonSerializer.Serialize(result);
42+
args.Return.Value = message.Content;
4243
}
44+
45+
sqlDriver.Enqueue(args);
4346
}
4447
else
4548
{
46-
var sqlDriver = _services.GetRequiredService<SqlDriverService>();
4749
sqlDriver.Enqueue(args);
48-
message.Content = $"Success.";
50+
message.Content = $"The {args.Return.Name} is saved to @{args.Return.Alias}";
4951
}
5052

5153
return true;

src/Plugins/BotSharp.Plugin.SqlDriver/Hooks/SqlDriverContentGeneratingHook.cs

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/Plugins/BotSharp.Plugin.SqlDriver/Models/SqlParamater.cs renamed to src/Plugins/BotSharp.Plugin.SqlDriver/Models/SqlParameter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace BotSharp.Plugin.SqlDriver.Models;
44

5-
public class SqlParamater
5+
public class SqlParameter
66
{
77
[JsonPropertyName("name")]
88
public string Name { get; set; }

src/Plugins/BotSharp.Plugin.SqlDriver/Models/SqlReturn.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public class SqlReturn
1010
[JsonPropertyName("alias")]
1111
public string Alias { get; set; }
1212

13+
public string? Value { get; set; }
14+
1315
public override string ToString()
1416
{
1517
return $"{Alias} - {Name}";

src/Plugins/BotSharp.Plugin.SqlDriver/Models/SqlStatement.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@ public class SqlStatement
1313
[JsonPropertyName("table")]
1414
public string Table { get; set; }
1515

16-
[JsonPropertyName("is_check_existence")]
17-
public bool IsCheckExistence { get; set; }
18-
1916
[JsonPropertyName("parameters")]
20-
public SqlParamater[] Parameters { get; set; } = new SqlParamater[0];
17+
public SqlParameter[] Parameters { get; set; } = new SqlParameter[0];
2118

2219
[JsonPropertyName("return_field")]
2320
public SqlReturn Return { get; set; }

0 commit comments

Comments
 (0)