AI Agents · บทเรียน

การส่งผลลัพธ์กลับไปยังโมเดล

จัดรูปแบบผลลัพธ์ของเครื่องมือเป็นข้อความบทบาทเครื่องมือ เพื่อให้โมเดลอ่านและสนทนาต่อได้

บทเรียน 4 จาก 413 ขั้นตอน

การส่งผลลัพธ์กลับไปยังโมเดล เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การทำงานของการเรียกใช้ฟังก์ชัน
  2. การกำหนดโครงร่างเครื่องมือ (JSON Schema)
  3. การเลือกเครื่องมือขณะทำงาน
  4. การส่งผลลัพธ์กลับไปยังโมเดล
← กลับไปที่ AI Agents