การเรียกใช้ฟังก์ชันคือความสามารถในการเชื่อมต่อ LLM กับเครื่องมือภายนอกได้อย่างน่าเชื่อถือ เพื่อให้สามารถใช้เครื่องมือและการโต้ตอบกับ API ภายนอกได้อย่างมีประสิทธิภาพ
LLM เช่น GPT-4 และ GPT-3.5 ได้รับการปรับแต่งอย่างละเอียดเพื่อตรวจจับเมื่อจำเป็นต้องเรียกใช้ฟังก์ชัน จากนั้นจึงส่งออก JSON ที่มีอาร์กิวเมนต์เพื่อเรียกใช้ฟังก์ชัน ฟังก์ชันที่ถูกเรียกใช้โดยการเรียกใช้ฟังก์ชันจะทำหน้าที่เป็นเครื่องมือในแอปพลิเคชัน AI ของคุณและคุณสามารถกำหนดได้มากกว่าหนึ่งฟังก์ชันในคำขอเดียว
การเรียกใช้ฟังก์ชันเป็นความสามารถที่สำคัญสำหรับการสร้างแชทบอทหรือตัวแทนที่ขับเคลื่อนด้วย LLM ซึ่งจำเป็นต้องดึงบริบทสำหรับ LLM หรือโต้ตอบกับเครื่องมือภายนอกโดยการแปลงภาษาธรรมชาติเป็นการเรียก API
การเรียกใช้ฟังก์ชันช่วยให้นักพัฒนาสามารถสร้าง:
เจ้าหน้าที่สนทนาที่สามารถใช้เครื่องมือภายนอกเพื่อตอบคำถามได้อย่างมีประสิทธิภาพ ตัวอย่างเช่น ข้อความค้นหา "สภาพอากาศในเบลีซเป็นอย่างไร" จะถูกแปลงเป็นการเรียกใช้ฟังก์ชัน เช่น
get_current_weather(location: string, unit: 'celsius' | 'fahrenheit')
โซลูชันที่ขับเคลื่อนโดย LLM สำหรับการแยกและแท็กข้อมูล (เช่น การแยกชื่อบุคคลจากบทความ Wikipedia)
แอปพลิเคชันที่สามารถช่วยแปลงภาษาธรรมชาติเป็นการเรียก API หรือการสืบค้นฐานข้อมูลที่ถูกต้อง
กลไกการดึงความรู้เชิงสนทนาที่โต้ตอบกับฐานความรู้
ในคู่มือนี้ เราจะสาธิตวิธีแจ้งให้โมเดลต่างๆ เช่น GPT-4 และโมเดลโอเพ่นซอร์สทำการเรียกใช้ฟังก์ชันสำหรับกรณีการใช้งานที่แตกต่างกัน
ตามตัวอย่างพื้นฐาน สมมติว่าเราขอให้โมเดลตรวจสอบสภาพอากาศในตำแหน่งที่ระบุ
LLM เพียงอย่างเดียวจะไม่สามารถตอบสนองต่อคำขอนี้ได้เนื่องจากได้รับการฝึกอบรมบนชุดข้อมูลที่มีจุดตัด วิธีแก้ไขปัญหานี้คือการรวม LLM เข้ากับเครื่องมือภายนอก คุณสามารถใช้ประโยชน์จากความสามารถในการเรียกใช้ฟังก์ชันของโมเดลเพื่อกำหนดฟังก์ชันภายนอกที่จะเรียกใช้พร้อมกับอาร์กิวเมนต์ จากนั้นให้ฟังก์ชันส่งคืนการตอบกลับขั้นสุดท้าย ด้านล่างนี้เป็นตัวอย่างง่ายๆ ของวิธีที่คุณสามารถทำได้โดยใช้ OpenAI API
สมมติว่าผู้ใช้ถามคำถามต่อไปนี้กับโมเดล:
What is the weather like in London?
ในการจัดการคำขอนี้โดยใช้การเรียกใช้ฟังก์ชัน ขั้นตอนแรกคือการกำหนดฟังก์ชันสภาพอากาศหรือชุดฟังก์ชันที่คุณจะส่งผ่านโดยเป็นส่วนหนึ่งของคำขอ OpenAI API:
tools = [
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "Get the current weather in a given location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
},
"unit": {
"type": "string",
"enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
},
}
]
ฟังก์ชัน get_current_weather จะส่งคืนสภาพอากาศปัจจุบันในตำแหน่งที่กำหนด เมื่อคุณส่งคำจำกัดความฟังก์ชันนี้โดยเป็นส่วนหนึ่งของคำขอ ฟังก์ชันจะไม่ดำเนินการจริง แต่จะส่งคืนออบเจ็กต์ JSON ที่มีอาร์กิวเมนต์ที่จำเป็นในการเรียกใช้ฟังก์ชัน ต่อไปนี้คือตัวอย่างโค้ดบางส่วนเกี่ยวกับวิธีการบรรลุเป้าหมายนี้
คุณสามารถกำหนดฟังก์ชันการทำให้สมบูรณ์ได้ดังนี้:
def get_completion(messages, model="gpt-3.5-turbo-1106", temperature=0, max_tokens=300, tools=None):
response = openai.chat.completions.create(
model=model,
messages=messages,
temperature=temperature,
max_tokens=max_tokens,
tools=tools
)
return response.choices[0].message
นี่คือวิธีที่คุณสามารถเขียนคำถามผู้ใช้:
messages = [
{
"role": "user",
"content": "What is the weather like in London?"
}
]
สุดท้าย คุณสามารถเรียก get_completion ด้านบนและส่งทั้ง messages และ tools:
response = get_completion(messages, tools=tools)
วัตถุ response มีดังต่อไปนี้:
ChatCompletionMessage(content=None, role='assistant', function_call=None, tool_calls=[ChatCompletionMessageToolCall(id='...', function=Function(arguments='{"location":"London","unit":"celsius"}', name='get_current_weather'), type='function')])
โดยเฉพาะอย่างยิ่ง อ็อบเจ็กต์ arguments มีอาร์กิวเมนต์ที่สำคัญที่แยกออกมาโดยโมเดลและจำเป็นต่อการดำเนินการตามคำขอให้เสร็จสมบูรณ์
จากนั้นคุณสามารถเลือกเรียก API สภาพอากาศภายนอกสำหรับสภาพอากาศจริงได้ เมื่อคุณมีข้อมูลสภาพอากาศแล้ว คุณสามารถส่งกลับไปยังโมเดลเพื่อสรุปคำตอบสุดท้ายสำหรับคำถามเดิมของผู้ใช้
นี่คือสมุดบันทึกพร้อมตัวอย่างง่ายๆ ที่สาธิตวิธีใช้การเรียกใช้ฟังก์ชันกับ OpenAI API:
หมายเหตุเพิ่มเติมเกี่ยวกับการเรียกใช้ฟังก์ชันด้วย LLM แบบโอเพ่นซอร์สในเร็วๆ นี้
ด้านล่างนี้คือรายการกรณีการใช้งานที่สามารถได้รับประโยชน์จากความสามารถในการเรียกใช้ฟังก์ชันของ LLM:
Conversational Agents (ตัวแทนการสนทนา): การเรียกใช้ฟังก์ชันสามารถใช้เพื่อสร้างตัวแทนการสนทนาหรือแชทบอทที่ซับซ้อนเพื่อตอบคำถามที่ซับซ้อนโดยการเรียก API ภายนอกหรือฐานความรู้ภายนอก และให้คำตอบที่เกี่ยวข้องและมีประโยชน์มากขึ้น
Natural Language Understanding (ความเข้าใจภาษาธรรมชาติ): สามารถแปลงภาษาธรรมชาติเป็นข้อมูล JSON ที่มีโครงสร้าง แยกข้อมูลที่มีโครงสร้างออกจากข้อความ และทำงานต่างๆ เช่น การจดจำเอนทิตีที่มีชื่อ การวิเคราะห์ความรู้สึก และการดึงคำหลัก
Math Problem Solving (การแก้ปัญหาทางคณิตศาสตร์): การเรียกใช้ฟังก์ชันสามารถใช้เพื่อกำหนดฟังก์ชันที่กำหนดเองเพื่อแก้ปัญหาทางคณิตศาสตร์ที่ซับซ้อนซึ่งต้องใช้หลายขั้นตอนและการคำนวณขั้นสูงประเภทต่างๆ
API Integration (การผสานรวม API): สามารถใช้เพื่อผสานรวม LLM เข้ากับ API ภายนอกได้อย่างมีประสิทธิภาพ เพื่อดึงข้อมูลหรือดำเนินการตามอินพุต ซึ่งอาจเป็นประโยชน์ในการสร้างระบบ QA หรือผู้ช่วยสร้างสรรค์ โดยทั่วไป การเรียกใช้ฟังก์ชันสามารถแปลงภาษาธรรมชาติเป็นการเรียก API ที่ถูกต้องได้
Information Extraction (การแยกข้อมูล): การเรียกใช้ฟังก์ชันถูกนำมาใช้อย่างมีประสิทธิภาพเพื่อดึงข้อมูลเฉพาะจากอินพุตที่กำหนด เช่น การดึงเรื่องราวข่าวที่เกี่ยวข้องหรือการอ้างอิงจากบทความ