Sohbet tamamlandıktan sonra yapay zeka aracısı ile bir ileri geri konuşmanın benzetimini yapabilirsiniz. Bu, sohbet botları oluşturmak için elbette yararlıdır, ancak iş süreçlerini tamamlayabilen, kod oluşturabilen ve daha fazlasını yapabilecek otonom aracılar oluşturmak için de kullanılabilir. OpenAI, Google, Mistral, Facebook ve diğerleri tarafından sağlanan birincil model türü olarak sohbet tamamlama, Anlam Çekirdeği projenize ekleyeceğiniz en yaygın yapay zeka hizmetidir.
Bir sohbet tamamlama modeli seçerken aşağıdakileri göz önünde bulundurmanız gerekir:
Model hangi modaliteleri (örneğin, metin, görüntü, ses vb.) destekler?
İşlev çağrılarını destekliyor mu?
Belirteçleri ne kadar hızlı alır ve oluşturur?
Her belirtecin maliyeti ne kadardır?
Önemli
Yukarıdaki tüm sorulardan en önemlisi, modelin işlev çağrısını destekleyip desteklemediğidir. Aksi takdirde, mevcut kodunuzu çağırmak için modeli kullanamazsınız. OpenAI, Google, Mistral ve Amazon'un en son modellerinin çoğu işlev çağrısını destekler. Ancak küçük dil modellerinin desteği hala sınırlıdır.
Yerel ortamınızı ayarlama
Yapay Zeka Hizmetlerinden bazıları yerel olarak barındırılabilir ve biraz kurulum gerektirebilir. Aşağıda bunu destekleyenler için yönergeler yer almaktadır.
Kapsayıcı başlatıldıktan sonra docker kapsayıcısı için bir Terminal penceresi başlatın; örneğin docker desktop kullanıyorsanız eylemlerden Open in Terminal seçin.
Bu terminalden gerekli modelleri indirin, örneğin burada phi3 modelini indiriyoruz.
ollama pull phi3
Yerel kurulum yok.
Yerel kurulum yok.
Kullanmak istediğiniz ONNX modelini içeren depoyu kopyalayın.
Çekirdeğinize sohbet tamamlama eklemeden önce gerekli paketleri yüklemeniz gerekir. Her bir yapay zeka hizmet sağlayıcısı için yüklemeniz gereken paketler aşağıda belirtilmiştir.
Artık gerekli paketleri yüklediğinize göre sohbet tamamlama hizmetleri oluşturabilirsiniz. Anlam Çekirdeği kullanarak sohbet tamamlama hizmetleri oluşturmanın çeşitli yolları aşağıdadır.
Doğrudan çekreğe ekleme
Sohbet tamamlama hizmeti eklemek için aşağıdaki kodu kullanarak çekirdeğin iç hizmet sağlayıcısına ekleyebilirsiniz.
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();
Önemli
Mistral sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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();
Önemli
Google sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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();
Önemli
Yüz Tanımayı Kucaklama sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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();
Önemli
Azure AI Çıkarım sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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();
Önemli
Ollama sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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();
Önemli
Antropik için gerekli olan Bedrock sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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();
Önemli
Bedrock sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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();
Önemli
ONNX sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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();
OpenAI sohbet tamamlama API'sini (ör. LLM Studio) destekleyen diğer yapay zeka hizmet sağlayıcıları için, mevcut OpenAI sohbet tamamlama bağlayıcısını yeniden kullanmak için aşağıdaki kodu kullanabilirsiniz.
Önemli
OpenAI bağlayıcısı ile özel uç noktaların kullanılması şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0010gerekir.
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();
Bağımlılık eklemeyi kullanma
Bağımlılık ekleme kullanıyorsanız yapay zeka hizmetlerinizi doğrudan hizmet sağlayıcısına eklemek isteyebilirsiniz. Yapay zeka hizmetlerinizin tek teklerini oluşturmak ve bunları geçici çekirdeklerde yeniden kullanmak istiyorsanız bu yararlı olur.
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);
});
Önemli
Mistral sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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);
});
Önemli
Google sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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);
});
Önemli
Yüz Tanımayı Kucaklama sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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);
});
Önemli
Azure AI Çıkarım sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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);
});
Önemli
Ollama sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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);
});
Önemli
Antropik için gerekli olan Bedrock sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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);
});
Önemli
Bedrock sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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);
});
Önemli
ONNX sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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);
});
OpenAI sohbet tamamlama API'sini (ör. LLM Studio) destekleyen diğer yapay zeka hizmet sağlayıcıları için, mevcut OpenAI sohbet tamamlama bağlayıcısını yeniden kullanmak için aşağıdaki kodu kullanabilirsiniz.
Önemli
OpenAI bağlayıcısı ile özel uç noktaların kullanılması şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0010gerekir.
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);
});
Tek başına örnekler oluşturma
Son olarak, hizmetin örneklerini doğrudan oluşturabilirsiniz; böylece bunları daha sonra bir çekçek içine ekleyebilir veya bunları hiç çekirdek veya hizmet sağlayıcısına eklemeden doğrudan kodunuz içinde kullanabilirsiniz.
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
);
Önemli
Mistral sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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
);
Önemli
Google sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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
);
Önemli
Yüz Tanımayı Kucaklama sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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
);
Önemli
Azure AI Çıkarım sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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
);
Önemli
Ollama sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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();
Önemli
Antropik için gerekli olan Bedrock sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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.
);
Önemli
Bedrock sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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.
);
Önemli
ONNX sohbet tamamlama bağlayıcısı şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0070gerekir.
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.
);
OpenAI sohbet tamamlama API'sini (ör. LLM Studio) destekleyen diğer yapay zeka hizmet sağlayıcıları için, mevcut OpenAI sohbet tamamlama bağlayıcısını yeniden kullanmak için aşağıdaki kodu kullanabilirsiniz.
Önemli
OpenAI bağlayıcısı ile özel uç noktaların kullanılması şu anda deneyseldir. Bunu kullanmak için eklemeniz #pragma warning disable SKEXP0010gerekir.
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
);
Sohbet tamamlama hizmeti oluşturmak için gerekli modülleri yükleyip içeri aktarmanız ve hizmetin bir örneğini oluşturmanız gerekir. Aşağıda, her yapay zeka hizmet sağlayıcısı için bir sohbet tamamlama hizmeti yükleme ve oluşturma adımları yer almaktadır.
Anlam Çekirdeği paketi, Azure OpenAI'yi kullanmak için gerekli tüm paketlerle birlikte gelir. Azure OpenAI'yi kullanmak için ek paket gerekmez.
Anlam Çekirdeği paketi, OpenAI'yi kullanmak için gerekli tüm paketlerle birlikte gelir. OpenAI'yi kullanmak için ek paket gerekmez.
pip install semantic-kernel[azure]
pip install semantic-kernel[anthropic]
pip install semantic-kernel[aws]
pip install semantic-kernel[google]
pip install semantic-kernel[google]
pip install semantic-kernel[mistralai]
pip install semantic-kernel[ollama]
pip install semantic-kernel[onnx]
Sohbet tamamlama hizmeti oluşturma
Bahşiş
Yapay zeka hizmetlerine gerekli bilgileri sağlamak için üç yöntem vardır. Bilgileri doğrudan oluşturucu aracılığıyla sağlayabilir, gerekli ortam değişkenlerini ayarlayabilir veya proje dizininizde ortam değişkenlerini içeren bir .env dosyası oluşturabilirsiniz. Her yapay zeka hizmet sağlayıcısı için gerekli tüm ortam değişkenlerini bulmak için bu sayfayı ziyaret edebilirsiniz: 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")
Not
AzureChatCompletion hizmeti Microsoft Entra kimlik doğrulamasını da destekler. BIR API anahtarı sağlamazsanız hizmet, Entra belirtecini kullanarak kimlik doğrulamayı dener.
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"],
),
)
Not
AzureAIInferenceChatCompletion hizmeti Microsoft Entra kimlik doğrulamasını da destekler. BIR API anahtarı sağlamazsanız hizmet, Entra belirtecini kullanarak kimlik doğrulamayı dener.
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
)
Not
Amazon Bedrock bir API anahtarını kabul etmez. Ortamınızı yapılandırmak için bu kılavuzu izleyin.
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
)
Bahşiş
Kullanıcılar Google'ın gemini modellerine Google AI Studio veya Google Köşe platformu üzerinden erişebilir. Ortamınızı yapılandırmak için bu kılavuzu izleyin.
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
)
Bahşiş
Kullanıcılar Google'ın gemini modellerine Google AI Studio veya Google Köşe platformu üzerinden erişebilir. Ortamınızı yapılandırmak için bu kılavuzu izleyin.
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
)
Bahşiş
Ollama hakkında daha fazla bilgi edinin ve gerekli yazılımları buradanindirin.
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
)
Tamamlama hizmetini hemen kullanmaya başlayabilir veya sohbet tamamlama hizmetini bir çekırdeğe ekleyebilirsiniz. Çekirdeğine hizmet eklemek için aşağıdaki kodu kullanabilirsiniz.
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)
Sohbet tamamlama hizmetinin örneklerini doğrudan oluşturabilir ve bunları bir çekreğe ekleyebilir veya çekirdeğinize eklemeden doğrudan kodunuzda kullanabilirsiniz. Aşağıdaki kod, bir sohbet tamamlama hizmetinin nasıl oluşturulacağını ve çekirdeğine nasıl ekleneceğini gösterir.
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();
Sohbet tamamlama hizmetlerini alma
Sohbet tamamlama hizmetlerini çekirdeğinize ekledikten sonra get service yöntemini kullanarak bunları alabilirsiniz. Aşağıda çekirdekten bir sohbet tamamlama hizmetini nasıl alabileceğinize ilişkin bir örnek verilmiştir.
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")
Çekirdekteki diğer hizmetleri kullanmanız gerekmiyorsa sohbet tamamlama hizmetini çekirdekte eklemek gerekmez. Sohbet tamamlama hizmetini doğrudan kodunuzda kullanabilirsiniz.
Sohbet tamamlama hizmetlerini kullanma
Artık bir sohbet tamamlama hizmetiniz olduğuna göre, yapay zeka aracısından yanıtlar oluşturmak için bunu kullanabilirsiniz. Sohbet tamamlama hizmetini kullanmanın iki ana yolu vardır:
Akışsız: Kullanıcıya döndürmeden önce hizmetin yanıtın tamamını oluşturmasını beklersiniz.
Akış: Yanıtın tek tek öbekleri oluşturulur ve oluşturuldukları anda kullanıcıya döndürülür.
Başlamadan önce, hizmeti çekirdekle kaydetmediyseniz sohbet tamamlama hizmetini kullanmak için el ile bir yürütme ayarları örneği oluşturmanız gerekir.
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()
Bahşiş
Yürütme ayarlarında neler yapılandırabileceğinizi görmek için kaynak kodundaki sınıf tanımını denetleyebilirsiniz veyaAPI belgelerine göz atabilirsiniz.
Yanıt oluşturmak için sohbet tamamlama hizmetini kullanmanın iki yolu aşağıdadır.
Akışsız sohbet tamamlama
Akışsız sohbet tamamlama özelliğini kullanmak için aşağıdaki kodu kullanarak yapay zeka aracısından bir yanıt oluşturabilirsiniz.
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
);
Akış sohbeti tamamlama
Akış sohbeti tamamlama özelliğini kullanmak için aşağıdaki kodu kullanarak yapay zeka aracısından bir yanıt oluşturabilirsiniz.
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="")
Not
Java için Anlam Çekirdeği akış yanıt modelini desteklemez.
Sonraki adımlar
Artık Semantik Çekirdek projenize sohbet tamamlama hizmetleri eklediğinize göre yapay zeka aracınızla konuşmalar oluşturmaya başlayabilirsiniz. Sohbet tamamlama hizmetini kullanma hakkında daha fazla bilgi edinmek için aşağıdaki makalelere göz atın: