Hinzufügen von Funktionen und benutzerdefinierten Aktionen zu einem deklarativen Agent, der mit dem Microsoft 365 Agents-Toolkit erstellt wurde

Sie können die Fähigkeiten Ihres Agents verbessern, indem Sie Funktionen oder benutzerdefinierte Aktionen hinzufügen. Sie können Ihren Agenten verbessern, indem Sie integrierte Funktionen wie Bildgenerator oder Codeinterpreter aktivieren oder MCP- oder API-Plug-Ins als benutzerdefinierte Aktionen hinzufügen. Dieses Tutorial fügt ein API-Plug-In hinzu. Informationen zum Hinzufügen eines MCP-Servers finden Sie unter Erstellen oder Wiederverwenden von MCP-Servern und Erstellen eines Plug-Ins für einen deklarativen Agenten von einem MCP-Server.

Wichtig

In diesem Leitfaden wird davon ausgegangen, dass Sie das Tutorial zum Erstellen deklarativer Agents mithilfe des Microsoft 365 Agents Toolkit und JSON abgeschlossen haben.

Hinzufügen eines Bildgenerators zum Agent

Die Bildgeneratorfunktion ermöglicht es Agenten, Bilder basierend auf Benutzeraufforderungen zu generieren. So fügen Sie einen Bildgenerator hinzu:

  1. Öffnen Sie die appPackage/declarativeAgent.json Datei, und fügen Sie den GraphicArt Eintrag zum capabilities Array hinzu. Weitere Informationen finden Sie unter Grafikobjekt.

    {
      "name": "GraphicArt"
    }
    
  2. Wählen Sie im Bereich "Lebenszyklus " des Microsoft 365 Agents Toolkit die Option "Bereitstellen" aus.

Der deklarative Agent kann Bilder generieren, nachdem Sie die Seite neu geladen haben.

Hinweis

Der Bildgenerator ist für Agents in Microsoft 365 Government Community Cloud High (GCCH)-Umgebungen nicht verfügbar.

Screenshot einer Antwort des deklarativen Agents, die generierte Grafiken enthält

Codeinterpreter zum Agent hinzufügen

Der Code-Interpreter ist ein fortschrittliches Tool, das entwickelt wurde, um komplexe Aufgaben über Python-Code zu lösen.

Hinweis

In GCCH-Umgebungen ist der Codeinterpreter nur für Benutzer mit einer Microsoft 365 Copilot Add-On-Lizenz verfügbar.

  1. Öffnen Sie die appPackage/declarativeAgent.json Datei, und fügen Sie den CodeInterpreter Eintrag zum capabilities Array hinzu.

    {
      "name": "CodeInterpreter"
    }
    

    Weitere Informationen finden Sie unter Codeinterpreterobjekt.

  2. Wählen Sie im Bereich "Lebenszyklus" des Agents-Toolkits die Option "Bereitstellen" aus.

Der deklarative Agent verfügt über die Codeinterpreterfunktion, nachdem Sie die Seite neu geladen haben.

Screenshot einer Antwort des deklarativen Agents, die ein generiertes Diagramm enthält

Screenshot des Python-Codes, der zum Generieren des angeforderten Graphen verwendet wird

Hinzufügen eines API-Plug-Ins als benutzerdefinierte Aktion zum Agent

API-Plug-Ins fügen Ihrem Agent neue Fähigkeiten hinzu, indem sie ihm die Interaktion mit einer REST-API ermöglichen.

Hinweis

Benutzerdefinierte Aktionen werden in GCCH-Umgebungen nicht unterstützt.

Erstellen Sie zunächst eine Datei mit dem Namen posts-api.yml und fügen Sie den Code aus dem OpenAPI-Beschreibungsdokument der Posts-API hinzu.

  1. Wählen Sie im Entwicklungsbereich des Agenten-Toolkits die Option Aktion hinzufügen aus.

  2. Wählen Sie Mit einem OpenAPI-Beschreibungsdokument starten aus.

  3. Wählen Sie "Durchsuchen " aus, und navigieren Sie zu der posts-api.yml Datei.

  4. Wählen Sie alle verfügbaren APIs aus, und klicken Sie dann auf OK.

    Screenshot des API-Auswahldialogs in Visual Studio Code

  5. Wählen Sie manifest.json aus.

  6. Überprüfen Sie die Warnung im Dialogfeld. Wenn Sie fortfahren möchten, wählen Sie Hinzufügen aus.

  7. Wählen Sie im Bereich "Lebenszyklus" des Agents-Toolkits die Option "Bereitstellen" aus.

