clean code

This commit is contained in:
Jicheng Lu 2024-12-26 00:18:02 -06:00
parent 85ebbff829
commit ac72106e11
9 changed files with 27 additions and 18 deletions

View file

@ -12,8 +12,9 @@ public partial class AgentService
var conv = _services.GetRequiredService<IConversationService>();
// merge instructions
var texts = new List<string> { agent.Instruction };
texts.AddRange(agent.SecondaryInstructions ?? []);
var instructions = new List<string> { agent.Instruction };
var secondaryInstructions = agent.SecondaryInstructions?.Where(x => !string.IsNullOrWhiteSpace(x)).ToList() ?? [];
instructions.AddRange(secondaryInstructions);
// update states
foreach (var t in conv.States.GetStates())
@ -21,7 +22,7 @@ public partial class AgentService
agent.TemplateDict[t.Key] = t.Value;
}
var res = render.Render(string.Join("\r\n", texts), agent.TemplateDict);
var res = render.Render(string.Join("\r\n", instructions), agent.TemplateDict);
return res;
}

View file

@ -101,7 +101,7 @@ public class ChatCompletionProvider : IChatCompletion
var agentService = _services.GetRequiredService<IAgentService>();
if (!string.IsNullOrEmpty(agent.Instruction))
if (!string.IsNullOrEmpty(agent.Instruction) || !agent.SecondaryInstructions.IsNullOrEmpty())
{
instruction += agentService.RenderedInstruction(agent);
}
@ -197,7 +197,8 @@ public class ChatCompletionProvider : IChatCompletion
ReferenceHandler = ReferenceHandler.IgnoreCycles,
};
foreach (var fn in agent.Functions)
var functions = agent.Functions.Concat(agent.SecondaryFunctions ?? []);
foreach (var fn in functions)
{
/*var inputschema = new InputSchema()
{

View file

@ -230,7 +230,8 @@ public class ChatCompletionProvider : IChatCompletion
MaxOutputTokenCount = maxTokens
};
foreach (var function in agent.Functions)
var functions = agent.Functions.Concat(agent.SecondaryFunctions ?? []);
foreach (var function in functions)
{
if (!agentService.RenderFunction(agent, function)) continue;
@ -242,7 +243,7 @@ public class ChatCompletionProvider : IChatCompletion
functionParameters: BinaryData.FromObjectAsJson(property)));
}
if (!string.IsNullOrEmpty(agent.Instruction))
if (!string.IsNullOrEmpty(agent.Instruction) || !agent.SecondaryInstructions.IsNullOrEmpty())
{
var instruction = agentService.RenderedInstruction(agent);
messages.Add(new SystemChatMessage(instruction));

View file

@ -107,7 +107,7 @@ public class GeminiChatCompletionProvider : IChatCompletion
var funcDeclarations = new List<FunctionDeclaration>();
var systemPrompts = new List<string>();
if (!string.IsNullOrEmpty(agent.Instruction))
if (!string.IsNullOrEmpty(agent.Instruction) || !agent.SecondaryInstructions.IsNullOrEmpty())
{
var instruction = agentService.RenderedInstruction(agent);
contents.Add(new Content(instruction)
@ -119,7 +119,8 @@ public class GeminiChatCompletionProvider : IChatCompletion
}
var funcPrompts = new List<string>();
foreach (var function in agent.Functions)
var functions = agent.Functions.Concat(agent.SecondaryFunctions ?? []);
foreach (var function in functions)
{
if (!agentService.RenderFunction(agent, function)) continue;

View file

@ -99,7 +99,7 @@ public class PalmChatCompletionProvider : IChatCompletion
var agentService = _services.GetRequiredService<IAgentService>();
if (!string.IsNullOrEmpty(agent.Instruction))
if (!string.IsNullOrEmpty(agent.Instruction) || !agent.SecondaryInstructions.IsNullOrEmpty())
{
prompt += agentService.RenderedInstruction(agent);
}
@ -110,10 +110,11 @@ public class PalmChatCompletionProvider : IChatCompletion
var messages = conversations.Select(c => new PalmChatMessage(c.Content, c.Role == AgentRole.User ? "user" : "AI"))
.ToList();
if (agent.Functions != null && agent.Functions.Count > 0)
var functions = agent.Functions.Concat(agent.SecondaryFunctions ?? []);
if (!functions.IsNullOrEmpty())
{
prompt += "\r\n\r\n[Functions] defined in JSON Schema:\r\n";
prompt += JsonSerializer.Serialize(agent.Functions, new JsonSerializerOptions
prompt += JsonSerializer.Serialize(functions, new JsonSerializerOptions
{
PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
WriteIndented = true

View file

@ -1,3 +1,5 @@
using BotSharp.Abstraction.Utilities;
namespace BotSharp.Plugin.MetaGLM.Providers;
public class ChatCompletionProvider : IChatCompletion
@ -86,7 +88,7 @@ public class ChatCompletionProvider : IChatCompletion
List<MessageItem> messages = new List<MessageItem>();
List<FunctionTool> toolcalls = new List<FunctionTool>();
if (!string.IsNullOrEmpty(agent.Instruction))
if (!string.IsNullOrEmpty(agent.Instruction) || !agent.SecondaryInstructions.IsNullOrEmpty())
{
var instruction = agentService.RenderedInstruction(agent);
messages.Add(new MessageItem("system", instruction));
@ -105,7 +107,8 @@ public class ChatCompletionProvider : IChatCompletion
new MessageItem("assistant", message.Content));
}
foreach (var function in agent.Functions)
var functions = agent.Functions.Concat(agent.SecondaryFunctions ?? []);
foreach (var function in functions)
{
var functionTool = ConvertToFunctionTool(function);
toolcalls.Add(functionTool);

View file

@ -66,7 +66,8 @@ public sealed class MicrosoftExtensionsAIChatCompletionProvider : IChatCompletio
if (_services.GetService<IAgentService>() is { } agentService)
{
foreach (var function in agent.Functions)
var functions = agent.Functions.Concat(agent.SecondaryFunctions ?? []);
foreach (var function in functions)
{
if (agentService.RenderFunction(agent, function))
{

View file

@ -210,7 +210,6 @@ public class ChatCompletionProvider : IChatCompletion
MaxOutputTokenCount = maxTokens
};
var functions = agent.Functions.Concat(agent.SecondaryFunctions ?? []);
foreach (var function in functions)
{

View file

@ -176,7 +176,7 @@ public class ChatCompletionProvider : IChatCompletion
var agentService = _services.GetRequiredService<IAgentService>();
var messages = new List<ChatMessage>();
if (!string.IsNullOrEmpty(agent.Instruction))
if (!string.IsNullOrEmpty(agent.Instruction) || !agent.SecondaryInstructions.IsNullOrEmpty())
{
var instruction = agentService.RenderedInstruction(agent);
messages.Add(ChatMessage.FromSystem(instruction));
@ -193,7 +193,8 @@ public class ChatCompletionProvider : IChatCompletion
ChatMessage.FromAssistant(message.Content));
}
foreach (var function in agent.Functions)
var agentFuncs = agent.Functions.Concat(agent.SecondaryFunctions ?? []);
foreach (var function in agentFuncs)
{
functions.Add(ConvertToFunctionDef(function));
}