วิธีใช้ OpenAI Agents SDK?

เรียนรู้วิธีใช้ SDK OpenAI Agents สร้างเวิร์กโฟลว์หลายตัวแทนอัจฉริยะ คู่มือนี้สอนการตั้งค่า สร้างตัวแทน เพิ่มเครื่องมือ การส่งมอบ ตั้งค่า guardrails พร้อมตัวอย่างโค้ดและแนวทางปฏิบัติที่ดีที่สุด

อาชว์

อาชว์

31 August 2025

วิธีใช้ OpenAI Agents SDK?

OpenAI Agents SDK เป็นไลบรารี Python ที่ออกแบบมาเพื่อลดความซับซ้อนในการพัฒนาตัวแทน AI ที่ขับเคลื่อนด้วยโมเดลภาษาของ OpenAI ซึ่งช่วยให้นักพัฒนาสามารถสร้างตัวแทนเฉพาะงาน ผสานรวมฟังก์ชันการทำงานภายนอก จัดการการมอบหมายงานระหว่างตัวแทน บังคับใช้การตรวจสอบความถูกต้องของอินพุต/เอาต์พุต และตรวจสอบโฟลว์การดำเนินการ คู่มือนี้จะให้คำแนะนำทางเทคนิคโดยละเอียดเกี่ยวกับการติดตั้ง การกำหนดค่า และการใช้ประโยชน์จาก SDK อย่างมีประสิทธิภาพ เพื่อให้มั่นใจว่ามีคำอย่างน้อย 2000 คำ โดยเน้นที่ความแม่นยำและการประยุกต์ใช้จริง

💡
ก่อนที่เราจะเริ่มใช้งาน นี่คือเคล็ดลับง่ายๆ: เนื่องจากเราจะทำงานกับ APIs จำนวนมากในคู่มือนี้ คุณอาจต้องการใช้ Apidog เป็นเครื่องมือฟรีที่ทำให้การทดสอบและการแก้ไขข้อบกพร่องของ APIs เป็นเรื่องง่าย เหมาะสำหรับการทดลองใช้ OpenAI Agents SDK คุณสามารถดาวน์โหลด Apidog ได้ฟรีที่นี่ เชื่อฉันเถอะ มันจะช่วยคุณประหยัดปัญหาในภายหลัง!
button

บทนำ

OpenAI Agents SDK มีกรอบการทำงานที่มีโครงสร้างสำหรับการสร้างระบบหลายตัวแทน โดยที่ตัวแทนแต่ละรายได้รับการปรับแต่งให้ทำงานเฉพาะอย่าง ตัวแทนเหล่านี้สามารถโต้ตอบกับผู้ใช้ ดำเนินการผ่านเครื่องมือที่ผสานรวม และทำงานร่วมกันโดยการส่งต่องานไปยังตัวแทนอื่น ส่วนประกอบสำคัญของ SDK ได้แก่:

คู่มือนี้ออกแบบมาสำหรับนักพัฒนาที่มีความเข้าใจพื้นฐานเกี่ยวกับ Python และการโต้ตอบ API โดยให้คำอธิบายโดยละเอียด ตัวอย่างโค้ด และแนวทางปฏิบัติที่ดีที่สุดในการสร้างทรัพยากรที่แข็งแกร่งและครอบคลุม

การติดตั้งและการกำหนดค่า

การตั้งค่าที่เหมาะสมมีความสำคัญอย่างยิ่งต่อการใช้ OpenAI Agents SDK อย่างมีประสิทธิภาพ ส่วนนี้ครอบคลุมข้อกำหนดเบื้องต้น การตั้งค่าสภาพแวดล้อม การติดตั้ง และการตรวจสอบ

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

ก่อนดำเนินการ ตรวจสอบให้แน่ใจว่ามีสิ่งต่อไปนี้:

Python official website
OpenAI platform

ขั้นตอนที่ 1: ตั้งค่าสภาพแวดล้อมเสมือน

สภาพแวดล้อมเสมือนจะแยกการพึ่งพาโครงการ ป้องกันความขัดแย้งกับโครงการ Python อื่นๆ ในการสร้างและเปิดใช้งาน:

python -m venv agents_env
source agents_env/bin/activate
python -m venv agents_env
agents_env\Scripts\activate

เมื่อเปิดใช้งานแล้ว พร้อมท์เทอร์มินัลของคุณควรสะท้อนถึงสภาพแวดล้อม (เช่น (agents_env)) ขั้นตอนนี้เป็นแนวทางปฏิบัติที่ดีที่สุดสำหรับการพัฒนา Python เพื่อให้มั่นใจว่ามีพื้นที่ทำงานที่สะอาด

ขั้นตอนที่ 2: ติดตั้ง SDK

