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

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

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

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

ทริกเกอร์ OnKnowledgeRequested

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

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

Important

คุณสามารถกําหนดค่าทริกเกอร์นี้ ในมุมมองโค้ด เท่านั้นโดยใช้ 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 เขียนคิวรีผู้ใช้ใหม่โดยอัตโนมัติด้วยบริบทการสนทนาก่อนที่จะทําการร้องขอการค้นหา ขั้นตอนนี้เป็นสิ่งสําคัญในการรักษาบริบทในการสนทนาแบบหลายเลี้ยว

Tip

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

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

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

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

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

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

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

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

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

หากต้องการกําหนดโครงสร้างของการตอบสนองของ HTTP ให้กําหนดค่าเค้าร่างการตอบสนองในอินเทอร์เฟซผู้ใช้ Copilot Studio

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

กระบวนการนี้สร้างเค้าร่างการตอบสนองในไฟล์ 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ไปยัง Contenturl เป็น ContentLocationและ เป็นtitleTitle
  • ตารางที่ถูกแปลงจะถูกกําหนดให้กับ System.SearchResultsซึ่งเป็นตัวแปรที่ Copilot Studio ใช้เพื่อสร้างคําตอบ

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

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

ขีดจํากัดผลลัพธ์

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

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

หัวข้อความรู้แบบกําหนดเองได้หลายหัวข้อ

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

Warning

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

คำแนะนำ

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