chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,138 @@
|
||||
# Copyright (c) Microsoft. All rights reserved.
|
||||
|
||||
import asyncio
|
||||
|
||||
from azure.identity import AzureCliCredential
|
||||
|
||||
from semantic_kernel.agents import ChatCompletionAgent, ChatHistoryAgentThread
|
||||
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
|
||||
from semantic_kernel.connectors.mcp import MCPStreamableHttpPlugin
|
||||
|
||||
"""
|
||||
The following sample demonstrates how to create a chat completion agent that
|
||||
answers questions about Github using a Semantic Kernel Plugin from a MCP server.
|
||||
|
||||
It uses the Azure OpenAI service to create a agent, so make sure to
|
||||
set the required environment variables for the Azure AI Foundry service:
|
||||
- AZURE_OPENAI_CHAT_DEPLOYMENT_NAME
|
||||
- Optionally: AZURE_OPENAI_API_KEY
|
||||
If this is not set, it's also possible to pass AsyncTokenCredential to the service, e.g. AzureCliCredential.
|
||||
"""
|
||||
|
||||
|
||||
# Simulate a conversation with the agent
|
||||
USER_INPUTS = [
|
||||
"How do I make a Python chat completion request in Semantic Kernel using Azure OpenAI?",
|
||||
]
|
||||
|
||||
|
||||
async def main():
|
||||
# 1. Create the agent
|
||||
async with MCPStreamableHttpPlugin(
|
||||
name="LearnSite",
|
||||
description="Learn Docs Plugin",
|
||||
url="https://learn.microsoft.com/api/mcp",
|
||||
) as learn_plugin:
|
||||
agent = ChatCompletionAgent(
|
||||
service=AzureChatCompletion(credential=AzureCliCredential()),
|
||||
name="DocsAgent",
|
||||
instructions="Answer questions about the Microsoft's Semantic Kernel SDK.",
|
||||
plugins=[learn_plugin],
|
||||
)
|
||||
|
||||
for user_input in USER_INPUTS:
|
||||
# 2. Create a thread to hold the conversation
|
||||
# If no thread is provided, a new thread will be
|
||||
# created and returned with the initial response
|
||||
thread: ChatHistoryAgentThread | None = None
|
||||
|
||||
print(f"# User: {user_input}")
|
||||
# 3. Invoke the agent for a response
|
||||
response = await agent.get_response(messages=user_input, thread=thread)
|
||||
print(f"# {response.name}: {response} ")
|
||||
thread = response.thread
|
||||
|
||||
# 4. Cleanup: Clear the thread
|
||||
await thread.delete() if thread else None
|
||||
|
||||
|
||||
"""
|
||||
Sample output:
|
||||
|
||||
# User: How do I make a Python chat completion request in Semantic Kernel using Azure OpenAI?
|
||||
# DocsAgent: To make a **Python chat completion request in Semantic Kernel using Azure OpenAI**, follow these steps:
|
||||
|
||||
---
|
||||
|
||||
### 1. Install Semantic Kernel
|
||||
|
||||
```bash
|
||||
pip install semantic-kernel
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. Import Necessary Libraries
|
||||
|
||||
```python
|
||||
import semantic_kernel as sk
|
||||
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. Initialize the Kernel and Add Azure OpenAI Service
|
||||
|
||||
```python
|
||||
# Initialize the kernel
|
||||
kernel = sk.Kernel()
|
||||
|
||||
# Set your Azure OpenAI details
|
||||
deployment_name = "your-chat-deployment"
|
||||
endpoint = "https://your-resource-name.openai.azure.com/"
|
||||
api_key = "your-azure-openai-api-key"
|
||||
|
||||
# Add Azure Chat Completion service
|
||||
kernel.add_chat_service(
|
||||
"azure_chat",
|
||||
AzureChatCompletion(
|
||||
deployment_name=deployment_name,
|
||||
endpoint=endpoint,
|
||||
api_key=api_key,
|
||||
),
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 4. Create a Chat History and Send a Request
|
||||
|
||||
```python
|
||||
# Create an initial chat history
|
||||
history = [
|
||||
{"role": "system", "content": "You are a helpful assistant."},
|
||||
{"role": "user", "content": "What can you do?"},
|
||||
]
|
||||
|
||||
# Get chat completion
|
||||
result = kernel.chat.complete(
|
||||
chat_history=history,
|
||||
max_tokens=100,
|
||||
temperature=0.7,
|
||||
top_p=0.95,
|
||||
)
|
||||
|
||||
print(result)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Example Summary
|
||||
|
||||
This makes a chat completion request to Azure OpenAI through Semantic Kernel in Python. You can add more user/assistant
|
||||
turns to `history`.
|
||||
"""
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user