semantic-kernel 0.2.3.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.
Files changed (100) hide show
  1. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/PKG-INFO +19 -17
  2. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/README.md +15 -15
  3. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/pyproject.toml +4 -2
  4. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/chat_completion_client_base.py +1 -1
  5. semantic_kernel-0.2.5.dev0/semantic_kernel/connectors/ai/hugging_face/__init__.py +10 -0
  6. semantic_kernel-0.2.5.dev0/semantic_kernel/connectors/ai/hugging_face/services/hf_text_completion.py +95 -0
  7. semantic_kernel-0.2.5.dev0/semantic_kernel/connectors/ai/hugging_face/services/hf_text_embedding.py +63 -0
  8. semantic_kernel-0.2.5.dev0/semantic_kernel/connectors/ai/open_ai/__init__.py +29 -0
  9. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/azure_chat_completion.py +2 -2
  10. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/azure_text_completion.py +2 -2
  11. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/azure_text_embedding.py +2 -2
  12. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/open_ai_chat_completion.py +36 -4
  13. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/open_ai_text_completion.py +10 -6
  14. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/open_ai/services/open_ai_text_embedding.py +2 -2
  15. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/text_completion_client_base.py +4 -2
  16. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/__init__.py +2 -1
  17. semantic_kernel-0.2.5.dev0/semantic_kernel/core_skills/http_skill.py +106 -0
  18. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/time_skill.py +11 -1
  19. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel.py +60 -30
  20. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_base.py +6 -10
  21. semantic_kernel-0.2.5.dev0/semantic_kernel/kernel_config.py +260 -0
  22. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_exception.py +4 -4
  23. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_extensions/import_skills.py +44 -0
  24. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_extensions/memory_configuration.py +10 -12
  25. semantic_kernel-0.2.5.dev0/semantic_kernel/memory/memory_query_result.py +73 -0
  26. semantic_kernel-0.2.5.dev0/semantic_kernel/memory/memory_record.py +104 -0
  27. semantic_kernel-0.2.5.dev0/semantic_kernel/memory/memory_store_base.py +79 -0
  28. semantic_kernel-0.2.5.dev0/semantic_kernel/memory/semantic_text_memory.py +157 -0
  29. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/memory/semantic_text_memory_base.py +1 -2
  30. semantic_kernel-0.2.5.dev0/semantic_kernel/memory/volatile_memory_store.py +326 -0
  31. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/context_variables.py +5 -5
  32. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/sk_function.py +93 -109
  33. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/sk_function_base.py +21 -57
  34. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/semantic_functions/prompt_template_config.py +2 -2
  35. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/code_block.py +2 -2
  36. semantic_kernel-0.2.5.dev0/semantic_kernel/text/__init__.py +17 -0
  37. semantic_kernel-0.2.5.dev0/semantic_kernel/text/function_extension.py +23 -0
  38. semantic_kernel-0.2.5.dev0/semantic_kernel/text/text_chunker.py +250 -0
  39. semantic_kernel-0.2.3.dev0/semantic_kernel/ai/embeddings/embedding_index_base.py +0 -20
  40. semantic_kernel-0.2.3.dev0/semantic_kernel/ai/open_ai/__init__.py +0 -27
  41. semantic_kernel-0.2.3.dev0/semantic_kernel/kernel_config.py +0 -251
  42. semantic_kernel-0.2.3.dev0/semantic_kernel/memory/memory_query_result.py +0 -43
  43. semantic_kernel-0.2.3.dev0/semantic_kernel/memory/memory_record.py +0 -63
  44. semantic_kernel-0.2.3.dev0/semantic_kernel/memory/memory_store_base.py +0 -10
  45. semantic_kernel-0.2.3.dev0/semantic_kernel/memory/semantic_text_memory.py +0 -75
  46. semantic_kernel-0.2.3.dev0/semantic_kernel/memory/storage/data_entry.py +0 -36
  47. semantic_kernel-0.2.3.dev0/semantic_kernel/memory/storage/data_store_base.py +0 -36
  48. semantic_kernel-0.2.3.dev0/semantic_kernel/memory/storage/volatile_data_store.py +0 -62
  49. semantic_kernel-0.2.3.dev0/semantic_kernel/memory/volatile_memory_store.py +0 -100
  50. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/__init__.py +0 -0
  51. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/ai_exception.py +0 -0
  52. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/chat_request_settings.py +0 -0
  53. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/complete_request_settings.py +0 -0
  54. {semantic_kernel-0.2.3.dev0/semantic_kernel → semantic_kernel-0.2.5.dev0/semantic_kernel/connectors}/ai/embeddings/embedding_generator_base.py +0 -0
  55. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/file_io_skill.py +0 -0
  56. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/text_memory_skill.py +0 -0
  57. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/core_skills/text_skill.py +0 -0
  58. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_extensions/__init__.py +0 -0
  59. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_extensions/extends_kernel.py +0 -0
  60. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/kernel_extensions/inline_definition.py +0 -0
  61. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/memory/__init__.py +0 -0
  62. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/memory/null_memory.py +0 -0
  63. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/delegate_handlers.py +0 -0
  64. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/delegate_inference.py +0 -0
  65. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/delegate_types.py +0 -0
  66. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/orchestration/sk_context.py +0 -0
  67. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/reliability/pass_through_without_retry.py +0 -0
  68. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/reliability/retry_mechanism.py +0 -0
  69. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/semantic_functions/chat_prompt_template.py +0 -0
  70. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/semantic_functions/prompt_template.py +0 -0
  71. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/semantic_functions/prompt_template_base.py +0 -0
  72. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/semantic_functions/semantic_function_config.py +0 -0
  73. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/__init__.py +0 -0
  74. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/function_view.py +0 -0
  75. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/functions_view.py +0 -0
  76. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/parameter_view.py +0 -0
  77. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/read_only_skill_collection.py +0 -0
  78. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/read_only_skill_collection_base.py +0 -0
  79. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/sk_function_context_parameter_decorator.py +0 -0
  80. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/sk_function_decorator.py +0 -0
  81. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/skill_collection.py +0 -0
  82. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/skill_definition/skill_collection_base.py +0 -0
  83. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/README.md +0 -0
  84. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/block.py +0 -0
  85. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/block_types.py +0 -0
  86. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/function_id_block.py +0 -0
  87. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/symbols.py +0 -0
  88. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/text_block.py +0 -0
  89. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/val_block.py +0 -0
  90. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/blocks/var_block.py +0 -0
  91. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/code_tokenizer.py +0 -0
  92. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/prompt_template_engine.py +0 -0
  93. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/protocols/code_renderer.py +0 -0
  94. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/protocols/prompt_templating_engine.py +0 -0
  95. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/protocols/text_renderer.py +0 -0
  96. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/template_engine/template_tokenizer.py +0 -0
  97. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/utils/null_logger.py +0 -0
  98. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/utils/settings.py +0 -0
  99. {semantic_kernel-0.2.3.dev0 → semantic_kernel-0.2.5.dev0}/semantic_kernel/utils/static_property.py +0 -0
  100. {semantic_kernel-0.2.3.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.dev0
3
+ Version: 0.2.5.dev0
4
4
  Summary:
5
5
  Author: Microsoft
6
6
  Author-email: SK-Support@microsoft.com
@@ -11,9 +11,11 @@ Classifier: Programming Language :: Python :: 3.9
11
11
  Classifier: Programming Language :: Python :: 3.10
12
12
  Classifier: Programming Language :: Python :: 3.11
13
13
  Requires-Dist: aiofiles (>=23.1.0,<24.0.0)
14
- Requires-Dist: asyncio (>=3.4.3,<4.0.0)
15
14
  Requires-Dist: numpy (>=1.24.2,<2.0.0)
16
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)
17
19
  Description-Content-Type: text/markdown
