เปิดใช้งานการสนทนาหลายรอบด้วยหน่วยความจำ
ใกล้จะพร้อมแชร์แชทบอตเวอร์ชันอัปเดตให้ทีมบริหารโรงเรียนแล้ว! เพื่อให้นักเรียนมีประสบการณ์การเรียนรู้ที่ราบรื่น สิ่งสำคัญคือต้องเปิดให้นักเรียนถามคำถามต่อเนื่องได้ หากข้อมูลในคำตอบแรกยังไม่ครบถ้วน นักเรียนจะได้ปรับคำถามผ่านการสนทนาได้เลย ในขั้นตอนนี้ จะปรับฟังก์ชันสตรีมของแชทบอตให้รองรับการสนทนาหลายรอบ โดยแสดงทั้งคำถามของผู้ใช้และคำตอบของแชทบอต เพื่อเปิดใช้งานหน่วยความจำ LangGraph จะส่งการสนทนาทั้งหมดไปยัง LLM เมื่อมีคำถามต่อเนื่อง เพื่อเริ่มต้น พารามิเตอร์ config ได้ถูกตั้งค่าสำหรับผู้ใช้หนึ่งรายไว้แล้ว:
config = {"configurable": {"thread_id": "1"}}
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การออกแบบระบบ Agentic ด้วย LangChain
คำแนะนำการฝึกหัด
- ในแต่ละรอบ ให้เริ่มด้วยการพิมพ์
queryของผู้ใช้จากลิสต์queries - วนซ้ำผ่าน
msgและmetadataโดยใช้app.stream()โดยส่งqueryเป็นcontentของHumanMessageพร้อมกับconfigแล้วรวมค่าmsg.contentเข้าด้วยกัน - เพื่อดึงคำตอบของแชทบอต ให้พิมพ์
msg.contentโดยกรองออกmsgที่มีประเภทเป็นHumanMessageและเพิ่มบรรทัดใหม่ก่อนคำถามถัดไป
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Print the user query first for every interaction
def user_agent_multiturn(queries):
for ____ in ____:
print(f"User: {____}")
# Stream through messages corresponding to queries, excluding metadata
print("Agent: " + "".join(____.____ for ____, ____ in app.____(
{"messages": [____(____=_____)]}, config, stream_mode="messages")
# Filter out the human messages to print agent messages
if ____.____ and not isinstance(____, ____)) + "____")
queries = ["Is `stressed desserts?` a palindrome?", "What about the word `kayak`?",
"What happened on the May 8th, 1945?", "What about 9 November 1989?"]
user_agent_multiturn(queries)