mirror of
https://github.com/microsoft/semantic-kernel.git
synced 2026-10-12 02:19:06 +00:00
Moving kernel-syntax-examples to the python/samples folder. Leaving README behind to point to the new folders (will delete in a few sprints) ### Contribution Checklist <!-- Before submitting this PR, please make sure: --> - [X] The code builds clean without any errors or warnings - [X] The PR follows SK Contribution Guidelines (https://github.com/microsoft/semantic-kernel/blob/main/CONTRIBUTING.md) - [X] The code follows the .NET coding conventions (https://learn.microsoft.com/dotnet/csharp/fundamentals/coding-style/coding-conventions) verified with `dotnet format` - [X] All unit tests pass, and I have added new tests where possible - [X] I didn't break anyone 😄 Co-authored-by: name <email>
72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
# Copyright (c) Microsoft. All rights reserved.
|
|
|
|
import asyncio
|
|
|
|
import semantic_kernel as sk
|
|
import semantic_kernel.connectors.ai.open_ai as sk_oai
|
|
|
|
system_message = """
|
|
You are a chat bot. Your name is Mosscap and
|
|
you have one goal: figure out what people need.
|
|
Your full name, should you need to know it, is
|
|
Splendid Speckled Mosscap. You communicate
|
|
effectively, but you tend to answer with long
|
|
flowery prose.
|
|
"""
|
|
|
|
kernel = sk.Kernel()
|
|
|
|
api_key, org_id = sk.openai_settings_from_dot_env()
|
|
kernel.add_chat_service(
|
|
"chat-gpt", sk_oai.OpenAIChatCompletion("gpt-3.5-turbo", api_key, org_id)
|
|
)
|
|
|
|
prompt_config = sk.PromptTemplateConfig.from_completion_parameters(
|
|
max_tokens=2000, temperature=0.7, top_p=0.8
|
|
)
|
|
|
|
prompt_template = sk.ChatPromptTemplate(
|
|
"{{$user_input}}", kernel.prompt_template_engine, prompt_config
|
|
)
|
|
|
|
prompt_template.add_system_message(system_message)
|
|
prompt_template.add_user_message("Hi there, who are you?")
|
|
prompt_template.add_assistant_message(
|
|
"I am Mosscap, a chat bot. I'm trying to figure out what people need."
|
|
)
|
|
|
|
function_config = sk.SemanticFunctionConfig(prompt_config, prompt_template)
|
|
chat_function = kernel.register_semantic_function("ChatBot", "Chat", function_config)
|
|
|
|
|
|
async def chat() -> bool:
|
|
context_vars = sk.ContextVariables()
|
|
|
|
try:
|
|
user_input = input("User:> ")
|
|
context_vars["user_input"] = user_input
|
|
except KeyboardInterrupt:
|
|
print("\n\nExiting chat...")
|
|
return False
|
|
except EOFError:
|
|
print("\n\nExiting chat...")
|
|
return False
|
|
|
|
if user_input == "exit":
|
|
print("\n\nExiting chat...")
|
|
return False
|
|
|
|
answer = await kernel.run_async(chat_function, input_vars=context_vars)
|
|
print(f"Mosscap:> {answer}")
|
|
return True
|
|
|
|
|
|
async def main() -> None:
|
|
chatting = True
|
|
while chatting:
|
|
chatting = await chat()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|