AI Agents with LangChain & Autonomous Workflows · บทเรียน

การจัดการสถานะและเซสชันของเอเจนต์

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

บทเรียน 2 จาก 411 ขั้นตอน

การจัดการสถานะและเซสชันของเอเจนต์ เป็นบทเรียน AI Agents with LangChain & Autonomous Workflows ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents with LangChain & Autonomous Workflows และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents with LangChain & Autonomous Workflows มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดสถานะเอเจนต์จึงสำคัญ

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

นี่คือจุดที่ สถานะเอเจนต์และการจัดการเซสชันเข้ามามีบทบาท ทั้งสองช่วยให้เอเจนต์รักษาบริบทและสนทนาได้อย่างต่อเนื่องและมีความหมาย

การกำหนดสถานะเอเจนต์

“สถานะ” ของเอเจนต์หมายถึงข้อมูลทั้งหมดที่เอเจนต์จำเป็นต้องจดจำเกี่ยวกับการโต้ตอบหรือเซสชันผู้ใช้รายการหนึ่ง ซึ่งอาจรวมถึง

  • ข้อความก่อนหน้าในการสนทนา
  • ค่ากำหนดหรือการตั้งค่าของผู้ใช้
  • ผลลัพธ์ระหว่างกลางจากการใช้เครื่องมือ
  • ข้อมูลใด ๆ ที่รวบรวมระหว่างการโต้ตอบ

กล่าวโดยสรุป สถานะคือความจำระยะสั้นและระยะยาวของเอเจนต์สำหรับผู้ใช้รายหนึ่ง

ความท้าทายของการไร้สถานะ

โดยค่าเริ่มต้น การโต้ตอบกับโมเดลภาษาขนาดใหญ่ (LLM) หลายรูปแบบจะเป็นแบบไร้สถานะ ซึ่งหมายความว่าการเรียก API แต่ละครั้งเป็นอิสระจากกัน และ LLM จะไม่จดจำคำถามหรือคำตอบก่อนหน้าโดยอัตโนมัติ

ในสภาพแวดล้อมใช้งานจริงที่มีผู้ใช้จำนวนมาก หากคุณไม่จัดการสถานะ การโต้ตอบทุกครั้งจะเริ่มต้นใหม่ ส่งผลให้เกิดคำถามซ้ำ ๆ และประสบการณ์ผู้ใช้ที่ไม่ดี

การระบุเซสชันผู้ใช้

เพื่อจัดการสถานะของผู้ใช้หลายคนพร้อมกัน เราจะกำหนด “รหัสเซสชัน” ที่ไม่ซ้ำกันให้กับการโต้ตอบของผู้ใช้แต่ละราย รหัสนี้ทำหน้าที่เป็นกุญแจสำหรับเรียกดูและจัดเก็บประวัติการสนทนาและข้อมูลเฉพาะของผู้ใช้รายนั้น

ต่อไปนี้คือตัวอย่างวิธีสร้างรหัสเซสชันอย่างง่าย

import uuid

def start_user_session():
    # Generate a unique session ID
    session_id = str(uuid.uuid4())
    print(f"New session started with ID: {session_id}")
    return session_id

if __name__ == "__main__":
    # In a real app, this ID would be tied to a user
    # and sent with each request.
    current_session_id = start_user_session()
    # Use current_session_id to store and retrieve state

พื้นที่จัดเก็บถาวรสำหรับสถานะ

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

ตัวเลือกที่ใช้กันทั่วไปมีดังนี้

  • พื้นที่จัดเก็บแบบคีย์-ค่า: Redis, Memcached
  • ฐานข้อมูล: PostgreSQL, MongoDB, DynamoDB
  • พื้นที่จัดเก็บบนคลาวด์: S3 (สำหรับสถานะขนาดใหญ่ที่เข้าถึงไม่บ่อย)

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

การแยกส่วนการจัดการหน่วยความจำของ LangChain

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

โมดูลที่ง่ายที่สุดคือ ConversationBufferMemory ซึ่งจัดเก็บข้อความไว้ในหน่วยความจำ มาดูกันว่าโมดูลนี้ติดตามข้อความอย่างไร

