مدلهای گفتگو
مدلهای گفتگو نوعی از مدلهای زبان هستند. با اینکه مدلهای گفتگو از مدلهای زبان (LLM) در سطح پایینی استفاده میکنند، واسطهایشان به شکلی کمی متفاوت عمل میکنند. به جای ارائه یک API برای "ورودی متن، خروجی متن"، از یک رابط استفاده میکنند که پیامهای گفتگو را به عنوان ورودی دریافت و خروجی میدهند. کل فرآیند تعامل مدلهای گفتگو مشابه فرآیند تبادل پیامهای گفتگو است.
شروع کار با مدلهای گفتگو
این فصل بر اساس مدل OpenAI است.
تنظیمات
به صورت پیشفرض، LangChain دارای وابستگیهای مدل نصب شده نیست. ابتدا، بسته پایتون OpenAI را نصب کنید:
pip install langchain-openai
دسترسی به API نیازمند یک کلید API است، که میتوانید آن را از طریق متغیرهای محیطی پیکربندی کنید. مثال زیر نحوه تنظیم آن در یک محیط لینوکس را نشان میدهد:
export OPENAI_API_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
پشتیبانی میکند، بنابراین مدل گفتگو همچنین میتواند برای بیان زبان عبارات (LCEL) LangChain استفاده شود.
مدل گفتگو یک List[BaseMessage]
را به عنوان ورودی میپذیرد، یا میتواند اشیاء را که به پیامها تبدیل میشوند، از جمله 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)