semantic-kernel 0.2.4.dev0__tar.gz → 0.2.5.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/PKG-INFO +9 -6
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/README.md +5 -5
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/pyproject.toml +4 -1
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/chat_completion_client_base.py +1 -1
- semantic_kernel-0.2.5.dev0/semantic_kernel/connectors/ai/hugging_face/__init__.py +10 -0
- semantic_kernel-0.2.5.dev0/semantic_kernel/connectors/ai/hugging_face/services/hf_text_completion.py +95 -0
- semantic_kernel-0.2.5.dev0/semantic_kernel/connectors/ai/hugging_face/services/hf_text_embedding.py +63 -0
- semantic_kernel-0.2.5.dev0/semantic_kernel/connectors/ai/open_ai/__init__.py +29 -0
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/azure_chat_completion.py +2 -2
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/azure_text_completion.py +2 -2
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/azure_text_embedding.py +2 -2
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/open_ai_chat_completion.py +36 -4
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/open_ai_text_completion.py +10 -6
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/open_ai_text_embedding.py +2 -2
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/text_completion_client_base.py +4 -2
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/time_skill.py +11 -1
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel.py +23 -17
- semantic_kernel-0.2.5.dev0/semantic_kernel/kernel_config.py +260 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_exception.py +4 -4
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_extensions/import_skills.py +21 -21
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_extensions/memory_configuration.py +10 -12
- semantic_kernel-0.2.5.dev0/semantic_kernel/memory/memory_query_result.py +73 -0
- semantic_kernel-0.2.5.dev0/semantic_kernel/memory/memory_record.py +104 -0
- semantic_kernel-0.2.5.dev0/semantic_kernel/memory/memory_store_base.py +79 -0
- semantic_kernel-0.2.5.dev0/semantic_kernel/memory/semantic_text_memory.py +157 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/memory/semantic_text_memory_base.py +1 -2
- semantic_kernel-0.2.5.dev0/semantic_kernel/memory/volatile_memory_store.py +326 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/sk_function.py +32 -30
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/sk_function_base.py +11 -9
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/semantic_functions/prompt_template_config.py +2 -2
- semantic_kernel-0.2.5.dev0/semantic_kernel/text/__init__.py +17 -0
- semantic_kernel-0.2.5.dev0/semantic_kernel/text/function_extension.py +23 -0
- semantic_kernel-0.2.5.dev0/semantic_kernel/text/text_chunker.py +250 -0
- semantic_kernel-0.2.4.dev0/semantic_kernel/ai/embeddings/embedding_index_base.py +0 -20
- semantic_kernel-0.2.4.dev0/semantic_kernel/ai/open_ai/__init__.py +0 -27
- semantic_kernel-0.2.4.dev0/semantic_kernel/kernel_config.py +0 -251
- semantic_kernel-0.2.4.dev0/semantic_kernel/memory/memory_query_result.py +0 -43
- semantic_kernel-0.2.4.dev0/semantic_kernel/memory/memory_record.py +0 -63
- semantic_kernel-0.2.4.dev0/semantic_kernel/memory/memory_store_base.py +0 -10
- semantic_kernel-0.2.4.dev0/semantic_kernel/memory/semantic_text_memory.py +0 -75
- semantic_kernel-0.2.4.dev0/semantic_kernel/memory/storage/data_entry.py +0 -36
- semantic_kernel-0.2.4.dev0/semantic_kernel/memory/storage/data_store_base.py +0 -36
- semantic_kernel-0.2.4.dev0/semantic_kernel/memory/storage/volatile_data_store.py +0 -62
- semantic_kernel-0.2.4.dev0/semantic_kernel/memory/volatile_memory_store.py +0 -100
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/__init__.py +0 -0
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/ai_exception.py +0 -0
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/chat_request_settings.py +0 -0
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/complete_request_settings.py +0 -0
- {semantic_kernel-0.2.4.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/embeddings/embedding_generator_base.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/__init__.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/file_io_skill.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/http_skill.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/text_memory_skill.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/text_skill.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_base.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_extensions/__init__.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_extensions/extends_kernel.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_extensions/inline_definition.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/memory/__init__.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/memory/null_memory.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/context_variables.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/delegate_handlers.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/delegate_inference.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/delegate_types.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/sk_context.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/reliability/pass_through_without_retry.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/reliability/retry_mechanism.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/semantic_functions/chat_prompt_template.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/semantic_functions/prompt_template.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/semantic_functions/prompt_template_base.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/semantic_functions/semantic_function_config.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/__init__.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/function_view.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/functions_view.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/parameter_view.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/read_only_skill_collection.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/read_only_skill_collection_base.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/sk_function_context_parameter_decorator.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/sk_function_decorator.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/skill_collection.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/skill_collection_base.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/README.md +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/block.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/block_types.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/code_block.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/function_id_block.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/symbols.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/text_block.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/val_block.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/var_block.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/code_tokenizer.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/prompt_template_engine.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/protocols/code_renderer.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/protocols/prompt_templating_engine.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/protocols/text_renderer.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/template_tokenizer.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/utils/null_logger.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/utils/settings.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/utils/static_property.py +0 -0
- {semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/utils/validation.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: semantic-kernel
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.5.dev0
|
|
4
4
|
Summary:
|
|
5
5
|
Author: Microsoft
|
|
6
6
|
Author-email: SK-Support@microsoft.com
|
|
@@ -13,6 +13,9 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
13
13
|
Requires-Dist: aiofiles (>=23.1.0,<24.0.0)
|
|
14
14
|
Requires-Dist: numpy (>=1.24.2,<2.0.0)
|
|
15
15
|
Requires-Dist: openai (>=0.27.0,<0.28.0)
|
|
16
|
+
Requires-Dist: sentence-transformers (>=2.2.2,<3.0.0)
|
|
17
|
+
Requires-Dist: torch (>=2.0.0,<3.0.0)
|
|
18
|
+
Requires-Dist: transformers (>=4.28.1,<5.0.0)
|
|
16
19
|
Description-Content-Type: text/markdown
|
|
17
20
|
|
|
18
21
|
# Get Started with Semantic Kernel ⚡
|
|
@@ -22,7 +25,7 @@ Install the latest package:
|
|
|
22
25
|
python -m pip install --upgrade semantic-kernel
|
|
23
26
|
|
|
24
27
|
|
|
25
|
-
# AI
|
|
28
|
+
# AI Services
|
|
26
29
|
|
|
27
30
|
## OpenAI / Azure OpenAI API keys
|
|
28
31
|
|
|
@@ -44,17 +47,17 @@ AZURE_OPENAI_API_KEY=""
|
|
|
44
47
|
|
|
45
48
|
```python
|
|
46
49
|
import semantic_kernel as sk
|
|
47
|
-
from semantic_kernel.ai.open_ai import OpenAITextCompletion, AzureTextCompletion
|
|
50
|
+
from semantic_kernel.connectors.ai.open_ai import OpenAITextCompletion, AzureTextCompletion
|
|
48
51
|
|
|
49
52
|
kernel = sk.Kernel()
|
|
50
53
|
|
|
51
|
-
# Prepare OpenAI
|
|
54
|
+
# Prepare OpenAI service using credentials stored in the `.env` file
|
|
52
55
|
api_key, org_id = sk.openai_settings_from_dot_env()
|
|
53
|
-
kernel.config.
|
|
56
|
+
kernel.config.add_text_service("dv", OpenAITextCompletion("text-davinci-003", api_key, org_id))
|
|
54
57
|
|
|
55
58
|
# Alternative using Azure:
|
|
56
59
|
# deployment, api_key, endpoint = sk.azure_openai_settings_from_dot_env()
|
|
57
|
-
# kernel.config.
|
|
60
|
+
# kernel.config.add_text_service("dv", AzureTextCompletion(deployment, endpoint, api_key))
|
|
58
61
|
|
|
59
62
|
# Wrap your prompt in a function
|
|
60
63
|
prompt = kernel.create_semantic_function("""
|
|
@@ -5,7 +5,7 @@ Install the latest package:
|
|
|
5
5
|
python -m pip install --upgrade semantic-kernel
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
# AI
|
|
8
|
+
# AI Services
|
|
9
9
|
|
|
10
10
|
## OpenAI / Azure OpenAI API keys
|
|
11
11
|
|
|
@@ -27,17 +27,17 @@ AZURE_OPENAI_API_KEY=""
|
|
|
27
27
|
|
|
28
28
|
```python
|
|
29
29
|
import semantic_kernel as sk
|
|
30
|
-
from semantic_kernel.ai.open_ai import OpenAITextCompletion, AzureTextCompletion
|
|
30
|
+
from semantic_kernel.connectors.ai.open_ai import OpenAITextCompletion, AzureTextCompletion
|
|
31
31
|
|
|
32
32
|
kernel = sk.Kernel()
|
|
33
33
|
|
|
34
|
-
# Prepare OpenAI
|
|
34
|
+
# Prepare OpenAI service using credentials stored in the `.env` file
|
|
35
35
|
api_key, org_id = sk.openai_settings_from_dot_env()
|
|
36
|
-
kernel.config.
|
|
36
|
+
kernel.config.add_text_service("dv", OpenAITextCompletion("text-davinci-003", api_key, org_id))
|
|
37
37
|
|
|
38
38
|
# Alternative using Azure:
|
|
39
39
|
# deployment, api_key, endpoint = sk.azure_openai_settings_from_dot_env()
|
|
40
|
-
# kernel.config.
|
|
40
|
+
# kernel.config.add_text_service("dv", AzureTextCompletion(deployment, endpoint, api_key))
|
|
41
41
|
|
|
42
42
|
# Wrap your prompt in a function
|
|
43
43
|
prompt = kernel.create_semantic_function("""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = "semantic-kernel"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.5.dev"
|
|
4
4
|
description = ""
|
|
5
5
|
authors = ["Microsoft <SK-Support@microsoft.com>"]
|
|
6
6
|
readme = "README.md"
|
|
@@ -11,6 +11,9 @@ python = "^3.8"
|
|
|
11
11
|
numpy = "^1.24.2"
|
|
12
12
|
openai = "^0.27.0"
|
|
13
13
|
aiofiles = "^23.1.0"
|
|
14
|
+
transformers = "^4.28.1"
|
|
15
|
+
torch = "^2.0.0"
|
|
16
|
+
sentence-transformers = "^2.2.2"
|
|
14
17
|
|
|
15
18
|
[tool.poetry.group.dev.dependencies]
|
|
16
19
|
pre-commit = "^2.21.0"
|
|
@@ -5,7 +5,7 @@ from logging import Logger
|
|
|
5
5
|
from typing import TYPE_CHECKING, List, Tuple
|
|
6
6
|
|
|
7
7
|
if TYPE_CHECKING:
|
|
8
|
-
from semantic_kernel.ai.chat_request_settings import ChatRequestSettings
|
|
8
|
+
from semantic_kernel.connectors.ai.chat_request_settings import ChatRequestSettings
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ChatCompletionClientBase(ABC):
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Copyright (c) Microsoft. All rights reserved.
|
|
2
|
+
|
|
3
|
+
from semantic_kernel.connectors.ai.hugging_face.services.hf_text_completion import (
|
|
4
|
+
HuggingFaceTextCompletion,
|
|
5
|
+
)
|
|
6
|
+
from semantic_kernel.connectors.ai.hugging_face.services.hf_text_embedding import (
|
|
7
|
+
HuggingFaceTextEmbedding,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
__all__ = ["HuggingFaceTextCompletion", "HuggingFaceTextEmbedding"]
|
semantic_kernel-0.2.5.dev0/semantic_kernel/connectors/ai/hugging_face/services/hf_text_completion.py
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Copyright (c) Microsoft. All rights reserved.
|
|
2
|
+
|
|
3
|
+
from logging import Logger
|
|
4
|
+
from typing import Optional
|
|
5
|
+
|
|
6
|
+
import torch
|
|
7
|
+
from transformers import pipeline
|
|
8
|
+
|
|
9
|
+
from semantic_kernel.connectors.ai.ai_exception import AIException
|
|
10
|
+
from semantic_kernel.connectors.ai.complete_request_settings import (
|
|
11
|
+
CompleteRequestSettings,
|
|
12
|
+
)
|
|
13
|
+
from semantic_kernel.connectors.ai.text_completion_client_base import (
|
|
14
|
+
TextCompletionClientBase,
|
|
15
|
+
)
|
|
16
|
+
from semantic_kernel.utils.null_logger import NullLogger
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class HuggingFaceTextCompletion(TextCompletionClientBase):
|
|
20
|
+
_model_id: str
|
|
21
|
+
_task: str
|
|
22
|
+
_device: int
|
|
23
|
+
_log: Logger
|
|
24
|
+
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
model_id: str,
|
|
28
|
+
device: Optional[int] = -1,
|
|
29
|
+
task: Optional[str] = None,
|
|
30
|
+
log: Optional[Logger] = None,
|
|
31
|
+
) -> None:
|
|
32
|
+
"""
|
|
33
|
+
Initializes a new instance of the HuggingFaceTextCompletion class.
|
|
34
|
+
|
|
35
|
+
Arguments:
|
|
36
|
+
model_id {str} -- Hugging Face model card string, see
|
|
37
|
+
https://huggingface.co/models
|
|
38
|
+
device {Optional[int]} -- Device to run the model on, -1 for CPU, 0+ for GPU.
|
|
39
|
+
task {Optional[str]} -- Model completion task type, options are:
|
|
40
|
+
- summarization: takes a long text and returns a shorter summary.
|
|
41
|
+
- text-generation: takes incomplete text and returns a set of completion candidates.
|
|
42
|
+
- text2text-generation (default): takes an input prompt and returns a completion.
|
|
43
|
+
text2text-generation is the default as it behaves more like GPT-3+.
|
|
44
|
+
log {Optional[Logger]} -- Logger instance.
|
|
45
|
+
|
|
46
|
+
Note that this model will be downloaded from the Hugging Face model hub.
|
|
47
|
+
"""
|
|
48
|
+
self._model_id = model_id
|
|
49
|
+
self._task = "text2text-generation" if task is None else task
|
|
50
|
+
self._log = log if log is not None else NullLogger()
|
|
51
|
+
self.device = (
|
|
52
|
+
"cuda:" + device if device >= 0 and torch.cuda.is_available() else "cpu"
|
|
53
|
+
)
|
|
54
|
+
self.generator = pipeline(
|
|
55
|
+
task=self._task, model=self._model_id, device=self.device
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
async def complete_async(
|
|
59
|
+
self, prompt: str, request_settings: CompleteRequestSettings
|
|
60
|
+
) -> str:
|
|
61
|
+
"""
|
|
62
|
+
Completes a prompt using the Hugging Face model.
|
|
63
|
+
|
|
64
|
+
Arguments:
|
|
65
|
+
prompt {str} -- Prompt to complete.
|
|
66
|
+
request_settings {CompleteRequestSettings} -- Request settings.
|
|
67
|
+
|
|
68
|
+
Returns:
|
|
69
|
+
str -- Completion result.
|
|
70
|
+
"""
|
|
71
|
+
try:
|
|
72
|
+
result = self.generator(
|
|
73
|
+
prompt,
|
|
74
|
+
num_return_sequences=1,
|
|
75
|
+
temperature=request_settings.temperature,
|
|
76
|
+
top_p=request_settings.top_p,
|
|
77
|
+
max_length=request_settings.max_tokens,
|
|
78
|
+
pad_token_id=50256, # EOS token
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
if self._task == "text-generation" or self._task == "text2text-generation":
|
|
82
|
+
return result[0]["generated_text"]
|
|
83
|
+
|
|
84
|
+
elif self._task == "summarization":
|
|
85
|
+
return result[0]["summary_text"]
|
|
86
|
+
|
|
87
|
+
else:
|
|
88
|
+
raise AIException(
|
|
89
|
+
AIException.ErrorCodes.InvalidConfiguration,
|
|
90
|
+
"Unsupported hugging face pipeline task: only \
|
|
91
|
+
text-generation, text2text-generation, and summarization are supported.",
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
except Exception as e:
|
|
95
|
+
raise AIException("Hugging Face completion failed", e)
|
semantic_kernel-0.2.5.dev0/semantic_kernel/connectors/ai/hugging_face/services/hf_text_embedding.py
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Copyright (c) Microsoft. All rights reserved.
|
|
2
|
+
|
|
3
|
+
from logging import Logger
|
|
4
|
+
from typing import List, Optional
|
|
5
|
+
|
|
6
|
+
import torch
|
|
7
|
+
from numpy import array, ndarray
|
|
8
|
+
from sentence_transformers import SentenceTransformer
|
|
9
|
+
|
|
10
|
+
from semantic_kernel.connectors.ai.ai_exception import AIException
|
|
11
|
+
from semantic_kernel.connectors.ai.embeddings.embedding_generator_base import (
|
|
12
|
+
EmbeddingGeneratorBase,
|
|
13
|
+
)
|
|
14
|
+
from semantic_kernel.utils.null_logger import NullLogger
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class HuggingFaceTextEmbedding(EmbeddingGeneratorBase):
|
|
18
|
+
_model_id: str
|
|
19
|
+
_device: int
|
|
20
|
+
_log: Logger
|
|
21
|
+
|
|
22
|
+
def __init__(
|
|
23
|
+
self,
|
|
24
|
+
model_id: str,
|
|
25
|
+
device: Optional[int] = -1,
|
|
26
|
+
log: Optional[Logger] = None,
|
|
27
|
+
) -> None:
|
|
28
|
+
"""
|
|
29
|
+
Initializes a new instance of the HuggingFaceTextEmbedding class.
|
|
30
|
+
|
|
31
|
+
Arguments:
|
|
32
|
+
model_id {str} -- Hugging Face model card string, see
|
|
33
|
+
https://huggingface.co/sentence-transformers
|
|
34
|
+
device {Optional[int]} -- Device to run the model on, -1 for CPU, 0+ for GPU.
|
|
35
|
+
log {Optional[Logger]} -- Logger instance.
|
|
36
|
+
|
|
37
|
+
Note that this model will be downloaded from the Hugging Face model hub.
|
|
38
|
+
"""
|
|
39
|
+
self._model_id = model_id
|
|
40
|
+
self._log = log if log is not None else NullLogger()
|
|
41
|
+
self.device = (
|
|
42
|
+
"cuda:" + device if device >= 0 and torch.cuda.is_available() else "cpu"
|
|
43
|
+
)
|
|
44
|
+
self.generator = SentenceTransformer(
|
|
45
|
+
model_name_or_path=self._model_id, device=self.device
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
async def generate_embeddings_async(self, texts: List[str]) -> ndarray:
|
|
49
|
+
"""
|
|
50
|
+
Generates embeddings for a list of texts.
|
|
51
|
+
|
|
52
|
+
Arguments:
|
|
53
|
+
texts {List[str]} -- Texts to generate embeddings for.
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
ndarray -- Embeddings for the texts.
|
|
57
|
+
"""
|
|
58
|
+
try:
|
|
59
|
+
self._log.info(f"Generating embeddings for {len(texts)} texts")
|
|
60
|
+
embeddings = self.generator.encode(texts)
|
|
61
|
+
return array(embeddings)
|
|
62
|
+
except Exception as e:
|
|
63
|
+
raise AIException("Hugging Face embeddings failed", e)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Copyright (c) Microsoft. All rights reserved.
|
|
2
|
+
|
|
3
|
+
from semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion import (
|
|
4
|
+
AzureChatCompletion,
|
|
5
|
+
)
|
|
6
|
+
from semantic_kernel.connectors.ai.open_ai.services.azure_text_completion import (
|
|
7
|
+
AzureTextCompletion,
|
|
8
|
+
)
|
|
9
|
+
from semantic_kernel.connectors.ai.open_ai.services.azure_text_embedding import (
|
|
10
|
+
AzureTextEmbedding,
|
|
11
|
+
)
|
|
12
|
+
from semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion import (
|
|
13
|
+
OpenAIChatCompletion,
|
|
14
|
+
)
|
|
15
|
+
from semantic_kernel.connectors.ai.open_ai.services.open_ai_text_completion import (
|
|
16
|
+
OpenAITextCompletion,
|
|
17
|
+
)
|
|
18
|
+
from semantic_kernel.connectors.ai.open_ai.services.open_ai_text_embedding import (
|
|
19
|
+
OpenAITextEmbedding,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
__all__ = [
|
|
23
|
+
"OpenAITextCompletion",
|
|
24
|
+
"OpenAIChatCompletion",
|
|
25
|
+
"OpenAITextEmbedding",
|
|
26
|
+
"AzureTextCompletion",
|
|
27
|
+
"AzureChatCompletion",
|
|
28
|
+
"AzureTextEmbedding",
|
|
29
|
+
]
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
from logging import Logger
|
|
5
5
|
from typing import Any, Optional
|
|
6
6
|
|
|
7
|
-
from semantic_kernel.ai.open_ai.services.open_ai_chat_completion import (
|
|
7
|
+
from semantic_kernel.connectors.ai.open_ai.services.open_ai_chat_completion import (
|
|
8
8
|
OpenAIChatCompletion,
|
|
9
9
|
)
|
|
10
10
|
|
|
@@ -24,7 +24,7 @@ class AzureChatCompletion(OpenAIChatCompletion):
|
|
|
24
24
|
ad_auth=False,
|
|
25
25
|
) -> None:
|
|
26
26
|
"""
|
|
27
|
-
Initialize an AzureChatCompletion
|
|
27
|
+
Initialize an AzureChatCompletion service.
|
|
28
28
|
|
|
29
29
|
You must provide:
|
|
30
30
|
- A deployment_name, endpoint, and api_key (plus, optionally: ad_auth)
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
from logging import Logger
|
|
5
5
|
from typing import Any, Optional
|
|
6
6
|
|
|
7
|
-
from semantic_kernel.ai.open_ai.services.open_ai_text_completion import (
|
|
7
|
+
from semantic_kernel.connectors.ai.open_ai.services.open_ai_text_completion import (
|
|
8
8
|
OpenAITextCompletion,
|
|
9
9
|
)
|
|
10
10
|
|
|
@@ -24,7 +24,7 @@ class AzureTextCompletion(OpenAITextCompletion):
|
|
|
24
24
|
ad_auth=False,
|
|
25
25
|
) -> None:
|
|
26
26
|
"""
|
|
27
|
-
Initialize an AzureTextCompletion
|
|
27
|
+
Initialize an AzureTextCompletion service.
|
|
28
28
|
|
|
29
29
|
You must provide:
|
|
30
30
|
- A deployment_name, endpoint, and api_key (plus, optionally: ad_auth)
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
from logging import Logger
|
|
5
5
|
from typing import Any, Optional
|
|
6
6
|
|
|
7
|
-
from semantic_kernel.ai.open_ai.services.open_ai_text_embedding import (
|
|
7
|
+
from semantic_kernel.connectors.ai.open_ai.services.open_ai_text_embedding import (
|
|
8
8
|
OpenAITextEmbedding,
|
|
9
9
|
)
|
|
10
10
|
|
|
@@ -24,7 +24,7 @@ class AzureTextEmbedding(OpenAITextEmbedding):
|
|
|
24
24
|
ad_auth=False,
|
|
25
25
|
) -> None:
|
|
26
26
|
"""
|
|
27
|
-
Initialize an AzureTextEmbedding
|
|
27
|
+
Initialize an AzureTextEmbedding service.
|
|
28
28
|
|
|
29
29
|
You must provide:
|
|
30
30
|
- A deployment_name, endpoint, and api_key (plus, optionally: ad_auth)
|
|
@@ -3,13 +3,21 @@
|
|
|
3
3
|
from logging import Logger
|
|
4
4
|
from typing import Any, List, Optional, Tuple
|
|
5
5
|
|
|
6
|
-
from semantic_kernel.ai.ai_exception import AIException
|
|
7
|
-
from semantic_kernel.ai.chat_completion_client_base import
|
|
8
|
-
|
|
6
|
+
from semantic_kernel.connectors.ai.ai_exception import AIException
|
|
7
|
+
from semantic_kernel.connectors.ai.chat_completion_client_base import (
|
|
8
|
+
ChatCompletionClientBase,
|
|
9
|
+
)
|
|
10
|
+
from semantic_kernel.connectors.ai.chat_request_settings import ChatRequestSettings
|
|
11
|
+
from semantic_kernel.connectors.ai.complete_request_settings import (
|
|
12
|
+
CompleteRequestSettings,
|
|
13
|
+
)
|
|
14
|
+
from semantic_kernel.connectors.ai.text_completion_client_base import (
|
|
15
|
+
TextCompletionClientBase,
|
|
16
|
+
)
|
|
9
17
|
from semantic_kernel.utils.null_logger import NullLogger
|
|
10
18
|
|
|
11
19
|
|
|
12
|
-
class OpenAIChatCompletion(ChatCompletionClientBase):
|
|
20
|
+
class OpenAIChatCompletion(ChatCompletionClientBase, TextCompletionClientBase):
|
|
13
21
|
_model_id: str
|
|
14
22
|
_api_key: str
|
|
15
23
|
_org_id: Optional[str] = None
|
|
@@ -116,3 +124,27 @@ class OpenAIChatCompletion(ChatCompletionClientBase):
|
|
|
116
124
|
# TODO: tracking on token counts/etc.
|
|
117
125
|
|
|
118
126
|
return response.choices[0].message.content
|
|
127
|
+
|
|
128
|
+
async def complete_async(
|
|
129
|
+
self, prompt: str, request_settings: CompleteRequestSettings
|
|
130
|
+
) -> str:
|
|
131
|
+
"""
|
|
132
|
+
Completes the given prompt. Returns a single string completion.
|
|
133
|
+
Cannot return multiple completions. Cannot return logprobs.
|
|
134
|
+
|
|
135
|
+
Arguments:
|
|
136
|
+
prompt {str} -- The prompt to complete.
|
|
137
|
+
request_settings {CompleteRequestSettings} -- The request settings.
|
|
138
|
+
|
|
139
|
+
Returns:
|
|
140
|
+
str -- The completed text.
|
|
141
|
+
"""
|
|
142
|
+
prompt_to_message = [("user", prompt)]
|
|
143
|
+
chat_settings = ChatRequestSettings(
|
|
144
|
+
temperature=request_settings.temperature,
|
|
145
|
+
top_p=request_settings.top_p,
|
|
146
|
+
presence_penalty=request_settings.presence_penalty,
|
|
147
|
+
frequency_penalty=request_settings.frequency_penalty,
|
|
148
|
+
max_tokens=request_settings.max_tokens,
|
|
149
|
+
)
|
|
150
|
+
return await self.complete_chat_async(prompt_to_message, chat_settings)
|
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
from logging import Logger
|
|
4
4
|
from typing import Any, Optional
|
|
5
5
|
|
|
6
|
-
from semantic_kernel.ai.ai_exception import AIException
|
|
7
|
-
from semantic_kernel.ai.complete_request_settings import
|
|
8
|
-
|
|
6
|
+
from semantic_kernel.connectors.ai.ai_exception import AIException
|
|
7
|
+
from semantic_kernel.connectors.ai.complete_request_settings import (
|
|
8
|
+
CompleteRequestSettings,
|
|
9
|
+
)
|
|
10
|
+
from semantic_kernel.connectors.ai.text_completion_client_base import (
|
|
11
|
+
TextCompletionClientBase,
|
|
12
|
+
)
|
|
9
13
|
from semantic_kernel.utils.null_logger import NullLogger
|
|
10
14
|
|
|
11
15
|
|
|
@@ -50,7 +54,7 @@ class OpenAITextCompletion(TextCompletionClientBase):
|
|
|
50
54
|
|
|
51
55
|
return openai
|
|
52
56
|
|
|
53
|
-
async def
|
|
57
|
+
async def complete_async(
|
|
54
58
|
self, prompt: str, request_settings: CompleteRequestSettings
|
|
55
59
|
) -> str:
|
|
56
60
|
"""
|
|
@@ -79,14 +83,14 @@ class OpenAITextCompletion(TextCompletionClientBase):
|
|
|
79
83
|
if request_settings.number_of_responses != 1:
|
|
80
84
|
raise AIException(
|
|
81
85
|
AIException.ErrorCodes.InvalidRequest,
|
|
82
|
-
"
|
|
86
|
+
"complete_async only supports a single completion, "
|
|
83
87
|
f"but {request_settings.number_of_responses} were requested",
|
|
84
88
|
)
|
|
85
89
|
|
|
86
90
|
if request_settings.logprobs != 0:
|
|
87
91
|
raise AIException(
|
|
88
92
|
AIException.ErrorCodes.InvalidRequest,
|
|
89
|
-
"
|
|
93
|
+
"complete_async does not support logprobs, "
|
|
90
94
|
f"but logprobs={request_settings.logprobs} was requested",
|
|
91
95
|
)
|
|
92
96
|
|
|
@@ -5,8 +5,8 @@ from typing import Any, List, Optional
|
|
|
5
5
|
|
|
6
6
|
from numpy import array, ndarray
|
|
7
7
|
|
|
8
|
-
from semantic_kernel.ai.ai_exception import AIException
|
|
9
|
-
from semantic_kernel.ai.embeddings.embedding_generator_base import (
|
|
8
|
+
from semantic_kernel.connectors.ai.ai_exception import AIException
|
|
9
|
+
from semantic_kernel.connectors.ai.embeddings.embedding_generator_base import (
|
|
10
10
|
EmbeddingGeneratorBase,
|
|
11
11
|
)
|
|
12
12
|
from semantic_kernel.utils.null_logger import NullLogger
|
|
@@ -5,12 +5,14 @@ from logging import Logger
|
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
7
7
|
if TYPE_CHECKING:
|
|
8
|
-
from semantic_kernel.ai.complete_request_settings import
|
|
8
|
+
from semantic_kernel.connectors.ai.complete_request_settings import (
|
|
9
|
+
CompleteRequestSettings,
|
|
10
|
+
)
|
|
9
11
|
|
|
10
12
|
|
|
11
13
|
class TextCompletionClientBase(ABC):
|
|
12
14
|
@abstractmethod
|
|
13
|
-
async def
|
|
15
|
+
async def complete_async(
|
|
14
16
|
self,
|
|
15
17
|
prompt: str,
|
|
16
18
|
settings: "CompleteRequestSettings",
|
{semantic_kernel-0.2.4.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/time_skill.py
RENAMED
|
@@ -32,7 +32,7 @@ class TimeSkill:
|
|
|
32
32
|
{{time.timeZoneName}} => PST
|
|
33
33
|
"""
|
|
34
34
|
|
|
35
|
-
@sk_function(description="Get the current
|
|
35
|
+
@sk_function(description="Get the current date.")
|
|
36
36
|
def date(self) -> str:
|
|
37
37
|
"""
|
|
38
38
|
Get the current date
|
|
@@ -43,6 +43,16 @@ class TimeSkill:
|
|
|
43
43
|
now = datetime.datetime.now()
|
|
44
44
|
return now.strftime("%A, %d %B, %Y")
|
|
45
45
|
|
|
46
|
+
@sk_function(description="Get the current date.")
|
|
47
|
+
def today(self) -> str:
|
|
48
|
+
"""
|
|
49
|
+
Get the current date
|
|
50
|
+
|
|
51
|
+
Example:
|
|
52
|
+
{{time.today}} => Sunday, 12 January, 2031
|
|
53
|
+
"""
|
|
54
|
+
return self.date()
|
|
55
|
+
|
|
46
56
|
@sk_function(description="Get the current date and time in the local time zone")
|
|
47
57
|
def now(self) -> str:
|
|
48
58
|
"""
|
|
@@ -4,11 +4,17 @@ import inspect
|
|
|
4
4
|
from logging import Logger
|
|
5
5
|
from typing import Any, Dict, Optional
|
|
6
6
|
|
|
7
|
-
from semantic_kernel.ai.ai_exception import AIException
|
|
8
|
-
from semantic_kernel.ai.chat_completion_client_base import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
from semantic_kernel.ai.
|
|
7
|
+
from semantic_kernel.connectors.ai.ai_exception import AIException
|
|
8
|
+
from semantic_kernel.connectors.ai.chat_completion_client_base import (
|
|
9
|
+
ChatCompletionClientBase,
|
|
10
|
+
)
|
|
11
|
+
from semantic_kernel.connectors.ai.chat_request_settings import ChatRequestSettings
|
|
12
|
+
from semantic_kernel.connectors.ai.complete_request_settings import (
|
|
13
|
+
CompleteRequestSettings,
|
|
14
|
+
)
|
|
15
|
+
from semantic_kernel.connectors.ai.text_completion_client_base import (
|
|
16
|
+
TextCompletionClientBase,
|
|
17
|
+
)
|
|
12
18
|
from semantic_kernel.kernel_base import KernelBase
|
|
13
19
|
from semantic_kernel.kernel_config import KernelConfig
|
|
14
20
|
from semantic_kernel.kernel_exception import KernelException
|
|
@@ -268,10 +274,10 @@ class Kernel(KernelBase, KernelExtensions):
|
|
|
268
274
|
function.set_default_skill_collection(self.skills)
|
|
269
275
|
|
|
270
276
|
if function_config.has_chat_prompt:
|
|
271
|
-
|
|
277
|
+
service = self._config.get_ai_service(
|
|
272
278
|
ChatCompletionClientBase,
|
|
273
|
-
function_config.prompt_template_config.
|
|
274
|
-
if len(function_config.prompt_template_config.
|
|
279
|
+
function_config.prompt_template_config.default_services[0]
|
|
280
|
+
if len(function_config.prompt_template_config.default_services) > 0
|
|
275
281
|
else None,
|
|
276
282
|
)
|
|
277
283
|
|
|
@@ -281,20 +287,20 @@ class Kernel(KernelBase, KernelExtensions):
|
|
|
281
287
|
)
|
|
282
288
|
)
|
|
283
289
|
|
|
284
|
-
if
|
|
290
|
+
if service is None:
|
|
285
291
|
raise AIException(
|
|
286
292
|
AIException.ErrorCodes.InvalidConfiguration,
|
|
287
|
-
"Could not load chat
|
|
293
|
+
"Could not load chat service, unable to prepare semantic function. "
|
|
288
294
|
"Function description: "
|
|
289
295
|
"{function_config.prompt_template_config.description}",
|
|
290
296
|
)
|
|
291
297
|
|
|
292
|
-
function.
|
|
298
|
+
function.set_chat_service(lambda: service(self))
|
|
293
299
|
else:
|
|
294
|
-
|
|
300
|
+
service = self._config.get_ai_service(
|
|
295
301
|
TextCompletionClientBase,
|
|
296
|
-
function_config.prompt_template_config.
|
|
297
|
-
if len(function_config.prompt_template_config.
|
|
302
|
+
function_config.prompt_template_config.default_services[0]
|
|
303
|
+
if len(function_config.prompt_template_config.default_services) > 0
|
|
298
304
|
else None,
|
|
299
305
|
)
|
|
300
306
|
|
|
@@ -304,14 +310,14 @@ class Kernel(KernelBase, KernelExtensions):
|
|
|
304
310
|
)
|
|
305
311
|
)
|
|
306
312
|
|
|
307
|
-
if
|
|
313
|
+
if service is None:
|
|
308
314
|
raise AIException(
|
|
309
315
|
AIException.ErrorCodes.InvalidConfiguration,
|
|
310
|
-
"Could not load text
|
|
316
|
+
"Could not load text service, unable to prepare semantic function. "
|
|
311
317
|
"Function description: "
|
|
312
318
|
"{function_config.prompt_template_config.description}",
|
|
313
319
|
)
|
|
314
320
|
|
|
315
|
-
function.
|
|
321
|
+
function.set_ai_service(lambda: service(self))
|
|
316
322
|
|
|
317
323
|
return function
|