from langchain.memory import ConversationBufferMemory
from langchain_core.messages import HumanMessage, AIMessage

# Initialize in-memory conversation buffer
memory = ConversationBufferMemory(
    memory_key="chat_history", 
    return_messages=True
)

# Simulate adding messages to the memory
memory.chat_memory.add_user_message("Hello, who are you?")
memory.chat_memory.add_ai_message("I am an AI assistant.")

memory.chat_memory.add_user_message("What can you do?")
memory.chat_memory.add_ai_message("I can answer questions and help with tasks.")

# Retrieve the current conversation history
history = memory.load_memory_variables({})["chat_history"]
print("Current conversation history:")
for message in history:
    print(f"{message.type.capitalize()}: {message.content}")

การผสานรวมหน่วยความจำภายนอก

แม้ ConversationBufferMemory จะเหมาะสำหรับการพัฒนา แต่การใช้งานจริงจำเป็นต้องมีการจัดเก็บถาวรภายนอก LangChain มีคลาสหน่วยความจำเฉพาะสำหรับผสานรวมกับระบบจัดเก็บข้อมูลปลายทางหลากหลายรูปแบบ เช่น Redis หรือฐานข้อมูล

คุณเชื่อมต่อพื้นที่จัดเก็บภายนอกเหล่านี้ได้โดยส่งออบเจ็กต์ ChatMessageHistory ไปยัง ConversationBufferMemory (หรือประเภทหน่วยความจำอื่น)

from langchain.memory import ConversationBufferMemory
from langchain_community.chat_message_histories import RedisChatMessageHistory
import os

# In a real application, you would configure Redis URL
# os.environ["REDIS_URL"] = "redis://localhost:6379/0"

# For this runnable example, we'll simulate the external history store
class SimulatedChatMessageHistory:
    def __init__(self, session_id):
        self.session_id = session_id
        self._messages = []
        print(f"\nSimulated history for session: {session_id}")

    def add_user_message(self, message):
        # In a real app, this would save to Redis/DB
        self._messages.append(message)
        print(f"[Simulated Save] User: {message}")

    def add_ai_message(self, message):
        # In a real app, this would save to Redis/DB
        self._messages.append(message)
        print(f"[Simulated Save] AI: {message}")

    @property
    def messages(self):
        # In a real app, this would load from Redis/DB
        return self._messages

# Create a unique session ID for a user
user_session_id = "user_prod_session_123"

# Initialize a simulated external history store for this session
simulated_history = SimulatedChatMessageHistory(session_id=user_session_id)

# Now, integrate this with LangChain's memory system
memory = ConversationBufferMemory(
    chat_memory=simulated_history,
    memory_key="history",
    return_messages=True
)

# Simulate adding messages through the LangChain memory
# LangChain handles calling add_user_message/add_ai_message on simulated_history
memory.save_context({"input": "Hi there!"}, {"output": "Hello! How can I assist you?"})
memory.save_context({"input": "Tell me about AI agents."}, {"output": "AI agents combine LLMs with tools to perform tasks."})

print("\n--- Messages retrieved from LangChain memory (via simulated external store) ---")
for msg in memory.chat_memory.messages:
    print(f"-> {msg.type.capitalize()}: {msg.content}")

กลยุทธ์เซสชันสำหรับการใช้งานจริง

ในการใช้งานจริง เฟรมเวิร์กเว็บของคุณ เช่น Flask, FastAPI หรือ Node.js Express โดยทั่วไปจะจัดการการกำหนดและติดตามรหัสเซสชันของผู้ใช้ เมื่อผู้ใช้โต้ตอบกับเอเจนต์ของคุณ

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

แนวทางปฏิบัติที่ดีที่สุดในการจัดการสถานะ