18
20
 
19
21
  # Get Started with Semantic Kernel ⚡
@@ -23,7 +25,7 @@ Install the latest package:
23
25
  python -m pip install --upgrade semantic-kernel
24
26
 
25
27
 
26
- # AI backends
28
+ # AI Services
27
29
 
28
30
  ## OpenAI / Azure OpenAI API keys
29
31
 
@@ -45,17 +47,17 @@ AZURE_OPENAI_API_KEY=""
45
47
 
46
48
  ```python
47
49
  import semantic_kernel as sk
48
- from semantic_kernel.ai.open_ai import OpenAITextCompletion, AzureTextCompletion
50
+ from semantic_kernel.connectors.ai.open_ai import OpenAITextCompletion, AzureTextCompletion
49
51
 
50
52
  kernel = sk.Kernel()
51
53
 
52
- # Prepare OpenAI backend using credentials stored in the `.env` file
54
+ # Prepare OpenAI service using credentials stored in the `.env` file
53
55
  api_key, org_id = sk.openai_settings_from_dot_env()
54
- kernel.config.add_text_backend("dv", OpenAITextCompletion("text-davinci-003", api_key, org_id))
56
+ kernel.config.add_text_service("dv", OpenAITextCompletion("text-davinci-003", api_key, org_id))
55
57
 
56
58
  # Alternative using Azure:
57
59
  # deployment, api_key, endpoint = sk.azure_openai_settings_from_dot_env()
58
- # kernel.config.add_text_backend("dv", AzureTextCompletion(deployment, endpoint, api_key))
60
+ # kernel.config.add_text_service("dv", AzureTextCompletion(deployment, endpoint, api_key))
59
61
 
60
62
  # Wrap your prompt in a function
61
63
  prompt = kernel.create_semantic_function("""
@@ -74,7 +76,7 @@ Give me the TLDR in exactly 5 words.""")
74
76
  print(prompt()) # => Robots must not harm humans.
75
77
  ```
