โมเดลแชท

โมเดลแชทเป็นรูปแบบหนึ่งของโมเดลภาษา แม้ว่าโมเดลแชทจะใช้โมเดลภาษา (LLM) ในระดับฐาน แต่อินเตอร์เฟซของโมเดลแชทนั้นมีความแตกต่างบ้าง แทนที่จะเปิดเผย API สำหรับ "ข้อความนำเข้า ข้อความผลลัพธ์" พวกเขาใช้อินเตอร์เฟซที่รับ "ข้อความแชท" เป็นข้อมูลนำเข้าและผลลัพธ์ กระบวนการโต้ตอบทั้งหมดของโมเดลแชทคล้ายกับกระบวนการแลกเปลี่ยนข้อความแชท

เริ่มต้นกับโมเดลแชท

บทนี้ขึ้นอยู่กับโมเดล OpenAI

การกำหนดค่า

โดยค่าเริ่มต้น LangChain ไม่ได้ติดตั้ง dependency ของโมเดล ก่อนอื่น ติดตั้งแพ็คเกจ Python ของ OpenAI:

pip install langchain-openai

การเข้าถึง API ต้องการ API key ซึ่งสามารถกำหนดค่าผ่าน environment variables ตัวอย่างต่อไปนี้แสดงวิธีการตั้งค่าใน environment ของ Linux:

export OPENAI_API_KEY="..."

หากคุณไม่ต้องการกำหนดค่าใน environment variable คุณสามารถส่ง key โดยตรงผ่านพารามิเตอร์ชื่อ openai_api_key เมื่อกำลังสร้างคลาส OpenAI LLM:

from langchain_openai import ChatOpenAI

chat = ChatOpenAI(openai_api_key="...")

หรือคุณสามารถสร้างโดยไม่มีพารามิเตอร์:

from langchain_openai import ChatOpenAI
chat = ChatOpenAI()

ข้อความ

อินเตอร์เฟซของโมเดลแชทขึ้นอยู่กับข้อความแทนข้อความเข้าเนี่ย ประเภทข้อความที่รองรับโดย LangChain ปัจจุบันรวมถึง AIMessage, HumanMessage, SystemMessage, FunctionMessage, และ ChatMessage โดยที่ ChatMessage ต้องการพารามิเตอร์บทบาทที่เป็นอัตราส่วน โดยทั่วไปแล้ว คุณจะเจอกับ HumanMessage, AIMessage, และ SystemMessage เท่านั้น

LCEL

โมเดลแชทนี้ใช้ Runnable interface โดยรองรับเมธอดต่าง ๆ เช่น invoke, ainvoke, stream, astream, batch, abatch, astream_log ดังนั้น โมเดลแชทยังใช้งานได้สำหรับ LangChain Expression Language (LCEL) expressions

โมเดลแชทรับ List[BaseMessage] เป็นข้อมูลนำเข้า หรือสามารถรับ object ที่ถูกกระบวนการเป็นข้อความได้ รวมถึง str (แปลงเป็น HumanMessage) และ PromptValue

from langchain_core.messages import HumanMessage, SystemMessage

messages = [
    SystemMessage(content="You are a helpful assistant"),
    HumanMessage(content="What is the purpose of model regularization?"),
]

การเรียกใช้โมเดลด้วยอาร์เรย์ของข้อความ:

chat.invoke(messages)

ตัวอย่างของข้อความที่รับกลับ:

AIMessage(content="The AI response content...details omitted...")

การสตรีมเอาต์พุตของ AI:

for chunk in chat.stream(messages):
    print(chunk.content, end="", flush=True)