Files
wehub-resource-sync b957a53def
CodeQL / Analyze (csharp) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 13:21:23 +08:00

139 lines
3.6 KiB
Python

# 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())