เมื่อสภาพแวดล้อมเสมือนทำงานอยู่ ให้ติดตั้ง SDK โดยใช้ pip:

pip install openai-agents

คำสั่งนี้จะดึงข้อมูล SDK เวอร์ชันล่าสุดและการพึ่งพาจาก PyPI ในการยืนยันการติดตั้ง ให้รัน:

pip show openai-agents-python

ซึ่งจะแสดงข้อมูลเมตา รวมถึงหมายเลขเวอร์ชัน ยืนยันว่ามีการติดตั้งแพ็คเกจ

ขั้นตอนที่ 3: กำหนดค่า API Key

SDK ต้องใช้ OpenAI API key เพื่อทำงาน ตั้งค่าเป็นตัวแปรสภาพแวดล้อมเพื่อหลีกเลี่ยงการฝังไว้ในโค้ดของคุณ ซึ่งช่วยเพิ่มความปลอดภัย:

export OPENAI_API_KEY='your-api-key'
set OPENAI_API_KEY='your-api-key'

ในการทำให้สิ่งนี้คงอยู่ตลอดเซสชัน ให้เพิ่มคำสั่งลงในไฟล์การกำหนดค่าเชลล์ของคุณ (เช่น .bashrc หรือ .zshrc บนระบบ Unix) หรือคุณสามารถตั้งค่าแบบเป็นโปรแกรมใน Python ได้ แม้ว่าสิ่งนี้จะมีความปลอดภัยน้อยกว่า:

import os
os.environ["OPENAI_API_KEY"] = "your-api-key"

ขั้นตอนที่ 4: ตรวจสอบการติดตั้ง

ทดสอบการตั้งค่าด้วยตัวแทนขั้นต่ำเพื่อให้แน่ใจว่าทุกอย่างทำงาน:

from agents import Agent, Runner

agent = Agent(name="TestAgent", instructions="Return 'Setup successful'")
result = Runner.run_sync(agent, "Run test")
print(result.final_output)  # Expected output: "Setup successful"

หากสิ่งนี้พิมพ์ "Setup successful" การติดตั้งของคุณใช้งานได้ ปัญหาทั่วไป ได้แก่:

การสร้างตัวแทน

ตัวแทนเป็นส่วนประกอบพื้นฐานของ SDK โดยแต่ละตัวแทนจะถูกกำหนดโดยบทบาทและพฤติกรรมที่ไม่ซ้ำกัน

การเริ่มต้นตัวแทน

คลาส Agent ใช้เพื่อสร้างตัวแทน พารามิเตอร์หลัก ได้แก่:

ตัวอย่าง: ตัวแทนพื้นฐาน

นี่คือตัวแทนง่ายๆ สำหรับเลขคณิต:

from agents import Agent, Runner

agent = Agent(
    name="MathAgent",
    instructions="Solve arithmetic expressions."
)
result = Runner.run_sync(agent, "Calculate 10 * 2")
print(result.final_output)  # Output: "20"

เมธอด Runner.run_sync จะดำเนินการตัวแทนพร้อมกัน โดยส่งคืนอ็อบเจกต์ผลลัพธ์พร้อมแอตทริบิวต์ final_output

การกำหนดค่าขั้นสูง

ปรับแต่งตัวแทนสำหรับความต้องการเฉพาะโดยการปรับพารามิเตอร์:

agent = Agent(
    name="CreativeWriter",
    instructions="Write a short story based on the prompt.",
    model="gpt-4",
    temperature=0.9
)
result = Runner.run_sync(agent, "A robot in a distant galaxy")
print(result.final_output)  # Output: A creative story

ตัวอย่างตัวแทนหลายตัว

สร้างตัวแทนที่แตกต่างกันสำหรับงานต่างๆ:

support_agent = Agent(
    name="SupportBot",
    instructions="Answer technical support questions."
)
code_agent = Agent(
    name="CodeHelper",
    instructions="Generate Python code snippets."
)

support_result = Runner.run_sync(support_agent, "How do I install Python?")
code_result = Runner.run_sync(code_agent, "Write a function to add two numbers")
print(support_result.final_output)  # Output: Installation instructions
print(code_result.final_output)     # Output: "def add(a, b): return a + b"

ซึ่งแสดงให้เห็นถึงความยืดหยุ่นของ SDK ในการจัดการบทบาทที่หลากหลาย

การผสานรวมเครื่องมือ

เครื่องมือช่วยเพิ่มประสิทธิภาพตัวแทนโดยทำให้พวกเขาสามารถดำเนินการภายนอกได้ SDK รองรับเครื่องมือที่โฮสต์ เครื่องมือฟังก์ชันแบบกำหนดเอง และเครื่องมือที่ใช้ตัวแทน

