Bagikan melalui


Menjelajahi Kernel Semantik CopilotStudioAgent

Penting

Fitur ini dalam tahap eksperimental. Fitur pada tahap ini sedang dalam pengembangan dan dapat berubah sebelum maju ke tahap pratinjau atau kandidat rilis.

Dokumentasi API terperinci yang terkait dengan diskusi ini tersedia di:

CopilotStudioAgent untuk .NET akan segera hadir.

Dokumen API yang diperbarui akan segera hadir.

Fitur saat ini tidak tersedia di Java.

Apa itu CopilotStudioAgent?

CopilotStudioAgent adalah titik integrasi dalam kerangka kerja Kernel Semantik yang memungkinkan interaksi mulus dengan agen Microsoft Copilot Studio menggunakan API terprogram. Agen ini memungkinkan Anda untuk:

  • Mengotomatiskan percakapan dan memanggil agen Copilot Studio yang ada dari kode Python.
  • Pertahankan riwayat percakapan yang mendalam menggunakan utas, menjaga konteks antar pesan.
  • Manfaatkan kemampuan pengambilan pengetahuan tingkat lanjut, pencarian web, dan integrasi data yang disediakan dalam Microsoft Copilot Studio.

Nota

Sumber/alat pengetahuan harus dikonfigurasi dalam Microsoft Copilot Studio sebelum dapat diakses melalui agen.

Menyiapkan lingkungan pengembangan Anda

Untuk mengembangkan dengan CopilotStudioAgent, Anda harus menyiapkan lingkungan dan otentikasi dengan benar.

CopilotStudioAgent untuk .NET akan segera hadir.

Prasyarat

  1. Python 3.10 atau lebih tinggi
  2. Kernel Semantik dengan dependensi Copilot Studio:
pip install semantic-kernel[copilotstudio]
  1. Agen Microsoft Copilot Studio :

    • Buat agen di Microsoft Copilot Studio.
    • Terbitkan agen Anda, dan di bawah ini dapatkan Settings → Advanced → Metadata :
      • Schema Name (digunakan sebagai agent_identifier)
      • Environment ID
  2. Pendaftaran Aplikasi Azure Entra ID ("Aplikasi asli", untuk masuk interaktif), dengan CopilotStudio.Copilots.Invoke izin yang didelegasikan.

Variabel Lingkungan

Atur variabel berikut di lingkungan atau .env file Anda:

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

Petunjuk / Saran

Lihat Autentikasi API Power Platform untuk bantuan terkait izin.

Fitur saat ini tidak tersedia di Java.

Membuat dan Mengonfigurasi CopilotStudioAgent Klien

Anda dapat mengandalkan variabel lingkungan untuk sebagian besar konfigurasi, tetapi dapat secara eksplisit membuat dan menyesuaikan klien agen sesuai kebutuhan.

CopilotStudioAgent untuk .NET akan segera hadir.

Penggunaan Dasar — Berbasis Variabel Lingkungan

from semantic_kernel.agents import CopilotStudioAgent

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

Tidak diperlukan penyiapan klien eksplisit jika variabel lingkungan Anda diatur.

Konstruksi Pelanggan yang Jelas

Ambil alih konfigurasi atau gunakan identitas kustom:

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

Fitur saat ini tidak tersedia di Java.

Berinteraksi dengan CopilotStudioAgent

Alur kerja inti mirip dengan agen Kernel Semantik lainnya: menyediakan input pengguna, menerima respons, mempertahankan konteks melalui utas.

CopilotStudioAgent untuk .NET akan segera hadir.

Contoh Dasar

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

Mempertahankan Konteks dengan Utas

Untuk menjaga percakapan tetap berkeadaan:

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

Menggunakan Argumen dan Templat Perintah

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

Iterasi melalui Streaming (Tidak Didukung)

Nota

Respons streaming saat ini tidak didukung oleh CopilotStudioAgent.

Menggunakan Plug-in dengan CopilotStudioAgent

Kernel Semantik memungkinkan komposisi agen dan plugin. Meskipun ekstensibilitas utama untuk Copilot Studio hadir melalui Studio itu sendiri, Anda dapat membuat plugin seperti halnya agen lain.

CopilotStudioAgent untuk .NET akan segera hadir.

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

Fitur saat ini tidak tersedia di Java.

Fitur Tingkat Lanjut

CopilotStudioAgent dapat memanfaatkan kemampuan lanjutan yang ditingkatkan oleh Copilot Studio, tergantung pada bagaimana agen target dikonfigurasi di lingkungan Studio.

  • Pengambilan Pengetahuan — merespons berdasarkan sumber pengetahuan yang telah dikonfigurasi sebelumnya di Studio.
  • Pencarian Web — jika pencarian web diaktifkan di agen Studio Anda, kueri akan menggunakan Bing Search.
  • Autentikasi kustom atau API — melalui plug-in Power Platform dan Studio; pengikatan OpenAPI langsung saat ini bukan fitur utama dalam integrasi SK.

CopilotStudioAgent untuk .NET akan segera hadir.

Pengambilan Pengetahuan

Tidak diperlukan kode Python tertentu; sumber pengetahuan harus dikonfigurasi di Copilot Studio. Ketika pesan pengguna memerlukan fakta dari sumber ini, agen akan mengembalikan informasi yang sesuai.

Konfigurasikan Copilot Anda dalam Studio untuk mengizinkan Bing Search. Kemudian gunakan seperti di atas. Untuk informasi selengkapnya tentang mengonfigurasi Bing Search, lihat panduan berikut.

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

Fitur saat ini tidak tersedia di Java.

Panduan Praktis

Untuk contoh praktis menggunakan CopilotStudioAgent, lihat sampel kode kami di GitHub:

CopilotStudioAgent untuk .NET akan segera hadir.

Fitur saat ini tidak tersedia di Java.


Catatan :

  • Untuk informasi selengkapnya atau pemecahan masalah, lihat dokumentasi Microsoft Copilot Studio.
  • Hanya fitur dan alat yang diaktifkan dan diterbitkan secara terpisah di agen Studio Anda yang akan tersedia melalui antarmuka Kernel Semantik.
  • Siaran langsung, penyebaran plugin, dan penambahan alat terprogram direncanakan untuk rilis mendatang.

Langkah Selanjutnya