เชื่อมต่อกับแหล่งความรู้ที่กำหนดเอง

Copilot Studio มีแหล่งความรู้สำเร็จรูป เช่น SharePoint และ Dataverse หลายองค์กรยังใช้จุดสิ้นสุดการค้นหาของตนเอง เช่น API แบบกำหนดเอง ระบบการค้นหาขององค์กรที่มีอยู่ หรือ Azure AI Search ในขณะที่ยังคงควบคุมคิวรีที่ดำเนินการได้อย่างเต็มที่

Copilot Studio รองรับสถานการณ์นี้ด้วยทริกเกอร์ OnKnowledgeRequested หัวข้อใดๆ ที่ใช้ทริกเกอร์นี้จะทำหน้าที่เป็นแหล่งความรู้แบบกำหนดเองและมีส่วนร่วมในผลลัพธ์ของคำตอบที่สร้างโดยอัตโนมัติ

บทความนี้อธิบายวิธีการสร้างและผสานแหล่งความรู้แบบกำหนดเองใน Copilot Studio ด้วยการใช้ทริกเกอร์ OnKnowledgeRequested คุณจะได้เรียนรู้วิธีที่ Copilot Studio ปรับแต่งคำค้นหา วิธีเชื่อมต่อกับ API สำหรับการค้นหาของคุณเอง วิธีจัดรูปแบบผลลัพธ์เพื่อใช้กับคำตอบที่สร้างโดยอัตโนมัติ และแนวทางปฏิบัติที่ดีที่สุดในการใช้งานแหล่งความรู้แบบกำหนดเอง

ทริกเกอร์ OnKnowledgeRequested

ใช้ทริกเกอร์ OnKnowledgeRequested ในสองกรณีนี้:

  • เมื่อแอปพลิเคชันประสานการทำงานของระบบกำหนดว่าจำเป็นต้องดึงข้อมูลความรู้เพื่อตอบคำถามของผู้ใช้
  • เมื่อ โหนดคำตอบที่สร้างโดยอัตโนมัติ ถูกเรียกใช้อย่างเจาะจงในการสนทนา

สำคัญ

คุณสามารถกำหนดค่าทริกเกอร์นี้ได้เฉพาะใน มุมมองโค้ด โดยใช้ YAML เท่านั้น ไม่มีการรองรับเครื่องมือออกแบบการแสดงผลด้วยภาพ

หัวข้อที่ใช้ OnKnowledgeRequested สามารถเข้าถึงตัวแปรระบบที่ไม่พร้อมใช้งานในหัวข้อปกติ:

  • System.SearchQuery: เวอร์ชันที่เขียนใหม่และรับรู้บริบทของการสอบถามของผู้ใช้ที่ปรับให้เหมาะสมสำหรับการค้นหาเชิงความหมาย
  • System.KeywordSearchQuery: คำค้นที่เขียนใหม่ซึ่งได้รับการปรับแต่งเพื่อเครื่องมือค้นหาคำสำคัญ
  • System.SearchResults: ตำแหน่งที่หัวข้อเก็บส่วนข้อมูลความรู้ที่จัดรูปแบบแล้ว

Copilot Studio เขียนคำค้นหาใหม่อย่างชาญฉลาดโดยใช้ประวัติการสนทนา เพื่อให้มั่นใจว่าจะรักษาบริบทแบบหลายเทิร์น

การสร้างแหล่งความรู้แบบกำหนดเอง

เพื่อสร้างแหล่งความรู้แบบกำหนดเอง คุณต้องสร้างหัวข้อที่มีทริกเกอร์ OnKnowledgeRequested ซึ่งเรียก API การค้นหาของคุณและแปลงผลลัพธ์ให้อยู่ในรูปแบบที่ Copilot Studio คาดหวัง

ขั้นตอนที่ 1: สร้างทริกเกอร์

สร้างหัวข้อใหม่ใน Copilot Studio แล้วเปลี่ยนไปใช้มุมมองโค้ด จากนั้นกำหนดทริกเกอร์ OnKnowledgeRequested

kind: AdaptiveDialog
beginDialog:
  kind: OnKnowledgeRequested
  id: main
  intent: {}
  actions:
    # Actions go here
inputType: {}
outputType: {}

โครงสร้างนี้บอก Copilot Studio ว่าหัวข้อนี้มีหน้าที่รับผิดชอบในการตอบสนองต่อคำขอความรู้

ขั้นตอนที่ 2: เพิ่มคำขอ HTTP:

เพิ่มการดำเนินการ HTTP ที่เรียกปลายทางการค้นหาของคุณ

ตัวอย่าง:

- kind: HttpRequestAction
  id: searchRequest
  url: = "https://search-api.contoso.com/search?q=" & System.KeywordSearchQuery
  response: Topic.searchResults
  responseSchema:
    kind: Record
    properties:
      query: String
      results:
        type:
          kind: Table
          properties:
            snippet: String
            title: String
            url: String

ผนวก System.KeywordSearchQuery เข้ากับ URL พื้นฐานของคุณ เนื่องจาก Copilot Studio จะเขียนคำค้นของผู้ใช้ใหม่โดยรวมบริบทของการสนทนาก่อนที่จะส่งคำขอค้นหา ขั้นตอนนี้มีความสำคัญในการรักษาบริบทในการสนทนาแบบหลายเทิร์น

เคล็ดลับ

แทนที่จะใช้คำขอ HTTP แบบโดยตรง คุณสามารถใช้วิธีใดก็ได้ที่ดึงผลลัพธ์จากจุดเชื่อมต่อสำหรับการค้นหา รวมถึงคอนเนคเตอร์แบบกำหนดเอง คอนเนคเตอร์ในตัว เช่น Azure AI Search หรือโฟลว์เอเจนต์

ตัวอย่างการเขียนคำค้นใหม่

  • คำค้นของผู้ใช้ 1: "ระยะเวลาการเก็บข้อมูลอย่างเป็นทางการของเราสำหรับบันทึกลูกค้าคือเท่าไร"
  • การสอบถามการติดตามผล: "ข้อมูลทางการเงินมีการเปลี่ยนแปลงหรือไม่"
  • การสอบถามการติดตามผล: "และมีข้อยกเว้นหรือไม่"

คำค้นที่เขียนใหม่กลายเป็น: "ข้อยกเว้นเกี่ยวกับนโยบายการเก็บรักษาข้อมูล, ข้อยกเว้นการเก็บรักษาข้อมูลลูกค้าและข้อมูลทางการเงิน, ข้อยกเว้นตามข้อบังคับ, การจัดการข้อยกเว้นของนโยบาย, แนวทางการปฏิบัติตามข้อกำหนด"

โปรดสังเกตว่าคำค้นที่เขียนใหม่:

  • แก้ไข "ที่นั่น" ให้กับนโยบายการเก็บข้อมูล
  • นำบริบทจากทั้งสองเทิร์นก่อนหน้า: ข้อมูลลูกค้า + ข้อมูลทางการเงิน
  • เพิ่มภาษานโยบายองค์กร: ข้อยกเว้น, การยกเว้น, กฎระเบียบ, แนวทางปฏิบัติ

ขั้นตอนที่ 3: แปลงผลลัพธ์:

แหล่งความรู้แบบกำหนดเองต้องส่งผลลัพธ์ในรูปแบบที่ Copilot Studio คาดหวัง รูปแบบนี้ใช้:

  • เนื้อหา: ส่วนย่อยหรือข้อความสั้น ๆ ที่ตัดตอนมา
  • ContentLocation (ไม่บังคับ): URL
  • ชื่อเรื่อง (ไม่บังคับ): ชื่อของผลลัพธ์

เพื่อกำหนดโครงสร้างของการตอบสนอง HTTP ให้ตั้งค่าสคีมาของการตอบสนองในอินเทอร์เฟซ Copilot Studio

  • เลือกจากข้อมูลตัวอย่างสำหรับชนิดข้อมูลของการตอบกลับ
  • เลือกรับสคีมาจาก JSON ตัวอย่าง
  • วางเพย์โหลด JSON ตัวอย่างของคุณเพื่อสร้างสคีมาโดยอัตโนมัติ

ขั้นตอนนี้จะสร้างสคีมาของการตอบกลับในไฟล์ YAML ของคุณ

responseSchema:
  kind: Record
  properties:
    query: String
    results:
      type:
        kind: Table
        properties:
          snippet: String
          title: String
          url: String

ต่อไปนี้ ปรับผลลัพธ์ของ API ของคุณให้ตรงกับรูปแบบที่กำหนดนี้ กำหนดข้อมูลที่แปลงแล้วให้กับ System.SearchResults

ตัวอย่างการแปลง

kind: AdaptiveDialog
beginDialog:
  kind: OnKnowledgeRequested
  id: main
  intent: {}
  actions:
    - kind: HttpRequestAction
      id: searchRequest
      url: ="https://search-api.contoso.com/search?q=" & System.KeywordSearchQuery
      response: Topic.searchResults
      responseSchema:
        kind: Record
        properties:
          query: String
          results:
            type:
              kind: Table
              properties:
                snippet: String
                title: String
                url: String
    
    - kind: SetVariable
      id: setSearchResults
      variable: System.SearchResults
      value: |-
        =ForAll(Topic.searchResults.results,
        {
          Content: snippet,
          ContentLocation: url,
          Title: title
        })

inputType: {}
outputType: {}

แอคชัน SetVariable จะดำเนินการทั้งสองอย่าง:

  • ฟังก์ชัน ForAll จะแปลงผลการค้นหาแต่ละรายการ โดยการแมป snippet กับ Content, url กับ ContentLocation และ title กับ Title
  • ตารางที่ได้รับการแปลงจะถูกกำหนดให้กับ System.SearchResults ซึ่งเป็นตัวแปรที่ Copilot Studio ใช้ในการสร้างคำตอบ

ข้อควรพิจารณา

โปรดคำนึงถึงข้อควรพิจารณาที่สำคัญเหล่านี้เมื่อคุณสร้างแหล่งความรู้แบบกำหนดเอง

ขีดจำกัดผลลัพธ์

Copilot Studio ใช้ข้อมูลส่วนย่อยได้สูงสุด 15 รายการจาก System.SearchResults เพื่อสร้างการตอบ หาก API ของคุณแสดงผลลัพธ์เพิ่มเติม ให้พิจารณาสิ่งต่อไปนี้

  • ดำเนินการให้คะแนนความเกี่ยวข้องเพื่อส่งคืนผลลัพธ์ที่ดีที่สุดก่อน
  • จำกัดผลลัพธ์ของ API ให้มี 15 รายการ
  • การเรียงลำดับผลลัพธ์ตามความเกี่ยวข้องก่อนการแปลง

หลายหัวข้อความรู้ที่กำหนดเอง

คุณสามารถสร้างหลายหัวข้อได้โดยใช้ OnKnowledgeRequested ซึ่งแต่ละหัวข้อสามารถสืบค้นระบบแบ็กเอนด์ที่แตกต่างกันได้ Copilot Studio เรียกใช้ทั้งหมดพร้อมกันเมื่อต้องการความรู้ แนวทางนี้ช่วยให้คุณสามารถสืบค้นจุดเชื่อมต่อการค้นหาต่าง ๆ หรือดำเนินกลยุทธ์สำรองได้

คำเตือน

ขีดจำกัดผลลัพธ์จะใช้กับหัวข้อความรู้ทั้งหมดรวมกัน หากหัวข้อ A ส่งกลับผลลัพธ์ 10 รายการ และหัวข้อ B ส่งกลับ 8 รายการ จะเลือกใช้เฉพาะผลลัพธ์ที่รวมกัน 15 อันดับแรกเท่านั้น

คำแนะนำ

  • จัดเรียงหรือให้คะแนนผลลัพธ์ก่อนที่จะส่งคืน
  • รักษาโครงสร้างการตอบกลับให้สอดคล้องกัน
  • ใช้ชื่อหัวข้อและคำอธิบายที่ชัดเจน แนวทางปฏิบัตินี้เหมาะสำหรับกรณีที่ชุดผลลัพธ์ขนาดใหญ่จำเป็นต้องกรองความเกี่ยวข้อง