Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 5 additions & 7 deletions dotnet/src/dotnetcore/Providers/AI/Model/GXAgent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,18 @@ public class GXAgent : GXProcedure
protected ChatResult ChatAgent(String agent, GXProperties properties, IList chatMessages, object result)
{
CallResult callResult = result as CallResult;
List<ChatMessage> chatMessagesList = chatMessages != null ? chatMessages.Cast<ChatMessage>().ToList() : null;
try
{
GXLogging.Debug(log, "Chatting Agent: ", agent);

GxHttpClient httpClient = AgentService.AgentHandlerInstance.ChatAgent(agent, chatMessagesList, properties, context);

return new ChatResult(this, agent, properties, chatMessagesList, callResult, httpClient);
GxHttpClient httpClient = AgentService.AgentHandlerInstance.ChatAgent(agent, chatMessages, properties, context);
return new ChatResult(this, agent, properties, chatMessages, callResult, httpClient);
}
catch (Exception ex)
{
callResult.AddMessage($"Error chatting Agent {agent}:" + ex.Message);
callResult.IsFail = true;
return new ChatResult(this, agent, properties, chatMessagesList, callResult, null);
return new ChatResult(this, agent, properties, chatMessages, callResult, null);
}
}
protected string CallAgent(string assistant, GXProperties gxproperties, IList chatMessages, object result)
Expand Down Expand Up @@ -71,13 +69,13 @@ protected string CallAgent(string assistant, GXProperties gxproperties, IList ch
}

}
internal override string ProcessChatResponse(Choice choice, bool stream, string assistant, GXProperties gxproperties, List<ChatMessage> chatMessagesList, object result)
internal override string ProcessChatResponse(Choice choice, bool stream, string assistant, GXProperties gxproperties, IList chatMessagesList, object result)
{
foreach (ToolCall toolCall in choice.Message.ToolCalls)
ProcessToolCall(toolCall, chatMessagesList);
return CallAgent(assistant, gxproperties, chatMessagesList, result, stream);
}
private void ProcessToolCall(ToolCall toolCall, List<ChatMessage> messages)
private void ProcessToolCall(ToolCall toolCall, IList messages)
{
string result = string.Empty;
string functionName = toolCall.Function.Name;
Expand Down
11 changes: 7 additions & 4 deletions dotnet/src/dotnetcore/Providers/AI/Services/AgentService.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Text.Json;
using System.Threading.Tasks;
Expand Down Expand Up @@ -75,7 +77,7 @@ internal async Task<ChatCompletionResult> CallAgent(string assistant, List<Chat.
}

}
internal GxHttpClient ChatAgent(string assistant, List<Chat.ChatMessage> messages, GXProperties properties, IGxContext context)
internal GxHttpClient ChatAgent(string assistant, IList messages, GXProperties properties, IGxContext context)
{
try
{
Expand All @@ -97,7 +99,7 @@ internal GxHttpClient ChatAgent(string assistant, List<Chat.ChatMessage> message
}

}
internal GxHttpClient AgentHttpClient(IGxContext context, string assistant, List<Chat.ChatMessage> messages, GXProperties properties, bool stream)
internal GxHttpClient AgentHttpClient(IGxContext context, string assistant, IList messages, GXProperties properties, bool stream)
{
GxHttpClient httpClient = new GxHttpClient(context);
httpClient.Secure = 1;
Expand All @@ -112,11 +114,12 @@ internal GxHttpClient AgentHttpClient(IGxContext context, string assistant, List
return httpClient;
}

private string AgentPaylod(string assistant, List<ChatMessage> messages, GXProperties properties, bool stream)
private string AgentPaylod(string assistant, IList messages, GXProperties properties, bool stream)
{
List<Chat.ChatMessage> chatMessagesList = messages != null ? messages.Cast<Chat.ChatMessage>().ToList() : null;
ChatRequestPayload requestBody = new ChatRequestPayload();
requestBody.Model = $"{SAIA_AGENT}{assistant}";
requestBody.Messages = messages;
requestBody.Messages = chatMessagesList;
requestBody.Variables = properties.ToList();
requestBody.Stream = stream;

Expand Down
9 changes: 7 additions & 2 deletions dotnet/src/dotnetframework/GxClasses/Domain/ChatResult.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
Expand All @@ -17,15 +18,15 @@ public class ChatResult: IDisposable
private GxHttpClient Client { get; set; }
private string Agent { get; set; }
private GXProperties Properties { get; set; }
private List<ChatMessage> Messages { get; set; }
private IList Messages { get; set; }
private CallResult Result { get; set; }
private GXProcedure AgentProcedure { get; set; }
private bool disposed = false;
public ChatResult()
{
}

public ChatResult(GXProcedure agentProcedure, string agent, GXProperties properties, List<ChatMessage> messages, CallResult result, GxHttpClient client)
public ChatResult(GXProcedure agentProcedure, string agent, GXProperties properties, IList messages, CallResult result, GxHttpClient client)
{
AgentProcedure = agentProcedure;
Agent = agent;
Expand All @@ -46,6 +47,8 @@ public string GetMoreData()
return string.Empty;
int index = data.IndexOf(ChatCompletionResult.DATA) + ChatCompletionResult.DATA.Length;
string chunkJson = data.Substring(index).Trim();
if (chunkJson.Equals(ChatCompletionResult.DONE))
return string.Empty;
try
{
ChatCompletionResult chatCompletion = JsonSerializer.Deserialize<ChatCompletionResult>(chunkJson);
Expand Down Expand Up @@ -117,6 +120,8 @@ internal class ChatCompletionResult
internal const string FINISH_REASON_STOP = "stop";
internal const string FINISH_REASON_TOOL_CALLS = "tool_calls";
internal const string DATA = "data:";
internal const string DONE = "[DONE]";


[JsonPropertyName("id")]
public string Id { get; set; }
Expand Down
3 changes: 2 additions & 1 deletion dotnet/src/dotnetframework/GxClasses/Model/gxproc.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
namespace GeneXus.Procedure
{
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Reflection;
Expand Down Expand Up @@ -53,7 +54,7 @@ public GXProcedure()
}
#endif
}
internal virtual string ProcessChatResponse(Choice choice, bool stream, string assistant, GXProperties gxproperties, List<ChatMessage> chatMessagesList, object result)
internal virtual string ProcessChatResponse(Choice choice, bool stream, string assistant, GXProperties gxproperties, IList chatMessagesList, object result)
{
return string.Empty;
}
Expand Down
Loading