Wanneer de chat is voltooid, kunt u een back-and-forth-gesprek simuleren met een AI-agent. Dit is natuurlijk handig voor het maken van chatbots, maar kan ook worden gebruikt voor het maken van autonome agents die bedrijfsprocessen kunnen voltooien, code kunnen genereren en meer. Als het primaire modeltype dat wordt geleverd door OpenAI, Google, Mistral, Facebook en anderen, is het voltooien van chats de meest voorkomende AI-service die u toevoegt aan uw Semantic Kernel-project.
Wanneer u een voltooiingsmodel voor chats kiest, moet u rekening houden met het volgende:
Welke modaliteiten ondersteunt het model (bijvoorbeeld tekst, afbeelding, audio, enzovoort)?
Biedt het ondersteuning voor het aanroepen van functies?
Hoe snel ontvangt en genereert het tokens?
Hoeveel kost elk token?
Belangrijk
Van alle bovenstaande vragen is het belangrijkst of het model functie-aanroepen ondersteunt. Als dit niet het geval is, kunt u het model niet gebruiken om uw bestaande code aan te roepen. De meeste van de nieuwste modellen van OpenAI, Google, Mistral en Amazon bieden allemaal ondersteuningsfuncties. Ondersteuning van kleine taalmodellen is echter nog steeds beperkt.
Uw lokale omgeving instellen
Sommige AI-services kunnen lokaal worden gehost en vereisen mogelijk enige instellingen. Hieronder ziet u instructies voor degenen die dit ondersteunen.
Nadat de container is gestart, start u een Terminal-venster voor de docker-container, bijvoorbeeld als u Docker Desktop gebruikt, kiest u Open in Terminal uit acties.
Download vanaf deze terminal de vereiste modellen, bijvoorbeeld hier downloaden we het phi3-model.
ollama pull phi3
Geen lokale installatie.
Geen lokale installatie.
Kloon de opslagplaats met het ONNX-model dat u wilt gebruiken.
Voordat u chatvoltooiing aan uw kernel toevoegt, moet u de benodigde pakketten installeren. Hieronder vindt u de pakketten die u moet installeren voor elke AI-serviceprovider.
Antropische modellen zijn beschikbaar op het Amazon Bedrock platform. Als u antropische modellen wilt gebruiken, moet u het Amazon-connectorpakket installeren.
Voor andere AI-serviceproviders die ondersteuning bieden voor de OpenAI-chat-voltooiings-API (bijvoorbeeld LLM Studio), kunt u de Connector voor voltooiing van de OpenAI-chat gebruiken.
Nu u de benodigde pakketten hebt geïnstalleerd, kunt u services voor chatvoltooiing maken. Hieronder vindt u de verschillende manieren waarop u services voor chatvoltooiing kunt maken met behulp van Semantische kernel.
Rechtstreeks toevoegen aan de kernel
Als u een chatvoltooiingsservice wilt toevoegen, kunt u de volgende code gebruiken om deze toe te voegen aan de interne serviceprovider van de kernel.
using Microsoft.SemanticKernel;
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddAzureOpenAIChatCompletion(
deploymentName: "NAME_OF_YOUR_DEPLOYMENT",
apiKey: "YOUR_API_KEY",
endpoint: "YOUR_AZURE_ENDPOINT",
modelId: "gpt-4", // Optional name of the underlying model if the deployment name doesn't match the model name
serviceId: "YOUR_SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel
httpClient: new HttpClient() // Optional; if not provided, the HttpClient from the kernel will be used
);
Kernel kernel = kernelBuilder.Build();
using Microsoft.SemanticKernel;
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddOpenAIChatCompletion(
modelId: "gpt-4",
apiKey: "YOUR_API_KEY",
orgId: "YOUR_ORG_ID", // Optional
serviceId: "YOUR_SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel
httpClient: new HttpClient() // Optional; if not provided, the HttpClient from the kernel will be used
);
Kernel kernel = kernelBuilder.Build();
Belangrijk
De Mistral chat-voltooiingsconnector is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
#pragma warning disable SKEXP0070
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddMistralChatCompletion(
modelId: "NAME_OF_MODEL",
apiKey: "API_KEY",
endpoint: new Uri("YOUR_ENDPOINT"), // Optional
serviceId: "SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel
httpClient: new HttpClient() // Optional; for customizing HTTP client
);
Kernel kernel = kernelBuilder.Build();
Belangrijk
De connector voor voltooiing van Google-chats is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.Google;
#pragma warning disable SKEXP0070
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddGoogleAIGeminiChatCompletion(
modelId: "NAME_OF_MODEL",
apiKey: "API_KEY",
apiVersion: GoogleAIVersion.V1, // Optional
serviceId: "SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel
httpClient: new HttpClient() // Optional; for customizing HTTP client
);
Kernel kernel = kernelBuilder.Build();
Belangrijk
De connector voor het voltooien van de Face-chat hugging is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
#pragma warning disable SKEXP0070
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddHuggingFaceChatCompletion(
model: "NAME_OF_MODEL",
apiKey: "API_KEY",
endpoint: new Uri("YOUR_ENDPOINT"), // Optional
serviceId: "SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel
httpClient: new HttpClient() // Optional; for customizing HTTP client
);
Kernel kernel = kernelBuilder.Build();
Belangrijk
De connector voor het voltooien van chats van Azure AI-deductie is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
#pragma warning disable SKEXP0070
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddAzureAIInferenceChatCompletion(
modelId: "NAME_OF_MODEL",
apiKey: "API_KEY",
endpoint: new Uri("YOUR_ENDPOINT"), // Optional
serviceId: "SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel
httpClient: new HttpClient() // Optional; for customizing HTTP client
);
Kernel kernel = kernelBuilder.Build();
Belangrijk
De Ollama chatcompletiemodule is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
#pragma warning disable SKEXP0070
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddOllamaChatCompletion(
modelId: "NAME_OF_MODEL", // E.g. "phi3" if phi3 was downloaded as described above.
endpoint: new Uri("YOUR_ENDPOINT"), // E.g. "http://localhost:11434" if Ollama has been started in docker as described above.
serviceId: "SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
Kernel kernel = kernelBuilder.Build();
Belangrijk
De connector voor het voltooien van de Bedrock-chat die vereist is voor Lantropic, is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
#pragma warning disable SKEXP0070
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddBedrockChatCompletionService(
modelId: "NAME_OF_MODEL",
bedrockRuntime: amazonBedrockRuntime, // Optional; An instance of IAmazonBedrockRuntime, used to communicate with Azure Bedrock.
serviceId: "SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
Kernel kernel = kernelBuilder.Build();
Belangrijk
De connector voor het voltooien van de Bedrock-chat is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
#pragma warning disable SKEXP0070
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddBedrockChatCompletionService(
modelId: "NAME_OF_MODEL",
bedrockRuntime: amazonBedrockRuntime, // Optional; An instance of IAmazonBedrockRuntime, used to communicate with Azure Bedrock.
serviceId: "SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
Kernel kernel = kernelBuilder.Build();
Belangrijk
De connector voor het voltooien van de ONNX-chat is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
#pragma warning disable SKEXP0070
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddOnnxRuntimeGenAIChatCompletion(
modelId: "NAME_OF_MODEL", // E.g. phi-3
modelPath: "PATH_ON_DISK", // Path to the model on disk e.g. C:\Repos\huggingface\microsoft\Phi-3-mini-4k-instruct-onnx\cpu_and_mobile\cpu-int4-rtn-block-32
serviceId: "SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel
jsonSerializerOptions: customJsonSerializerOptions // Optional; for providing custom serialization settings for e.g. function argument / result serialization and parsing.
);
Kernel kernel = kernelBuilder.Build();
Voor andere AI-serviceproviders die ondersteuning bieden voor de OpenAI-chat-voltooiings-API (bijvoorbeeld LLM Studio), kunt u de volgende code gebruiken om de bestaande Connector voor voltooiing van de OpenAI-chat opnieuw te gebruiken.
Belangrijk
Het gebruik van aangepaste eindpunten met de OpenAI-connector is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0010.
using Microsoft.SemanticKernel;
#pragma warning disable SKEXP0010
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddOpenAIChatCompletion(
modelId: "NAME_OF_MODEL",
apiKey: "API_KEY",
endpoint: new Uri("YOUR_ENDPOINT"), // Used to point to your service
serviceId: "SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel
httpClient: new HttpClient() // Optional; for customizing HTTP client
);
Kernel kernel = kernelBuilder.Build();
Afhankelijkheidsinjectie gebruiken
Als u afhankelijkheidsinjectie gebruikt, wilt u waarschijnlijk uw AI-services rechtstreeks toevoegen aan de serviceprovider. Dit is handig als u singletons van uw AI-services wilt maken en deze opnieuw wilt gebruiken in tijdelijke kernels.
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddAzureOpenAIChatCompletion(
deploymentName: "NAME_OF_YOUR_DEPLOYMENT",
apiKey: "YOUR_API_KEY",
endpoint: "YOUR_AZURE_ENDPOINT",
modelId: "gpt-4", // Optional name of the underlying model if the deployment name doesn't match the model name
serviceId: "YOUR_SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddOpenAIChatCompletion(
modelId: "gpt-4",
apiKey: "YOUR_API_KEY",
orgId: "YOUR_ORG_ID", // Optional; for OpenAI deployment
serviceId: "YOUR_SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
Belangrijk
De Mistral chat-voltooiingsconnector is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
#pragma warning disable SKEXP0070
builder.Services.AddMistralChatCompletion(
modelId: "NAME_OF_MODEL",
apiKey: "API_KEY",
endpoint: new Uri("YOUR_ENDPOINT"), // Optional
serviceId: "SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
Belangrijk
De connector voor voltooiing van Google-chats is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.Google;
var builder = Host.CreateApplicationBuilder(args);
#pragma warning disable SKEXP0070
builder.Services.AddGoogleAIGeminiChatCompletion(
modelId: "NAME_OF_MODEL",
apiKey: "API_KEY",
apiVersion: GoogleAIVersion.V1, // Optional
serviceId: "SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
Belangrijk
De connector voor het voltooien van de Face-chat hugging is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
#pragma warning disable SKEXP0070
builder.Services.AddHuggingFaceChatCompletion(
model: "NAME_OF_MODEL",
apiKey: "API_KEY",
endpoint: new Uri("YOUR_ENDPOINT"), // Optional
serviceId: "SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
Belangrijk
De connector voor het voltooien van chats van Azure AI-deductie is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
#pragma warning disable SKEXP0070
builder.Services.AddAzureAIInferenceChatCompletion(
modelId: "NAME_OF_MODEL",
apiKey: "API_KEY",
endpoint: new Uri("YOUR_ENDPOINT"), // Optional
serviceId: "SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
Belangrijk
De Ollama chatconnector is momenteel in een experimentele fase. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
#pragma warning disable SKEXP0070
builder.Services.AddOllamaChatCompletion(
modelId: "NAME_OF_MODEL", // E.g. "phi3" if phi3 was downloaded as described above.
endpoint: new Uri("YOUR_ENDPOINT"), // E.g. "http://localhost:11434" if Ollama has been started in docker as described above.
serviceId: "SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
Belangrijk
De connector voor het voltooien van de Bedrock-chat die vereist is voor Lantropic, is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
#pragma warning disable SKEXP0070
builder.Services.AddBedrockChatCompletionService(
modelId: "NAME_OF_MODEL",
bedrockRuntime: amazonBedrockRuntime, // Optional; An instance of IAmazonBedrockRuntime, used to communicate with Azure Bedrock.
serviceId: "SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
Belangrijk
De connector voor het voltooien van de Bedrock-chat is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
#pragma warning disable SKEXP0070
builder.Services.AddBedrockChatCompletionService(
modelId: "NAME_OF_MODEL",
bedrockRuntime: amazonBedrockRuntime, // Optional; An instance of IAmazonBedrockRuntime, used to communicate with Azure Bedrock.
serviceId: "SERVICE_ID" // Optional; for targeting specific services within Semantic Kernel
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
Belangrijk
De connector voor het voltooien van de ONNX-chat is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
#pragma warning disable SKEXP0070
builder.Services.AddOnnxRuntimeGenAIChatCompletion(
modelId: "NAME_OF_MODEL", // E.g. phi-3
modelPath: "PATH_ON_DISK", // Path to the model on disk e.g. C:\Repos\huggingface\microsoft\Phi-3-mini-4k-instruct-onnx\cpu_and_mobile\cpu-int4-rtn-block-32
serviceId: "SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel
jsonSerializerOptions: customJsonSerializerOptions // Optional; for providing custom serialization settings for e.g. function argument / result serialization and parsing.
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
Voor andere AI-serviceproviders die ondersteuning bieden voor de OpenAI-chat-voltooiings-API (bijvoorbeeld LLM Studio), kunt u de volgende code gebruiken om de bestaande Connector voor voltooiing van de OpenAI-chat opnieuw te gebruiken.
Belangrijk
Het gebruik van aangepaste eindpunten met de OpenAI-connector is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0010.
using Microsoft.SemanticKernel;
var builder = Host.CreateApplicationBuilder(args);
#pragma warning disable SKEXP0010
builder.Services.AddOpenAIChatCompletion(
modelId: "NAME_OF_MODEL",
apiKey: "API_KEY",
endpoint: new Uri("YOUR_ENDPOINT"), // Used to point to your service
serviceId: "SERVICE_ID", // Optional; for targeting specific services within Semantic Kernel
httpClient: new HttpClient() // Optional; for customizing HTTP client
);
builder.Services.AddTransient((serviceProvider)=> {
return new Kernel(serviceProvider);
});
Zelfstandige exemplaren maken
Ten slotte kunt u exemplaren van de service rechtstreeks maken, zodat u ze later aan een kernel kunt toevoegen of ze rechtstreeks in uw code kunt gebruiken zonder ze ooit in de kernel of in een serviceprovider te injecteren.
using Microsoft.SemanticKernel.Connectors.AzureOpenAI;
AzureOpenAIChatCompletionService chatCompletionService = new (
deploymentName: "NAME_OF_YOUR_DEPLOYMENT",
apiKey: "YOUR_API_KEY",
endpoint: "YOUR_AZURE_ENDPOINT",
modelId: "gpt-4", // Optional name of the underlying model if the deployment name doesn't match the model name
httpClient: new HttpClient() // Optional; if not provided, the HttpClient from the kernel will be used
);
using Microsoft.SemanticKernel.Connectors.OpenAI;
OpenAIChatCompletionService chatCompletionService = new (
modelId: "gpt-4",
apiKey: "YOUR_API_KEY",
organization: "YOUR_ORG_ID", // Optional
httpClient: new HttpClient() // Optional; if not provided, the HttpClient from the kernel will be used
);
Belangrijk
De Mistral chat-voltooiingsconnector is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel.Connectors.MistralAI;
#pragma warning disable SKEXP0070
MistralAIChatCompletionService chatCompletionService = new (
modelId: "NAME_OF_MODEL",
apiKey: "API_KEY",
endpoint: new Uri("YOUR_ENDPOINT"), // Optional
httpClient: new HttpClient() // Optional; for customizing HTTP client
);
Belangrijk
De connector voor voltooiing van Google-chats is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel.Connectors.Google;
#pragma warning disable SKEXP0070
GoogleAIGeminiChatCompletionService chatCompletionService = new (
modelId: "NAME_OF_MODEL",
apiKey: "API_KEY",
apiVersion: GoogleAIVersion.V1, // Optional
httpClient: new HttpClient() // Optional; for customizing HTTP client
);
Belangrijk
De connector voor het voltooien van de Face-chat hugging is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel.Connectors.HuggingFace;
#pragma warning disable SKEXP0070
HuggingFaceChatCompletionService chatCompletionService = new (
model: "NAME_OF_MODEL",
apiKey: "API_KEY",
endpoint: new Uri("YOUR_ENDPOINT") // Optional
);
Belangrijk
De connector voor het voltooien van chats van Azure AI-deductie is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel.Connectors.AzureAIInference;
#pragma warning disable SKEXP0070
AzureAIInferenceChatCompletionService chatCompletionService = new (
modelId: "YOUR_MODEL_ID",
apiKey: "YOUR_API_KEY",
endpoint: new Uri("YOUR_ENDPOINT"), // Used to point to your service
httpClient: new HttpClient() // Optional; if not provided, the HttpClient from the kernel will be used
);
Belangrijk
De Ollama-chataanvullingsconnector is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel.ChatCompletion;
using OllamaSharp;
#pragma warning disable SKEXP0070
using var ollamaClient = new OllamaApiClient(
uriString: "YOUR_ENDPOINT" // E.g. "http://localhost:11434" if Ollama has been started in docker as described above.
defaultModel: "NAME_OF_MODEL" // E.g. "phi3" if phi3 was downloaded as described above.
);
IChatCompletionService chatCompletionService = ollamaClient.AsChatCompletionService();
Belangrijk
De connector voor het voltooien van de Bedrock-chat die vereist is voor Lantropic, is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel.Connectors.Amazon;
#pragma warning disable SKEXP0070
BedrockChatCompletionService chatCompletionService = new BedrockChatCompletionService(
modelId: "NAME_OF_MODEL",
bedrockRuntime: amazonBedrockRuntime // Optional; An instance of IAmazonBedrockRuntime, used to communicate with Azure Bedrock.
);
Belangrijk
De connector voor het voltooien van de Bedrock-chat is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel.Connectors.Amazon;
#pragma warning disable SKEXP0070
BedrockChatCompletionService chatCompletionService = new BedrockChatCompletionService(
modelId: "NAME_OF_MODEL",
bedrockRuntime: amazonBedrockRuntime // Optional; An instance of IAmazonBedrockRuntime, used to communicate with Azure Bedrock.
);
Belangrijk
De connector voor het voltooien van de ONNX-chat is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0070.
using Microsoft.SemanticKernel.Connectors.Onnx;
#pragma warning disable SKEXP0070
OnnxRuntimeGenAIChatCompletionService chatCompletionService = new OnnxRuntimeGenAIChatCompletionService(
modelId: "NAME_OF_MODEL", // E.g. phi-3
modelPath: "PATH_ON_DISK", // Path to the model on disk e.g. C:\Repos\huggingface\microsoft\Phi-3-mini-4k-instruct-onnx\cpu_and_mobile\cpu-int4-rtn-block-32
jsonSerializerOptions: customJsonSerializerOptions // Optional; for providing custom serialization settings for e.g. function argument / result serialization and parsing.
);
Voor andere AI-serviceproviders die ondersteuning bieden voor de OpenAI-chat-voltooiings-API (bijvoorbeeld LLM Studio), kunt u de volgende code gebruiken om de bestaande Connector voor voltooiing van de OpenAI-chat opnieuw te gebruiken.
Belangrijk
Het gebruik van aangepaste eindpunten met de OpenAI-connector is momenteel experimenteel. Als u deze wilt gebruiken, moet u toevoegen #pragma warning disable SKEXP0010.
using Microsoft.SemanticKernel.Connectors.OpenAI;
#pragma warning disable SKEXP0010
OpenAIChatCompletionService chatCompletionService = new (
modelId: "gpt-4",
apiKey: "YOUR_API_KEY",
organization: "YOUR_ORG_ID", // Optional
endpoint: new Uri("YOUR_ENDPOINT"), // Used to point to your service
httpClient: new HttpClient() // Optional; if not provided, the HttpClient from the kernel will be used
);
Als u een chatvoltooiingsservice wilt maken, moet u de benodigde modules importeren en een exemplaar van de service maken. Hieronder ziet u de stappen voor het maken van een chatvoltooiingsservice voor elke AI-serviceprovider.
Tip
Er zijn drie methoden voor het leveren van de vereiste informatie aan AI-services. U kunt de informatie rechtstreeks via de constructor opgeven, de benodigde omgevingsvariabelen instellen of een .env-bestand maken in uw projectmap met de omgevingsvariabelen. U kunt deze pagina bezoeken om alle vereiste omgevingsvariabelen voor elke AI-serviceprovider te vinden: https://github.com/microsoft/semantic-kernel/blob/main/python/samples/concepts/setup/ALL_SETTINGS.md
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
chat_completion_service = AzureChatCompletion(
deployment_name="my-deployment",
api_key="my-api-key",
endpoint="my-api-endpoint", # Used to point to your service
service_id="my-service-id", # Optional; for targeting specific services within Semantic Kernel
)
# You can do the following if you have set the necessary environment variables or created a .env file
chat_completion_service = AzureChatCompletion(service_id="my-service-id")
Notitie
De AzureChatCompletion-service ondersteunt ook Microsoft Entra-verificatie. Als u geen API-sleutel opgeeft, probeert de service te verifiëren met behulp van het Entra-token.
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
chat_completion_service = OpenAIChatCompletion(
ai_model_id="my-deployment",
api_key="my-api-key",
service_id="my-service-id", # Optional; for targeting specific services within Semantic Kernel
)
# You can do the following if you have set the necessary environment variables or created a .env file
chat_completion_service = OpenAIChatCompletion(service_id="my-service-id")
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatCompletion
chat_completion_service = AzureAIInferenceChatCompletion(
ai_model_id="my-deployment",
api_key="my-api-key",
endpoint="my-api-endpoint", # Used to point to your service
service_id="my-service-id", # Optional; for targeting specific services within Semantic Kernel
)
# You can do the following if you have set the necessary environment variables or created a .env file
chat_completion_service = AzureAIInferenceChatCompletion(ai_model_id="my-deployment", service_id="my-service-id")
# You can also use an Azure OpenAI deployment with the Azure AI Inference service
from azure.ai.inference.aio import ChatCompletionsClient
from azure.identity.aio import DefaultAzureCredential
chat_completion_service = AzureAIInferenceChatCompletion(
ai_model_id="my-deployment",
client=ChatCompletionsClient(
endpoint=f"{str(endpoint).strip('/')}/openai/deployments/{deployment_name}",
credential=DefaultAzureCredential(),
credential_scopes=["https://cognitiveservices.azure.com/.default"],
),
)
Notitie
De AzureAIInferenceChatCompletion-service ondersteunt ook Microsoft Entra-verificatie. Als u geen API-sleutel opgeeft, probeert de service te verifiëren met behulp van het Entra-token.
from semantic_kernel.connectors.ai.anthropic import AnthropicChatCompletion
chat_completion_service = AnthropicChatCompletion(
chat_model_id="model-id",
api_key="my-api-key",
service_id="my-service-id", # Optional; for targeting specific services within Semantic Kernel
)
from semantic_kernel.connectors.ai.bedrock import BedrockChatCompletion
chat_completion_service = BedrockChatCompletion(
model_id="model-id",
service_id="my-service-id", # Optional; for targeting specific services within Semantic Kernel
)
Notitie
Amazon Bedrock accepteert geen API-sleutel. Volg deze handleiding om uw omgeving te configureren.
from semantic_kernel.connectors.ai.google.google_ai import GoogleAIChatCompletion
chat_completion_service = GoogleAIChatCompletion(
gemini_model_id="model-id",
api_key="my-api-key",
service_id="my-service-id", # Optional; for targeting specific services within Semantic Kernel
)
Tip
Gebruikers hebben toegang tot De Gemini-modellen van Google via Google AI Studio of het Google Vertex-platform. Volg deze handleiding om uw omgeving te configureren.
from semantic_kernel.connectors.ai.google.vertex_ai import VertexAIChatCompletion
chat_completion_service = VertexAIChatCompletion(
project_id="my-project-id",
gemini_model_id="model-id",
service_id="my-service-id", # Optional; for targeting specific services within Semantic Kernel
)
Tip
Gebruikers hebben toegang tot De Gemini-modellen van Google via Google AI Studio of het Google Vertex-platform. Volg deze handleiding om uw omgeving te configureren.
from semantic_kernel.connectors.ai.mistral_ai import MistralAIChatCompletion
chat_completion_service = MistralAIChatCompletion(
ai_model_id="model-id",
api_key="my-api-key",
service_id="my-service-id", # Optional; for targeting specific services within Semantic Kernel
)
from semantic_kernel.connectors.ai.ollama import OllamaChatCompletion
chat_completion_service = OllamaChatCompletion(
ai_model_id="model-id",
service_id="my-service-id", # Optional; for targeting specific services within Semantic Kernel
)
Tip
Meer informatie over Ollama en download de benodigde software van hier.
from semantic_kernel.connectors.ai.onnx import OnnxGenAIChatCompletion
chat_completion_service = OnnxGenAIChatCompletion(
template="phi3v",
ai_model_path="model-path",
service_id="my-service-id", # Optional; for targeting specific services within Semantic Kernel
)
U kunt de voltooiingsservice meteen gaan gebruiken of de chatvoltooiingsservice toevoegen aan een kernel. U kunt de volgende code gebruiken om een service toe te voegen aan de kernel.
from semantic_kernel import Kernel
# Initialize the kernel
kernel = Kernel()
# Add the chat completion service created above to the kernel
kernel.add_service(chat_completion_service)
U kunt exemplaren van de chatvoltooiingsservice rechtstreeks maken en deze toevoegen aan een kernel of ze rechtstreeks in uw code gebruiken zonder ze in de kernel te injecteren. De volgende code laat zien hoe u een chat-voltooiingsservice maakt en deze toevoegt aan de kernel.
import com.azure.ai.openai.OpenAIAsyncClient;
import com.azure.ai.openai.OpenAIClientBuilder;
import com.microsoft.semantickernel.Kernel;
import com.microsoft.semantickernel.services.chatcompletion.ChatCompletionService;
// Create the client
OpenAIAsyncClient client = new OpenAIClientBuilder()
.credential(azureOpenAIClientCredentials)
.endpoint(azureOpenAIClientEndpoint)
.buildAsyncClient();
// Create the chat completion service
ChatCompletionService openAIChatCompletion = OpenAIChatCompletion.builder()
.withOpenAIAsyncClient(client)
.withModelId(modelId)
.build();
// Initialize the kernel
Kernel kernel = Kernel.builder()
.withAIService(ChatCompletionService.class, openAIChatCompletion)
.build();
import com.azure.ai.openai.OpenAIAsyncClient;
import com.azure.ai.openai.OpenAIClientBuilder;
import com.microsoft.semantickernel.Kernel;
import com.microsoft.semantickernel.services.chatcompletion.ChatCompletionService;
// Create the client
OpenAIAsyncClient client = new OpenAIClientBuilder()
.credential(openAIClientCredentials)
.buildAsyncClient();
// Create the chat completion service
ChatCompletionService openAIChatCompletion = OpenAIChatCompletion.builder()
.withOpenAIAsyncClient(client)
.withModelId(modelId)
.build();
// Initialize the kernel
Kernel kernel = Kernel.builder()
.withAIService(ChatCompletionService.class, openAIChatCompletion)
.build();
Services voor chatvoltooiing ophalen
Nadat u chatvoltooiingsservices aan uw kernel hebt toegevoegd, kunt u deze ophalen met behulp van de get-servicemethode. Hieronder ziet u een voorbeeld van hoe u een chatvoltooiingsservice van de kernel kunt ophalen.
var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();
from semantic_kernel.connectors.ai.chat_completion_client_base import ChatCompletionClientBase
# Retrieve the chat completion service by type
chat_completion_service = kernel.get_service(type=ChatCompletionClientBase)
# Retrieve the chat completion service by id
chat_completion_service = kernel.get_service(service_id="my-service-id")
# Retrieve the default inference settings
execution_settings = kernel.get_prompt_execution_settings_from_service_id("my-service-id")
Het toevoegen van de chatvoltooiingsservice aan de kernel is niet vereist als u geen andere services in de kernel hoeft te gebruiken. U kunt de chatvoltooiingsservice rechtstreeks in uw code gebruiken.
Services voor chatvoltooiing gebruiken
Nu u een chatvoltooiingsservice hebt, kunt u deze gebruiken om antwoorden te genereren van een AI-agent. Er zijn twee belangrijkste manieren om een chat-voltooiingsservice te gebruiken:
niet-streaming: u wacht totdat de service een volledig antwoord genereert, voordat u deze teruggeeft aan de gebruiker.
streaming: De afzonderlijke segmenten van het antwoord worden gegenereerd en aan de gebruiker geretourneerd zodra ze zijn gemaakt.
Voordat u aan de slag gaat, moet u handmatig een exemplaar van de uitvoeringsinstellingen maken om de voltooiingsservice voor chats te gebruiken als u de service niet bij de kernel hebt geregistreerd.
from semantic_kernel.connectors.ai.open_ai import OpenAIChatPromptExecutionSettings
execution_settings = OpenAIChatPromptExecutionSettings()
from semantic_kernel.connectors.ai.open_ai import OpenAIChatPromptExecutionSettings
execution_settings = OpenAIChatPromptExecutionSettings()
from semantic_kernel.connectors.ai.azure_ai_inference import AzureAIInferenceChatPromptExecutionSettings
execution_settings = AzureAIInferenceChatPromptExecutionSettings()
from semantic_kernel.connectors.ai.anthropic import AnthropicChatPromptExecutionSettings
execution_settings = AnthropicChatPromptExecutionSettings()
from semantic_kernel.connectors.ai.bedrock import BedrockChatPromptExecutionSettings
execution_settings = BedrockChatPromptExecutionSettings()
from semantic_kernel.connectors.ai.google.google_ai import GoogleAIChatPromptExecutionSettings
execution_settings = GoogleAIChatPromptExecutionSettings()
from semantic_kernel.connectors.ai.google.vertex_ai import VertexAIChatPromptExecutionSettings
execution_settings = VertexAIChatPromptExecutionSettings()
from semantic_kernel.connectors.ai.mistral_ai import MistralAIChatPromptExecutionSettings
execution_settings = MistralAIChatPromptExecutionSettings()
from semantic_kernel.connectors.ai.ollama import OllamaChatPromptExecutionSettings
execution_settings = OllamaChatPromptExecutionSettings()
from semantic_kernel.connectors.ai.onnx import OnnxGenAIPromptExecutionSettings
execution_settings = OnnxGenAIPromptExecutionSettings()
Tip
Als u wilt zien wat u kunt configureren in de uitvoeringsinstellingen, kunt u de klassedefinitie controleren in de broncode of de API-documentatie bekijken.
Hieronder vindt u de twee manieren waarop u een chat-voltooiingsservice kunt gebruiken om antwoorden te genereren.
Niet-streaming chatvoltooiing
Als u niet-streaming chatvoltooiing wilt gebruiken, kunt u de volgende code gebruiken om een antwoord van de AI-agent te genereren.
ChatHistory history = [];
history.AddUserMessage("Hello, how are you?");
var response = await chatCompletionService.GetChatMessageContentAsync(
history,
kernel: kernel
);
chat_history = ChatHistory()
chat_history.add_user_message("Hello, how are you?")
response = await chat_completion.get_chat_message_content(
chat_history=history,
settings=execution_settings,
)
ChatHistory history = new ChatHistory();
history.addUserMessage("Hello, how are you?");
InvocationContext optionalInvocationContext = null;
List<ChatMessageContent<?>> response = chatCompletionService.getChatMessageContentsAsync(
history,
kernel,
optionalInvocationContext
);
Voltooiing van streamingchat
Als u streamingchatvoltooiing wilt gebruiken, kunt u de volgende code gebruiken om een antwoord te genereren van de AI-agent.
ChatHistory history = [];
history.AddUserMessage("Hello, how are you?");
var response = chatCompletionService.GetStreamingChatMessageContentsAsync(
chatHistory: history,
kernel: kernel
);
await foreach (var chunk in response)
{
Console.Write(chunk);
}
chat_history = ChatHistory()
chat_history.add_user_message("Hello, how are you?")
response = chat_completion.get_streaming_chat_message_content(
chat_history=history,
settings=execution_settings,
)
async for chunk in response:
print(chunk, end="")
Notitie
Semantische kernel voor Java biedt geen ondersteuning voor het streaming-antwoordmodel.
Volgende stappen
Nu u chatvoltooiingsservices hebt toegevoegd aan uw Semantic Kernel-project, kunt u beginnen met het maken van gesprekken met uw AI-agent. Raadpleeg de volgende artikelen voor meer informatie over het gebruik van een chatvoltooiingsservice: