To connect to a existing AI Foundry Agent
using Azure.AI.Agents.Persistent;
using Azure.Identity;
using Microsoft.Extensions.Options;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
using Microsoft.SemanticKernel.Agents.AzureAI;
using Microsoft.SemanticKernel.ChatCompletion;
using Microsoft.SemanticKernel.Connectors.OpenAI;
#pragma warning disable SKEXP0110
public class UnivusService : IUnivusService
{
private readonly PersistentAgent _bookSearchAgent;
private readonly AzureAIAgent _bookSearchSKAgent;
public UnivusService(IOptions<FoundryConfig> foundryConfig)
{
PersistentAgentsClient client = AzureAIAgent.CreateAgentsClient(foundryConfig.Value.AZURE_FOUNDRY_PROJECT_ENDPOINT, new AzureCliCredential());
_bookSearchAgent = client.Administration.GetAgent("asst_GfnTEQKSc...");
// Create a Semantic Kernel agent based on the agent definition
_bookSearchSKAgent = new(_bookSearchAgent, client);
}
public async Task<string> ChatCompletionAsync(string userInput)
{
AzureAIAgentThread agentThread = new(_bookSearchSKAgent.Client);
try
{
ChatMessageContent message = new(AuthorRole.User, userInput);
await foreach (ChatMessageContent response in _bookSearchSKAgent.InvokeAsync(message, agentThread))
{
return response.Content;
}
}
finally
{
await agentThread.DeleteAsync();
}
return string.Empty;
}
}