探索 語意核心 聊天完成代理程式 (實驗性)
警告
語意核心代理程式架構是實驗性的,仍在開發中,而且可能會變更。
如需此討論的詳細 API 檔,請參閱:
代理程式目前無法在Java中使用。
語意核心中的 聊天完成
聊天完成 基本上是與 AI 模型進行聊天式互動的通訊協定,其中聊天歷程記錄會在每個要求中維護並呈現給模型。 語意核心 AI 服務 提供整合架構,整合各種 AI 模型的聊天完成功能。
聊天完成代理程式可以利用其中任何一個 AI 服務來產生回應,無論是導向至使用者或其他代理程式。
針對 .NET, 聊天完成 AI 服務是以 介面為基礎 IChatCompletionService
。
針對 .NET,支援聊天完成模型的一些 AI 服務包括:
Model | 語意核心 AI 服務 |
---|---|
Azure Open AI | Microsoft.SemanticKernel.Connectors.AzureOpenAI |
雙子座 | Microsoft.SemanticKernel.Connectors.Google |
HuggingFace | Microsoft.SemanticKernel.Connectors.HuggingFace |
Mistral | Microsoft.SemanticKernel.Connectors.MistralAI |
OpenAI | Microsoft.SemanticKernel.Connectors.OpenAI |
Onnx | Microsoft.SemanticKernel.Connectors.Onnx |
代理程式目前無法在Java中使用。
建立聊天完成代理程式
聊天完成代理程式基本上是以 AI 服務為基礎。 因此,建立聊天完成代理程式會從建立包含一或多個聊天完成服務的核心實例開始,然後使用該核心實例的參考將代理程式具現化。
// Initialize a Kernel with a chat-completion service
IKernelBuilder builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(/*<...configuration parameters>*/);
Kernel kernel = builder.Build();
// Create the agent
ChatCompletionAgent agent =
new()
{
Name = "SummarizationAgent",
Instructions = "Summarize user input",
Kernel = kernel
};
# Define the Kernel
kernel = Kernel()
# Add the AzureChatCompletion AI Service to the Kernel
kernel.add_service(AzureChatCompletion(service_id="<service_id>"))
# Create the agent
agent = ChatCompletionAgent(
service_id="agent",
kernel=kernel,
name="<agent name>",
instructions="<agent instructions>",
)
代理程式目前無法在Java中使用。
AI 服務選取
與直接使用語意核心 AI 服務並無不同,聊天完成代理程式支援服務選取器的規格。 當核心包含多個 AI 服務時,服務選取器會識別要以哪個 AI 服務為目標。
注意:如果有多個 AI 服務存在且未提供任何服務選取器,則會針對您在 Agent Framework 外部使用 AI 服務時找到的代理程式套用相同的默認邏輯。
IKernelBuilder builder = Kernel.CreateBuilder();
// Initialize multiple chat-completion services.
builder.AddAzureOpenAIChatCompletion(/*<...service configuration>*/, serviceId: "service-1");
builder.AddAzureOpenAIChatCompletion(/*<...service configuration>*/, serviceId: "service-2");
Kernel kernel = builder.Build();
ChatCompletionAgent agent =
new()
{
Name = "<agent name>",
Instructions = "<agent instructions>",
Kernel = kernel,
Arguments = // Specify the service-identifier via the KernelArguments
new KernelArguments(
new OpenAIPromptExecutionSettings()
{
ServiceId = "service-2" // The target service-identifier.
});
};
# Define the Kernel
kernel = Kernel()
# Add the AzureChatCompletion AI Service to the Kernel
kernel.add_service(AzureChatCompletion(service_id="<service_id>"))
# Create the agent
agent = ChatCompletionAgent(
service_id="agent",
kernel=kernel,
name="<agent name>",
instructions="<agent instructions>",
)
代理程式目前無法在Java中使用。
與 聊天完成代理程序互動
與聊天完成代理程式的互動是以聊天歷程記錄實例為基礎,與與聊天完成 AI 服務互動並無不同。
// Define agent
ChatCompletionAgent agent = ...;
// Create a ChatHistory object to maintain the conversation state.
ChatHistory chat = [];
// Add a user message to the conversation
chat.Add(new ChatMessageContent(AuthorRole.User, "<user input>"));
// Generate the agent response(s)
await foreach (ChatMessageContent response in agent.InvokeAsync(chat))
{
// Process agent response(s)...
}
# Define agent
agent = ChatCompletionAgent(...)
# Define the chat history
chat = ChatHistory()
# Add the user message
chat.add_message(ChatMessageContent(role=AuthorRole.USER, content=input))
# Generate the agent response(s)
async for response in agent.invoke(chat):
# process agent response(s)
代理程式目前無法在Java中使用。
操作說明:
如需聊天完成代理程式的端對端範例,請參閱: