Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Изучение семантического ядра
Это важно
Эта функция находится на экспериментальном этапе. Функции на этом этапе находятся в стадии разработки и могут измениться перед переходом к этапу предварительного просмотра или релиз-кандидата.
Подробная документация по API, связанная с этим обсуждением, доступна по адресу:
Скоро появится агент CopilotStudio для .NET.
Обновленная документация API скоро появится.
Функция в настоящее время недоступна в Java.
Что такое CopilotStudioAgent?
Это CopilotStudioAgent точка интеграции в рамках семантического ядра, которая обеспечивает простое взаимодействие с агентами Microsoft Copilot Studio с помощью программных API. Этот агент позволяет:
- Автоматизация бесед и вызов существующих агентов Copilot Studio из кода Python.
- Поддерживать богатую историю бесед с помощью потоков, сохраняя контекст между сообщениями.
- Используйте расширенные возможности получения знаний, поиска в Интернете и интеграции данных, доступные в Microsoft Copilot Studio.
Замечание
Чтобы получить доступ к агенту, необходимо настроить источники знаний и средства в Microsoft Copilot Studio.
Подготовка среды разработки
Для разработки с помощью CopilotStudioAgent необходимо правильно настроить окружение и аутентификацию.
Скоро появится агент CopilotStudio для .NET.
Предпосылки
- Python 3.10 или более поздней версии
- Семантическое ядро с зависимостями Copilot Studio:
pip install semantic-kernel[copilotstudio]
Агент Microsoft Copilot Studio :
- Создайте агент в Microsoft Copilot Studio.
- Опубликуйте вашего агента, и после
Settings → Advanced → Metadataполучите:-
Schema Name(используется в качествеagent_identifier) Environment ID
-
Регистрация приложения Azure Entra ID ("Собственное приложение", для интерактивного входа) с
CopilotStudio.Copilots.Invokeделегированными разрешениями.
Переменные среды
Задайте следующие переменные в среде или .env файле:
COPILOT_STUDIO_AGENT_APP_CLIENT_ID=<your-app-client-id>
COPILOT_STUDIO_AGENT_TENANT_ID=<your-tenant-id>
COPILOT_STUDIO_AGENT_ENVIRONMENT_ID=<your-env-id>
COPILOT_STUDIO_AGENT_AGENT_IDENTIFIER=<your-agent-id>
COPILOT_STUDIO_AGENT_AUTH_MODE=interactive
Подсказка
Дополнительные сведения о разрешениях см. в статье "Проверка подлинности API Power Platform ".
Функция в настоящее время недоступна в Java.
Создание и настройка CopilotStudioAgent клиента
Вы можете полагаться на переменные среды для большинства конфигураций, но при необходимости можно явно создать и настроить клиент агента.
Скоро появится агент CopilotStudio для .NET.
Базовое использование — управляемое переменной среды
from semantic_kernel.agents import CopilotStudioAgent
agent = CopilotStudioAgent(
name="PhysicsAgent",
instructions="You help answer questions about physics.",
)
Если заданы переменные среды, не требуется явной настройки клиента.
Явное построение клиента
Переопределите конфигурацию или используйте пользовательское удостоверение:
from semantic_kernel.agents import CopilotStudioAgent
client = CopilotStudioAgent.create_client(
auth_mode="interactive", # or use CopilotStudioAgentAuthMode.INTERACTIVE
agent_identifier="<schema-name>",
app_client_id="<client-id>",
tenant_id="<tenant-id>",
environment_id="<env-id>",
)
agent = CopilotStudioAgent(
client=client,
name="CustomAgent",
instructions="You help answer custom questions.",
)
Функция в настоящее время недоступна в Java.
Взаимодействие с приложением CopilotStudioAgent
Основной рабочий процесс похож на другие агенты семантического ядра: предоставляют пользовательские входные данные, получают ответы, поддерживают контекст через потоки.
Скоро появится агент CopilotStudio для .NET.
Базовый пример
import asyncio
from semantic_kernel.agents import CopilotStudioAgent
async def main():
agent = CopilotStudioAgent(
name="PhysicsAgent",
instructions="You help answer questions about physics.",
)
USER_INPUTS = [
"Why is the sky blue?",
"What is the speed of light?",
]
for user_input in USER_INPUTS:
print(f"# User: {user_input}")
response = await agent.get_response(messages=user_input)
print(f"# {response.name}: {response}")
asyncio.run(main())
Поддержание контекста с помощью потоков
Чтобы сохранить состояние беседы, выполните следующие действия:
import asyncio
from semantic_kernel.agents import CopilotStudioAgent, CopilotStudioAgentThread
async def main():
agent = CopilotStudioAgent(
name="PhysicsAgent",
instructions="You help answer questions about physics.",
)
USER_INPUTS = [
"Hello! Who are you? My name is John Doe.",
"What is the speed of light?",
"What have we been talking about?",
"What is my name?",
]
thread: CopilotStudioAgentThread | None = None
for user_input in USER_INPUTS:
print(f"# User: {user_input}")
response = await agent.get_response(messages=user_input, thread=thread)
print(f"# {response.name}: {response}")
thread = response.thread
if thread:
await thread.delete()
asyncio.run(main())
Использование аргументов и шаблонов запросов
import asyncio
from semantic_kernel.agents import CopilotStudioAgent, CopilotStudioAgentThread
from semantic_kernel.contents import ChatMessageContent
from semantic_kernel.functions import KernelArguments
from semantic_kernel.prompt_template import PromptTemplateConfig
async def main():
agent = CopilotStudioAgent(
name="JokeAgent",
instructions="You are a joker. Tell kid-friendly jokes.",
prompt_template_config=PromptTemplateConfig(template="Craft jokes about {{$topic}}"),
)
USER_INPUTS = [
ChatMessageContent(role="user", content="Tell me a joke to make me laugh.")
]
thread: CopilotStudioAgentThread | None = None
for user_input in USER_INPUTS:
print(f"# User: {user_input}")
response = await agent.get_response(
messages=user_input,
thread=thread,
arguments=KernelArguments(topic="pirate"),
)
print(f"# {response.name}: {response}")
thread = response.thread
if thread:
await thread.delete()
asyncio.run(main())
Перебор потоковой передачи (не поддерживается)
Замечание
Передача ответов в потоковом режиме в настоящее время не поддерживается CopilotStudioAgent.
Использование плагинов с CopilotStudioAgent
Семантический ядро позволяет составить агенты и подключаемые модули. Хотя основная расширяемость для Copilot Studio поставляется через саму студию, вы можете создавать подключаемые модули, как и другие агенты.
Скоро появится агент CopilotStudio для .NET.
from semantic_kernel.functions import kernel_function
from semantic_kernel.agents import CopilotStudioAgent
class SamplePlugin:
@kernel_function(description="Provides sample data.")
def get_data(self) -> str:
return "Sample data from custom plugin"
agent = CopilotStudioAgent(
name="PluggedInAgent",
instructions="Demonstrate plugins.",
plugins=[SamplePlugin()],
)
Функция в настоящее время недоступна в Java.
Дополнительные функции
Можно CopilotStudioAgent использовать расширенные возможности Copilot Studio в зависимости от того, как целевой агент настроен в среде Studio:
- Получение знаний — отвечает на основе предварительно настроенных источников знаний в Студии.
- Поиск в Интернете — если веб-поиск включен в агенте Studio, запросы будут использовать поиск Bing.
- Пользовательская аутентификация или API — с помощью подключаемых модулей Power Platform и Studio; Прямая привязка OpenAPI в настоящее время не является приоритетной в интеграции SK.
Скоро появится агент CopilotStudio для .NET.
Извлечение знаний
Не требуется конкретный код Python; источники знаний должны быть настроены в Copilot Studio. Если сообщения пользователей требуют фактов из этих источников, агент вернет информацию соответствующим образом.
Поиск в Интернете
Настройте Copilot в Студии, чтобы разрешить поиск Bing. Затем используйте приведенные выше сведения. Дополнительные сведения о настройке поиска Bing см. в следующем руководстве.
from semantic_kernel.agents import CopilotStudioAgent, CopilotStudioAgentThread
agent = CopilotStudioAgent(
name="WebSearchAgent",
instructions="Help answer the user's questions by searching the web.",
)
USER_INPUTS = ["Which team won the 2025 NCAA Basketball championship?"]
thread: CopilotStudioAgentThread | None = None
for user_input in USER_INPUTS:
print(f"# User: {user_input}")
# Note: Only non-streamed responses are supported
response = await agent.get_response(messages=user_input, thread=thread)
print(f"# {response.name}: {response}")
thread = response.thread
if thread:
await thread.delete()
Функция в настоящее время недоступна в Java.
Инструкции
Практические примеры использования CopilotStudioAgentкода см. в примерах кода на GitHub:
Скоро появится агент CopilotStudio для .NET.
Функция в настоящее время недоступна в Java.
Примечания:
- Дополнительные сведения или устранение неполадок см. в документации по Microsoft Copilot Studio.
- Только функции и средства, которые отдельно включены и опубликованы в агенте Studio, будут доступны через интерфейс семантического ядра.
- Потоковая передача, развертывание подключаемых модулей и программное добавление инструментов планируются для будущих выпусков.