เพื่อให้การจัดการสถานะมีความทนทานและรองรับการขยายในสภาพแวดล้อมใช้งานจริง:

  • การหมดอายุของเซสชัน: ใช้กลไกเพื่อล้างเซสชันเก่าหรือไม่ได้ใช้งานโดยอัตโนมัติ เพื่อลดต้นทุนการจัดเก็บและปกป้องความเป็นส่วนตัว
  • การทำงานพร้อมกัน: ออกแบบระบบให้รองรับคำขอหลายรายการจากผู้ใช้คนเดียวกันได้อย่างปลอดภัย และป้องกันสภาวะการแข่งขันขณะอัปเดตสถานะ
  • ความปลอดภัย: ปกป้องรหัสเซสชัน (เช่น ใช้คุกกี้ที่ปลอดภัย) และเข้ารหัสข้อมูลสำคัญที่จัดเก็บไว้ในหน่วยความจำถาวร
  • ความสามารถในการขยาย: เลือกแหล่งจัดเก็บถาวรที่สามารถขยายตามแนวนอนไปพร้อมกับจำนวนผู้ใช้ และให้การเข้าถึงที่มีเวลาแฝงต่ำ

ตรวจสอบความเข้าใจของคุณ

ข้อใดต่อไปนี้คือเหตุผลหลักที่ควรใช้โซลูชันจัดเก็บข้อมูลถาวร (เช่น Redis หรือฐานข้อมูล) สำหรับสถานะของตัวแทนในสภาพแวดล้อมใช้งานจริง แทนการใช้เพียงการจัดเก็บในหน่วยความจำ

ทบทวน: สถานะและเซสชัน

เราได้เรียนรู้ว่าการจัดการสถานะของตัวแทนและเซสชันของผู้ใช้มีความสำคัญอย่างยิ่งต่อการสร้างตัวแทนปัญญาประดิษฐ์แบบสนทนาที่ทนทานสำหรับใช้งานจริง ประเด็นสำคัญมีดังนี้:

  • ลักษณะไร้สถานะ: โดยค่าเริ่มต้น LLMs ไม่มีสถานะ จึงต้องจัดการสถานะอย่างชัดเจน
  • รหัสเซสชัน: ใช้เพื่อระบุและจัดการบริบทของผู้ใช้แต่ละรายโดยไม่ซ้ำกัน
  • การจัดเก็บข้อมูลถาวร: จำเป็นสำหรับการบันทึกสถานะให้คงอยู่ข้ามการเริ่มเซิร์ฟเวอร์ใหม่และระบบแบบกระจาย (เช่น Redis และฐานข้อมูล)
  • หน่วยความจำของ LangChain: มีนามธรรมที่ทรงพลังสำหรับผสานรวมระบบหน่วยความจำส่วนหลังรูปแบบต่าง ๆ เข้ากับตัวแทนของคุณ

การเชี่ยวชาญด้านการจัดการสถานะเป็นกุญแจสำคัญในการมอบประสบการณ์การใช้งานตัวแทนที่ราบรื่นและชาญฉลาด ต่อไปเราจะสำรวจสถาปัตยกรรมตัวแทนที่รองรับการขยาย!

เริ่มต้นได้ฟรี

เรียนรู้ AI Agents with LangChain & Autonomous Workflows ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
50

คำถามที่พบบ่อย

บทเรียน “การจัดการสถานะและเซสชันของเอเจนต์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การจัดการสถานะและเซสชันของเอเจนต์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents with LangChain & Autonomous Workflows ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents with LangChain & Autonomous Workflows มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การจัดการสถานะและเซสชันของเอเจนต์”

นำวิธีการที่มีประสิทธิภาพมาใช้เพื่อรักษาสถานะของเอเจนต์ระหว่างการโต้ตอบหลายครั้งและเซสชันผู้ใช้ในสภาพแวดล้อมระบบจริง คุณปฏิบัติ AI Agents with LangChain & Autonomous Workflows ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents with LangChain & Autonomous Workflows หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents with LangChain & Autonomous Workflows บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การจัดการสถานะและเซสชันของเอเจนต์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents with LangChain & Autonomous Workflows นี้ได้ไหม

ได้ บทเรียน AI Agents with LangChain & Autonomous Workflows ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การนำเอเจนต์ไปใช้งานบนแพลตฟอร์มคลาวด์
  2. การจัดการสถานะและเซสชันของเอเจนต์
  3. การปรับขนาดสถาปัตยกรรมเอเจนต์
  4. การจำกัดอัตราและการจัดการโควตาเอพีไอ
← กลับไปที่ AI Agents with LangChain & Autonomous Workflows