Files
semantic-kernel/python/samples/sk_service_configurator.py
T
Eduard van Valkenburg fb8edbef94 Python: updates to cicd and notebooks (#6485)
### Motivation and Context

<!-- Thank you for your contribution to the semantic-kernel repo!
Please help reviewers and future users, providing the following
information:
  1. Why is this change required?
  2. What problem does it solve?
  3. What scenario does it contribute to?
  4. If it fixes an open issue, please link to the issue here.
-->
Small update to test coverage workflow, to retrigger based on workflow
run.
Small updates to samples notebooks, to use GLOBAL_LLM_SERVICE allowing
control of where they run through env.

### Description

<!-- Describe your changes, the overall approach, the underlying design.
These notes will help understanding how your code works. Thanks! -->

### Contribution Checklist

<!-- Before submitting this PR, please make sure: -->

- [x] The code builds clean without any errors or warnings
- [x] The PR follows the [SK Contribution
Guidelines](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md)
and the [pre-submission formatting
script](https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md#development-scripts)
raises no violations
- [x] All unit tests pass, and I have added new tests where possible
- [x] I didn't break anyone 😄
2024-06-03 13:58:02 +00:00

69 lines
2.5 KiB
Python

# Copyright (c) Microsoft. All rights reserved.
from pydantic import ValidationError
from samples.service_settings import ServiceSettings
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import (
AzureChatCompletion,
AzureTextCompletion,
OpenAIChatCompletion,
OpenAITextCompletion,
)
from semantic_kernel.exceptions.service_exceptions import ServiceInitializationError
def add_service(
kernel: Kernel, use_chat: bool = True, env_file_path: str | None = None, env_file_encoding: str | None = None
) -> Kernel:
"""
Configure the AI service for the kernel
Args:
kernel (Kernel): The kernel to configure
use_chat (bool): Whether to use the chat completion model, or the text completion model
env_file_path (str | None): The absolute or relative file path to the .env file.
env_file_encoding (str | None): The desired type of encoding. Defaults to utf-8.
Returns:
Kernel: The configured kernel
"""
try:
settings = ServiceSettings.create(
env_file_path=env_file_path,
env_file_encoding=env_file_encoding,
)
except ValidationError as ex:
raise ServiceInitializationError("Unable to configure learn resources settings.", ex) from ex
if not settings.global_llm_service:
print("GLOBAL_LLM_SERVICE not set, trying to use Azure OpenAI.")
settings.global_llm_service = "AzureOpenAI"
# The service_id is used to identify the service in the kernel.
# This can be updated to a custom value if needed.
# It should match the execution setting's key in a config.json file.
service_id = "default"
# Configure AI service used by the kernel. Load settings from the .env file.
if settings.global_llm_service == "OpenAI":
if use_chat:
# <OpenAIKernelCreation>
kernel.add_service(OpenAIChatCompletion(service_id=service_id))
# </OpenAIKernelCreation>
else:
# <OpenAITextCompletionKernelCreation>
kernel.add_service(OpenAITextCompletion(service_id=service_id))
# </OpenAITextCompletionKernelCreation>
else:
if use_chat:
# <TypicalKernelCreation>
kernel.add_service(AzureChatCompletion(service_id=service_id))
# </TypicalKernelCreation>
else:
# <TextCompletionKernelCreation>
kernel.add_service(AzureTextCompletion(service_id=service_id))
# </TextCompletionKernelCreation>
return kernel