مدل‌های گفتگو

مدل‌های گفتگو نوعی از مدل‌های زبان هستند. با اینکه مدل‌های گفتگو از مدل‌های زبان (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)