เข้าใจการเรียกใช้งาน OpenAI ผ่าน Completions API
ขอเกริ่นนำคร่าวๆ
Completions API เป็นโมเดลพื้นฐานของ OpenAI ที่ให้บริการผ่าน API Service ซึ่ง API นี้ค่อนข้างมีความยืดหยุ่นและใช้งานง่าย เช่นเราส่งคำสั่ง promt (Request) เข้าไปผ่าน API Service ตัว API Service ก็จะส่งข้อความกลับมา (Response)
โดยทั่วไปแล้ว Completions API สามารถนำไปปรับใช้กับงานต่าง ๆ ไม่ว่าจะเป็นการสร้างข้อความใหม่ แก้ไขข้อความเดิม หรือแม้กระทั่งการสร้างข้อความเพื่อนำเสนอมุมมองใหม่ ๆ ได้อีกด้วย ด้วยความสามารถที่หลากหลายของ Completions API จึงมีบริษัทต่างๆ นำไปประยุกต์ใช้ในเชิงธุรกิจ เพื่อตอบสนองตามความต้องการของลูกค้า หรือแม้กระทั่งส่วนบุคคลก็นำไปสร้างรายได้ให้กับตัวเองได้เช่นกัน
ดังที่เราเห็นกันว่ามีการพัฒนาแอปพลิเคชันและบริการที่น่าสนใจมากมาย ไม่ว่าจะเป็นการสร้างบทความ รีวิวสินค้า ระบบแนะนำสินค้าหรือบริการ หรือแม้กระทั่งการสนับสนุนกระบวนการสื่อสารภายในองค์กรโดยเบื้องหลังก็เริ่มมีการนำ Completions API มาใช้งานแล้ว
ถึงแม้ว่าการใช้งาน Completions API จะดูง่าย แต่เรายังสามารถกำหนดค่าหรือแก้ไขผ่าน parameters ที่ให้มาได้ด้วยตัวเอง ซึ่งมันอาจจะทำให้ได้คำตอบที่ดีขึ้นหรือแย่ลง ก็อยู่ที่เรากำหนดค่า parameters ให้มันครับ
Basic Completion Request
ก่อนอื่นเราจะใช้เครื่องมือที่ชื่อว่า Postman (ดาวน์โหลดได้ที่นี้ครับ Postman API Platform | Sign Up for Free) เพื่อใช้ในการทดสอบการเรียกใช้งาน Completion API ในครั้งนี้ครับ โดยทำตามขั้นตอนดังนี้
1. เปิด Postman Tool ที่ติดตั้งเรียบร้อยแล้ว จากนั้นทำการสร้าง Collection ทางด้านซ้ายมือและกดตรงเครื่องหมายบวกเพื่อเพิ่ม Collection (ถ้าใครคุ้นชินกับ Postman แล้วข้าม Step นี้ไปได้เลยครับ)
2. ทำการตั้งชื่อให้กับ Collections กดเลือกเครื่องหมายคล้ายดินสอ แล้วเปลี่ยนชื่อตามที่เราต้องการในที่นี้ผมใช้ชื่อ “Open-AI-By-Paul” จากนั้นทำการเปลี่ยนประเภทของ Authorization method เป็น “Bearer Token”
3. ทำการกำหนดค่า Token ซึ่งเราต้องเอาค่า API-Keys จาก OpenAPI มาใช้ระบุครับ สามารถทำตามขั้นตอนที่เคยเขียนไว้ได้ ที่นี้ ตรงหัวข้อวิธีการสร้าง API- Key ครับ
4. เมื่อกำหนดค่าครบแล้วให้ทำการบันทึกการตั้งค่า กดบันทึกตรงปุ่ม “Save” ครับ
5. หลังจากที่เราทำการสร้าง Collection ไว้ใช้งานแล้ว ต่อไปเราจะทำการสร้าง Request เพื่อทำการทดสอบเรียกใช้งาน Completion API ก่อนอื่นกดเลือก “Add a request” ภายใต้ Collection ที่เราสร้างไว้ครับ
6. ตั้งชื่อ Request ตามที่เราต้องการในที่นี้ผมใช้ “Demo-By-Paul” จากนั้นทำการเปลี่ยนค่า Method Type ให้เป็น “POST” และกำหนด URL ในช่อง Enter URL or paste text เป็น “https://api.openai.com/v1/completions”
7. จากนั้นทำการเลือก Authorization และกำหนดประเภทของ Authorization Method เป็น “inherit auth from p…” เพื่อให้ใช้ค่าตาม Collection ที่เราได้ตั้งค่าไว้ เมื่อเลือกเสร็จแล้วกดปุ่ม “Save” เพื่อบันทึกครับ
8. ต่อมาเราจะกำหนด Body เพื่อทำการกำหนดข้อมูลที่จะส่งเข้าไปยัง Completion API ในรูปแบบ JSON text ทำตามลำดับตามนี้ครับ Body > raw
9. จากนั้นเปลี่ยนประเภทของข้อมูลที่จะใช้ในการส่งคำสั่ง Request ไปยัง Completion API เป็น “JSON” แล้วทำการ copy ตามด้านล่างไปวางในช่องตามหมายเลข 2 ครับ
{
"model": "text-davinci-003"
}
จากนั้นกดปุ่ม “Save” เพื่อบันทึกการตั้งค่า
10. เสร็จการตั้งค่าแล้ว
เอาละเราจะมาทดสอบการเรียกใช้งานโดย กดปุ่ม “Send” ถ้าเรียกใช้งานสำเร็จจะได้ค่า response text กลับมาตามรูปครับ ถ้าไม่ได้กลับมาในลักษณะนี้ถือว่าไม่ผ่าน
Completion Response
จากที่ตั้งต้นใน Completion Request เราได้ใช้ model ที่ชื่อ “text-davinci-003” ซึ่งเป็น completion modelในกลุ่ม GPT-3
ผมจะขออธิบายรายละเอียดเพิ่มเติมใน Completion Response
“id”: เป็นค่า unique ไม่สามารถซ้ำกับ response อื่นได้
ประโยชน์คือเอาไว้ใช้เวลาที่เราต้องการตรวจสอบการ response ค่าของเราในภายหลังได้
“object”: คือประเภทค่าของ response type ในที่นี้จะ return ค่ากลับมาเป็น “text_completion” ซึ่งขึ้นกับ endpoint ที่เราเรียกใช้งาน ถ้าเราเลือก endpoint เป็น /edits ค่า object ก็จะมีค่าเป็น “edit”
“created”: ค่าวันที่เวลา UNIX timestamp ที่ response นี้ถูกสร้างขึ้นมา
“model”: ค่า OpenAPI model ที่เราใช้ซึ่งจะเป็นค่าเดียวกับที่เราส่งเข้าไป request ในที่นี้จะเป็น “text-davinci-003”
“choices”: คือส่วนที่สำคัญที่ทาง Completion API ได้ response กลับมาให้ ซึ่งค่าข้างในจะประกอบไปด้วยค่าต่างๆดังนี้
{
"text": " §§ FILE scripts/docker_mongodb.sh\n §§ 1000\n#",
"index": 0,
"logprobs": null,
"finish_reason": "length"
}
ยังอยู่กับ “choices” อยู่นะครับ
text
: ค่าข้อความ text ที่ response ส่งกลับมาให้ซึ่งเป็นข้อความที่เราต้องการคำตอบจากการส่ง request เข้าไป
index
: เป็น index ค่าของ arrays ที่ถูกส่งกลับเข้ามาใน response ถ้าเรามีการกำหนดค่าในตอน request เพื่อต้องการให้ได้คำตอบมากกว่า 1 คำตอบ โดยกำหนดค่า n=จำนวนคำตอบที่อยากได้ ตามตัวอย่างด้านล่างครับ
logprobs
: เป็นค่าความสามารถในการคาดเดา ความน่าจะเป็นของคำที่เกิดขึ้นในประโยคคำตอบ ถ้าเราไม่ได้ระบุใน completion request (กำหนดเป็นตัวเลขให้ค่า score) ค่าได้จะเป็น null
finish_reason
: เป็นค่าที่บอกว่าการหยุดสร้างข้อความ text response เกิดจากอะไร โดยหลักๆ มีค่าดังนี้
> "stop"
คือข้อความ text ได้สร้างเสร็จเรียบร้อยแล้ว และ
> "length"
คือตัวบ่งบอกว่าข้อความที่ถูกสร้างยังเสร็จไม่สมบูรณ์เพราะถึงข้อจำกัดสูงสุดของ token ที่ใช้งานแล้ว เป็นการป้องกันไม่ให้มีการสร้างข้อความยาวเกินไป
“usage”: จำนวน token ในการเรียกใช้งาน Completion ครั้งนี้
{
"prompt_tokens": 1,
"completion_tokens": 16,
"total_tokens": 17
}
ยังอยู่กับ “usage” อยู่นะครับ
prompt_tokens
: คือจำนวน token ของ prompt ที่เราใช้ไปในการเรียกใช้งาน completion request ครั้งนี้
completion_tokens
: คือจำนวน token ของ Text คำตอบ (text response ใน “choices” property) ที่ได้รับกลับมาใน completion response
total_tokens
: คือจำนวน token ทั้งหมดที่เราใช้ไปทั้งในส่วนของ prompt (completion request) และในส่วนของ Text คำตอบ (completion response)
ทิ้งท้ายกับการส่งข้อความ Prompt request
เราก็แค่เพิ่ม “prompt” property นี้เข้าไปแล้วตามด้วยข้อความ prompt ครับ อย่าลืมกด “Send” ทุกครั้งนะครับเมื่อมีการส่งคำสั่ง completion request ใหม่
{
"model": "text-davinci-003",
"prompt": "Explain the completion api"
}
หลังจากกด Send เรียบร้อยแล้วเราก็จะได้คำตอบใน “choices” property ครับ
คร่าวๆสำหรับการเรียกใช้งาน Completion API เพื่อเป็นแนวทางในการนำไปต่อยอดในการพัฒนาในเชิงธุรกิจต่อไปครับ ขอบคุณที่มา: Introduction — OpenAI API