โมเดลแชท
โมเดลแชทเป็นรูปแบบหนึ่งของโมเดลภาษา แม้ว่าโมเดลแชทจะใช้โมเดลภาษา (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)