0Pricing
AI Agents · บทเรียน

การทำงานของการเรียกใช้ฟังก์ชัน

ทำความเข้าใจการทำงานครบทั้งรอบ: โมเดลเลือกเครื่องมือ โค้ดของคุณเรียกใช้เครื่องมือนั้น คุณส่งผลลัพธ์กลับไป แล้วโมเดลจึงทำงานต่อ

การทำงานของการเรียกใช้ฟังก์ชัน เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

การเรียกใช้ฟังก์ชัน: รูปแบบหลัก

การเรียกใช้ฟังก์ชันคือโพรโทคอลที่เปลี่ยน LLM ให้เป็นเอเจนต์ โมเดลจะเลือกฟังก์ชันจากรายการที่คุณจัดเตรียม เติมอาร์กิวเมนต์ให้ครบ แล้วคุณจึงเรียกใช้ฟังก์ชันนั้น

รูปแบบนี้รองรับโดย OpenAI, Anthropic, Google, Cohere, Mistral และโมเดล OSS รายใหญ่ส่วนใหญ่ที่ผ่านการปรับแต่งอย่างเหมาะสม

การโต้ตอบไปกลับห้าขั้นตอน

  1. คุณส่งข้อความพร้อมคำจำกัดความของเครื่องมือ
  2. โมเดลส่งคืนคำตอบสุดท้าย OR tool_call
  3. คุณเรียกใช้เครื่องมือด้วยอาร์กิวเมนต์ของโมเดล
  4. คุณผนวกผลลัพธ์เป็นข้อความเครื่องมือ
  5. คุณเรียกโมเดลอีกครั้งพร้อมประวัติที่อัปเดตแล้ว

ทำซ้ำขั้นตอนที่ 2-5 จนกว่าโมเดลจะส่งคืนคำตอบสุดท้าย

ขั้นตอนที่ 1: กำหนดเครื่องมือ

คำจำกัดความของเครื่องมือคือสคีมา JSON ที่อธิบายฟังก์ชันแต่ละรายการ:

tools = [{
    'type': 'function',
    'function': {
        'name': 'get_weather',
        'description': 'Current weather for a city',
        'parameters': {
            'type': 'object',
            'properties': {
                'city': {'type': 'string'}
            },
            'required': ['city']
        }
    }
}]
import json
print(json.dumps(tools, indent=2))

ขั้นตอนที่ 2: การเรียกโมเดลครั้งแรก

ส่งข้อความและเครื่องมือ:

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Weather in Paris?'}],
    tools=tools,
)
message = response.choices[0].message
print(message.tool_calls)
# [ToolCall(name='get_weather', arguments='{"city": "Paris"}')]

ขั้นตอนที่ 3: เรียกใช้เครื่องมือ

ส่งต่อไปยังฟังก์ชัน Python ของคุณ:

import json

def get_weather(city: str) -> dict:
    # ...call your weather API...
    return {'city': city, 'temp_c': 18, 'condition': 'cloudy'}

tool_call = message.tool_calls[0]
args = json.loads(tool_call.function.arguments)
result = get_weather(**args)

ขั้นตอนที่ 4: ผนวกผลลัพธ์จากเครื่องมือ

เพิ่มข้อความเครื่องมือพร้อม ID ที่ตรงกัน:

messages.append(message)  # the assistant message with tool_calls
messages.append({
    'role': 'tool',
    'tool_call_id': tool_call.id,
    'content': json.dumps(result)
})

ขั้นตอนที่ 5: การเรียกโมเดลครั้งที่สอง

เรียกโมเดลอีกครั้ง — ตอนนี้โมเดลมีผลลัพธ์จากเครื่องมือแล้ว และจะสร้างคำตอบสำหรับผู้ใช้:

final = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=messages,
    tools=tools,
)
print(final.choices[0].message.content)
# 'It is currently 18 degrees and cloudy in Paris.'

ลูปของเอเจนต์

ห่อรูปแบบนี้ไว้ในลูป while — โมเดลอาจเรียกใช้เครื่องมือหลายรายการต่อเนื่องกัน:

while True:
    response = client.chat.completions.create(model=MODEL, messages=messages, tools=tools)
    msg = response.choices[0].message
    messages.append(msg)
    if not msg.tool_calls:
        return msg.content  # final answer
    for tc in msg.tool_calls:
        result = dispatch(tc)
        messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})

การเรียกใช้เครื่องมือแบบขนาน

โมเดลสมัยใหม่สามารถส่งคืน tool_calls หลายรายการในการตอบกลับครั้งเดียว เรียกใช้แบบขนานเมื่อปลอดภัย:

import asyncio

async def run_tools(tool_calls):
    coros = [dispatch_async(tc) for tc in tool_calls]
    return await asyncio.gather(*coros)

finish_reason: tool_calls

คุณสามารถตรวจสอบ finish_reason แทนการดูที่ tool_calls ได้เช่นกัน:

if response.choices[0].finish_reason == 'tool_calls':
    # the model wants to call tools
    ...
elif response.choices[0].finish_reason == 'stop':
    # done
    ...

ข้อผิดพลาดที่พบบ่อย

  • ลืมผนวกข้อความของผู้ช่วยก่อนผลลัพธ์จากเครื่องมือ
  • ใช้ tool_call_id ไม่ถูกต้อง
  • ส่งผลลัพธ์จากเครื่องมือเป็นข้อความผู้ใช้
  • ปล่อยให้ลูปทำงานโดยไม่มีขอบเขต — กำหนด MAX_STEPS

การสิ้นสุดลูป

คุณจะทราบได้อย่างไรว่าเอเจนต์ทำงานเสร็จแล้ว

สรุปทบทวน

การเรียกใช้ฟังก์ชันคือรูปแบบที่สำคัญที่สุดในหลักสูตรทั้งหมดนี้ โปรดเชี่ยวชาญรูปแบบนี้ก่อนเรียนต่อ

คำถามที่พบบ่อย

บทเรียน “การทำงานของการเรียกใช้ฟังก์ชัน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การทำงานของการเรียกใช้ฟังก์ชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การทำงานของการเรียกใช้ฟังก์ชัน”

ทำความเข้าใจการทำงานครบทั้งรอบ: โมเดลเลือกเครื่องมือ โค้ดของคุณเรียกใช้เครื่องมือนั้น คุณส่งผลลัพธ์กลับไป แล้วโมเดลจึงทำงานต่อ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การทำงานของการเรียกใช้ฟังก์ชัน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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