mirror of
https://github.com/microsoft/semantic-kernel.git
synced 2026-10-12 02:19:06 +00:00
### Motivation and Context The python notebooks are pinned to 0.2.7.dev0 while the latest pip package for python is 0.3.1.dev0. This PR updates the notebooks to pull the 0.3.1.dev0 and adds 2 new notebooks demonstrating new features added to SK between these versions. ### Description - All notebooks depend on semantic-kernel==0.3.1.dev0 - Added a notebook demonstrating streaming completion responses - Added a notebook demonstrating multiple responses per prompt (including streaming them) ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [ ] The code builds clean without any errors or warnings - [ ] The PR follows SK Contribution Guidelines (https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) - [ ] The code follows the .NET coding conventions (https://learn.microsoft.com/dotnet/csharp/fundamentals/coding-style/coding-conventions) verified with `dotnet format` - [ ] All unit tests pass, and I have added new tests where possible - [ ] I didn't break anyone 😄 --------- Co-authored-by: Lee Miller <[email protected]> Co-authored-by: Shawn Callegari <[email protected]>
6.8 KiB
6.8 KiB
In [ ]:
!python -m pip install semantic-kernel==0.3.1.dev0In [ ]:
import semantic_kernel as sk
from semantic_kernel.connectors.ai.open_ai import AzureTextCompletion, OpenAITextCompletion
kernel = sk.Kernel()
useAzureOpenAI = False
# Configure AI service used by the kernel
if useAzureOpenAI:
deployment, api_key, endpoint = sk.azure_openai_settings_from_dot_env()
kernel.add_text_completion_service("dv", AzureTextCompletion(deployment, endpoint, api_key))
else:
api_key, org_id = sk.openai_settings_from_dot_env()
kernel.add_text_completion_service("dv", OpenAITextCompletion("text-davinci-003", api_key, org_id))In [ ]:
sk_prompt = """
ChatBot can have a conversation with you about any topic.
It can give explicit instructions or say 'I don't know' if it does not have an answer.
{{$history}}
User: {{$user_input}}
ChatBot: """In [ ]:
chat_function = kernel.create_semantic_function(sk_prompt, "ChatBot", max_tokens=2000, temperature=0.7, top_p=0.5)In [ ]:
context = kernel.create_new_context()
context["history"] = ""In [ ]:
context["user_input"] = "Hi, I'm looking for book suggestions"
bot_answer = await chat_function.invoke_async(context=context)
print(bot_answer)In [ ]:
context["history"] += f"\nUser: {context['user_input']}\nChatBot: {bot_answer}\n"
print(context["history"])In [ ]:
async def chat(input_text: str) -> None:
# Save new message in the context variables
print(f"User: {input_text}")
context["user_input"] = input_text
# Process the user message and get an answer
answer = await chat_function.invoke_async(context=context)
# Show the response
print(f"ChatBot: {answer}")
# Append the new interaction to the chat history
context["history"] += f"\nUser: {input_text}\nChatBot: {answer}\n"In [ ]:
await chat("I love history and philosophy, I'd like to learn something new about Greece, any suggestion?")In [ ]:
await chat("that sounds interesting, what is it about?")In [ ]:
await chat("if I read that book, what exactly will I learn about Greek history?")In [ ]:
await chat("could you list some more books I could read about this topic?")In [ ]:
print(context["history"])