129 lines
5.1 KiB
Python
129 lines
5.1 KiB
Python
# Copyright (c) Microsoft. All rights reserved.
|
|
|
|
import asyncio
|
|
import os
|
|
|
|
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 MCPStdioPlugin
|
|
|
|
"""
|
|
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 = [
|
|
"What are the latest 5 python issues in Microsoft/semantic-kernel?",
|
|
"Are there any untriaged python issues?",
|
|
"What is the status of issue #10785?",
|
|
]
|
|
|
|
|
|
async def main():
|
|
# 1. Create the agent
|
|
async with MCPStdioPlugin(
|
|
name="Github",
|
|
description="Github Plugin",
|
|
command="docker",
|
|
args=["run", "-i", "--rm", "-e", "GITHUB_PERSONAL_ACCESS_TOKEN", "ghcr.io/github/github-mcp-server"],
|
|
env={"GITHUB_PERSONAL_ACCESS_TOKEN": os.getenv("GITHUB_PERSONAL_ACCESS_TOKEN")},
|
|
) as github_plugin:
|
|
agent = ChatCompletionAgent(
|
|
service=AzureChatCompletion(credential=AzureCliCredential()),
|
|
name="IssueAgent",
|
|
instructions="Answer questions about the Microsoft semantic-kernel github project.",
|
|
plugins=[github_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:
|
|
GitHub MCP Server running on stdio
|
|
# User: What are the latest 5 python issues in Microsoft/semantic-kernel?
|
|
# IssueAgent: Here are the latest 5 Python issues in the
|
|
[Microsoft/semantic-kernel](https://github.com/microsoft/semantic-kernel) repository:
|
|
|
|
1. **[Issue #11358](https://github.com/microsoft/semantic-kernel/pull/11358)**
|
|
**Title:** Python: Bump Python version to 1.27.0 for a release.
|
|
**Created by:** [moonbox3](https://github.com/moonbox3)
|
|
**Created at:** April 3, 2025
|
|
**State:** Open
|
|
**Comments:** 1
|
|
**Description:** Bump Python version to 1.27.0 for a release.
|
|
|
|
2. **[Issue #11357](https://github.com/microsoft/semantic-kernel/pull/11357)**
|
|
**Title:** .Net: Version 1.45.0
|
|
**Created by:** [markwallace-microsoft](https://github.com/markwallace-microsoft)
|
|
**Created at:** April 3, 2025
|
|
**State:** Open
|
|
**Comments:** 0
|
|
**Description:** Version bump for release 1.45.0.
|
|
|
|
3. **[Issue #11356](https://github.com/microsoft/semantic-kernel/pull/11356)**
|
|
**Title:** .Net: Fix bug in sqlite filter logic
|
|
**Created by:** [westey-m](https://github.com/westey-m)
|
|
**Created at:** April 3, 2025
|
|
**State:** Open
|
|
**Comments:** 0
|
|
**Description:** Fix bug in sqlite filter logic.
|
|
|
|
4. **[Issue #11355](https://github.com/microsoft/semantic-kernel/issues/11355)**
|
|
**Title:** .Net: [MEVD] Validate that the collection generic key parameter corresponds to the model
|
|
**Created by:** [roji](https://github.com/roji)
|
|
**Created at:** April 3, 2025
|
|
**State:** Open
|
|
**Comments:** 0
|
|
**Description:** We currently have validation for the TKey generic type parameter passed to the collection type,
|
|
and we have validation for the key property type on the model.
|
|
|
|
5. **[Issue #11354](https://github.com/microsoft/semantic-kernel/issues/11354)**
|
|
**Title:** .Net: How to add custom JsonSerializer on a builder level
|
|
**Created by:** [PawelStadnicki](https://github.com/PawelStadnicki)
|
|
**Created at:** April 3, 2025
|
|
**State:** Open
|
|
**Comments:** 0
|
|
**Description:** Inquiry about adding a custom JsonSerializer for handling F# types within the SDK.
|
|
|
|
If you need more details about a specific issue, let me know!
|
|
# User: Are there any untriaged python issues?
|
|
# IssueAgent: There are no untriaged Python issues in the Microsoft semantic-kernel repository.
|
|
# User: What is the status of issue #10785?
|
|
# IssueAgent: The status of issue #10785 in the Microsoft Semantic Kernel repository is **open**.
|
|
|
|
- **Title**: Port dotnet feature: Create MCP Sample
|
|
- **Created at**: March 4, 2025
|
|
- **Comments**: 0
|
|
- **Labels**: python
|
|
|
|
You can view the issue [here](https://github.com/microsoft/semantic-kernel/issues/10785).
|
|
"""
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|