LangChain 101: ສ້າງລະບົບ AI Workflows ທີ່ຊັບຊ້ອນແບບມືອາຊີບ
LangChain 101: ສ້າງລະບົບ AI Workflows ທີ່ຊັບຊ້ອນແບບມືອາຊີບ
ເຖິງແມ່ນວ່າ Large Language Models (LLMs) ເຊັ່ນ ChatGPT ຈະມີຄວາມສະຫຼາດຫຼາຍພຽງໃດກໍ່ຕາມ, ແຕ່ພວກມັນກໍ່ຍັງມີຈຸດອ່ອນທີ່ສຳຄັນ ຄື: ມັນບໍ່ສາມາດເຂົ້າເຖິງຂໍ້ມູນ Real-time ໄດ້ດ້ວຍຕົວມັນເອງ ແລະ ຄວາມຮູ້ຂອງມັນຈະຖືກຈຳກັດຢູ່ພຽງແຕ່ຂໍ້ມູນທີ່ມັນຖືກຝຶກ (Training Data) ມາເທົ່ານັ້ນ.
ລອງນຶກພາບເບິ່ງວ່າ ຖ້າທ່ານຕ້ອງການໃຫ້ AI ຊ່ວຍກວດສອບລະດັບນໍ້າຂອງໃນມື້ນີ້, ອັບເດດລາຄາກາເຟປາກຊ່ອງລ່າສຸດຈາກ Database ຂອງທ່ານ, ຫຼື ດຶງຂໍ້ມູນອັດຕາແລກປ່ຽນເງິນກີບປະຈຳວັນ ມັນຈະເຮັດແນວໃດ? ຄຳຕອບສຳລັບນັກພັດທະນາຄືການນຳໃຊ້ເຄື່ອງມືທີ່ຊື່ວ່າ LangChain.
LangChain ແມ່ນຫຍັງ?
LangChain ແມ່ນ Open-source Framework ທີ່ຖືກອອກແບບມາເພື່ອຊ່ວຍໃຫ້ນັກພັດທະນາສາມາດສ້າງແອັບພລິເຄຊັນທີ່ຂັບເຄື່ອນດ້ວຍ LLMs ໄດ້ງ່າຍຂຶ້ນ. ແທນທີ່ຈະໃຫ້ AI ພຽງແຕ່ຕອບຄຳຖາມທົ່ວໄປ, LangChain ຊ່ວຍໃຫ້ທ່ານສາມາດ “ເຊື່ອມຕໍ່” (Chain) LLM ເຂົ້າກັບແຫຼ່ງຂໍ້ມູນພາຍນອກ (External APIs), ຖານຂໍ້ມູນ, ແລະ ເຄື່ອງມືຕ່າງໆ ເພື່ອໃຫ້ AI ສາມາດ “ລົງມືເຮັດ” (Action) ໄດ້ຢ່າງແທ້ຈິງ.
ການກຽມຄວາມພ້ອມ (Environment Setup)
ໃນບົດຄວາມນີ້, ເຮົາຈະມາຮຽນຮູ້ການໃຊ້ Python ເພື່ອສ້າງ AI Agent ທີ່ສາມາດດຶງຂໍ້ມູນຈາກອິນເຕີເນັດ ແລະ APIs. ກ່ອນອື່ນໝົດ, ໃຫ້ຕິດຕັ້ງ Libraries ທີ່ຈຳເປັນ:
pip install langchain langchain-openai python-dotenv google-search-results
ໝາຍເຫດ: ທ່ານຈຳເປັນຕ້ອງມີ API Key ຈາກ OpenAI ແລະ SerpApi (ສຳລັບການຄົ້ນຫາເທິງ Google).
ການເຊື່ອມຕໍ່ LLM ກັບ External APIs: ພື້ນຖານ Agents & Tools
ແນວຄວາມຄິດຫຼັກຂອງ Agents ແມ່ນການປ່ອຍໃຫ້ LLM ເປັນ “ສະໝອງ” ໃນການຕັດສິນໃຈວ່າຈະໃຊ້ “ເຄື່ອງມື” (Tools) ໃດ ເພື່ອແກ້ໄຂບັນຫາທີ່ຜູ້ໃຊ້ຖາມມາ.
ລອງມາເບິ່ງຕົວຢ່າງການສ້າງ Agent ທີ່ສາມາດຄົ້ນຫາສະພາບອາກາດໃນນະຄອນຫຼວງວຽງຈັນ ແລະ ສາມາດຄຳນວນຕົວເລກທາງຄະນິດສາດໄດ້:
import os
from langchain_openai import OpenAI
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
# 1. ກຳນົດ API Keys
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
os.environ["SERPAPI_API_KEY"] = "your-serpapi-api-key"
# 2. ໂຫຼດ LLM (ກຳນົດ temperature=0 ເພື່ອໃຫ້ຄຳຕອບມີຄວາມຊັດເຈນຫຼາຍທີ່ສຸດ)
llm = OpenAI(temperature=0)
# 3. ໂຫຼດ Tools ທີ່ຕ້ອງການໃຊ້ງານ:
# 'serpapi' ສຳລັບຄົ້ນຫາ Google ແລະ 'llm-math' ສຳລັບຄິດໄລ່ເລກ
tools = load_tools(["serpapi", "llm-math"], llm=llm)
# 4. ສ້າງ Agent ປະເພດ ZERO_SHOT_REACT_DESCRIPTION
# ເຊິ່ງຈະໃຫ້ AI ອ່ານຄຳອະທິບາຍຂອງເຄື່ອງມື ແລ້ວຕັດສິນໃຈເລືອກໃຊ້ເອງ
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True # ເປີດເພື່ອເບິ່ງຂັ້ນຕອນການຄິດຂອງ AI
)
# 5. ທົດສອບການສັ່ງງານ
query = "ສະພາບອາກາດຢູ່ນະຄອນຫຼວງວຽງຈັນມື້ນີ້ເປັນແນວໃດ? ແລະ ຖ້າອຸນຫະພູມເພີ່ມຂຶ້ນອີກ 15% ຈະເປັນເທົ່າໃດ?"
response = agent.run(query)
print(response)
ເມື່ອທ່ານລັນໂຄ້ດນີ້ (ດ້ວຍ verbose=True), ທ່ານຈະເຫັນຂະບວນການ ReAct (Reasoning and Acting) ຂອງ AI:
- Thought: AI ຈະຄິດວ່າມັນຕ້ອງຊອກຫາອຸນຫະພູມຂອງວຽງຈັນກ່ອນ.
- Action: ມັນຈະຕັດສິນໃຈໃຊ້
serpapiTool. - Observation: ມັນໄດ້ຮັບຜົນລັບ (ເຊັ່ນ: 30 ອົງສາສະເລ່ຍ).
- Thought: ຕໍ່ໄປ, ມັນຕ້ອງຄຳນວນຕົວເລກເພີ່ມຂຶ້ນ 15%.
- Action: ມັນຈະໃຊ້
llm-mathTool30 * 1.15. - Final Answer: ມັນຈະສະຫຼຸບຄຳຕອບສຸດທ້າຍອອກມາເປັນພາສາທີ່ມະນຸດອ່ານເຂົ້າໃຈ.
ການສ້າງ Custom Tool ສຳລັບທຸລະກິດໃນລາວ
ການໃຊ້ເຄື່ອງມືມາດຕະຖານແມ່ນດີ, ແຕ່ພະລັງທີ່ແທ້ຈິງຂອງ LangChain ແມ່ນການທີ່ທ່ານສາມາດສ້າງ Custom Tools ເພື່ອເຊື່ອມກັບ API ສຳລັບອົງກອນຂອງທ່ານເອງ.
ສົມມຸດວ່າທ່ານເປັນຜູ້ພັດທະນາໃຫ້ກັບ SME ສົ່ງອອກກາເຟຢູ່ປາກຊ່ອງ ແລະ ບໍລິສັດມີ Local API ທີ່ເກັບລາຄາກາເຟປະຈຳວັນ. ເຮົາສາມາດສ້າງ Tool ໃຫ້ LLM ເຂົ້າໄປດຶງຂໍ້ມູນກາເຟແຕ່ລະສາຍພັນໄດ້ດັ່ງນີ້:
from langchain.tools import tool
import requests
# ໃຊ້ @tool decorator ເພື່ອປ່ຽນ Python function ໃຫ້ກາຍເປັນ LangChain Tool
@tool
def get_paksong_coffee_price(grade: str) -> str:
"""
ໃຊ້ສຳລັບຊອກຫາລາຄາກາເຟປາກຊ່ອງລ່າສຸດປະຈຳວັນ.
ຣະບຸເກຣດກາເຟ (ຕົວຢ່າງ: 'arabica', 'robusta').
"""
# ໃນສະຖານະການຈິງ, ທ່ານຈະດຶງຂໍ້ມູນຈາກ API ຂອງລະບົບຫຼັງບ້ານ:
# response = requests.get(f"https://api.yourcoffeecompany.la/prices?grade={grade}")
# return response.json()['price']
# ຈຳລອງການດຶງຂໍ້ມູນ (Mock Data)
prices = {
"arabica": "120,000 ກີບ/ກິໂລ",
"robusta": "85,000 ກີບ/ກິໂລ"
}
price = prices.get(grade.lower(), "ບໍ່ພົບຂໍ້ມູນເກຣດກາເຟນີ້ໃນລະບົບ")
return f"ລາຄາກາເຟປາກຊ່ອງເກຣດ {grade} ມື້ນີ້ແມ່ນ {price}"
# ນຳເອົາ Custom Tool ໄປໃຊ້ກັບ Agent
custom_tools = [get_paksong_coffee_price]
business_agent = initialize_agent(
custom_tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# ທົດສອບການຖາມ
business_agent.run("ລູກຄ້າຢາກຮູ້ວ່າ ລາຄາກາເຟ arabica ສົດຈາກປາກຊ່ອງມື້ນີ້ກິໂລລະເທົ່າໃດ?")
ຈາກໂຄ້ດຂ້າງເທິງ, ທຸກຄັ້ງທີ່ຜູ້ໃຊ້ຖາມກ່ຽວກັບລາຄາກາເຟ, AI ຈະຮູ້ອັດຕະໂນມັດວ່າມັນຕ້ອງໃຊ້ get_paksong_coffee_price Tool ໂດຍອີງໃສ່ Docstring ("""...""") ທີ່ເຮົາໄດ້ຂຽນອະທິບາຍໄວ້.
ຂໍ້ຄວນຈື່ (Key Takeaways)
- LLMs ຍັງຕ້ອງການຂໍ້ມູນທ້ອງຖິ່ນ: ໂມເດລພາສາຂະໜາດໃຫຍ່ອາດບໍ່ຮູ້ເຖິງລາຄາສິນຄ້າໃນຕະຫຼາດຊັງຈຽງ ຫຼື ສະພາບນໍ້າຖ້ວມຢູ່ດອນໂຂງ. ການໃຊ້ LangChain ແມ່ນວິທີທີ່ດີທີ່ສຸດໃນການເພີ່ມ Context ດ້ວຍຂໍ້ມູນ Real-time.
- Agents ແມ່ນຜູ້ທຳງານ (Orchestrators): ພວກມັນບໍ່ໄດ້ເຮັດທຸກຢ່າງດ້ວຍຕົນເອງ, ແຕ່ພວກມັນສະຫຼາດພໍທີ່ຈະຮູ້ວ່າຄວນເອີ້ນໃຊ້ APIs ຫຼື Tools ອັນໃດໃນແຕ່ລະສະຖານະການ.
- Docstrings ປະກອບສ່ວນສຳຄັນ: ການຂຽນຄຳອະທິບາຍໃນ Python Function (Docstring) ທີ່ຊັດເຈນ ຈະຊ່ວຍໃຫ້ Agent ຕັດສິນໃຈເລືອກໃຊ້ Custom Tool ຂອງທ່ານໄດ້ຢ່າງຖືກຕ້ອງແນ່ນອນ.
ສະຫຼຸບ
ການນຳໃຊ້ LangChain ເຮັດໃຫ້ເຮົາສາມາດຍົກລະດັບຂີດຄວາມສາມາດຂອງ AI ຈາກພຽງແຕ່ເປັນ Chatbot ທຳມະດາ ໃຫ້ກາຍເປັນ “ຜູ້ຊ່ວຍອັດສະລິຍະ” ທີ່ສາມາດເຊື່ອມຕໍ່ກັບໂລກພາຍນອກໄດ້ຢ່າງມີປະສິດທິຜົນ. ສຳລັບນັກພັດທະນາໃນລາວ, ນີ້ແມ່ນໂອກາດອັນຍິ່ງໃຫຍ່ທີ່ຈະສ້າງລະບົບ AI Workflows ທີ່ຕອບໂຈດບັນຫາທ້ອງຖິ່ນໄດ້ຢ່າງແທ້ຈິງ, ບໍ່ວ່າຈະເປັນການກວດສອບສະພາບການຈະລາຈອນ, ການຮັບມືກັບຂໍ້ມູນກະສິກຳ ຫຼື ການເຊື່ອມຕໍ່ກັບລະບົບຫຼັງບ້ານ (Backend) ຂອງທຸລະກິດ SME ເພື່ອຍົກລະດັບການບໍລິການໃຫ້ກ້າວໄປອີກຂັ້ນ. ພຽງແຕ່ທ່ານເຂົ້າໃຈຮູບແບບຂອງ Agents ແລະ Tools, ທ່ານກໍ່ສາມາດສ້າງແອັບພລິເຄຊັນທີ່ຊັບຊ້ອນຂຶ້ນໄດ້ແບບບໍ່ມີຂີດຈຳກັດ.