โหมด JSON และผลลัพธ์จากการเรียกใช้เครื่องมือ
ใช้ response_format={'type':'json_object'} หรือการเรียกใช้เครื่องมือเพียงครั้งเดียว เพื่อบังคับให้ผลลัพธ์แยกวิเคราะห์โดยเครื่องได้
โหมด JSON และผลลัพธ์จากการเรียกใช้เครื่องมือ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
ความจำเป็นของโครงสร้าง
ข้อความอิสระจาก LLM ไม่เหมาะกับโค้ด เอเจนต์ในระบบจริงต้องการผลลัพธ์ที่แยกวิเคราะห์ได้ เช่น JSON, XML และอาร์กิวเมนต์ของฟังก์ชัน ไม่ใช่ "คำตอบคือ..."
โหมด JSON (OpenAI)
บอกโมเดลว่า "ให้ส่งคืน JSON เสมอ":
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[
{'role': 'system', 'content': 'Return a JSON object with name and age.'},
{'role': 'user', 'content': 'Alice, 30 years old.'}
],
response_format={'type': 'json_object'}
)
import json
data = json.loads(response.choices[0].message.content)ข้อควรระวังของโหมด JSON
โหมด JSON รับประกันเพียงว่าเป็น JSON ที่ถูกต้อง ไม่ได้รับประกัน SHAPE ของคุณ โมเดลอาจส่งคืน {} หรือ {"foo": "bar"} ดังนั้นควรตรวจสอบรูปร่างของข้อมูลด้วยเสมอ
เอาต์พุตแบบมีโครงสร้าง (เข้มงวด)
Structured Outputs ของ OpenAI รับประกันว่าการตอบกลับจะตรงกับสคีมา JSON:
schema = {
'name': 'person',
'schema': {
'type': 'object',
'properties': {
'name': {'type': 'string'},
'age': {'type': 'integer'}
},
'required': ['name', 'age'],
'additionalProperties': False
},
'strict': True
}
response = client.chat.completions.create(
model='gpt-4o-2024-08-06',
messages=...,
response_format={'type': 'json_schema', 'json_schema': schema}
)โหมดเข้มงวดทำงานอย่างไร
โหมดเข้มงวดจะจำกัดตัวถอดรหัส ทำให้โมเดลไม่สามารถสร้างโทเค็นที่ไม่ถูกต้องได้โดยแท้จริง เอาต์พุตจะตรงกับสคีมา 100%
การเรียกใช้เครื่องมือเป็นเอาต์พุตแบบมีโครงสร้าง
คุณสามารถบังคับให้เรียกใช้เครื่องมือที่ระบุ เพื่อใช้ดึงข้อมูลแบบมีโครงสร้างได้:
tools = [{'type': 'function', 'function': {
'name': 'submit_person',
'parameters': {
'type': 'object',
'properties': {'name': {'type': 'string'}, 'age': {'type': 'integer'}},
'required': ['name', 'age']
}
}}]
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=...,
tools=tools,
tool_choice={'type': 'function', 'function': {'name': 'submit_person'}}
)
args = json.loads(response.choices[0].message.tool_calls[0].function.arguments)การใช้เครื่องมือของ Anthropic เป็นเอาต์พุต
Anthropic ใช้รูปแบบเดียวกันด้วย tool_choice="tool":
tool_choice = {'type': 'tool', 'name': 'submit_person'}
print(tool_choice)
JSON ผ่านการเติมข้อมูลล่วงหน้า (Anthropic)
สำหรับ Claude ที่ไม่มีเครื่องมือ ให้เติมช่วงการทำงานของผู้ช่วยล่วงหน้าด้วย {
messages = [
{'role': 'user', 'content': 'Give me JSON for Alice, 30.'},
{'role': 'assistant', 'content': '{'}
]
# Output starts with { and likely produces valid JSON.
for m in messages:
print(f"{m['role']}: {m['content']}")
print("Output starts with { and likely produces valid JSON.")
Pydantic + โหมดเข้มงวด
OpenAI Python SDK มีทางลัดสำหรับ Pydantic:
from pydantic import BaseModel
class Person(BaseModel):
name: str
age: int
response = client.beta.chat.completions.parse(
model='gpt-4o-2024-08-06',
messages=...,
response_format=Person
)
person = response.choices[0].message.parsed
# Pydantic instance, type-safeข้อผิดพลาดที่พบบ่อย
- โหมด JSON ที่ไม่เข้มงวด — โมเดลอาจส่งโครงสร้างที่ไม่ถูกต้องกลับมา
- ลืมใส่
additionalProperties: falseในโหมดเข้มงวด - ไม่ได้ระบุฟิลด์ที่จำเป็นไว้ในอาร์เรย์ "required"
- โหมดเข้มงวดใช้ได้เฉพาะ gpt-4o-2024-08-06 ขึ้นไปเท่านั้น
ต้นทุนของเอาต์พุตแบบมีโครงสร้าง
โหมดเข้มงวดมีค่าใช้จ่ายเพิ่มเติมเล็กน้อยจากการถอดรหัสที่ควบคุมด้วยไวยากรณ์ ซึ่งถือว่าน้อยมากเมื่อเทียบกับประโยชน์ด้านคุณภาพ ควรเปิดใช้เสมอเมื่อโครงสร้างมีความสำคัญ
ใช้ร่วมกับการตรวจสอบความถูกต้อง
แม้เอาต์พุตจะอยู่ในโหมดเข้มงวด ก็ควรตรวจสอบความถูกต้องด้วย Pydantic ภายหลัง การป้องกันหลายชั้นช่วยตรวจจับกรณีขอบเขต เช่น จำนวนเต็มที่อยู่นอกช่วงที่กำหนด
การรับประกันของโหมดเข้มงวด
Structured Outputs ของ OpenAI (โหมดเข้มงวด) รับประกันอะไร
สรุป
ใช้โหมด JSON สำหรับโครงสร้างที่ยืดหยุ่น ใช้ Structured Outputs แบบเข้มงวดสำหรับโครงสร้างที่รับประกัน ใช้การเรียกใช้เครื่องมือเพื่อให้ได้ผลเช่นเดียวกัน และใช้การเติมข้อมูลล่วงหน้าของ Anthropic สำหรับ Claude ควรตรวจสอบความถูกต้องภายหลังเสมอ
คำถามที่พบบ่อย
บทเรียน “โหมด JSON และผลลัพธ์จากการเรียกใช้เครื่องมือ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โหมด JSON และผลลัพธ์จากการเรียกใช้เครื่องมือ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โหมด JSON และผลลัพธ์จากการเรียกใช้เครื่องมือ”
ใช้ response_format={'type':'json_object'} หรือการเรียกใช้เครื่องมือเพียงครั้งเดียว เพื่อบังคับให้ผลลัพธ์แยกวิเคราะห์โดยเครื่องได้ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “โหมด JSON และผลลัพธ์จากการเรียกใช้เครื่องมือ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โหมด JSON และผลลัพธ์จากการเรียกใช้เครื่องมือ
- การตรวจสอบโครงร่างด้วย Pydantic
- ลูปซ่อมแซมผลลัพธ์ผิดรูปแบบ
- Instructor / Outlines สำหรับโครงสร้างที่รับประกัน