76
78
 
77
- # Prompts are **semantic functions** with input parameters
79
+ # **Semantic functions** are Prompts with input parameters
78
80
 
79
81
  ```python
80
82
  # Create a reusable function with one input parameter
@@ -117,15 +119,15 @@ Python notebooks:
117
119
  * [Using Context Variables to Build a Chat Experience](../samples/notebooks/python/04-context-variables-chat.ipynb)
118
120
  * [Building Memory with Embeddings](../samples/notebooks/python/06-memory-and-embeddings.ipynb)
119
121
 
120
- # Frequently asked questions
122
+ # SK Frequently Asked Questions
121
123
 
122
- * How does Python SK compare to the C# version of Semantic Kernel?
124
+ ## How does Python SK compare to the C# version of Semantic Kernel?
123
125
 
124
- The two SDKs are compatible and at the core they follow the same design principles.
125
- Some features are still available only in the C# version, and being ported
126
- Refer to the [FEATURE PARITY](FEATURE_PARITY.md) doc to see where
127
- things stand in matching the features and functionality of the main SK branch.
128
- Over time there will be some features available only in the Python version, and
129
- others only in the C# version, for example adapters to external services,
130
- scientific libraries, etc.
126
+ The two SDKs are compatible and at the core they follow the same design principles.
127
+ Some features are still available only in the C# version, and being ported
128
+ Refer to the [FEATURE MATRIX](../FEATURE_MATRIX.md) doc to see where
129
+ things stand in matching the features and functionality of the main SK branch.
130
+ Over time there will be some features available only in the Python version, and
131
+ others only in the C# version, for example adapters to external services,
132
+ scientific libraries, etc.
131
133
 
@@ -5,7 +5,7 @@ Install the latest package:
5
5
  python -m pip install --upgrade semantic-kernel
6
6
 
7
7
 
8
- # AI backends
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 backend using credentials stored in the `.env` file
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.add_text_backend("dv", OpenAITextCompletion("text-davinci-003", api_key, org_id))
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.add_text_backend("dv", AzureTextCompletion(deployment, endpoint, api_key))
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("""
@@ -56,7 +56,7 @@ Give me the TLDR in exactly 5 words.""")
56
56
  print(prompt()) # => Robots must not harm humans.
57
57
  ```
