Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

ການຈັດການ Rate Limits ແລະ Retries ກັບ AI APIs ດ້ວຍ Python (Tenacity)

ໂພສເມື່ອ # Python # Backend Development # AI Integration # Troubleshooting

ການຈັດການ Rate Limits ແລະ Retries ເມື່ອເຊື່ອມຕໍ່ກັບ AI APIs ດ້ວຍ Python Tenacity

ສະບາຍດີບັນດານັກພັດທະນາ! ໃນຍຸກທີ່ AI ກຳລັງເຂົ້າມາມີບົດບາດສຳຄັນ, ຫຼາຍອົງກອນ ແລະ ບໍລິສັດໃນລາວເລີ່ມນຳໃຊ້ LLMs (Large Language Models) ເຂົ້າໃນທຸລະກິດ. ລອງນຶກພາບວ່າ ທ່ານກຳລັງຂຽນໂປຣແກຣມ AI Chatbot ໃຫ້ກັບຮ້ານຄ້າ SME ໃນນະຄອນຫຼວງວຽງຈັນ ຫຼື ສ້າງລະບົບດຶງຂໍ້ມູນຣີວິວສະຖານທີ່ທ່ອງທ່ຽວໃນງານບຸນທາດຫຼວງເພື່ອມາປະມວນຜົນ.

ເມື່ອລະບົບເລີ່ມມີຜູ້ໃຊ້ງານພ້ອມກັນຈຳນວນຫຼາຍຂຶ້ນ, ທ່ານອາດຈະພົບບັນຫາທີ່ເຊີບເວີຂອງ OpenAI, Anthropic ຫຼື ຜູ້ໃຫ້ບໍລິການ AI ອື່ນໆ ຕອບກັບມາດ້ວຍ Error Code HTTP 429 Too Many Requests (Rate Limit) ຫຼື ບາງຄັ້ງອິນເຕີເນັດໃນພື້ນທີ່ອາດຈະມີການຕັດການເຊື່ອມຕໍ່ (Connection Error) ໄປຊື່ໆ. ຖ້າໂຄດຂອງເຮົາບໍ່ໄດ້ກຽມຮັບມືກັບໂຈດນີ້, ລະບົບຈະ Crash ທັນທີ ແລະ ສົ່ງຜົນກະທົບຕໍ່ປະສົບການຂອງຜູ້ໃຊ້ງານ.

ໃນບົດຄວາມນີ້, ເຮົາຈະມາເບິ່ງວິທີການຂຽນໂຄດ Python ແບບມືອາຊີບ ເພື່ອຈັດການກັບບັນຫາເຫຼົ່ານີ້ ໂດຍການນຳໃຊ້ໄລບຣາຣີ Tenacity.

ບັນຫາ Rate Limits ແມ່ນຫຍັງ ແລະ ເປັນຫຍັງຈຶ່ງສຳຄັນ?

AI APIs ສ່ວນຫຼາຍຈະມີການຈຳກັດຈຳນວນຄັ້ງການຮຽກໃຊ້ງານ (Quotas) ເຊັ່ນ: ຈຳກັດ Tokens per minute (TPM) ຫຼື Requests per minute (RPM). ຖ້າແອັບພລິເຄຊັນຂອງທ່ານສົ່ງຂໍ້ມູນຣີວິວຮ້ານອາຫານໃນວຽງຈັນ ໄປວິເຄາະພ້ອມໆກັນ 1,000 ຂໍ້ຄວາມໃນວິນາທີດຽວ, API ຈະເຮັດການບລັອກຄຳຂໍເຫຼົ່ານັ້ນຊົ່ວຄາວ ເຊິ່ງພາໃຫ້ເກີດ RateLimitError.

ນັກພັດທະນາມືໃໝ່ຫຼາຍຄົນມັກຈະແກ້ບັນຫາໂດຍການໃຊ້ time.sleep(5) ແບບງ່າຍໆ ເຊິ່ງມີຂໍ້ເສຍຄື: ມັນອາດຈະລໍຖ້າດົນເກີນໄປ ຫຼື ໄວເກີນໄປ ແລະ ບໍ່ມີໂຄງສ້າງການລອງໃໝ່ (Retries) ທີ່ດີພໍ. ນີ້ຄືຈຸດທີ່ Tenacity ເຂົ້າມາຊ່ວຍເຫຼືອ.

ແນະນຳ Tenacity: ເຄື່ອງມືຊ່ວຍຈັດການ Retry ທີ່ຊົງພະລັງ

Tenacity ແມ່ນໄລບຣາຣີຂອງ Python ທີ່ສ້າງມາເພື່ອຊ່ວຍຈັດການການລອງໃໝ່ (Retries) ດ້ວຍການຂຽນແບບ Decorator ເຊິ່ງຊ່ວຍໃຫ້ໂຄດຂອງທ່ານອ່ານງ່າຍ ແລະ ສະອາດ. ຟີເຈີທີ່ສຳຄັນທີ່ສຸດເມື່ອເຮັດວຽກກັບ APIs ຄືການເຮັດ Exponential Backoff (ການລໍຖ້າແບບທະວີຄູນ). ແທນທີ່ຈະລໍຖ້າ 2 ວິນາທີຕະຫຼອດ, ລະບົບຈະລໍຖ້າ 2, 4, 8, 16 ວິນາທີ ຕາມລຳດັບ ເພື່ອຫຼຸດຜ່ອນພາລະຂອງເຊີບເວີປາຍທາງ.