Der deklarative Agent hat Zugriff auf den Inhalt Ihres Plug-Ins, um seine Antworten zu generieren, nachdem Sie die Seite neu geladen haben.

Screenshot mit einer Antwort des deklarativen Agents, die API-Plug-In-Inhalt enthält

Beiträge API OpenAPI-Beschreibungsdokument

Die folgende OpenAPI-Beschreibung bezieht sich auf die JSONPlaceHolder-API, eine kostenlose Online-REST-API, die Sie verwenden können, wenn Sie gefälschte Daten benötigen.

openapi: '3.0.2'
info:
  title: Posts API
  version: '1.0'
servers:
- url: https://jsonplaceholder.typicode.com/

components:
  schemas:
    post:
      type: object
      properties:
        userId:
          type: integer
          description: The ID of the user that authored the post.
        id:
          type: integer
        title:
          type: string
        body:
          type: string
    user:
      type: object
      properties:
        id:
          type: integer
        name:
          type: string
        username:
          type: string
        email:
          type: string
        phone:
          type: string
        website:
          type: string
        address:
          $ref: '#/components/schemas/address'
        company:
          $ref: '#/components/schemas/company'
    address:
      type: object
      properties:
        street:
          type: string
        suite:
          type: string
        city:
          type: string
        zipcode:
          type: string
        geo:
          $ref: '#/components/schemas/coordinates'
    coordinates:
      type: object
      properties:
        lat:
          type: string
          description: The latitude of the location
        lng:
          type: string
          description: The longitude of the location
    company:
      type: object
      properties:
        name:
          type: string
        catchPhrase:
          type: string
        bs:
          type: string
  parameters:
    post-id:
      name: post-id
      in: path
      description: 'key: id of post'
      required: true
      style: simple
      schema:
        type: integer
    user-id:
      name: user-id
      in: path
      description: 'key: id of user'
      required: true
      style: simple
      schema:
        type: integer

paths:
  /posts:
    get:
      description: Get posts
      operationId: GetPosts
      parameters:
      - name: userId
        in: query
        description: Filter results by user ID
        required: false
        style: form
        schema:
          type: integer
          maxItems: 1
      - name: title
        in: query
        description: Filter results by title
        required: false
        style: form
        schema:
          type: string
          maxItems: 1
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/post'
    post:
      description: 'Create post'
      operationId: CreatePost
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/post'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/post'
  /posts/{post-id}:
    get:
      description: 'Get post by ID'
      operationId: GetPostById
      parameters:
      - $ref: '#/components/parameters/post-id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/post'
    patch:
      description: 'Update post'
      operationId: UpdatePost
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/post'
      parameters:
      - $ref: '#/components/parameters/post-id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/post'
    delete:
      description: 'Delete post'
      operationId: DeletePost
      parameters:
      - $ref: '#/components/parameters/post-id'
      responses:
        '200':
          description: OK
  /users:
    get:
      summary: Get users
      description: Returns details about users
      operationId: GetUsers
      parameters:
      - name: name
        in: query
        description: The user's real name
        schema:
          type: string
      - name: username
        in: query
        description: The user's login name
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/user'
  /users/{user-id}:
    get:
      description: 'Get user by ID'
      operationId: GetUserById
      parameters:
      - $ref: '#/components/parameters/user-id'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/user'

Sie haben den Leitfaden für deklarative Agents für Microsoft 365 Copilot abgeschlossen. Nachdem Sie nun mit den Funktionen eines deklarativen Agents vertraut sind, können Sie in den folgenden Artikeln mehr über deklarative Agents erfahren.