Sdílet prostřednictvím


Zkoumání sémantického jádra CopilotStudioAgent

Důležité

Tato funkce je v experimentální fázi. Funkce v této fázi jsou ve vývoji a před přechodem na fázi Preview nebo release candidate se můžou změnit.

Podrobná dokumentace k rozhraní API související s touto diskuzí je k dispozici na adrese:

CopilotStudioAgent pro .NET bude brzy k dispozici.

Připravujeme aktualizované dokumenty k rozhraní API.

Funkce aktuálně není dostupná v Javě.

Co je CopilotStudioAgent?

A CopilotStudioAgent je integrační bod v rámci sémantického jádra, který umožňuje bezproblémovou interakci s agenty Microsoft Copilot Studio pomocí programových rozhraní API. Tento agent umožňuje:

  • Automatizujte konverzace a volejte existující agenty Copilot Studio z kódu Pythonu.
  • Udržujte bohatou konverzační historii pomocí vláken a zachovávejte kontext napříč zprávami.
  • Využijte pokročilé možnosti načítání znalostí, vyhledávání na webu a integrace dat, které jsou dostupné v nástroji Microsoft Copilot Studio.

Poznámka:

Zdroje znalostí a nástroje musí být nakonfigurované v aplikaci Microsoft Copilot Studio, aby k nim bylo možné přistupovat prostřednictvím agenta.

Příprava vývojového prostředí

Abyste mohli vyvíjet pomocí CopilotStudioAgent, musíte mít správně nastavené prostředí a ověřování.

CopilotStudioAgent pro .NET bude brzy k dispozici.

Požadavky

  1. Python 3.10 nebo vyšší
  2. Sémantické jádro se závislostmi Copilot Studio:
pip install semantic-kernel[copilotstudio]
  1. Agent Microsoft Copilot Studio:

    • Vytvořte agenta v aplikaci Microsoft Copilot Studio.
    • Publikujte svého agenta a pod Settings → Advanced → Metadata získejte:
      • Schema Name (použito jako agent_identifier)
      • Environment ID
  2. Registrace aplikace Azure Entra ID (nativní aplikace pro interaktivní přihlášení) s delegovaným oprávněním CopilotStudio.Copilots.Invoke .

Proměnné prostředí

Nastavte ve svém prostředí nebo .env souboru následující proměnné:

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

Návod

Nápovědu k oprávněním najdete v tématu Ověřování rozhraní API služby Power Platform .

Funkce aktuálně není dostupná v Javě.

Vytvoření a konfigurace CopilotStudioAgent klienta

Pro většinu konfigurací můžete spoléhat na proměnné prostředí, ale podle potřeby můžete klienta agenta explicitně vytvořit a přizpůsobit.

CopilotStudioAgent pro .NET bude brzy k dispozici.

Základní použití – řízení proměnných prostředí

from semantic_kernel.agents import CopilotStudioAgent

agent = CopilotStudioAgent(
    name="PhysicsAgent",
    instructions="You help answer questions about physics.",
)

Pokud jsou nastavené proměnné prostředí, nevyžaduje se explicitní nastavení klienta.

Explicitní konstrukce klienta

Přepsat konfiguraci nebo použít vlastní identitu:

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.",
)

Funkce aktuálně není dostupná v Javě.

Interakce s aplikací CopilotStudioAgent

Základní pracovní postup je podobný ostatním agentům sémantického jádra: poskytují vstupy uživatelů, přijímají odpovědi, udržují kontext prostřednictvím vláken.

CopilotStudioAgent pro .NET bude brzy k dispozici.

Základní příklad

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

Udržování kontextu s vlákny

Chcete-li zachovat stav konverzace:

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

Použití argumentů a šablon výzvy

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

Iterace přes streamování (nepodporuje se)

Poznámka:

Streamovací odpovědi nejsou v současné době podporovány CopilotStudioAgent.

Použití pluginů s nástrojem CopilotStudioAgent

Sémantické jádro umožňuje skládání agentů a pluginů. I když primární rozšiřitelnost pro Copilot Studio přichází prostřednictvím samotného Studia, můžete vytvářet moduly plug-in jako s jinými agenty.

CopilotStudioAgent pro .NET bude brzy k dispozici.

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()],
)

Funkce aktuálně není dostupná v Javě.

Pokročilé funkce

Záleží na tom, jak je cílový agent nakonfigurovaný v prostředí Studia, zda může využít vylepšené schopnosti díky Copilot Studio.

  • Načítání znalostí – reaguje na základě předem nakonfigurovaných zdrojů znalostí v sadě Studio.
  • Vyhledávání na webu – pokud je ve vašem agentu sady Studio povolené vyhledávání na webu, budou dotazy používat vyhledávání Bingu.
  • Vlastní ověřování nebo rozhraní API – prostřednictvím modulů plug-in pro Power Platform a Studio; přímá vazba na OpenAPI není aktuálně považována za prvotřídní v integraci SK.

CopilotStudioAgent pro .NET bude brzy k dispozici.

Získávání znalostí

Není potřeba žádný konkrétní kód Pythonu; Zdroje znalostí musí být nakonfigurované v nástroji Copilot Studio. Pokud zprávy uživatelů vyžadují z těchto zdrojů fakta, agent podle potřeby vrátí informace.

Nakonfigurujte svého Copilota ve Studiu, aby umožňoval vyhledávání na Bingu. Pak použijte výše uvedené. Další informace o konfiguraci vyhledávání Bingu najdete v následujícím průvodci.

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

Funkce aktuálně není dostupná v Javě.

Návod

Praktické příklady použití kódu CopilotStudioAgentnajdete v našich ukázkách kódu na GitHubu:

CopilotStudioAgent pro .NET bude brzy k dispozici.

Funkce aktuálně není dostupná v Javě.


Poznámky:

  • Další informace nebo řešení potíží najdete v dokumentaci k sadě Microsoft Copilot Studio.
  • Prostřednictvím rozhraní sémantického jádra budou dostupné jenom funkce a nástroje samostatně povolené a publikované v agentu sady Studio.
  • Streamování, nasazování modulů plug-in a programové přidávání nástrojů se plánuje pro budoucí verze.

Další kroky