ใช้ตัวแทนข้อมูล Fabric ด้วย SDK ไคลเอ็นต์ Python (พรีวิว)

บทความนี้แสดงวิธีการใช้ SDK ไคลเอ็นต์ Python เพื่อเพิ่มตัวแทนข้อมูล Fabric ไปยังเว็บแอปและไคลเอ็นต์อื่นๆ โดยใช้การรับรองความถูกต้องของเบราว์เซอร์แบบโต้ตอบ คุณลงชื่อเข้าใช้ผ่านเบราว์เซอร์ด้วยข้อมูลประจําตัว Microsoft Entra ID ของคุณ และตัวแทนข้อมูลจะทํางานด้วยสิทธิ์ของคุณ ด้วยการเพิ่มตัวแทนข้อมูลไปยังแอปภายนอก คุณสามารถสร้างอินเทอร์เฟซแบบกําหนดเอง ฝังข้อมูลเชิงลึกในเวิร์กโฟลว์ที่มีอยู่ ทําให้รายงานเป็นแบบอัตโนมัติ และให้ผู้ใช้เรียกใช้การสืบค้นข้อมูลภาษาธรรมชาติ วิธีการนี้ให้ความสามารถของตัวแทนข้อมูลในขณะที่คุณควบคุมประสบการณ์ของผู้ใช้และสถาปัตยกรรมแอปได้อย่างเต็มที่

สําคัญ

รหัสในเอกสารนี้และที่เก็บไคลเอ็นต์ภายนอกของ Fabric Data Agent ใช้ OpenAI Assistants API (beta.assistants, beta.threads, beta.threads.runs) ซึ่ง OpenAI เลิกใช้แล้วโดยมีวันที่ปิดระบบในวันที่ 26 สิงหาคม 2026 รหัสปัจจุบันยังคงใช้งานได้จนถึงวันที่ 26 สิงหาคม 2026 แต่วางแผนสําหรับการย้ายข้อมูลไปยัง ปลายทาง MCP ก่อนวันที่นี้

สําคัญ

เมื่อคุณใช้ SDK ไคลเอ็นต์ Python เพื่อเพิ่มตัวแทนข้อมูล Fabric ไปยังเว็บแอปหรือไคลเอ็นต์อื่นๆ การตอบกลับที่ส่งคืนโดยตัวแทนข้อมูล Fabric อาจถูกส่งออกนอกขอบเขตการปฏิบัติตามข้อกําหนดหรือภูมิภาคทางภูมิศาสตร์ของ Fabric ข้อกําหนดและนโยบายการจัดการข้อมูลของเว็บแอปหรือไคลเอ็นต์ที่เกี่ยวข้องจะควบคุมวิธีการประมวลผลและจัดเก็บการตอบกลับเหล่านี้

ข้อกําหนดเบื้องต้น

ตั้งค่าสภาพแวดล้อมของคุณใน VS Code

  1. โคลนหรือดาวน์โหลดที่เก็บไคลเอ็นต์ภายนอก Fabric Data Agent จากนั้นเปิดใน VS Code และเรียกใช้ไคลเอ็นต์ตัวอย่าง

  2. สร้างและเปิดใช้งานสภาพแวดล้อมเสมือน Python (แนะนํา) และติดตั้งการขึ้นต่อกันที่จําเป็น

    python -m venv .venv
    
  3. เปิดใช้งานสภาพแวดล้อมเสมือน

    .venv\Scripts\activate
    

ติดตั้งการพึ่งพา

เรียกใช้คําสั่งต่อไปนี้เพื่อติดตั้งการขึ้นต่อกัน:

pip install -r requirements.txt

