Artificial Intelligence

ปัญญาประดิษฐ์ด้านภาษาอย่าง ChatGPT กำลังเป็นที่นิยมอย่างสูง และกูเกิลก็เปิดตัว Bard มาได้ระยะหนึ่งแล้ว แม้จะเป็นบริการทดสอบวงปิด (ต้องขอใช้งานล่วงหน้า) แต่ตอนนี้คิวการใช้งานก็ใช้งานได้แทบทันที ทำให้หลายคนอาจจะใช้ปัญญาประดิษฐ์สองตัวคู่กันเสมอๆ

การใช้งานมีหลายด้าน แต่ด้านหนึ่งที่หลายคนอาจจะใช้งานกัน คือการใช้ปัญญาประดิษฐ์มาช่วยเขียนโปรแกรม โดยการใช้แชตบอตเช่น Bard และ ChatGPT นั้นมีข้อดีเหนือกว่า การใช้ปัญญาประดิษฐ์เขียนโค้ดโดยตรง เพราะเรามักสามารถกำหนดความต้องการ รอผลลัพธ์ และสามารถสั่งแก้ไขเพิ่มเติม จนกว่าจะได้โปรแกรมที่เราต้องการ เราสามารถขอสคริปต์หรือโครงร่างโปรแกรมอย่างง่าย ที่เราต้องการใช้ไลบรารีหรือเฟรมเวิร์คใหม่ๆ โดยผลที่ได้ตรงตามต้องการทันที

ข้อดีสำคัญการใช้แชตบอทในการเขียนโปรแกรมอีกอย่าง คือ แชตบอทมักมีคำอธิบายโค้ดที่มันสร้างขึ้นมาให้ด้วย ทำให้ประหยัดเวลาที่จะอ่านเอกสารที่เกี่ยวข้องซึ่งหลายครั้งอยู่กระจัดกระจายกันไป

ผมตั้งโจทย์การเขียนโปรแกรมเป็นเว็บอันหนึ่ง โดยต้องการให้แชตบอทเขียน API ที่คืนค่าเป็น JSON จากนั้นจึงเพิ่มเงื่อนไขเพิ่มเติมไปเรื่อยๆ เช่น

  • เพิ่มคอนฟิกสำหรับเว็บผ่านทาง environment variable
  • ให้เพิ่ม basic authentication ลงไปยัง route
  • ทำให้ path หนึ่งของเว็บเป็นการ proxy ไปยังเซิร์ฟเวอร์ปลายทาง
  • filter HTTP Header ที่ได้จากเซิร์ฟเวอร์ต้นทาง

ผมใช้ทั้งสองตัวในเวอร์ชั่นฟรี ดังนั้นจึงไม่ได้ใช้ GPT-4

คำสั่งแรก โปรแกรมอย่างง่าย

ทั้ง Bard และ ChatGPT ได้รับ คือ Write a flask application with a route /blognone_test which will return json {"msg": "Hello Blognone"} ทั้งสองตัวสามารถเขียนโปรแกรมได้โดยไม่มีปัญหาใดๆ โดยทั้งสองตัวพยายามอธิบายวิธีการรันไว้ด้วย ความพิเศษสักหน่อยของ Bard คือมันพยายามบอกด้วยว่าเมื่อรันและเข้าเว็บด้วยเบราว์เซอร์แล้วจะเห็นผลอย่างไร

from flask import Flask, jsonify

app = Flask(__name__)

@app.route("/blognone_test")
def blognone_test():
    return jsonify({"msg": "Hello Blognone"})

if __name__ == "__main__":
    app.run(debug=True)

คำสั่งสอง เพิ่มคอนฟิก

