KernelServicesExtension Class

Kernel services extension.

Adds all services related entities to the Kernel.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

Inheritance
KernelServicesExtension
KernelServicesExtension

Constructor

KernelServicesExtension(*, services: dict[str, AIServiceClientBase] = None, ai_service_selector: AIServiceSelector = None)

Keyword-Only Parameters

Name Description
services
Required
ai_service_selector
Required

Methods

add_service

Add a single service to the Kernel.

get_prompt_execution_settings_from_service_id

Get the specific request settings from the service, instantiated with the service_id and ai_model_id.

get_service

Get a service by service_id and type.

Type is optional and when not supplied, no checks are done. Type should be

TextCompletionClientBase, ChatCompletionClientBase, EmbeddingGeneratorBase or a subclass of one. You can also check for multiple types in one go, by using a tuple: (TextCompletionClientBase, ChatCompletionClientBase).

If type and service_id are both None, the first service is returned.

get_services_by_type

Get all services of a specific type.

remove_all_services

Removes the services from the Kernel, does not delete them.

remove_service

Delete a single service from the Kernel.

rewrite_services

Rewrite services to a dictionary.

select_ai_service

Uses the AI service selector to select a service for the function.

add_service

Add a single service to the Kernel.

add_service(service: AIServiceClientBase, overwrite: bool = False) -> None

Parameters

Name Description
service
Required
<xref:semantic_kernel.services.kernel_services_extension.AIServiceClientBase>

The service to add.

overwrite
<xref:<xref:semantic_kernel.services.kernel_services_extension.bool, optional>>

Whether to overwrite the service if it already exists. Defaults to False.

Default value: False

get_prompt_execution_settings_from_service_id

Get the specific request settings from the service, instantiated with the service_id and ai_model_id.

get_prompt_execution_settings_from_service_id(service_id: str, type: type[AI_SERVICE_CLIENT_TYPE] | None = None) -> PromptExecutionSettings

Parameters

Name Description
service_id
Required
type
Default value: None

get_service

Get a service by service_id and type.

Type is optional and when not supplied, no checks are done. Type should be

TextCompletionClientBase, ChatCompletionClientBase, EmbeddingGeneratorBase or a subclass of one. You can also check for multiple types in one go, by using a tuple: (TextCompletionClientBase, ChatCompletionClientBase).

If type and service_id are both None, the first service is returned.

get_service(service_id: str | None = None, type: type[AI_SERVICE_CLIENT_TYPE] | tuple[type[AI_SERVICE_CLIENT_TYPE], ...] | None = None) -> AIServiceClientBase

Parameters

Name Description
service_id
<xref:<xref:semantic_kernel.services.kernel_services_extension.str | None>>

The service id, if None, the default service is returned or the first service is returned.

Default value: None
type
<xref:Type>[<xref:AI_SERVICE_CLIENT_TYPE>]<xref: | tuple>[type[<xref:AI_SERVICE_CLIENT_TYPE>],<xref: ...>]<xref: | None>

The type of the service, if None, no checks are done on service type.

Default value: None

Returns

Type Description

The service, should be a class derived from AIServiceClientBase.

Exceptions

Type Description

If no service is found that matches the type or id.

get_services_by_type

Get all services of a specific type.

get_services_by_type(type: type[AI_SERVICE_CLIENT_TYPE] | tuple[type[AI_SERVICE_CLIENT_TYPE], ...] | None) -> dict[str, AIServiceClientBase]

Parameters

Name Description
type
Required

remove_all_services

Removes the services from the Kernel, does not delete them.

remove_all_services() -> None

remove_service

Delete a single service from the Kernel.

remove_service(service_id: str) -> None

Parameters

Name Description
service_id
Required

rewrite_services

Rewrite services to a dictionary.

rewrite_services(services: AI_SERVICE_CLIENT_TYPE | list[AI_SERVICE_CLIENT_TYPE] | dict[str, AI_SERVICE_CLIENT_TYPE] | None = None) -> dict[str, AI_SERVICE_CLIENT_TYPE]

Parameters

Name Description
services
Default value: None

select_ai_service

Uses the AI service selector to select a service for the function.

select_ai_service(function: KernelFunction, arguments: KernelArguments) -> tuple[AIServiceClientBase, PromptExecutionSettings]

Parameters

Name Description
function
Required
arguments
Required

Attributes

model_computed_fields

A dictionary of computed field names and their corresponding ComputedFieldInfo objects.

model_computed_fields: ClassVar[Dict[str, ComputedFieldInfo]] = {}

model_config

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'populate_by_name': True, 'validate_assignment': True}

model_fields

Metadata about the fields defined on the model, mapping of field names to [FieldInfo][pydantic.fields.FieldInfo] objects.

This replaces Model.fields from Pydantic V1.

model_fields: ClassVar[Dict[str, FieldInfo]] = {'ai_service_selector': FieldInfo(annotation=AIServiceSelector, required=False, default_factory=AIServiceSelector), 'services': FieldInfo(annotation=dict[str, AIServiceClientBase], required=False, default_factory=dict)}

ai_service_selector

ai_service_selector: AIServiceSelector

services

services: dict[str, AIServiceClientBase]