77 lines
2.9 KiB
Python
77 lines
2.9 KiB
Python
# Copyright (c) Microsoft. All rights reserved.
|
|
|
|
|
|
import semantic_kernel.connectors.ai.open_ai as sk_oai
|
|
from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings
|
|
from semantic_kernel.core_plugins.conversation_summary_plugin import ConversationSummaryPlugin
|
|
from semantic_kernel.functions.kernel_arguments import KernelArguments
|
|
from semantic_kernel.prompt_template.prompt_template_config import PromptTemplateConfig
|
|
from tests.utils import retry
|
|
|
|
CHAT_TRANSCRIPT = """John: Hello, how are you?
|
|
Jane: I'm fine, thanks. How are you?
|
|
John: I'm doing well, writing some example code.
|
|
Jane: That's great! I'm writing some example code too.
|
|
John: What are you writing?
|
|
Jane: I'm writing a chatbot.
|
|
John: That's cool. I'm writing a chatbot too.
|
|
Jane: What language are you writing it in?
|
|
John: I'm writing it in C#.
|
|
Jane: I'm writing it in Python.
|
|
John: That's cool. I need to learn Python.
|
|
Jane: I need to learn C#.
|
|
John: Can I try out your chatbot?
|
|
Jane: Sure, here's the link.
|
|
John: Thanks!
|
|
Jane: You're welcome.
|
|
Jane: Look at this poem my chatbot wrote:
|
|
Jane: Roses are red
|
|
Jane: Violets are blue
|
|
Jane: I'm writing a chatbot
|
|
Jane: What about you?
|
|
John: That's cool. Let me see if mine will write a poem, too.
|
|
John: Here's a poem my chatbot wrote:
|
|
John: The singularity of the universe is a mystery.
|
|
Jane: You might want to try using a different model.
|
|
John: I'm using the GPT-2 model. That makes sense.
|
|
John: Here is a new poem after updating the model.
|
|
John: The universe is a mystery.
|
|
John: The universe is a mystery.
|
|
John: The universe is a mystery.
|
|
Jane: Sure, what's the problem?
|
|
John: Thanks for the help!
|
|
Jane: I'm now writing a bot to summarize conversations.
|
|
Jane: I have some bad news, we're only half way there.
|
|
John: Maybe there is a large piece of text we can use to generate a long conversation.
|
|
Jane: That's a good idea. Let me see if I can find one. Maybe Lorem Ipsum?
|
|
John: Yeah, that's a good idea."""
|
|
|
|
|
|
async def test_azure_summarize_conversation_using_plugin(kernel):
|
|
service_id = "text_completion"
|
|
|
|
execution_settings = PromptExecutionSettings(
|
|
service_id=service_id, max_tokens=ConversationSummaryPlugin._max_tokens, temperature=0.1, top_p=0.5
|
|
)
|
|
prompt_template_config = PromptTemplateConfig(
|
|
description="Given a section of a conversation transcript, summarize the part of the conversation.",
|
|
execution_settings={service_id: execution_settings},
|
|
)
|
|
|
|
kernel.add_service(sk_oai.OpenAIChatCompletion(service_id=service_id))
|
|
|
|
conversationSummaryPlugin = kernel.add_plugin(
|
|
ConversationSummaryPlugin(prompt_template_config), "conversationSummary"
|
|
)
|
|
|
|
arguments = KernelArguments(input=CHAT_TRANSCRIPT)
|
|
|
|
summary = await retry(
|
|
lambda: kernel.invoke(conversationSummaryPlugin["SummarizeConversation"], arguments), retries=5
|
|
)
|
|
|
|
output = str(summary).strip().lower()
|
|
print(output)
|
|
assert "john" in output and "jane" in output
|
|
assert len(output) < len(CHAT_TRANSCRIPT)
|