การใช้เครื่องมือที่โฮสต์

เครื่องมือที่โฮสต์ เช่น web_search ได้รับการสร้างไว้ล่วงหน้าและพร้อมใช้งาน:

from agents import Agent, Runner, web_search

agent = Agent(
    name="ResearchAgent",
    instructions="Answer questions using web search.",
    tools=[web_search]
)
result = Runner.run_sync(agent, "What is the capital of France?")
print(result.final_output)  # Output: "The capital of France is Paris."

ตัวแทนจะเรียกใช้ web_search โดยอัตโนมัติเพื่อดึงข้อมูลแบบเรียลไทม์

การสร้างเครื่องมือฟังก์ชันแบบกำหนดเอง

กำหนดเครื่องมือแบบกำหนดเองด้วยตัวตกแต่ง @function_tool เครื่องมือต้องยอมรับและส่งคืนสตริง

ตัวอย่าง: เครื่องมือดึงข้อมูล

from agents import Agent, Runner, function_tool

@function_tool
def fetch_data(id: str) -> str:
    """Return data for the given ID."""
    # Simulated database lookup
    return f"Data for ID {id}: active"

agent = Agent(
    name="DataAgent",
    instructions="Retrieve data using the tool.",
    tools=[fetch_data]
)
result = Runner.run_sync(agent, "Fetch data for ID 123")
print(result.final_output)  # Output: "Data for ID 123: active"

การผสานรวม APIs ภายนอก

เครื่องมือสามารถเชื่อมต่อกับบริการภายนอกได้ นี่คือตัวอย่างเครื่องมือสภาพอากาศ:

import requests
from agents import function_tool, Agent, Runner

@function_tool
def get_weather(city: str) -> str:
    """Get the current weather for a city."""
    api_key = "your-weather-api-key"  # Replace with a real key
    url = f"http://api.weatherapi.com/v1/current.json?key={api_key}&q={city}"
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        return f"The weather in {city} is {data['current']['condition']['text']}."
    return "Weather data unavailable."

agent = Agent(
    name="WeatherAgent",
    instructions="Provide weather updates using the tool.",
    tools=[get_weather]
)
result = Runner.run_sync(agent, "What's the weather in Tokyo?")
print(result.final_output)  # Output: "The weather in Tokyo is Sunny." (example)

ลงทะเบียนเพื่อรับ API key ฟรีที่ weatherapi.com เพื่อทดสอบสิ่งนี้

weatherapi official website

การรวมเครื่องมือหลายรายการ

ตัวแทนสามารถใช้เครื่องมือหลายรายการพร้อมกันได้:

@function_tool
def log_entry(text: str) -> str:
    """Log a message."""
    return f"Logged: {text}"

agent = Agent(
    name="MultiToolAgent",
    instructions="Use tools to search and log.",
    tools=[web_search, log_entry]
)
result = Runner.run_sync(agent, "Search for AI trends and log the query")
print(result.final_output)  # Output includes search results and log confirmation

การส่งมอบตัวแทน

การส่งมอบช่วยให้ตัวแทนสามารถมอบหมายงานได้ ทำให้เวิร์กโฟลว์มีความซับซ้อน

การตั้งค่าการส่งมอบ

กำหนดตัวแทนหลักพร้อมการเข้าถึงตัวแทนรองผ่านพารามิเตอร์ handoffs:

from agents import Agent, Runner

english_agent = Agent(
    name="EnglishHelper",
    instructions="Respond in English only."
)
spanish_agent = Agent(
    name="SpanishHelper",
    instructions="Respond in Spanish only."
)
triage_agent = Agent(
    name="LanguageRouter",
    instructions="Detect the language and hand off to the appropriate agent.",
    handoffs=[english_agent, spanish_agent]
)

result = Runner.run_sync(triage_agent, "Hola, ¿qué tal?")
print(result.final_output)  # Output: "¡Bien, gracias!" (or similar)

triage_agent วิเคราะห์อินพุตและมอบหมายให้กับตัวแทนเฉพาะภาษาที่เหมาะสม

ตรรกะการส่งมอบ

การตัดสินใจส่งมอบขึ้นอยู่กับคำแนะนำของตัวแทนหลัก ตัวอย่างเช่น:

ทดสอบด้วยอินพุตภาษาอังกฤษ:

result = Runner.run_sync(triage_agent, "How are you?")
print(result.final_output)  # Output: "I'm good, thanks!"

การส่งมอบแบบซ้อน

สำหรับเวิร์กโฟลว์ที่ลึกกว่า ตัวแทนสามารถส่งมอบให้กับตัวแทนอื่นพร้อมการส่งมอบ:

