AI
น้องๆ เคยคิดมั้ยว่า ถ้าเรามีโปรแกรมที่ฉลาดพอจะ "คิด" เองได้ ทำงานซับซ้อนได้เหมือนมีเลขาส่วนตัว? นั่นแหละคือสิ่งที่ Langchain AI Agent Development พยายามทำให้เป็นจริง
สมัยผมทำร้านเน็ตฯ (SiamCafe.net Since 1997) นี่นะ แค่ลง Windows ให้ลูกค้าแต่ละเครื่องก็เหนื่อยแล้ว (หัวเราะ) แต่สมัยนี้ AI มัน advanced ไปไกลมาก Langchain เนี่ย มันเหมือนเป็น framework ที่ช่วยให้เราสร้าง "Agent" หรือ "ตัวแทน" ที่มีความสามารถหลากหลายได้ ตั้งแต่ตอบคำถามง่ายๆ ไปจนถึงวางแผนการเดินทาง หรือแม้กระทั่งเขียนโค้ดให้เรา!
ทำไมมันถึงสำคัญน่ะเหรอ? ลองนึกภาพว่าเรามี Agent ที่คอยตอบคำถามลูกค้าตลอด 24 ชั่วโมง หรือ Agent ที่ช่วยวิเคราะห์ข้อมูลการตลาด แล้วเสนอแนะกลยุทธ์ใหม่ๆ ให้เราได้แบบอัตโนมัติ มันช่วยประหยัดเวลา ลดต้นทุน และเพิ่มประสิทธิภาพได้มหาศาลเลยนะ
ก่อนจะไปลุยโค้ดกัน ผมว่าเรามาปูพื้นฐานกันก่อนดีกว่า จะได้ไม่งงเนอะ
LLMs คือหัวใจหลักของ Agent เลยนะ มันคือโมเดล AI ที่ถูกเทรนด้วยข้อมูลมหาศาล ทำให้มันสามารถเข้าใจภาษา สร้างภาษา และตอบคำถามได้อย่างเป็นธรรมชาติ ตัวอย่าง LLMs ที่ดังๆ ก็เช่น GPT-3, GPT-4 (ของ OpenAI) หรือ PaLM 2 (ของ Google)
คิดง่ายๆ มันเหมือนเป็นเด็กที่อ่านหนังสือมาเยอะมากๆ แล้วเราสามารถถามอะไรมันก็ได้ มันก็จะตอบได้โดยอ้างอิงจากสิ่งที่มันเคยอ่านมา
Chain คือลำดับการทำงานของ components ต่างๆ ใน Langchain มันเหมือนเป็น workflow ที่เรากำหนดว่า Agent ต้องทำอะไรบ้าง เพื่อให้บรรลุเป้าหมาย
ยกตัวอย่าง สมมติเราต้องการสร้าง Agent ที่ตอบคำถามเกี่ยวกับสภาพอากาศ เราอาจจะสร้าง Chain ที่ประกอบด้วย:
Tool คืออะไรก็ได้ที่ Agent สามารถใช้เพื่อทำงานบางอย่างได้ เช่น API สำหรับค้นหาข้อมูล, Database สำหรับเก็บข้อมูล, หรือแม้กระทั่งเครื่องคิดเลข
สมัยก่อน ผมต้องเขียนโปรแกรมเองหมดทุกอย่าง แต่สมัยนี้เราสามารถใช้ Tool ที่มีอยู่แล้วได้เลย ทำให้การพัฒนา Agent ง่ายขึ้นเยอะมากๆ
เอาล่ะ ทีนี้มาถึงส่วนที่น้องๆ น่าจะอยากรู้ที่สุด นั่นก็คือ จะเริ่มต้นใช้งาน Langchain ยังไง?
Langchain เนี่ย รองรับหลายภาษา แต่ที่นิยมกันก็คือ Python ครับ เพราะมี libraries เยอะ และมี community ที่แข็งแกร่ง
ผมแนะนำว่าให้เริ่มจากติดตั้ง Langchain ก่อนเลย:
pip install langchain
จากนั้นก็ต้องมี API key ของ LLM ด้วยนะ อย่างเช่น OpenAI API key ถ้าจะใช้ GPT-3 หรือ GPT-4
เรามาลองสร้าง Agent ง่ายๆ ที่สามารถตอบคำถามทั่วไปได้กันดีกว่า
Agent ประเภทนี้จะใช้ LLM เพื่อตัดสินใจว่าจะใช้ Tool อะไรในการตอบคำถาม
from langchain.agents import AgentType, initialize_agent
from langchain.llms import OpenAI
from langchain.tools import DuckDuckGoSearchRun
llm = OpenAI(temperature=0)
tools = [DuckDuckGoSearchRun()]
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("What is the capital of France?")
โค้ดนี้จะสร้าง Agent ที่ใช้ OpenAI LLM และ DuckDuckGo Search API ในการตอบคำถามเกี่ยวกับเมืองหลวงของฝรั่งเศส
verbose=True จะช่วยให้เราเห็นว่า Agent คิดอะไรอยู่ และใช้ Tool อะไรบ้าง
เราสามารถเพิ่ม Tool ให้ Agent ได้ตามต้องการ เช่น Calculator, Wikipedia, หรือแม้กระทั่ง Tool ที่เราสร้างขึ้นเอง
from langchain.agents import AgentType, initialize_agent
from langchain.llms import OpenAI
from langchain.tools import DuckDuckGoSearchRun, CalculatorInput, Calculator
from langchain.utilities import WikipediaAPIWrapper
llm = OpenAI(temperature=0)
search = DuckDuckGoSearchRun()
calculator = Calculator()
wikipedia = WikipediaAPIWrapper()
tools = [
search,
calculator,
wikipedia
]
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION, verbose=True)
agent.run("What is the population of Thailand multiplied by 2?")
โค้ดนี้จะสร้าง Agent ที่ใช้ DuckDuckGo Search, Calculator และ Wikipedia ในการตอบคำถามเกี่ยวกับการคำนวณจำนวนประชากรของประเทศไทย
น้องๆ ลองเอาไปปรับแต่งดูนะ เพิ่ม Tool ที่ตัวเองสนใจ หรือเปลี่ยนคำถามดู แล้วจะเห็นว่า Agent มันฉลาดขึ้นเรื่อยๆ
แน่นอนว่า Langchain ไม่ใช่ framework เดียวที่ใช้สร้าง AI Agent ได้ ยังมีทางเลือกอื่นๆ อีกมากมาย แต่ละทางเลือกก็มีข้อดีข้อเสียต่างกัน
ผมขอสรุปเป็นตารางให้เห็นภาพง่ายๆ ดังนี้:
| Framework | ข้อดี | ข้อเสีย |
|---|---|---|
| Langchain | ใช้งานง่าย, มี Tool ให้เลือกเยอะ, Community ใหญ่ | อาจจะซับซ้อนสำหรับโปรเจ็คที่เล็กมากๆ |
| AutoGPT | เน้นการทำงานอัตโนมัติ, สามารถวางแผนระยะยาวได้ | ต้องการทรัพยากรสูง, อาจจะควบคุมได้ยาก |
| Semantic Kernel (ของ Microsoft) | เน้นการ integrate กับ Microsoft Azure, มี features ที่ครบครัน | อาจจะผูกติดกับ ecosystem ของ Microsoft มากเกินไป |
เลือกใช้ framework ไหน ก็ขึ้นอยู่กับความต้องการและงบประมาณของแต่ละโปรเจ็คนะครับ
อยากอ่านเรื่อง AI สนุกๆ เพิ่มเติม แวะไปที่ SiamCafe Blog ได้เลยนะ
สุดท้ายนี้ ผมอยากจะบอกว่า AI Agent Development เป็น field ที่กำลังมาแรงมากๆ ใครที่สนใจด้านนี้ อย่ารอช้า รีบศึกษาและลงมือทำเลยครับ อนาคตสดใสแน่นอน!
และอย่าลืมติดตาม SiamCafe Blog นะครับ จะมีบทความดีๆ เกี่ยวกับ IT และ AI มาให้อ่านกันเรื่อยๆ ครับ
น้องๆ หลายคนอาจจะเริ่มหัดทำ AI Agent แล้วเจอปัญหาเยอะแยะไปหมด สมัยผมทำร้านเน็ตก็เจอปัญหาจุกจิกรายวันเหมือนกัน ไอ้เรื่อง AI Agent นี่ก็เหมือนกันแหละ ต้องลองผิดลองถูกกันไป
สิ่งที่อยากจะแนะนำจากประสบการณ์ตรงเลยก็คือ อย่าเพิ่งไปโฟกัสที่ framework หรือ library มากเกินไป เข้าใจหลักการมันก่อน แล้วค่อยไปเจาะลึกเครื่องมือทีหลัง ไม่งั้นจะงงเต้ก
1. เริ่มจากง่ายไปยาก: อย่าเพิ่งไปอยากทำ Agent ที่มันซับซ้อนตั้งแต่แรก เริ่มจาก Task ง่ายๆ ก่อน เช่น สรุปข่าว หรือตอบคำถามง่ายๆ พอคล่องแล้วค่อยขยับไปทำอะไรที่มันยากขึ้น
# ตัวอย่าง code ง่ายๆ ใช้ Langchain สรุปข่าว
from langchain.llms import OpenAI
from langchain.chains.summarize import load_summarize_chain
llm = OpenAI(temperature=0)
chain = load_summarize_chain(llm, chain_type="stuff")
text = "ข่าวเกี่ยวกับ..." # ใส่ข้อความข่าวที่ต้องการสรุป
summary = chain.run(text)
print(summary)
2. Prompt Engineering สำคัญกว่าที่คิด: Prompt ที่ดีมีชัยไปกว่าครึ่ง ลองปรับเปลี่ยน Prompt ไปเรื่อยๆ จนกว่าจะได้ผลลัพธ์ที่ต้องการ สมัยผมทำร้านเน็ตนี่ Prompt ก็เหมือน User Interface อ่ะ ต้องทำให้ User ใช้งานง่ายที่สุด
# ตัวอย่าง prompt ที่ดี
prompt_template = """
กรุณาสรุปข้อความต่อไปนี้ให้กระชับและเข้าใจง่าย:
{text}
"""
3. Monitoring และ Logging: Agent ที่ดีต้อง Monitor ได้ ต้องรู้ว่ามันทำงานยังไง มีปัญหาตรงไหน Logging ก็สำคัญ ช่วยให้เรา Debug ได้ง่ายขึ้น สมัยก่อนผม Monitor เครื่องในร้านเน็ตด้วยโปรแกรม Remote Desktop นี่แหละ คล้ายๆ กัน
# ตัวอย่าง logging
import logging
logging.basicConfig(filename='agent.log', level=logging.INFO)
try:
# โค้ด Agent ของเรา
result = agent.run()
logging.info(f"Agent run successful: {result}")
except Exception as e:
logging.error(f"Agent run failed: {e}")
4. Iterate and Refine: ไม่มี Agent ตัวไหนสมบูรณ์แบบตั้งแต่แรก ต้องปรับปรุงไปเรื่อยๆ ตาม Feedback ที่ได้ อย่ากลัวที่จะลองอะไรใหม่ๆ สมัยผมทำร้านเน็ตนี่ต้องอัพเดทเกมส์ อัพเดทโปรแกรมอยู่เรื่อยๆ เหมือนกัน
iCafeForexPrompt อาจจะไม่ชัดเจนพอ หรือข้อมูลที่ Agent ใช้ในการ Train ยังไม่ครอบคลุม ลองปรับ Prompt หรือเพิ่มข้อมูลดู
ลองเปลี่ยน Model ที่ใช้ อาจจะมี Model ที่เร็วกว่าแต่ยังให้ผลลัพธ์ที่ดีอยู่ หรือลอง Optimize Code ดู
ทั้งสอง Framework มีข้อดีข้อเสียต่างกัน ลองศึกษาดูว่า Framework ไหนเหมาะกับ Project ของเรามากที่สุด หรือลองใช้ทั้งสองอันเลยก็ได้!
ลองดู Document ของ Langchain เอง หรือ Search หา Tutorial ใน Youtube ก็ได้ มีเยอะแยะเลย SiamCafe Blog ก็มีบทความเกี่ยวกับ AI อยู่บ้าง ลองเข้าไปอ่านดู
การพัฒนา AI Agent ไม่ใช่เรื่องยาก แต่ก็ไม่ง่าย ต้องอาศัยความอดทนและการเรียนรู้อย่างต่อเนื่อง อย่าท้อแท้ถ้าเจอปัญหา ลองผิดลองถูกไปเรื่อยๆ แล้วจะเก่งเอง
จำไว้ว่าหลักการสำคัญกว่าเครื่องมือ เข้าใจหลักการแล้วค่อยไปเจาะลึกเครื่องมือทีหลัง ขอให้น้องๆ สนุกกับการพัฒนา AI Agent นะครับ!