58
58
 
59
- # Prompts are **semantic functions** with input parameters
59
+ # **Semantic functions** are Prompts with input parameters
60
60
 
61
61
  ```python
62
62
  # Create a reusable function with one input parameter
@@ -99,14 +99,14 @@ Python notebooks:
99
99
  * [Using Context Variables to Build a Chat Experience](../samples/notebooks/python/04-context-variables-chat.ipynb)
100
100
  * [Building Memory with Embeddings](../samples/notebooks/python/06-memory-and-embeddings.ipynb)
101
101
 
102
- # Frequently asked questions
102
+ # SK Frequently Asked Questions
103
103
 
104
- * How does Python SK compare to the C# version of Semantic Kernel?
104
+ ## How does Python SK compare to the C# version of Semantic Kernel?
105
105
 
106
- The two SDKs are compatible and at the core they follow the same design principles.
107
- Some features are still available only in the C# version, and being ported
108
- Refer to the [FEATURE PARITY](FEATURE_PARITY.md) doc to see where
109
- things stand in matching the features and functionality of the main SK branch.
110
- Over time there will be some features available only in the Python version, and
111
- others only in the C# version, for example adapters to external services,
112
- scientific libraries, etc.
106
+ The two SDKs are compatible and at the core they follow the same design principles.
107
+ Some features are still available only in the C# version, and being ported
108
+ Refer to the [FEATURE MATRIX](../FEATURE_MATRIX.md) doc to see where
109
+ things stand in matching the features and functionality of the main SK branch.
110
+ Over time there will be some features available only in the Python version, and
111
+ others only in the C# version, for example adapters to external services,
112
+ scientific libraries, etc.
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "semantic-kernel"
3
- version = "0.2.3.dev"
3
+ version = "0.2.5.dev"
4
4
  description = ""
5
5
  authors = ["Microsoft <SK-Support@microsoft.com>"]
6
6
  readme = "README.md"
@@ -11,7 +11,9 @@ python = "^3.8"
11
11
  numpy = "^1.24.2"
12
12
  openai = "^0.27.0"
13
13
  aiofiles = "^23.1.0"
14
- asyncio = "^3.4.3"
14
+ transformers = "^4.28.1"
15
+ torch = "^2.0.0"
16
+ sentence-transformers = "^2.2.2"
15
17
 
16
18
  [tool.poetry.group.dev.dependencies]
17
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"]
@@ -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)
@@ -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 backend.
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 backend.
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 backend.
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 ChatCompletionClientBase
8
- from semantic_kernel.ai.chat_request_settings import ChatRequestSettings
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 CompleteRequestSettings
8
- from semantic_kernel.ai.text_completion_client_base import TextCompletionClientBase
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 complete_simple_async(
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
- "complete_simple_async only supports a single completion, "
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
- "complete_simple_async does not support logprobs, "
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 CompleteRequestSettings
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 complete_simple_async(
15
+ async def complete_async(
14
16
  self,
15
17
  prompt: str,
16
18
  settings: "CompleteRequestSettings",
@@ -1,8 +1,9 @@
1
1
  # Copyright (c) Microsoft. All rights reserved.
2
2
 
3
3
  from semantic_kernel.core_skills.file_io_skill import FileIOSkill
4
+ from semantic_kernel.core_skills.http_skill import HttpSkill
4
5
  from semantic_kernel.core_skills.text_memory_skill import TextMemorySkill
5
6
  from semantic_kernel.core_skills.text_skill import TextSkill
6
7
  from semantic_kernel.core_skills.time_skill import TimeSkill
7
8
 
8
- __all__ = ["TextMemorySkill", "TextSkill", "FileIOSkill", "TimeSkill"]
9
+ __all__ = ["TextMemorySkill", "TextSkill", "FileIOSkill", "TimeSkill", "HttpSkill"]