ຕົວຢ່າງການນຳໃຊ້ໃນສະພາບແວດລ້ອມຂອງລາວ

ສົມມຸດວ່າເຮົາກຳລັງຂຽນລະບົບ AI ເພື່ອວິເຄາະຄວາມຮູ້ສຶກ (Sentiment Analysis) ຂອງນັກທ່ອງທ່ຽວທີ່ຂຽນຣີວິວກ່ຽວກັບ “ງານບຸນທາດຫຼວງ” ເປັນພາສາລາວ.

ຂັ້ນຕອນການຕິດຕັ້ງ (Installation)

ກ່ອນອື່ນໝົດ, ໃຫ້ເລີ່ມການຕິດຕັ້ງໄລບຣາຣີທີ່ຈຳເປັນຜ່ານ Terminal:

pip install tenacity openai

ການຂຽນໂຄດຕົວຈິງ (Writing the Robust Python Code)

ນີ້ແມ່ນຕົວຢ່າງຂອງການໃຊ້ Tenacity ຮ່ວມກັບ OpenAI API (ຣຸ່ນໃໝ່ v1.0.0+):

from openai import OpenAI, RateLimitError, APIConnectionError
from tenacity import retry, stop_after_attempt, wait_exponential, retry_if_exception_type

# ຕັ້ງຄ່າ Client ຂອງ OpenAI
client = OpenAI(api_key="YOUR_OPENAI_API_KEY")

# ໃຊ້ Decorator ຂອງ Tenacity ເພື່ອຈັດການ Retries
@retry(
    stop=stop_after_attempt(5), 
    wait=wait_exponential(multiplier=1, min=2, max=30),
    retry=retry_if_exception_type((RateLimitError, APIConnectionError))
)
def analyze_lao_reviews(review_text):
    print(f"ກຳລັງປະມວນຜົນຂໍ້ຄວາມ: {review_text[:20]}...")
    
    response = client.chat.completions.create(
        model="gpt-4",
        messages=[
            {"role": "system", "content": "ທ່ານເປັນ AI ຊ່ວຍວິເຄາະຄວາມຮູ້ສຶກ (Sentiment) ຈາກຣີວິວຂອງນັກທ່ອງທ່ຽວທີ່ໄປງານບຸນທາດຫຼວງ."},
            {"role": "user", "content": review_text}
        ]
    )
    return response.choices[0].message.content

# ຂໍ້ມູນຕົວຢ່າງຈາກການຣີວິວງານບຸນທາດຫຼວງ
lao_reviews = [
    "ງານບຸນທາດຫຼວງປີນີ້ຄົນຫຼາຍແທ້ໆ, ອາຫານຕາມທາງຍ່າງແຊບຫຼາຍ!",
    "ລົດຕິດຫຼາຍຢູ່ທາງເຂົ້າໜ້າງານ ຫາບ່ອນຈອດຍາກແທ້.",
    "ມັກການສະແດງສິລະປະພື້ນເມືອງລາວໃນງານ, ເປັນຕາອອນຊອນ."
]

for review in lao_reviews:
    try:
        result = analyze_lao_reviews(review)
        print(f"ຜົນການວິເຄາະ: {result}\n")
    except Exception as e:
        print(f"❌ ບໍ່ສາມາດວິເຄາະໄດ້ຫຼັງຈາກລອງໃໝ່ຫຼາຍຄັ້ງ: {e}")

ອະທິບາຍໂຄດ (Code Breakdown)

ມາເຈາະເລິກເບິ່ງການຕັ້ງຄ່າ Decorator ຂອງ Tenacity ທີ່ຢູ່ເທິງຫົວຂອງຟັງຊັນ:

Key Takeaways (ສິ່ງສຳຄັນທີ່ຄວນຈື່)

ບົດສະຫຼຸບແລ້ວ ການພັດທະນາແອັບພລິເຄຊັນ AI ທີ່ສາມາດໃຊ້ງານໄດ້ຈິງໃນສະພາບແວດລ້ອມຂອງທຸລະກິດລາວ ບໍ່ພຽງແຕ່ອາໄສການຂຽນ Prompts ທີ່ເກັ່ງເທົ່ານັ້ນ, ແຕ່ຍັງຕ້ອງມີໂຄງສ້າງ Backend ທີ່ແຂງແກ່ນ ແລະ ຈັດການຂໍ້ຜິດພາດໄດ້ດີ ອີກດ້ວຍ. ການໃຊ້ Tenacity ເຂົ້າມາຊ່ວຍໃນການຂຽນ Python ຈຶ່ງເປັນການລົງທຶນເວລາທີ່ຄຸ້ມຄ່າ ສຳລັບນັກພັດທະນາທີ່ຕ້ອງການຍົກລະດັບມາດຕະຖານຂອງລະບົບຕົນເອງໃຫ້ມີສະຖຽນລະພາບສູງທີ່ສຸດ.