การส่งผลลัพธ์กลับไปยังโมเดล
จัดรูปแบบผลลัพธ์ของเครื่องมือเป็นข้อความบทบาทเครื่องมือ เพื่อให้โมเดลอ่านและสนทนาต่อได้
การส่งผลลัพธ์กลับไปยังโมเดล เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
ข้อความผลลัพธ์จากเครื่องมือ
หลังจากเรียกใช้เครื่องมือแล้ว ให้แจ้งผลลัพธ์แก่โมเดลด้วยข้อความเครื่องมือ:
messages.append({
'role': 'tool',
'tool_call_id': tool_call.id, # MUST match the assistant's tool_call.id
'content': json.dumps(result)
})เนื้อหาควรเป็นสตริง
OpenAI คาดหวังให้ content เป็นสตริง ให้แปลงออบเจ็กต์เป็นอนุกรมด้วย json.dumps:
# Bad — will error
messages.append({'role': 'tool', 'tool_call_id': id, 'content': {'temp': 18}})
# Good
messages.append({'role': 'tool', 'tool_call_id': id, 'content': '{"temp": 18}'})รูปแบบของ Anthropic
Anthropic ใช้บล็อกเนื้อหาภายในข้อความผู้ใช้:
messages.append({
'role': 'user',
'content': [{
'type': 'tool_result',
'tool_use_id': 'toolu_abc',
'content': json.dumps(result)
}]
})การส่งคืนข้อผิดพลาด
หากเครื่องมือทำงานล้มเหลว ให้ส่งคืนข้อผิดพลาด อย่าแสร้งทำว่าสำเร็จ โมเดลสามารถกู้คืนการทำงานได้:
try:
result = run_tool(...)
content = json.dumps({'ok': True, 'data': result})
except Exception as e:
content = json.dumps({'ok': False, 'error': str(e)})
messages.append({'role': 'tool', 'tool_call_id': id, 'content': content})รูปแบบผลลัพธ์หลายรายการ
สำหรับการเรียกใช้เครื่องมือแบบขนาน ให้ผนวกผลลัพธ์แต่ละรายการพร้อม ID ที่ตรงกัน:
for tc in message.tool_calls:
result = dispatch(tc)
messages.append({
'role': 'tool',
'tool_call_id': tc.id,
'content': json.dumps(result)
})เอาต์พุตขนาดใหญ่: สรุป
หากเครื่องมือส่งคืน HTML ขนาด 100KB การส่งทั้งหมดไปยังโมเดลจะทำให้สิ้นเปลืองโทเคนและทำให้ความสนใจเจือจาง ให้สรุปหรือตัดทอนก่อน:
def truncate(text, max_chars=4000):
if len(text) <= max_chars:
return text
return text[:max_chars] + f'\n...[truncated, {len(text)-max_chars} more chars]'
sample = "x" * 4500
result = truncate(sample, max_chars=50)
print(result)
สคีมาเดียวกันเสมอ
แม้ผลลัพธ์จะแตกต่างกัน (สำเร็จ / ข้อผิดพลาด / ไม่พบ) ให้รักษาสคีมาเอาต์พุตให้คงที่ โมเดลจะทำงานได้อย่างน่าเชื่อถือมากขึ้นเมื่อรูปแบบสอดคล้องกัน:
from typing import TypedDict, Literal, Optional, Any
class ToolResult(TypedDict):
status: Literal['ok', 'not_found', 'error']
data: Optional[Any]
error: Optional[str]
def make_result(status, data=None, error=None) -> ToolResult:
return {'status': status, 'data': data, 'error': error}
print(make_result('ok', data={'temp': 72}))
print(make_result('not_found', error='city not found'))ใส่คำใบ้ข้อมูลเมตา
ช่วยให้โมเดลตีความผลลัพธ์โดยใส่คำใบ้ไว้ในเนื้อหา:
content = json.dumps({
'data': rows,
'note': 'Returned 50 rows (most recent first). There may be more matches.'
})ข้อมูลไบนารี
อย่าเข้ารหัสกลุ่มข้อมูลขนาดใหญ่เป็น base64 ในข้อความเครื่องมือ แต่ให้บันทึกไว้ในพื้นที่จัดเก็บ แล้วส่งคืน URL หรือ ID:
result = {
'image_path': '/tmp/chart-abc.png',
'thumbnail_url': 'https://...',
'caption': 'Sales by quarter, 2024'
}
for k, v in result.items():
print(f"{k}: {v}")
เรียกโมเดลอีกครั้งในลูป
หลังจากผนวกผลลัพธ์จากเครื่องมือทั้งหมดแล้ว ให้เรียกโมเดลอีกครั้ง — โมเดลจะสร้างคำตอบสุดท้ายหรือเรียกใช้เครื่องมือเพิ่มเติม:
class Msg:
def __init__(self, tool_calls=None, content=None):
self.tool_calls = tool_calls or []
self.content = content
class ToolCall:
def __init__(self, name, args):
self.name = name
self.args = args
def call_model(messages, tools):
if len(messages) < 4:
return Msg(tool_calls=[ToolCall('get_weather', {'city': 'Paris'})])
return Msg(content='It is sunny in Paris.')
messages = [{'role': 'user', 'content': 'Weather in Paris?'}]
tools = ['get_weather']
message = call_model(messages, tools)
while message.tool_calls:
for tc in message.tool_calls:
result = f'Result of {tc.name}({tc.args})'
messages.append({'role': 'tool', 'name': tc.name, 'content': result})
print('Tool call:', tc.name, '->', result)
message = call_model(messages, tools)
print('Final answer:', message.content)
การตรวจสอบเอาต์พุตของเครื่องมือ
บันทึก (tool_call_id, args, result) ทุกรายการเพื่อใช้แก้ไขข้อบกพร่อง เมื่อเอเจนต์ทำบางอย่างผิดปกติ บันทึกผลลัพธ์จากเครื่องมือคือจุดแรกที่ควรตรวจสอบ
รูปแบบผลลัพธ์จากเครื่องมือ
tool_call_id ในข้อความเครื่องมือหมายถึงอะไร
สรุปทบทวน
ขณะนี้คุณเข้าใจการโต้ตอบไปกลับของการเรียกใช้เครื่องมืออย่างครบถ้วนแล้ว หลักสูตรถัดไป: หน่วยความจำ — เสาหลักประการที่สามของเอเจนต์
เรียนรู้ AI Agents ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 60
- บทเรียน
- 239
คำถามที่พบบ่อย
บทเรียน “การส่งผลลัพธ์กลับไปยังโมเดล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การส่งผลลัพธ์กลับไปยังโมเดล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การส่งผลลัพธ์กลับไปยังโมเดล”
จัดรูปแบบผลลัพธ์ของเครื่องมือเป็นข้อความบทบาทเครื่องมือ เพื่อให้โมเดลอ่านและสนทนาต่อได้ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การส่งผลลัพธ์กลับไปยังโมเดล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การทำงานของการเรียกใช้ฟังก์ชัน
- การกำหนดโครงร่างเครื่องมือ (JSON Schema)
- การเลือกเครื่องมือขณะทำงาน
- การส่งผลลัพธ์กลับไปยังโมเดล