mirror of
https://github.com/microsoft/semantic-kernel.git
synced 2026-10-12 02:19:06 +00:00
### Motivation and Context * Removing the requirements.txt and just pinning each notebook to a pip package that should work. Doing this allows users to run notebooks without error even if the code in the core repo updates. When a new pip package is released, we will bump the version number in each notebook. * Fix usage of context variables. Apps should avoid using anonymous context variables and prefer using the context, to retain access to the kernel internals during the orchestration. --------- Co-authored-by: Alex Chao <[email protected]> Co-authored-by: Devis Lucato <[email protected]>
114 lines
4.6 KiB
Markdown
114 lines
4.6 KiB
Markdown
# Get Started with Semantic Kernel ⚡
|
|
|
|
Install the latest package:
|
|
|
|
python -m pip install --upgrade semantic-kernel
|
|
|
|
|
|
# AI Services
|
|
|
|
## OpenAI / Azure OpenAI API keys
|
|
|
|
Make sure you have an
|
|
[Open AI API Key](https://openai.com/api/) or
|
|
[Azure Open AI service key](https://learn.microsoft.com/azure/cognitive-services/openai/quickstart?pivots=rest-api)
|
|
|
|
Copy those keys into a `.env` file (see the `.env.example` file):
|
|
|
|
```
|
|
OPENAI_API_KEY=""
|
|
OPENAI_ORG_ID=""
|
|
AZURE_OPENAI_DEPLOYMENT_NAME=""
|
|
AZURE_OPENAI_ENDPOINT=""
|
|
AZURE_OPENAI_API_KEY=""
|
|
```
|
|
|
|
# Running a prompt
|
|
|
|
```python
|
|
import semantic_kernel as sk
|
|
from semantic_kernel.connectors.ai.open_ai import OpenAITextCompletion, AzureTextCompletion
|
|
|
|
kernel = sk.Kernel()
|
|
|
|
# Prepare OpenAI service using credentials stored in the `.env` file
|
|
api_key, org_id = sk.openai_settings_from_dot_env()
|
|
kernel.add_text_completion_service("dv", OpenAITextCompletion("text-davinci-003", api_key, org_id))
|
|
|
|
# Alternative using Azure:
|
|
# deployment, api_key, endpoint = sk.azure_openai_settings_from_dot_env()
|
|
# kernel.add_text_completion_service("dv", AzureTextCompletion(deployment, endpoint, api_key))
|
|
|
|
# Wrap your prompt in a function
|
|
prompt = kernel.create_semantic_function("""
|
|
1) A robot may not injure a human being or, through inaction,
|
|
allow a human being to come to harm.
|
|
|
|
2) A robot must obey orders given it by human beings except where
|
|
such orders would conflict with the First Law.
|
|
|
|
3) A robot must protect its own existence as long as such protection
|
|
does not conflict with the First or Second Law.
|
|
|
|
Give me the TLDR in exactly 5 words.""")
|
|
|
|
# Run your prompt
|
|
print(prompt()) # => Robots must not harm humans.
|
|
```
|
|
|
|
# **Semantic functions** are Prompts with input parameters
|
|
|
|
```python
|
|
# Create a reusable function with one input parameter
|
|
summarize = kernel.create_semantic_function("{{$input}}\n\nOne line TLDR with the fewest words.")
|
|
|
|
# Summarize the laws of thermodynamics
|
|
print(summarize("""
|
|
1st Law of Thermodynamics - Energy cannot be created or destroyed.
|
|
2nd Law of Thermodynamics - For a spontaneous process, the entropy of the universe increases.
|
|
3rd Law of Thermodynamics - A perfect crystal at zero Kelvin has zero entropy."""))
|
|
|
|
# Summarize the laws of motion
|
|
print(summarize("""
|
|
1. An object at rest remains at rest, and an object in motion remains in motion at constant speed and in a straight line unless acted on by an unbalanced force.
|
|
2. The acceleration of an object depends on the mass of the object and the amount of force applied.
|
|
3. Whenever one object exerts a force on another object, the second object exerts an equal and opposite on the first."""))
|
|
|
|
# Summarize the law of universal gravitation
|
|
print(summarize("""
|
|
Every point mass attracts every single other point mass by a force acting along the line intersecting both points.
|
|
The force is proportional to the product of the two masses and inversely proportional to the square of the distance between them."""))
|
|
|
|
# Output:
|
|
# > Energy conserved, entropy increases, zero entropy at 0K.
|
|
# > Objects move in response to forces.
|
|
# > Gravitational force between two point masses is inversely proportional to the square of the distance between them.
|
|
```
|
|
|
|
# Semantic Kernel Notebooks
|
|
|
|
The repository contains a few Python and C# notebooks that demonstrates how to
|
|
get started with the Semantic Kernel.
|
|
|
|
Python notebooks:
|
|
|
|
* [Getting started with Semantic Kernel](../samples/notebooks/python/00-getting-started.ipynb)
|
|
* [Loading and configuring Semantic Kernel](../samples/notebooks/python/01-basic-loading-the-kernel.ipynb)
|
|
* [Running AI prompts from file](../samples/notebooks/python/02-running-prompts-from-file.ipynb)
|
|
* [Creating Semantic Functions at runtime (i.e. inline functions)](../samples/notebooks/python/03-semantic-function-inline.ipynb)
|
|
* [Using Context Variables to Build a Chat Experience](../samples/notebooks/python/04-context-variables-chat.ipynb)
|
|
* [Introduction to planners](../samples/notebooks/python/05-using-the-planner.ipynb)
|
|
* [Building Memory with Embeddings](../samples/notebooks/python/06-memory-and-embeddings.ipynb)
|
|
|
|
# SK Frequently Asked Questions
|
|
|
|
## How does Python SK compare to the C# version of Semantic Kernel?
|
|
|
|
The two SDKs are compatible and at the core they follow the same design principles.
|
|
Some features are still available only in the C# version, and being ported
|
|
Refer to the [FEATURE MATRIX](../FEATURE_MATRIX.md) doc to see where
|
|
things stand in matching the features and functionality of the main SK branch.
|
|
Over time there will be some features available only in the Python version, and
|
|
others only in the C# version, for example adapters to external services,
|
|
scientific libraries, etc.
|