คำสั่งต่อมาขอให้เปลี่ยน `/blognone_test เป็นค่าที่ได้รับจาก environment variable ชื่อว่า API_PATH

Make the route /blognone_test configurable by get the path from environment variable named "API_PATH"

คำสั่งแม้ว่าทั้งสองตัวจะตอบได้คล้ายกันมาก แต่ Bard ก็เริ่มแสดงอาการ ด้วยการลืม import os ไปเสียเฉยๆ ทำให้โค้ดรันไม่ได้ แต่เมื่อนำ error บรรทัดสุดท้ายไปแจ้ง Bard มันก็ตอบวิธีแก้ไขได้อย่างถูกต้อง

คำสั่งสาม เพิ่ม Basic Authentication

คำสั่งต่อมาสั่งเพียงสั้นๆ ว่า Add basic authentication เพื่อให้แชตบอตเพิ่มการล็อกอินก่อนจะเรียก API คำสั่งนี้ Bard เลือกใช้ flask_httpauth ขณะที่ ChatGPT เลือกใช้ flask_basicauth แต่โดยรวมโค้ดทั้งสองชุดสามารถทำงานได้ตามคำสั่ง แต่โค้ดของ Bard ยังคงลืม import os แม้เพิ่มสั่งแก้ไขไป และโค้ดของ ChatGPT นั้นไม่ใส่คอนฟิกที่สั่งไปในข้อที่แล้วมาด้วย

คำสั่งสี่ ทำตัวเป็นพรอกซี่ไปยัง httpbin.org

คำสั่งที่สี่ขอให้แก้ไขโค้ด Make blognone_test proxy the request to https://httpbin.org/anything เพื่อส่งต่อ request ไปยัง httpbin.org

Bard ตีความการทำตัวเป็น proxy ได้แม่นกว่า ด้วยการพยายามส่งค่า header ทั้งหมดไปยังเซิร์ฟเวอร์ต้นทางด้วย อย่างไรก็ดี โค้ดที่สร้างออกมานั้นกลับใช้ออปเจกต์ request ของ flask ผิดพลาด Bard พยายาม copy ด้วยฟังก์ชั่น copy() ตรงๆ แต่กลับใช้งานไม่ได้ และเมื่อนำ error ไปวาง Bard ก็พยายามเปลี่ยนไปใช้ to_dict() ซึ่งรันไม่ได้เช่นกัน แต่เมื่อนำ error ไปวางรอบที่สอง Bard ก็แก้ไขจนโค้ดทำงานได้

ChatGPT สร้างโค้ดที่ไม่ได้ส่ง header ไปยัง httpbin แต่กลับสร้าง header ใหม่ทั้งหมด อย่างไรก็ดีมันส่ง arguments ไปด้วย ทำให้อาจจะถือว่าชนะบางส่วน

ChatGPT ยังดีกว่า แต่ Bard ตามมาใกล้แล้ว

การทดสอบครั้งนี้เป็นเพียงส่วนหนึ่งของการใช้งาน โดยรวมแล้วประสบการณ์มักคล้ายๆ แบบนี้ Bard มีแนวโน้มว่าจะสร้างโค้ดผิดพลาดจนถึงกับรันไม่ได้อยู่เสมอๆ หากสั่งคำสั่งซับซ้อนไปบ้าง และ ChatGPT นั้นสามารถสร้างโค้ดที่ "รันได้" ตามคำสั่งที่ซับซ้อนมากกว่าพอสมควร แม้ว่าหากใส่คำสั่งที่ซับซ้อนเกินไปก็จะมีความผิดพลาด หรือบางครั้งก็แก้ไขโค้ดโดยทิ้งบางฟีเจอร์ที่สั่งไว้ก่อนหน้าออกไปเสียเฉยๆ

อาการหลอน (hallucination) ยังคงพบได้เรื่อยๆ ในแชตบอตทั้งสองตัว เช่น หากถามถึง Flask extensions โดยขอจำนวนดาวใน GitHub ด้วย Bard ก็จะแสดงตารางสวยงาม แต่ตัวเลขกลับเกินกว่าจำนวนดาวจริงๆ ของแต่ละโครงการไปมาก ChatGPT ตอบได้ใกล้เคียงกว่าแต่ก็เป็นข้อมูลเก่าตั้งแต่ปี 2021

โดยทั่วไปแล้ว ทั้งสองตัวสามารถใช้งานช่วยเหลือระหว่างการเขียนโปรแกรมได้ โดยเฉพาะการเรียนเฟรมเวิร์คหรือภาษาใหม่ๆ ที่ผู้เขียนยังไม่ชินว่ากระบวนการแต่ละอย่างทำอย่างไรบ้าง หากเป็นตัวอย่างที่ง่ายพอก็มักจะได้คำตอบที่ตรงประเด็นพร้อมคำอธิบายที่ชัดเจน แต่ควรตระหนักว่าหากคำสั่งซับซ้อนขึ้น หรือหากเฟรมเวิร์คที่ใช้ไม่เป็นที่นิยมนัก แชตบอตทั้งสองตัวก็มักจะทำงานผิดพลาดได้ง่ายขึ้น

โค้ดที่ได้จากการทดสอบนี้อยู่ใน GitHub Gist

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

ส่วนตัวคิดว่า ChatGPT ไปใช้บน Bing น่าจะดีกว่านะ เพราะอย่างน้อยก็บอกที่มาว่ามันไปเอามาจากไหน
บางทีที่มันผิดก็จะมีกรณีที่ไปก็อป Code ที่เป็นคำถามที่เขียนผิดมาตอบดื้อๆ เลย

ส่วนตัวผมชอบ bard ตรงที่การถามตอบค่อนข้างตรงประเด็น และพยายามบอกข้อดีข้อเสียหรือสิ่งที่ต้องไปหาต่อ
แต่ chatgpt เหมือนจะพยายามคิดแทนเราทั้งหมดในแง่ของความสามารถเขียนได้ละเอียดกว่าแต่สังเกตุตัวเองไปซักพักคือ เริ่มเสียนิสัย เพราะเราจะ copy paste อย่างเดียว
ในแง่ของการ research หรือศึกษาเพิ่มให้ Bard ชนะ เหมือนเอา google search มาเพิ่มความสามารถ แต่ถ้าเน้นแบบก๊อบวางอย่างเดียว chatgpt จะเป๊ะกว่า

ส่วนตัวใช้ copilot กับ whisperer ก็สุขสบายดีนะ แค่ในนั้นจะไม่อธิบายอะไรให้ยืดยาว สร้างฟังก์ชั่นที่อยากได้เพียงแป๊บเดียว แต่ถ้าชอบการอธิบายด้วย bard กับ gpt ก็เป็นตัวเลือกที่ดีเหมือนกัน