analysis_agent = Agent(
    name="AnalysisBot",
    instructions="Analyze data and hand off for reporting."
)
report_agent = Agent(
    name="ReportBot",
    instructions="Generate a report from analysis."
)
main_agent = Agent(
    name="WorkflowManager",
    instructions="Start with analysis.",
    handoffs=[analysis_agent, report_agent]
)

result = Runner.run_sync(main_agent, "Analyze sales data")
print(result.final_output)  # Output: A generated report

การใช้งาน Guardrails

Guardrails บังคับใช้ข้อจำกัดเกี่ยวกับอินพุตและเอาต์พุตโดยใช้โมเดล Pydantic

การกำหนด Guardrail

สร้างแบบจำลองเพื่อตรวจสอบความถูกต้องของโครงสร้างเอาต์พุต:

from pydantic import BaseModel
from agents import Agent, Runner

class QuestionCheck(BaseModel):
    is_question: bool
    reason: str

guard_agent = Agent(
    name="QuestionGuard",
    instructions="Determine if the input is a question.",
    output_type=QuestionCheck
)

result = Runner.run_sync(guard_agent, "What is the capital of France?")
print(result.final_output)  # Output: {"is_question": true, "reason": "Ends with a question mark"}

การผสานรวมเวิร์กโฟลว์

ใช้ guardrails เพื่อกรองอินพุต:

task_agent = Agent(
    name="TaskProcessor",
    instructions="Process questions only.",
    handoffs=[guard_agent]
)
result = Runner.run_sync(task_agent, "Tell me a story")
print(result.final_output)  # Output indicates it’s not a question

การติดตามและการแก้ไขข้อบกพร่อง

การติดตามจะบันทึกรายละเอียดการดำเนินการของตัวแทน ซึ่งเข้าถึงได้ผ่าน OpenAI Dashboard

การเปิดใช้งานการติดตาม

การติดตามเป็นไปโดยอัตโนมัติ การรันแต่ละครั้งจะสร้างร่องรอยพร้อม:

ตัวอย่างการแก้ไขข้อบกพร่อง

หากตัวแทนล้มเหลว ให้ตรวจสอบร่องรอยเพื่อระบุ:

แนวทางปฏิบัติที่ดีที่สุด

การเพิ่มประสิทธิภาพ

การจัดการข้อผิดพลาด

การออกแบบเวิร์กโฟลว์

บทสรุป

OpenAI Agents SDK ช่วยให้นักพัฒนาสามารถสร้างระบบ AI ที่ซับซ้อนด้วยตัวแทนเฉพาะทาง เครื่องมือแบบบูรณาการ และเวิร์กโฟลว์การทำงานร่วมกัน คู่มือนี้ให้รากฐานทางเทคนิคในการใช้ประโยชน์จากศักยภาพทั้งหมด พร้อมตัวอย่างและแนวทางปฏิบัติที่ดีที่สุด

แล้วอะไรต่อไป เริ่มทดลอง! เล่นกับคำแนะนำ เครื่องมือ และเวิร์กโฟลว์ต่างๆ และหากคุณติดขัด เครื่องมือต่างๆ เช่น Apidog สามารถช่วยในการทดสอบ API ได้ฟรี

button

Explore more

วิธีเรียกใช้ Mistral Small 3.1 ในเครื่องของคุณเองโดยใช้ Ollama: คู่มือทีละขั้นตอน

วิธีเรียกใช้ Mistral Small 3.1 ในเครื่องของคุณเองโดยใช้ Ollama: คู่มือทีละขั้นตอน

เรียนรู้วิธีรัน Mistral Small 3.1 (AI โอเพนซอร์ส) บนเครื่องคุณเองด้วย Ollama คู่มือนี้ง่าย ครอบคลุมการติดตั้ง, การใช้งาน, และเคล็ดลับ

19 March 2025

NDJSON 101: การสตรีมผ่าน HTTP Endpoints

NDJSON 101: การสตรีมผ่าน HTTP Endpoints

ค้นพบ NDJSON: สตรีมข้อมูลผ่าน HTTP อย่างมีประสิทธิภาพ! คู่มือนี้อธิบายพื้นฐาน, ข้อดีเหนือ JSON, และวิธี Apidog ช่วยทดสอบ/แก้จุดบกพร่อง endpoint สตรีมมิ่ง

18 March 2025

วิธีนำเข้า/ส่งออกข้อมูลคอลเลกชันใน Postman

วิธีนำเข้า/ส่งออกข้อมูลคอลเลกชันใน Postman

ในบทความนี้ เราจะคุยเรื่องนำเข้า/ส่งออก Postman และวิธีแก้ปัญหาที่ยืดหยุ่นกว่า ไม่จำกัดจำนวนครั้ง

18 March 2025

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API