Note

  • แพ็กเกจ azure-identity ที่รวมอยู่ใน requirements.txt ช่วยให้คุณตรวจสอบสิทธิ์กับ Microsoft Entra ID ได้
  • InteractiveBrowserCredentialจากazure-identityแพ็คเกจ ให้เปิดเบราว์เซอร์เพื่อให้คุณสามารถลงชื่อเข้าใช้ด้วยบัญชี Microsoft Entra ID ได้ ใช้สําหรับการพัฒนาภายในเครื่องหรือแอปที่อนุญาตให้ลงชื่อเข้าใช้แบบโต้ตอบ

กําหนดค่าไคลเอ็นต์

เลือกวิธีใดวิธีหนึ่งต่อไปนี้เพื่อตั้งค่าที่ต้องการ (TENANT_ID และ DATA_AGENT_URL):

ตั้งค่าในเชลล์ของคุณ แทนที่ข้อความตัวยึดในวงเล็บเหลี่ยมด้วยค่าของคุณเอง

export TENANT_ID=<your-azure-tenant-id>
export DATA_AGENT_URL=<your-fabric-data-agent-url>

ดูเอกสารประกอบเพื่อค้นหา URL ของตัวแทนข้อมูลที่เผยแพร่ ทําตามคําแนะนําเพื่อค้นหารหัสผู้เช่าของคุณ

รับรอง

ใช้คลาส InteractiveBrowserCredential เพื่อรับรองความถูกต้องกับ Microsoft Entra ID ในเบราว์เซอร์

from azure.identity import InteractiveBrowserCredential
from fabric_data_agent_client import FabricDataAgentClient
credential = InteractiveBrowserCredential()

สร้างไคลเอ็นต์ตัวแทนข้อมูล

client = FabricDataAgentClient(credential=credential)

Note

  • แพคเกจ fabric-data-agent-client มี SDK ไคลเอ็นต์สําหรับการเชื่อมต่อกับตัวแทนข้อมูล Fabric
  • ไคลเอ็นต์ Python ใช้การรับรองความถูกต้องของเบราว์เซอร์แบบโต้ตอบ: เมื่อคุณเรียกใช้สคริปต์ เบราว์เซอร์เริ่มต้นของคุณจะเปิดขึ้นเพื่อให้คุณลงชื่อเข้าใช้ผู้เช่าที่โฮสต์ตัวแทนข้อมูล Fabric

ถามคําถามกับตัวแทนข้อมูล

หลังจากที่คุณรับรองความถูกต้องแล้ว ให้โต้ตอบกับตัวแทนข้อมูลโดยใช้ไคลเอ็นต์ Python

response = client.ask("What were the total sales last quarter?")
print(f"Response: {response}")

เมธอดจะ client.ask ส่งคําถามของคุณไปยังตัวแทนข้อมูลและส่งคืนออบเจ็กต์พร้อมคําตอบ คุณสามารถดูขั้นตอนที่ตัวแทนข้อมูลดําเนินการและคิวรีที่เกี่ยวข้องที่สร้างขึ้นเพื่อรับคําตอบ

run_details = client.get_run_details("What were the total sales last quarter?")
messages = run_details.get('messages', {}).get('data', [])
assistant_messages = [msg for msg in messages if msg.get('role') == 'assistant']

print("Answer:", assistant_messages[-1])

ตัวเลือก: ตรวจสอบขั้นตอนและคําค้นหาที่เกี่ยวข้อง

ตรวจสอบขั้นตอนที่ตัวแทนข้อมูลดําเนินการเพื่อให้ได้คําตอบ รวมถึงข้อผิดพลาดระหว่างการดําเนินการ

for step in run_details['run_steps']['data']:
        tool_name = "N/A"
        if 'step_details' in step and step['step_details'] and 'tool_calls' in step['step_details']:
            tool_calls = step['step_details']['tool_calls']
            if tool_calls and len(tool_calls) > 0 and 'function' in tool_calls[0]:
                tool_name = tool_calls[0]['function'].get('name', 'N/A')
        print(f"Step ID: {step.get('id')}, Type: {step.get('type')}, Status: {step.get('status')}, Tool Name: {tool_name}")
        if 'error' in step:
            print(f"  Error: {step['error']}")

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